{"service":"dawn","contract":"2026-09-19","build":{"revision":"51a1e42f29a627a498a6f664220c63b5309a94bd","dirty":false,"go":"go1.26.3"},"identity":{"root_id":"rt_8fa6b984886c790008630c061af11437","world_space_id":"spc_fa23b93f4c94041a0de11d8d6e87567b","journal_instance_id":"jinst_a2b99003b5cf9c6819d693adcd409076","world":"conformance"},"bindings":{"primary":"http","http":{"prefix":"/v1"},"ws":{"path":"/v1/ws","subprotocol":"dawn"}},"operations":[{"name":"livez","kind":"operational","doc":"the process is up and can answer; never 503; empty checks","params":[],"response":"Health","errors":[],"http":{"method":"GET","path":"/livez"},"ws":false},{"name":"health","kind":"operational","doc":"the service can serve its contract: journal and bytes answer; 503 otherwise","params":[],"response":"Health","errors":[],"http":{"method":"GET","path":"/healthz"},"ws":false},{"name":"describe","kind":"operational","doc":"who this is, which contract, build, identity, bindings, operations, refusals and served files","params":[],"response":"Describe","errors":[],"http":{"method":"GET","path":"/describe"},"ws":false},{"name":"describe_file","kind":"operational","doc":"one committed contract file, verbatim, with its media type","params":[{"name":"file","kind":"string","required":true,"doc":"a file name listed by describe"}],"errors":["not_found"],"http":{"method":"GET","path":"/describe/{file...}"},"ws":false},{"name":"resolve","kind":"read","grant":"read","doc":"the space at a path, or null when the path is unoccupied","params":[{"name":"path","kind":"strings","required":true,"doc":"the path, one label per entry, below the world"}],"response":"ResolveResult","errors":["not_found","unavailable"],"http":{"method":"GET","path":"/v1/resolve"},"ws":true},{"name":"children","kind":"read","grant":"read","doc":"the readable children of a space at a fixed cutoff, in creation order; without a path, the world's","params":[{"name":"path","kind":"strings","required":false,"doc":"the path, one label per entry, below the world; omitted selects the world itself"},{"name":"through","kind":"int","required":false,"doc":"a cutoff of the selected journal; omitted captures its committed cutoff once; a continuation resends it"},{"name":"cursor","kind":"string","required":false,"doc":"a continuation cursor from the previous page"},{"name":"limit","kind":"int","required":false,"doc":"page size, 1..128, default 64"}],"response":"ChildrenPage","errors":["not_found","invalid_cursor","limit_exceeded","unavailable"],"http":{"method":"GET","path":"/v1/children"},"ws":true},{"name":"entries","kind":"read","grant":"read","doc":"a journal's entries over a fixed prefix, ascending, one page at a time","params":[{"name":"path","kind":"strings","required":true,"doc":"the path, one label per entry, below the world"},{"name":"after","kind":"int","required":false,"doc":"the position a page continues after; omitted starts at the beginning"},{"name":"through","kind":"int","required":false,"doc":"a cutoff of the selected journal; omitted captures its committed cutoff once; a continuation resends it"},{"name":"limit","kind":"int","required":false,"doc":"page size, 1..128, default 64"}],"response":"EntriesPage","errors":["not_found","invalid_cursor","limit_exceeded","unavailable"],"http":{"method":"GET","path":"/v1/entries"},"ws":true},{"name":"get","kind":"read","grant":"read","doc":"one exact occurrence by its reference, read at a valid covering cutoff; the reference is resolved to its actual path before authorization","params":[{"name":"root_id","kind":"string","required":true,"doc":"the Journal root the occurrence lies in"},{"name":"space_id","kind":"string","required":true,"doc":"the exact space the occurrence lies in"},{"name":"position","kind":"int","required":true,"doc":"the occurrence's position in its journal"}],"response":"RecordRead","errors":["not_found","unavailable"],"http":{"method":"GET","path":"/v1/get"},"ws":true},{"name":"fetch","kind":"stream","grant":"read","doc":"the bytes of retained content the path's journal names, streamed and verified before completion","params":[{"name":"path","kind":"strings","required":true,"doc":"the path, one label per entry, below the world"},{"name":"bytes","kind":"string","required":true,"doc":"the hash of the retained bytes"}],"response":"bytes","errors":["not_found","unresolved","unavailable"],"http":{"method":"GET","path":"/v1/fetch"},"ws":false},{"name":"snapshot","kind":"read","grant":"read","doc":"capture an explicit manifest of the scope and its selected descendants, retained in bytes and cited by digest","params":[{"name":"path","kind":"strings","required":false,"doc":"the path, one label per entry, below the world; omitted selects the world itself"},{"name":"depth","kind":"int","required":false,"doc":"how many levels below the scope to select; omitted selects every descendant"}],"response":"Snapshot","errors":["not_found","limit_exceeded","unavailable"],"http":{"method":"GET","path":"/v1/snapshot"},"ws":true},{"name":"retain","kind":"mutation","grant":"publish","doc":"retain bytes under a declared interpretation; nothing is named yet; verified against the hash before the artifact is reported","params":[{"name":"path","kind":"strings","required":true,"doc":"the path, one label per entry, below the world"},{"name":"type","kind":"string","required":true,"doc":"the interpretation hash the bytes are retained under"}],"request":"bytes","response":"RetainResult","errors":["invalid_record","unavailable"],"http":{"method":"PUT","path":"/v1/retain"},"ws":false},{"name":"publish","kind":"mutation","grant":"publish","doc":"publish a record at a path: validate, retain, append the record fact to the leaf journal with its admission provenance, recovering an earlier admission of the same request","params":[],"request":"PublishRequest","response":"PublishResult","errors":["not_found","exists","conflict","idempotency_mismatch","invalid_record","unresolved","structural","limit_exceeded","unavailable"],"http":{"method":"POST","path":"/v1/publish"},"ws":true},{"name":"create_artifact","kind":"mutation","grant":"publish","doc":"create an artifact space with its one immutable content fact and its declarations space","params":[],"request":"CreateArtifactRequest","response":"ArtifactResult","errors":["not_found","exists","conflict","idempotency_mismatch","invalid_record","unresolved","structural","limit_exceeded","unavailable"],"http":{"method":"POST","path":"/v1/artifacts"},"ws":true},{"name":"declare","kind":"mutation","grant":"declare","doc":"append an immutable attributed declaration about an artifact's exact content, retaining the signed envelope and its frame and recovering the first admission on retry","params":[],"request":"DeclareRequest","response":"DeclareResult","errors":["not_found","exists","conflict","idempotency_mismatch","invalid_record","unresolved","structural","limit_exceeded","unavailable"],"http":{"method":"POST","path":"/v1/declarations"},"ws":true},{"name":"compose","kind":"mutation","grant":"publish","doc":"compose a view from exact occurrence selections and publish it under views/","params":[],"request":"ComposeRequest","response":"PublishResult","errors":["not_found","exists","conflict","idempotency_mismatch","invalid_record","unresolved","structural","limit_exceeded","unavailable"],"http":{"method":"POST","path":"/v1/compose"},"ws":true},{"name":"apply","kind":"mutation","grant":"publish","doc":"run a configured tool on a valuation of its input roles and record the application: admit the attempt, create the output artifacts, append the application batch and attest the run; recover an earlier admission of the same request","params":[],"request":"ApplyRequest","response":"ApplyResult","errors":["not_found","exists","conflict","idempotency_mismatch","invalid_record","unresolved","structural","limit_exceeded","unavailable"],"http":{"method":"POST","path":"/v1/applications"},"ws":true},{"name":"query","kind":"read","grant":"read","doc":"records of a view matching filters, with the view, coverage and limits; four outcomes kept apart","params":[],"request":"QueryRequest","response":"QueryResult","errors":["not_found","unresolved","invalid_cursor","unavailable"],"http":{"method":"POST","path":"/v1/query"},"ws":true},{"name":"explain","kind":"read","grant":"read","doc":"an admitted assertion at a view: which declaration defined it, which selection adopted it, what disagreed","params":[],"request":"ExplainRequest","response":"ExplainResult","errors":["not_found","unresolved","unavailable"],"http":{"method":"POST","path":"/v1/explain"},"ws":true},{"name":"create_project","kind":"mutation","grant":"provision","doc":"create a project space with its organizing spaces","params":[],"request":"CreateProjectRequest","response":"SpaceResult","errors":["not_found","exists","conflict","idempotency_mismatch","structural","limit_exceeded","unavailable"],"http":{"method":"POST","path":"/v1/projects"},"ws":true},{"name":"provision_worker","kind":"mutation","grant":"provision","doc":"create a worker space under its project, write its state record and issue its grants to the workspace's public key","params":[],"request":"ProvisionWorkerRequest","response":"ProvisionWorkerResult","errors":["not_found","exists","conflict","idempotency_mismatch","structural","limit_exceeded","unavailable"],"http":{"method":"POST","path":"/v1/workers"},"ws":true},{"name":"retire_worker","kind":"mutation","grant":"provision","doc":"record that a worker's window is closed","params":[],"request":"RetireWorkerRequest","response":"PublishResult","errors":["not_found","exists","conflict","idempotency_mismatch","structural","limit_exceeded","unavailable"],"http":{"method":"POST","path":"/v1/workers/retire"},"ws":true},{"name":"create_campaign","kind":"mutation","grant":"provision","doc":"create a campaign space over a project with its state record","params":[],"request":"CreateCampaignRequest","response":"PublishResult","errors":["not_found","exists","conflict","idempotency_mismatch","structural","limit_exceeded","unavailable"],"http":{"method":"POST","path":"/v1/campaigns"},"ws":true},{"name":"assign","kind":"mutation","grant":"provision","doc":"publish an assignment: pinned inputs and intended outputs for a worker","params":[],"request":"AssignRequest","response":"PublishResult","errors":["unresolved","not_found","exists","conflict","idempotency_mismatch","structural","limit_exceeded","unavailable"],"http":{"method":"POST","path":"/v1/assignments"},"ws":true},{"name":"export","kind":"read","grant":"provision","doc":"a complete traversal of the world or a subtree: every selected journal prefix and child observation, retained in bytes and cited by digest, with explicit incomplete coverage","params":[{"name":"path","kind":"strings","required":false,"doc":"the path, one label per entry, below the world; omitted selects the world itself"},{"name":"cursor","kind":"string","required":false,"doc":"a continuation cursor from the previous page"}],"response":"Export","errors":["not_found","invalid_cursor","limit_exceeded","unavailable"],"http":{"method":"GET","path":"/v1/export"},"ws":true},{"name":"subscribe","kind":"session","grant":"read","doc":"open a subscription over a scope: from the reply on, every journal under it that advances is reported once with its new cutoff, advances of one journal superseding each other, with a gap for a journal whose cutoff could not be kept","params":[],"request":"SubscribeRequest","response":"SubscribeResult","errors":["not_found","invalid","limit_exceeded","unavailable"],"ws":true},{"name":"unsubscribe","kind":"session","grant":"read","doc":"close a subscription this connection opened; its authority is ownership of the subscription, never a path grant, because it confers and discloses nothing","params":[{"name":"subscription","kind":"string","required":true,"doc":"the subscription this connection opened"}],"response":"UnsubscribeResult","errors":["not_found"],"ws":true}],"refusals":[{"name":"not_found","http":404,"meaning":"the path, space, occurrence, record or file is not here; shared with Journal"},{"name":"exists","http":409,"meaning":"a child of that key already exists under the parent, or the record identity is occupied; shared with Journal"},{"name":"conflict","http":409,"meaning":"an expected cutoff did not hold; carries the expected and actual cutoffs; shared with Journal"},{"name":"idempotency_mismatch","http":409,"meaning":"the operation ID was accepted before with a different semantic request; shared with Journal"},{"name":"invalid","http":400,"meaning":"a value is outside its grammar, limit or structural rule, or a cutoff is inside a batch or in the future"},{"name":"invalid_cursor","http":400,"meaning":"a malformed cursor, or one of another enumeration, traversal or query"},{"name":"limit_exceeded","http":413,"meaning":"a declared resource bound would be exceeded: a value, a batch, a page, a manifest or a continuation; shared with Journal"},{"name":"unavailable","http":503,"meaning":"a backend, a selected journal or a required observation cannot currently be served; recovery data that cannot be read is unavailable, never absent"},{"name":"unverified","http":401,"meaning":"the signature, freshness, audience or key admissibility failed; nothing was evaluated"},{"name":"denied","http":403,"meaning":"no grant chain reaches the principal for this kind on this path; whether the path exists is not revealed"},{"name":"invalid_record","http":400,"meaning":"the record does not validate against its interpretation profile, or an occurrence violates dawn-facts-v2; carries the field"},{"name":"unresolved","http":409,"meaning":"a record or request refers to content or an occurrence that does not resolve; carries the reference"},{"name":"structural","http":400,"meaning":"a user label collides with the layout's structural labels at that position, or a write targets a protected space"}],"files":["SURFACE.md","HTTP.md","WS.md","operations.json","openapi.json","schema/AcquisitionTarget.schema.json","schema/ApplicationRequest.schema.json","schema/ApplyRequest.schema.json","schema/ApplyResult.schema.json","schema/ArtifactResult.schema.json","schema/AssignRequest.schema.json","schema/Carriage.schema.json","schema/ChildrenPage.schema.json","schema/ComposeRequest.schema.json","schema/CreateArtifactRequest.schema.json","schema/CreateCampaignRequest.schema.json","schema/CreateProjectRequest.schema.json","schema/Declaration.schema.json","schema/DeclarationFrame.schema.json","schema/DeclarationRecord.schema.json","schema/DeclareRequest.schema.json","schema/DeclareResult.schema.json","schema/Describe.schema.json","schema/EntriesPage.schema.json","schema/Error.schema.json","schema/Event.schema.json","schema/Executable.schema.json","schema/ExplainRequest.schema.json","schema/ExplainResult.schema.json","schema/Export.schema.json","schema/Gap.schema.json","schema/Health.schema.json","schema/Justification.schema.json","schema/OutputManifest.schema.json","schema/ProvisionWorkerRequest.schema.json","schema/ProvisionWorkerResult.schema.json","schema/PublishRequest.schema.json","schema/PublishResult.schema.json","schema/QueryRequest.schema.json","schema/QueryResult.schema.json","schema/Record.schema.json","schema/RecordRead.schema.json","schema/Refusal.schema.json","schema/Relation.schema.json","schema/ResolveResult.schema.json","schema/ResultSeal.schema.json","schema/RetainResult.schema.json","schema/RetireWorkerRequest.schema.json","schema/Role.schema.json","schema/Snapshot.schema.json","schema/SpaceResult.schema.json","schema/SubscribeRequest.schema.json","schema/SubscribeResult.schema.json","schema/SubscriptionClosed.schema.json","schema/ToolDescription.schema.json","schema/UnsubscribeResult.schema.json"]}