changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "description": "Journal entries with pagination, replay boundary, and declared gaps.",
+ "properties": {
+ "completeness": {
+ "description": "Declares exactly what this response left out, so a truncated result can never look complete.",
+ "properties": {
+ "complete": {
+ "description": "True only when every matching item is present.",
+ "type": "boolean"
+ },
+ "gaps": {
+ "description": "Sequence ranges missing from the journal, each { from, to }. A hard purge legitimately creates one; it is declared, not hidden.",
+ "items": {
+ "properties": {
+ "from": {
+ "description": "First missing sequence.",
+ "type": "integer"
+ },
+ "to": {
+ "description": "Last missing sequence.",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "journalEpoch": {
+ "anyOf": [
+ {
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "First replayable sequence, or null when nothing is replayable."
+ },
+ "journalSeq": {
+ "description": "Highest sequence issued so far.",
+ "type": "integer"
+ },
+ "limitSource": {
+ "description": "Whose choice bounded the result.",
+ "enum": [
+ "caller",
+ "default"
+ ],
+ "type": "string"
+ },
+ "losslessItems": {
+ "description": "Always true: each returned item is a full-fidelity record, never a summary or a truncated field.",
+ "type": "boolean"
+ },
+ "omitted": {
+ "description": "total minus returned.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "returned": {
+ "description": "Items in this response.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "scope": {
+ "description": "The project, query, and structured filters that produced this result, so it explains its own derivation.",
+ "type": "object"
+ },
+ "total": {
+ "description": "Items that matched in total.",
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "scope",
+ "returned",
+ "total",
+ "complete",
+ "omitted",
+ "losslessItems",
+ "limitSource",
+ "journalEpoch",
+ "journalSeq",
+ "gaps"
+ ],
+ "type": "object"
+ },
+ "items": {
+ "description": "The items in this window, in deterministic order.",
+ "items": {
+ "description": "One journal entry: a complete post-operation snapshot. Entries imported from older schemas may lack seq or payload.",
+ "properties": {
+ "at": {
+ "description": "ISO 8601 time the entry was appended.",
+ "type": "string"
+ },
+ "causationId": {
+ "description": "Present only when this entry was caused by another; carries that entry id.",
+ "type": "string"
+ },
+ "entityId": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Identifier of that entity; null on a redacted skeleton."
+ },
+ "entityKind": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Kind of the entity the entry is about."
+ },
+ "id": {
+ "description": "Entry identifier.",
+ "type": "string"
+ },
+ "idempotencyKey": {
+ "description": "Present only when the write carried a retry key.",
+ "type": "string"
+ },
+ "payload": {
+ "anyOf": [
+ {
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The complete post-operation snapshot, or null once a logical purge reduced the entry to an audit skeleton."
+ },
+ "project": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Project the entry belongs to."
+ },
+ "provenance": {
+ "description": "actor, client, and sessionId recorded with the write; all null on purged skeletons.",
+ "type": "object"
+ },
+ "redacted": {
+ "description": "Present only on entries reduced by a logical purge.",
+ "type": "boolean"
+ },
+ "redactedReason": {
+ "description": "Why the entry was reduced.",
+ "type": "string"
+ },
+ "schemaVersion": {
+ "description": "Schema version the entry was written under.",
+ "type": "integer"
+ },
+ "seq": {
+ "description": "Monotonic sequence number. Absent on pre-journal metadata entries.",
+ "type": "integer"
+ },
+ "transition": {
+ "description": "Present only on lifecycle changes; carries from, to, and the actor that made them.",
+ "type": "object"
+ },
+ "type": {
+ "description": "Entry type, such as decision.recorded, fact.observed, memory.superseded, or project.purged.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "page": {
+ "description": "The window actually applied to the matching items.",
+ "properties": {
+ "hasMore": {
+ "description": "True when matching items exist beyond this window.",
+ "type": "boolean"
+ },
+ "limit": {
+ "description": "Window size applied, whether the caller set it or the default did.",
+ "minimum": 1,
+ "type": "integer"
+ },
+ "offset": {
+ "description": "Index of the first item returned.",
+ "minimum": 0,
+ "type": "integer"
+ },
+ "total": {
+ "description": "Matching items before the window was applied.",
+ "minimum": 0,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "offset",
+ "limit",
+ "total",
+ "hasMore"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "items",
+ "page",
+ "completeness"
+ ],
+ "type": "object"
+}