Skip to content

Document the change feed in openapi.yaml - #11

Merged
chicagobuss merged 1 commit into
mainfrom
docs/openapi-change-feed
Aug 3, 2026
Merged

Document the change feed in openapi.yaml#11
chicagobuss merged 1 commit into
mainfrom
docs/openapi-change-feed

Conversation

@chicagobuss

Copy link
Copy Markdown
Owner

/changes and /changes/stream shipped in v1.5.0 but are absent from openapi.yaml — the file skills/tracker/SKILL.md points agents at as "the full API reference". web/usage.md documents them well; the spec doesn't mention them at all.

Why it matters

The parameter you have to guess is the resume cursor. It's since, and an unrecognized query parameter is ignored rather than rejected — so ?cursor= doesn't error, it silently replays the feed from event 1. I hit this while smoke-testing v1.5.0: the stream looked like it was working, and only reading the handler explained why old events kept arriving. On a 4-event feed that's invisible; on a real one it's a consumer reprocessing everything from the beginning.

Both endpoint descriptions now call that out by name rather than just documenting the happy path.

Also documented

  • the workspace query override — 403 workspace_forbidden when the token is confined, 404 when the workspace is unknown (as a reusable WorkspaceQuery parameter)
  • the repeatable kind filter and the nine event kinds
  • the Last-Event-ID header as the alternative to since
  • limit default 100 / cap 1000
  • an Event schema, including what xact_id is for
  • workspace_forbidden added to the Error code list

Verification

Spec parses as YAML and every local $ref resolves. Behaviour checked against a running v1.5.0 rather than read off the source: parameter names, the limit cap, the repeatable kind filter, cursor scope binding to the kind filter, and both workspace error codes.

Docs only — no code, no behaviour change.

One thing left alone: info.version still reads 1.3.0. Bumping it seemed like your call, not mine.

/changes and /changes/stream were missing from the spec, which SKILL.md
points agents at as the full API reference. web/usage.md covers them, but
an agent reading the reference finds nothing and guesses parameter names.

The guess that costs you is the resume cursor: it is `since`, and an
unrecognized query parameter is ignored rather than rejected, so `?cursor=`
silently replays the feed from event 1 instead of resuming. Harmless on a
short feed, not on a long one. Both endpoint descriptions now say so
explicitly.

Also documents the `workspace` query override (403 when the token is
confined, 404 when the workspace is unknown), the repeatable `kind` filter
and its event kinds, the Last-Event-ID header, limit's 100/1000
default/cap, and an Event schema.

Verified against a running v1.5.0: parameter names, the limit cap, the
repeatable kind filter, cursor scope binding, and both workspace error
codes.
@chicagobuss
chicagobuss merged commit 1f567c4 into main Aug 3, 2026
3 checks passed
@chicagobuss
chicagobuss deleted the docs/openapi-change-feed branch August 3, 2026 21:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant