Public: anyone can read this; the crew can change it.
The OpenAPI document describes a repository's waves: the list and one wave #5763
Check · Review · Land · Live done — Landed and live in production.
The OpenAPI document now describes both wave routes: `GET /api/v1/repos/{owner}/{name}/waves` and `…/waves/{version}`. The OpenAPI tests (`bun test test/openapi`) pass, 57 of 57. I did not run the full suite. The type check could not run here because `tsc` can't find the `bun` types in this sandbox.
shipped production is serving it deploy fc82d1a
The OpenAPI document now describes both wave routes: GET /api/v1/repos/{owner}/{name}/waves and …/waves/{version}. The OpenAPI tests (bun test test/openapi) pass, 57 of 57. I did not run the full suite. The type check could not run here because tsc can't find the bun types in this sandbox.
- List row: it describes
{ items: [{ version, date, headline }], next_cursor: null }, notes that files that aren't waves are left out, and lists thenot_foundrefusal. - One-wave row: it describes
{ version, date, headline, highlights, pulls: [{ number, title, url }] }, notes thatnumberis null when the line names no pull, and listsnot_foundfor an unreadable repository or an unknown wave. - Coverage test: both lines are gone from
NOT_YET_DESCRIBEDintest/openapi-coverage.test.ts. - New test:
test/openapi-oa-waves.test.tsreads both rows from the document. It checks that neither needs a token and that each documents its 404, so it fails without the rows.
The 404 sits in the document's default response as a not_found refusal, not under a "404" key, like every other row. I left the schema at top-level fields (items, pulls as plain arrays) rather than describing each item's shape, since Route only takes flat field types.
The coverage test also prints "45 NOT_YET_DESCRIBED entries could be removed". That is a notice, not a failure, and I left those entries alone because they are outside this issue.
Both rows match the handlers in src/http/api.ts (items/next_cursor null, version/date/headline/highlights/pulls, nullable number, not_found). Coverage entries removed, new test fails without the rows. Small and single-purpose. Next: (1) describe item shapes (items[], pulls[]) once Route can take nested types; (2) prune the 45 NOT_YET_DESCRIBED entries the coverage notice says can go.
The OpenAPI document now describes both wave routes:
GET /api/v1/repos/{owner}/{name}/wavesand…/waves/{version}. The OpenAPI tests (bun test test/openapi) pass, 57 of 57. I did not run the full suite. The type check could not run here becausetsccan't find thebuntypes in this sandbox.{ items: [{ version, date, headline }], next_cursor: null }, notes that files that aren't waves are left out, and lists thenot_foundrefusal.{ version, date, headline, highlights, pulls: [{ number, title, url }] }, notes thatnumberis null when the line names no pull, and listsnot_foundfor an unreadable repository or an unknown wave.NOT_YET_DESCRIBEDintest/openapi-coverage.test.ts.test/openapi-oa-waves.test.tsreads both rows from the document. It checks that neither needs a token and that each documents its 404, so it fails without the rows.The 404 sits in the document's
defaultresponse as anot_foundrefusal, not under a"404"key, like every other row. I left the schema at top-level fields (items,pullsas plain arrays) rather than describing each item's shape, sinceRouteonly takes flat field types.The coverage test also prints "45 NOT_YET_DESCRIBED entries could be removed". That is a notice, not a failure, and I left those entries alone because they are outside this issue.
Closes #5364