Skip to content

POST /v1/obligations

Every duty binding one entity profile on one date.

POST /v1/obligations

The whole disposition of one described entity on one day: every obligation atom that binds it, and every one that would bind it but for a derogation in force — the second list each naming the provision that disapplies it and the entity types that provision reaches. Decided by the engine openregs coverage reports from, so the answer here and the answer in an offline coverage report are one computation.

An enumeration rather than a question. POST /v1/answer also decides applicability, and decides it over the profile’s whole disposition rather than over what retrieval surfaced — but it is reached through a query, it reports each duty as a verdict on an id, and what the duty says arrives only in the blocks a ranking chose. Here every duty carries its own modality, actor, action and quoted words, and no query is asked, so ‘what binds me’ does not have to be posed as ‘what is the answer to this question’.

Complete or nothing: an enumeration that dropped a duty because a score came third is a duty the caller never learns about.

The same closure is the Model Context Protocol tool list_obligations, answered by the same implementation over the same release.

Accepted: bearerAuth (http bearer), or no credentials.

Parameter
X-Request-IdA correlation id to answer under. A value the server cannot log safely — too long, or carrying anything outside its id alphabet — is discarded and a fresh id minted, because a log line is read by a human and must not be forgeable by a header. (in header)

A JSON object, at most 65536 bytes. Unknown properties are refused rather than ignored.

application/json, required — ObligationsRequest

{
"as_of": "2025-06-01",
"entity_profile": "small_operator"
}

What binds this entity on this date, and what does not, and why.

application/json — ObligationsResponse

Response header
X-Request-IdThe correlation id this request was answered under. It is on every response, in the server’s log record for the request, and inside the error object of every refusal.

invalid_request — the body is not JSON, is not an object, or states a field this route does not take — an unknown field is refused rather than ignored, because a caller who misspells as_of and is silently answered for today has been given a wrong answer with no way to tell; release_mismatch — the request names a release this instance does not serve; a response echoes the release it answered from, and an echo that lied would be worse than a refusal; unknown_profile — no entity profile of that id is in the release

application/json — Error

Response header
X-Request-IdThe correlation id this request was answered under. It is on every response, in the server’s log record for the request, and inside the error object of every refusal.

unauthorized — no bearer token was presented, or the one presented is not a credential this deployment accepts. A request with no token is answered only where the deployment configuration says anonymous access is allowed

application/json — Error

Response header
WWW-AuthenticateThe challenge, naming the one scheme this server accepts.
X-Request-IdThe correlation id this request was answered under. It is on every response, in the server’s log record for the request, and inside the error object of every refusal.

payload_too_large — the body is larger than this server reads

application/json — Error

Response header
X-Request-IdThe correlation id this request was answered under. It is on every response, in the server’s log record for the request, and inside the error object of every refusal.

rate_limited — the caller is over its per-minute allowance; Retry-After says when the rolling window will admit it again. A refused request does not consume budget, so retrying cannot make the throttling worse

application/json — Error

Response header
Retry-AfterSeconds until the rolling window admits this caller again.
X-Request-IdThe correlation id this request was answered under. It is on every response, in the server’s log record for the request, and inside the error object of every refusal.

not_ready — no verified release is loaded yet, or the process has begun draining. The socket binds before the release is verified, so a listener that is not ready answers the probes and serves no regulation at all

application/json — Error

Response header
X-Request-IdThe correlation id this request was answered under. It is on every response, in the server’s log record for the request, and inside the error object of every refusal.

Rendered from openregs/openregs@f3a2d10:docs/reference/openapi.json