Summary
Make toolhive's registry API a mirror of the v0.1 surface that stacklok/toolhive-registry-server exposes. This:
- Drops the legacy-shaped
/api/v1beta/registry/... endpoints.
- Refactors the
/registry/{registryName}/v0.1/servers handler to consume toolhive-core/registry/types directly (same pattern pkg/api/v1/registry_v01_skills.go already uses — no converters import).
- Adds the per-version sub-resources that registry-server exposes but toolhive doesn't yet (servers and skills both).
Phase 1 (parse-side internals + error-code cleanup) is #5278.
Reference: registry-server's v0.1 surface
GET /registry/{registryName}/v0.1/servers
GET /registry/{registryName}/v0.1/servers/{serverName}/versions
GET /registry/{registryName}/v0.1/servers/{serverName}/versions/{version}
GET /registry/{registryName}/v0.1/x/dev.toolhive/skills
GET /registry/{registryName}/v0.1/x/dev.toolhive/skills/{namespace}/{name}
GET /registry/{registryName}/v0.1/x/dev.toolhive/skills/{namespace}/{name}/versions
GET /registry/{registryName}/v0.1/x/dev.toolhive/skills/{namespace}/{name}/versions/{version}
Source of truth: stacklok/toolhive-registry-server docs/thv-registry-api/swagger.yaml.
Scope
Remove:
pkg/api/v1/registry.go v1beta servers handlers (/api/v1beta/registry/{name}/servers, /{serverName}) and the legacy []*registry.ImageMetadata / []*registry.RemoteServerMetadata response structs.
pkg/api/v1/registry_v01_servers.go /versions/latest shortcut (replace with the version paths below).
Refactor:
pkg/api/v1/registry_v01_servers.go — drop the toolhive-core/registry/converters import; consume upstream types directly, mirroring pkg/api/v1/registry_v01_skills.go.
- Internal registry provider chain — return upstream-shaped types instead of
ImageMetadata / RemoteServerMetadata.
Add (to match registry-server surface):
GET /registry/{registryName}/v0.1/servers/{serverName}/versions
GET /registry/{registryName}/v0.1/servers/{serverName}/versions/{version}
GET /registry/{registryName}/v0.1/x/dev.toolhive/skills/{namespace}/{name}/versions
GET /registry/{registryName}/v0.1/x/dev.toolhive/skills/{namespace}/{name}/versions/{version}
Coordination
- FE counterpart: studio currently consumes
/api/v1beta/registry/{name}/servers and models RegistryItem around RegistryImageMetadata / RegistryRemoteServerMetadata. It needs to migrate to the new v0.1 surface — tracked separately.
Blocks
Acceptance criteria
References
Summary
Make toolhive's registry API a mirror of the v0.1 surface that
stacklok/toolhive-registry-serverexposes. This:/api/v1beta/registry/...endpoints./registry/{registryName}/v0.1/servershandler to consumetoolhive-core/registry/typesdirectly (same patternpkg/api/v1/registry_v01_skills.goalready uses — noconvertersimport).Phase 1 (parse-side internals + error-code cleanup) is #5278.
Reference: registry-server's v0.1 surface
Source of truth:
stacklok/toolhive-registry-serverdocs/thv-registry-api/swagger.yaml.Scope
Remove:
pkg/api/v1/registry.gov1beta servers handlers (/api/v1beta/registry/{name}/servers,/{serverName}) and the legacy[]*registry.ImageMetadata/[]*registry.RemoteServerMetadataresponse structs.pkg/api/v1/registry_v01_servers.go/versions/latestshortcut (replace with the version paths below).Refactor:
pkg/api/v1/registry_v01_servers.go— drop thetoolhive-core/registry/convertersimport; consume upstream types directly, mirroringpkg/api/v1/registry_v01_skills.go.ImageMetadata/RemoteServerMetadata.Add (to match registry-server surface):
GET /registry/{registryName}/v0.1/servers/{serverName}/versionsGET /registry/{registryName}/v0.1/servers/{serverName}/versions/{version}GET /registry/{registryName}/v0.1/x/dev.toolhive/skills/{namespace}/{name}/versionsGET /registry/{registryName}/v0.1/x/dev.toolhive/skills/{namespace}/{name}/versions/{version}Coordination
/api/v1beta/registry/{name}/serversand modelsRegistryItemaroundRegistryImageMetadata/RegistryRemoteServerMetadata. It needs to migrate to the new v0.1 surface — tracked separately.Blocks
registry/converters/removal)Acceptance criteria
/api/v1beta/registry/{name}/serversand/{serverName}removed.toolhive-core/registry/converters.registry.ImageMetadata/registry.RemoteServerMetadata.task docsgreen.References
pkg/api/v1/registry_v01_skills.gostacklok/toolhive-registry-serverdocs/thv-registry-api/swagger.yaml