chore(agents): deprecate the legacy Conversation endpoints - #81
Merged
Merged
Conversation
First of three steps to move the renamed Conversation model onto /api/v1/conversations (#68). The contract gate refuses to see a path removed without notice: `api-path-removed-without-deprecation`. It raises nothing when a path already marked deprecated in the base spec disappears, and the workflow sets no grace period, so marking them now is what lets the next step delete them. No behaviour change. The handlers answer exactly as before; only the spec gains `deprecated: true`.
This was referenced Sep 17, 2026
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
First of three steps to move the renamed Conversation model onto
/api/v1/conversations(#68). Marks the six legacy Conversation and Message operations@Deprecated. No behaviour change — the handlers answer exactly as before, and only the spec gainsdeprecated: true.This exists because of how the contract gate works.
oasdiffraisesapi-path-removed-without-deprecationwhen a path vanishes from the spec, but raises nothing when a path already marked deprecated in the base is removed — and the workflow sets no--deprecation-days-*, so the grace period is zero. Deprecating here is what lets step two delete these endpoints cleanly.Sequence:
/api/v1/conversationsabsent frommain, everything it adds there registers as a new path, so its requiredX-User-Id, nullabletitleandmaxLength: 120produce no findings.Validation
:api:test— 623 tests, 621 passed, 0 failed, 2 pre-existing skips:api:integrationTest— 139 tests, 137 passed, 0 failed, 2 skipped--warning-mode=fail— cleandeprecated: trueoasdiff breakingagainstorigin/main— no breaking changesThe mechanic was verified against real
oasdiffwith purpose-built fixtures before committing to this sequence, rather than inferred from its documentation:deprecated: truepath → no findingsapi-path-removed-without-deprecationmaxLength→ no findingsNotes
main./api/v1/conversationsis absent from the service. Neitheragents-uinorhome-portalcalls it —agents-uiuses/api/v1/chat-sessionsexclusively — but an undocumented external caller cannot be ruled out from this repo. Worth a glance at real traffic before step 2 merges.api-contract-checks, which was ruled out. This keeps the gate intact and at full strength throughout.refs #68