POST /publish
Announce a built release, and attempt every delivery it creates.
POST /publishReads regimes/<regime>/releases/<tag>/<tag>.diff.json out of the checkout this service was started over, records its atom changes as feed entries, owes one signed payload to every subscription whose filter matches, and then attempts each of them inline — so a caller learns what happened rather than being told ‘accepted’ and left to poll.
Unit changes in the manifest are not fanned out. They are the mechanism of a change rather than the change a downstream system acts on, and they stay one click away in the diff each item links to.
Announcing the same release twice is not news twice. A delivery’s id is derived from the subscription and the payload bytes, so a second publication of a release creates no second delivery and the response lists none.
Authentication
Section titled “Authentication”No authentication requirement is stated for this operation.
Request body
Section titled “Request body”A JSON object; anything else, or nothing at all, is refused. A member the operation does not read is ignored rather than refused, which is the opposite of what the serving API does with an unknown field and is stated here because a caller who misspells one is answered rather than corrected. The whole body is read into memory before it is parsed, so put a proxy in front of anything that is not trusted to be small.
application/json, required — PublishRequest
{ "regime": "fixreg", "tag": "2025.04"}Responses
Section titled “Responses”What was announced, what it owes, and how the first attempt at each went.
application/json — Fanout
the body is not a JSON object or states no regime or tag; or that release is not built in this checkout, carries no release-meta.yaml or no diff manifest, or its manifest states a different release than the one asked for
application/json — Error
Rendered from openregs/openregs@f3a2d10:docs/reference/feed-openapi.json