{"service":"journal","contract":"2026-09-12","build":{"revision":"745d5f972663ae077f65018dc5b675b52eeebfca","dirty":false,"go":"go1.26.3"},"identity":{"root_id":"rt_8fa6b984886c790008630c061af11437","root_space_id":"spc_64731f19f228c8f30ea3c71fa0362950","journal_instance_id":"jinst_a2b99003b5cf9c6819d693adcd409076"},"bindings":{"primary":"http","http":{"prefix":"/v1"}},"operations":[{"name":"create","kind":"mutation","doc":"create a child space and its empty journal under an existing parent, recording the creation in the parent's journal","params":[],"request":"CreateRequest","response":"CreateResult","errors":["invalid","not_found","exists","conflict","idempotency_mismatch","unavailable","internal"],"http":{"method":"POST","path":"/v1/create"}},{"name":"resolve","kind":"read","doc":"resolve a path to its current occupant, or an exact space identity to its path","params":[],"request":"ResolveRequest","response":"ResolveResult","errors":["invalid","not_found","unavailable","internal"],"http":{"method":"POST","path":"/v1/resolve"}},{"name":"children","kind":"read","doc":"enumerate a space's immediate children at a fixed cutoff, in creation order","params":[],"request":"ChildrenRequest","response":"ChildrenResult","errors":["invalid","not_found","limit_exceeded","unavailable","internal"],"http":{"method":"POST","path":"/v1/children"}},{"name":"head","kind":"read","doc":"read a space's committed cutoff","params":[],"request":"HeadRequest","response":"HeadResult","errors":["invalid","not_found","unavailable","internal"],"http":{"method":"POST","path":"/v1/head"}},{"name":"append","kind":"mutation","doc":"append an atomic batch of facts, optionally requiring the current cutoff","params":[],"request":"AppendRequest","response":"AppendResult","errors":["invalid","not_found","conflict","idempotency_mismatch","limit_exceeded","unavailable","internal"],"http":{"method":"POST","path":"/v1/append"}},{"name":"read","kind":"read","doc":"read a fixed prefix of one journal, optionally filtered, one page at a time","params":[],"request":"ReadRequest","response":"ReadResult","errors":["invalid","not_found","limit_exceeded","unavailable","internal"],"http":{"method":"POST","path":"/v1/read"}},{"name":"query","kind":"read","doc":"read a space and its descendants over an explicit snapshot manifest","params":[],"request":"QueryRequest","response":"QueryResult","errors":["invalid","not_found","limit_exceeded","unavailable","internal"],"http":{"method":"POST","path":"/v1/query"}},{"name":"livez","kind":"operational","doc":"the process is up and can answer; empty checks and never 503","params":[],"response":"Health","errors":["invalid"],"http":{"method":"GET","path":"/livez"}},{"name":"health","kind":"operational","doc":"whether the engine can serve the contract","params":[],"response":"Health","errors":["invalid"],"http":{"method":"GET","path":"/healthz"}},{"name":"describe","kind":"operational","doc":"service identity, root, contract, build, binding, operations, refusals, limits, profiles and files","params":[],"response":"Describe","errors":["invalid"],"http":{"method":"GET","path":"/describe"}},{"name":"describe_file","kind":"operational","doc":"one embedded contract file, verbatim","params":[{"name":"file","kind":"string","required":true,"repeated":false,"doc":"an exact file name listed by describe"}],"errors":["invalid","not_found"],"http":{"method":"GET","path":"/describe/{file...}"}}],"refusals":[{"name":"invalid","http":400,"meaning":"a value is outside its grammar, encoding, structural rule or selection; a cutoff inside a batch or in the future; a continuation that does not fit its request"},{"name":"not_found","http":404,"meaning":"the root or exact space does not exist, or the requested contract file is not listed"},{"name":"exists","http":409,"meaning":"the child key is already occupied under that parent"},{"name":"conflict","http":409,"meaning":"expected_cutoff differs from the committed cutoff"},{"name":"idempotency_mismatch","http":409,"meaning":"the scoped operation ID already committed a different normalized request"},{"name":"limit_exceeded","http":413,"meaning":"a declared resource bound would be exceeded: a value, a batch, a page, a snapshot or a continuation"},{"name":"unavailable","http":503,"meaning":"the engine, a selected history or a required observation cannot currently be served"},{"name":"internal","http":500,"meaning":"an unexpected implementation failure occurred; a mutation's outcome may be uncertain"}],"limits":{"max_position":9007199254740991,"max_key_bytes":255,"max_fact_bytes":1048576,"max_append_facts":128,"max_append_bytes":4194304,"max_body_bytes":8388608,"max_page_entries":128,"default_page_entries":64,"max_page_bytes":4194304,"max_inspect_candidates":4096,"max_inspect_bytes":16777216,"max_snapshot_spaces":4096,"max_snapshot_bytes":4194304,"max_cursor_bytes":4096,"max_value_depth":256,"max_tuple_arity":65536,"max_atom_bytes":1048576},"profiles":{"facts":"ulab-journal-facts-v1","codec":"ontos-codec-v1","compound":"ontos/compound","data":"ontos/data","data_json":"ontos-data-json/1","equality":"ontos-core structural identity","creation_predicate":"ulab.journal.child_created.v1"},"files":["SURFACE.md","HTTP.md","operations.json","openapi.json","schema/AppendRequest.schema.json","schema/AppendResult.schema.json","schema/ChildrenRequest.schema.json","schema/ChildrenResult.schema.json","schema/CreateRequest.schema.json","schema/CreateResult.schema.json","schema/Describe.schema.json","schema/Entry.schema.json","schema/EntryRef.schema.json","schema/Error.schema.json","schema/Filter.schema.json","schema/HeadRequest.schema.json","schema/HeadResult.schema.json","schema/Health.schema.json","schema/QueryRequest.schema.json","schema/QueryResult.schema.json","schema/ReadRequest.schema.json","schema/ReadResult.schema.json","schema/ResolveRequest.schema.json","schema/ResolveResult.schema.json","schema/Snapshot.schema.json","schema/Space.schema.json","schema/SpaceRef.schema.json"]}