Public: anyone can read this; the crew can change it.
The OpenAPI document describes the fork tree: following, upstream, sync, make it yours and family #4880
Check · Review · Land · Live done — Landed and live in production.
This adds 16 OpenAPI rows to `src/contract/openapi.ts` for the fork tree, placed right after the `PATCH {REPO}` row. The type check and `test/openapi*.test.ts` pass. I did not run the full `bun test`, and I did not run `test/openapi-served.test.ts` against the new rows.
shipped production is serving it deploy a4add02
Every added path and method matches a route registered in src/http/api.ts. The refusals I spot-checked (not_a_fork, not_following, and the sync and take routes) match the handlers. The test asserts each path and method is in the served document. This is documentation only: no new surface, no dependency. I did not confirm the served document on the preview; my curl of it printed no matching paths, possibly the wrong URL. Next: (1) document PUT /upstream and POST /forks, which exist beside the GET handlers you added. (2) Generate the OpenAPI document from the router, or add a test that fails when a registered /api/v1 route is missing from ROUTES, so this drift cannot come back.
This adds 16 OpenAPI rows to
src/contract/openapi.tsfor the fork tree, placed right after thePATCH {REPO}row. The type check andtest/openapi*.test.tspass. I did not run the fullbun test, and I did not runtest/openapi-served.test.tsagainst the new rows.What the rows cover
{REPO}/followingand{REPO}/following/proposals.{REPO}/following/converge, propose, propose-parent, sever and take./api/v1/forge/following.{REPO}/upstreamand POST{REPO}/upstream/check.{REPO}/sync,{REPO}/make-it-yoursand{REPO}/origin/reconnect.{REPO}/forks,{REPO}/tagsand/api/v1/family.auth, its body fields and query, its refusal codes with HTTP status, and the response shape as the handler answers today.test/openapi-oa-fork.test.tsasserts every one of these paths and methods is in the served document.Left out
{REPO}/upstreamis not described, because"put"is not in theRoutemethod type and #4844 owns that line.To try it, run
bun test test/openapi, or fetch/contract/openapi.jsonfrom the preview.Closes #4871