Skip to content

POST /publish

Announce a built release, and attempt every delivery it creates.

POST /publish

Reads 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.

No authentication requirement is stated for this operation.

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"
}

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