Repository navigation
Declare Substratal-Version in openapi.yaml; 405 for wrong methods; release dev - #67
Merged
Merged
Conversation
remaining_manual_steps.md is now issues #18-#28, one per step, titled '[bespoke] N. …' in the order they need doing, each with the full instructions and a link to the step before it. The file is deleted, and README, infra/README.md, and plan-remaining.md link to the issues instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The verify-email, reset-password, and other dashboard pages are being built in the management app (web, macOS, Windows, iOS, Android, and Linux), outside this repository, and tracked there. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Header versioning (#37) is enforced by middleware, but the spec only mentioned it in prose, so generated clients didn't know to send it. - openapi.yaml: a shared ApiVersion header parameter (Substratal-Version, enum "1") on all 119 versioned operations, and a documented 400 on the 105 that lacked one. GET /health and POST /auth/oauth/token stay exempt. - Codegen: an OpenAPI Overlay (internal/api/gen/overlay.yaml) drops the parameter before oapi-codegen runs, since the middleware enforces it ahead of every route; handler signatures are unchanged. Route registrations in gen.go are re-sorted by the overlay's re-serialization; routing is by pattern, so behavior is identical. MCP tools unchanged. - A known path called with an unsupported method returns 405 method_not_allowed with Allow and details.allowed, instead of the catch-all 404. - Docs: Conventions (versioning, errors), OpenAPI overview, spec description, Changelog; plan-remaining's Phase 0 line no longer cites the old /v1/health. - Tests: 405 with Allow for /health and /users/me. Brings dev up to date with main (SCIM, alarm email, header versioning). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
terraform plan (production)This is exactly what merging will change in AWS. Plan |
Conflicts: keep remaining_manual_steps.md deleted (moved to [bespoke] issues in #29); keep the Phase 0 line without the /v1 mention. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
terraform plan (production)This is exactly what merging will change in AWS. Plan |
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.
Summary
Follow-up to header versioning (#37), plus the pending
devrelease.Versioning in the spec
openapi.yamldeclares the version header on every versioned operation: a sharedApiVersionparameter (Substratal-Version, enum"1") on all 119 of them, plus a documented400on the 105 that lacked one.GET /healthandPOST /auth/oauth/tokenstay exempt, matching the middleware. Generated clients now learn the header from the spec.internal/api/gen/overlay.yaml) removes the parameter beforeoapi-codegenruns, because the middleware already enforces it ahead of every route. Handler signatures are unchanged.gen.go's route registrations are re-sorted by the overlay; routing is by pattern, so behavior is identical. MCP tools unchanged.405 for a wrong method
PUT /health) returns405 method_not_allowedwithAllowanddetails.allowed, instead of the catch-all404./v1sweep/v1remain outside history. What's left is legitimate: Google's FCM/v1/…API, the test asserting/v1/…now 404s, and the rubygems.org link. Older Changelog entries keep/v1paths on purpose (the Move the API version from the URL to a Substratal-Version header #37 entry says so).plan-remaining.md's Phase 0 line no longer cites/v1/health./v1paths; fixed directly on the issue.Releases
dev[bespoke]issues): deletesremaining_manual_steps.mdfrommain, the last file with/v1URLs.Test plan
go test ./...(new 405 cases withAllow),go vet,gofmt, golangci-lint (0 issues)make gen-check;terraform fmt -checkApiVersion; the two exempt ones don't🤖 Generated with Claude Code