Serve the Identifiers API under /identifiers/v1 rather than /v1/identifiers - #985
Merged
Merged
Conversation
annak-k
approved these changes
Sep 15, 2026
…ifiers api.wellcomecollection.org routes by first path segment, so the origin has to answer on /identifiers/... for the CloudFront behaviour to work.
kenoir
force-pushed
the
identifiers-path-prefix
branch
from
September 15, 2026 10:38
f7ee8b3 to
b6ce9eb
Compare
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this change?
Renames the Identifiers API path prefix from
/v1/identifiers/...to/identifiers/v1/...in the spec, the handler, run_local, the contract tests and the README. The README opener also stops claiming the API is not deployed.api.wellcomecollection.orgis a CloudFront distribution that routes on the first path segment and passes the full path through to the origin, so every service sits at/{service}/{version}/...(for example/catalogue/v2/works). The/v1/identifiersshape came over from the prototype unexamined and would not be routable by the planned/identifiers/*behaviour. There are no consumers, API keys or published docs yet, so the rename is cheap now and awkward later.No terraform change, but a
terraform applyinterraform/identifiersis needed after merge: the Lambda image deploys from GitHub Actions, while the gateway resources only move when the spec-hash deployment trigger is applied. Until both have moved, lookups 404 on the mismatched path. Nothing can observe that today because the stage gateway has no keys and answers 403 to everything.Related issue: wellcomecollection/platform#6578, under the tracker wellcomecollection/platform#6403. RFC 089 and RFC 085 are updated to match in wellcomecollection/docs#171.
Checklist
identifiers/spec/openapi.yamlis updated here.How to test
Locally the 43 pytest tests,
ruff check/format,mypyandyarn lint:openapiall pass.Once stage has redeployed,
identifiers.api-stage.wellcomecollection.org/identifiers/v1/jzzpxqtushould return{"message":"Forbidden"}, meaning the route exists and no key has been issued yet, and the old/v1/identifiers/jzzpxqtushould return "Missing Authentication Token".How can we measure success?
Nothing to measure: the API has no traffic yet.
Have we considered potential risks?
Low risk. Only stage is deployed and nothing calls the API, so there is no client to break.