openapi: 3.2.0 info: title: Ablo Commits API version: 0.55.0 description: 'Ablo collaboration infrastructure: commit, read, and claim. `{model}` is any model from your pushed schema — the routes are the same whichever it is. Authenticate every request with your API key as a Bearer token.' license: name: Apache License 2.0 identifier: Apache-2.0 servers: - url: https://api.abloatai.com/api description: Production - url: http://localhost:8787/api description: Local development security: - bearerAuth: [] tags: - name: commits paths: /v1/commits: get: tags: - commits summary: List commit records parameters: - name: actorId in: query schema: type: string minLength: 1 - name: status in: query schema: anyOf: - type: string const: queued - type: string const: confirmed - type: string const: rejected - name: cursor in: query schema: type: string minLength: 1 - name: limit in: query schema: type: integer minimum: 1 responses: '200': description: Tenant-scoped commit records content: application/json: schema: type: object properties: data: readOnly: true type: array items: oneOf: - type: object properties: status: type: string const: queued statusAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ lastSyncId: type: number const: 0 correlationId: type: string minLength: 1 maxLength: 255 id: type: string minLength: 1 attempts: readOnly: true minItems: 1 type: array items: type: object properties: id: type: string minLength: 1 observedAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ transport: type: string enum: - http - websocket - internal kind: type: string enum: - execution - replay required: - id - observedAt - transport - kind additionalProperties: false actor: type: object properties: kind: type: string enum: - user - agent - system id: type: string minLength: 1 required: - kind - id additionalProperties: false authority: type: object properties: organizationId: type: string minLength: 1 projectId: default: null anyOf: - type: string minLength: 1 - type: 'null' branchId: default: null anyOf: - type: string minLength: 1 - type: 'null' syncGroups: type: array items: type: string operations: type: array items: type: string pattern: ^[^.\s]+\.(read|create|update|delete)$ participantKind: type: string enum: - user - agent - system participantId: type: string minLength: 1 deliveryPartition: default: null anyOf: - type: object properties: index: type: integer minimum: 0 maximum: 9007199254740991 count: type: integer minimum: 2 maximum: 9007199254740991 required: - index - count additionalProperties: false - type: 'null' required: - organizationId - projectId - branchId - syncGroups - operations - participantKind - participantId - deliveryPartition additionalProperties: false claims: readOnly: true type: array items: type: object properties: id: type: string minLength: 1 target: type: object properties: scope: type: string const: row model: type: string id: type: string fields: readOnly: true type: array items: type: string required: - scope - model - id additionalProperties: false fenceToken: type: integer minimum: 0 maximum: 9007199254740991 required: - id - target - fenceToken additionalProperties: false createdAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ readSet: readOnly: true maxItems: 500 type: array items: oneOf: - type: object properties: target: oneOf: - type: object properties: scope: type: string const: row model: type: string id: type: string fields: readOnly: true type: array items: type: string required: - scope - model - id additionalProperties: false - type: object properties: scope: type: string const: group group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ required: - scope - group additionalProperties: false watermark: type: integer minimum: 0 maximum: 9007199254740991 lifetime: type: string const: commit onStale: type: string enum: - reject - overwrite - notify required: - target - watermark - lifetime - onStale additionalProperties: false - type: object properties: target: oneOf: - type: object properties: scope: type: string const: row model: type: string id: type: string required: - scope - model - id additionalProperties: false - type: object properties: scope: type: string const: group group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ required: - scope - group additionalProperties: false watermark: type: integer minimum: 0 maximum: 9007199254740991 lifetime: type: string const: persisted onStale: type: string enum: - reject - notify required: - target - watermark - lifetime - onStale additionalProperties: false operations: readOnly: true type: array items: type: object properties: id: anyOf: - type: string - type: 'null' transactionId: anyOf: - type: string - type: 'null' claimId: anyOf: - type: string minLength: 1 - type: 'null' readAt: anyOf: - type: integer minimum: 0 maximum: 9007199254740991 - type: 'null' onStale: anyOf: - type: string enum: - reject - overwrite - notify - type: 'null' fenceToken: anyOf: - type: number - type: 'null' action: type: string model: type: string data: type: object properties: retention: type: string const: redacted required: - retention additionalProperties: false required: - action - model - data additionalProperties: false receipt: type: object properties: clientTxId: type: string minLength: 1 serverTxId: type: string ops: type: integer minimum: 0 maximum: 9007199254740991 notifications: type: array items: oneOf: - type: object properties: object: type: string const: stale_notification target: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false readAt: type: integer minimum: 0 maximum: 9007199254740991 observedSyncId: type: integer minimum: 0 maximum: 9007199254740991 writtenBy: type: object properties: kind: type: string enum: - user - agent - system id: type: string required: - kind - id additionalProperties: false scope: type: string const: row currentValues: type: object additionalProperties: true required: - object - target - readAt - observedSyncId - writtenBy - scope - currentValues additionalProperties: false - type: object properties: object: type: string const: stale_notification target: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false readAt: type: integer minimum: 0 maximum: 9007199254740991 observedSyncId: type: integer minimum: 0 maximum: 9007199254740991 writtenBy: type: object properties: kind: type: string enum: - user - agent - system id: type: string required: - kind - id additionalProperties: false scope: type: string const: group group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ propagation: readOnly: true type: object properties: via: type: string enum: - self - parent - transitive through: readOnly: true type: array items: type: string required: - via - through additionalProperties: false changed: type: object properties: count: type: integer minimum: 0 maximum: 9007199254740991 sample: readOnly: true type: array items: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false truncated: type: boolean required: - count - sample - truncated additionalProperties: false required: - object - target - readAt - observedSyncId - writtenBy - scope - group additionalProperties: false missingIds: type: array items: type: string minLength: 1 error: type: object properties: code: type: string minLength: 1 message: type: string field: type: string request_id: type: string event_id: type: string requiredCapability: type: object properties: scope: type: string constraints: type: object additionalProperties: anyOf: - type: array items: type: string - type: string issuer: type: string ttlSeconds: type: number nonce: type: string required: - scope additionalProperties: true details: type: object additionalProperties: true required: - code - message additionalProperties: false required: - clientTxId - serverTxId additionalProperties: false required: - status - statusAt - lastSyncId - correlationId - id - attempts - actor - authority - claims - createdAt - readSet - operations - receipt additionalProperties: false - type: object properties: status: type: string const: confirmed statusAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ lastSyncId: type: integer minimum: 0 maximum: 9007199254740991 correlationId: type: string minLength: 1 maxLength: 255 id: type: string minLength: 1 attempts: readOnly: true minItems: 1 type: array items: type: object properties: id: type: string minLength: 1 observedAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ transport: type: string enum: - http - websocket - internal kind: type: string enum: - execution - replay required: - id - observedAt - transport - kind additionalProperties: false actor: type: object properties: kind: type: string enum: - user - agent - system id: type: string minLength: 1 required: - kind - id additionalProperties: false authority: type: object properties: organizationId: type: string minLength: 1 projectId: default: null anyOf: - type: string minLength: 1 - type: 'null' branchId: default: null anyOf: - type: string minLength: 1 - type: 'null' syncGroups: type: array items: type: string operations: type: array items: type: string pattern: ^[^.\s]+\.(read|create|update|delete)$ participantKind: type: string enum: - user - agent - system participantId: type: string minLength: 1 deliveryPartition: default: null anyOf: - type: object properties: index: type: integer minimum: 0 maximum: 9007199254740991 count: type: integer minimum: 2 maximum: 9007199254740991 required: - index - count additionalProperties: false - type: 'null' required: - organizationId - projectId - branchId - syncGroups - operations - participantKind - participantId - deliveryPartition additionalProperties: false claims: readOnly: true type: array items: type: object properties: id: type: string minLength: 1 target: type: object properties: scope: type: string const: row model: type: string id: type: string fields: readOnly: true type: array items: type: string required: - scope - model - id additionalProperties: false fenceToken: type: integer minimum: 0 maximum: 9007199254740991 required: - id - target - fenceToken additionalProperties: false createdAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ readSet: readOnly: true maxItems: 500 type: array items: oneOf: - type: object properties: target: oneOf: - type: object properties: scope: type: string const: row model: type: string id: type: string fields: readOnly: true type: array items: type: string required: - scope - model - id additionalProperties: false - type: object properties: scope: type: string const: group group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ required: - scope - group additionalProperties: false watermark: type: integer minimum: 0 maximum: 9007199254740991 lifetime: type: string const: commit onStale: type: string enum: - reject - overwrite - notify required: - target - watermark - lifetime - onStale additionalProperties: false - type: object properties: target: oneOf: - type: object properties: scope: type: string const: row model: type: string id: type: string required: - scope - model - id additionalProperties: false - type: object properties: scope: type: string const: group group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ required: - scope - group additionalProperties: false watermark: type: integer minimum: 0 maximum: 9007199254740991 lifetime: type: string const: persisted onStale: type: string enum: - reject - notify required: - target - watermark - lifetime - onStale additionalProperties: false operations: readOnly: true type: array items: type: object properties: id: anyOf: - type: string - type: 'null' transactionId: anyOf: - type: string - type: 'null' claimId: anyOf: - type: string minLength: 1 - type: 'null' readAt: anyOf: - type: integer minimum: 0 maximum: 9007199254740991 - type: 'null' onStale: anyOf: - type: string enum: - reject - overwrite - notify - type: 'null' fenceToken: anyOf: - type: number - type: 'null' action: type: string model: type: string data: type: object properties: retention: type: string const: redacted required: - retention additionalProperties: false required: - action - model - data additionalProperties: false receipt: type: object properties: clientTxId: type: string minLength: 1 serverTxId: type: string ops: type: integer minimum: 0 maximum: 9007199254740991 notifications: type: array items: oneOf: - type: object properties: object: type: string const: stale_notification target: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false readAt: type: integer minimum: 0 maximum: 9007199254740991 observedSyncId: type: integer minimum: 0 maximum: 9007199254740991 writtenBy: type: object properties: kind: type: string enum: - user - agent - system id: type: string required: - kind - id additionalProperties: false scope: type: string const: row currentValues: type: object additionalProperties: true required: - object - target - readAt - observedSyncId - writtenBy - scope - currentValues additionalProperties: false - type: object properties: object: type: string const: stale_notification target: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false readAt: type: integer minimum: 0 maximum: 9007199254740991 observedSyncId: type: integer minimum: 0 maximum: 9007199254740991 writtenBy: type: object properties: kind: type: string enum: - user - agent - system id: type: string required: - kind - id additionalProperties: false scope: type: string const: group group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ propagation: readOnly: true type: object properties: via: type: string enum: - self - parent - transitive through: readOnly: true type: array items: type: string required: - via - through additionalProperties: false changed: type: object properties: count: type: integer minimum: 0 maximum: 9007199254740991 sample: readOnly: true type: array items: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false truncated: type: boolean required: - count - sample - truncated additionalProperties: false required: - object - target - readAt - observedSyncId - writtenBy - scope - group additionalProperties: false missingIds: type: array items: type: string minLength: 1 error: type: object properties: code: type: string minLength: 1 message: type: string field: type: string request_id: type: string event_id: type: string requiredCapability: type: object properties: scope: type: string constraints: type: object additionalProperties: anyOf: - type: array items: type: string - type: string issuer: type: string ttlSeconds: type: number nonce: type: string required: - scope additionalProperties: true details: type: object additionalProperties: true required: - code - message additionalProperties: false required: - clientTxId - serverTxId additionalProperties: false required: - status - statusAt - lastSyncId - id - attempts - actor - authority - claims - createdAt - readSet - operations - receipt additionalProperties: false - type: object properties: status: type: string const: rejected statusAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ id: type: string minLength: 1 attempts: readOnly: true minItems: 1 type: array items: type: object properties: id: type: string minLength: 1 observedAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ transport: type: string enum: - http - websocket - internal kind: type: string enum: - execution - replay required: - id - observedAt - transport - kind additionalProperties: false actor: type: object properties: kind: type: string enum: - user - agent - system id: type: string minLength: 1 required: - kind - id additionalProperties: false authority: type: object properties: organizationId: type: string minLength: 1 projectId: default: null anyOf: - type: string minLength: 1 - type: 'null' branchId: default: null anyOf: - type: string minLength: 1 - type: 'null' syncGroups: type: array items: type: string operations: type: array items: type: string pattern: ^[^.\s]+\.(read|create|update|delete)$ participantKind: type: string enum: - user - agent - system participantId: type: string minLength: 1 deliveryPartition: default: null anyOf: - type: object properties: index: type: integer minimum: 0 maximum: 9007199254740991 count: type: integer minimum: 2 maximum: 9007199254740991 required: - index - count additionalProperties: false - type: 'null' required: - organizationId - projectId - branchId - syncGroups - operations - participantKind - participantId - deliveryPartition additionalProperties: false claims: readOnly: true type: array items: type: object properties: id: type: string minLength: 1 target: type: object properties: scope: type: string const: row model: type: string id: type: string fields: readOnly: true type: array items: type: string required: - scope - model - id additionalProperties: false fenceToken: type: integer minimum: 0 maximum: 9007199254740991 required: - id - target - fenceToken additionalProperties: false createdAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ readSet: readOnly: true maxItems: 500 type: array items: oneOf: - type: object properties: target: oneOf: - type: object properties: scope: type: string const: row model: type: string id: type: string fields: readOnly: true type: array items: type: string required: - scope - model - id additionalProperties: false - type: object properties: scope: type: string const: group group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ required: - scope - group additionalProperties: false watermark: type: integer minimum: 0 maximum: 9007199254740991 lifetime: type: string const: commit onStale: type: string enum: - reject - overwrite - notify required: - target - watermark - lifetime - onStale additionalProperties: false - type: object properties: target: oneOf: - type: object properties: scope: type: string const: row model: type: string id: type: string required: - scope - model - id additionalProperties: false - type: object properties: scope: type: string const: group group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ required: - scope - group additionalProperties: false watermark: type: integer minimum: 0 maximum: 9007199254740991 lifetime: type: string const: persisted onStale: type: string enum: - reject - notify required: - target - watermark - lifetime - onStale additionalProperties: false operations: readOnly: true type: array items: type: object properties: id: anyOf: - type: string - type: 'null' transactionId: anyOf: - type: string - type: 'null' claimId: anyOf: - type: string minLength: 1 - type: 'null' readAt: anyOf: - type: integer minimum: 0 maximum: 9007199254740991 - type: 'null' onStale: anyOf: - type: string enum: - reject - overwrite - notify - type: 'null' fenceToken: anyOf: - type: number - type: 'null' action: type: string model: type: string data: type: object properties: retention: type: string const: redacted required: - retention additionalProperties: false required: - action - model - data additionalProperties: false receipt: type: object properties: clientTxId: type: string minLength: 1 serverTxId: type: string ops: type: integer minimum: 0 maximum: 9007199254740991 notifications: type: array items: oneOf: - type: object properties: object: type: string const: stale_notification target: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false readAt: type: integer minimum: 0 maximum: 9007199254740991 observedSyncId: type: integer minimum: 0 maximum: 9007199254740991 writtenBy: type: object properties: kind: type: string enum: - user - agent - system id: type: string required: - kind - id additionalProperties: false scope: type: string const: row currentValues: type: object additionalProperties: true required: - object - target - readAt - observedSyncId - writtenBy - scope - currentValues additionalProperties: false - type: object properties: object: type: string const: stale_notification target: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false readAt: type: integer minimum: 0 maximum: 9007199254740991 observedSyncId: type: integer minimum: 0 maximum: 9007199254740991 writtenBy: type: object properties: kind: type: string enum: - user - agent - system id: type: string required: - kind - id additionalProperties: false scope: type: string const: group group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ propagation: readOnly: true type: object properties: via: type: string enum: - self - parent - transitive through: readOnly: true type: array items: type: string required: - via - through additionalProperties: false changed: type: object properties: count: type: integer minimum: 0 maximum: 9007199254740991 sample: readOnly: true type: array items: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false truncated: type: boolean required: - count - sample - truncated additionalProperties: false required: - object - target - readAt - observedSyncId - writtenBy - scope - group additionalProperties: false missingIds: type: array items: type: string minLength: 1 error: type: object properties: code: type: string minLength: 1 message: type: string field: type: string request_id: type: string event_id: type: string requiredCapability: type: object properties: scope: type: string constraints: type: object additionalProperties: anyOf: - type: array items: type: string - type: string issuer: type: string ttlSeconds: type: number nonce: type: string required: - scope additionalProperties: true details: type: object additionalProperties: true required: - code - message additionalProperties: false required: - clientTxId - serverTxId additionalProperties: false lastSyncId: type: number const: 0 required: - status - statusAt - id - attempts - actor - authority - claims - createdAt - readSet - operations - receipt - lastSyncId additionalProperties: false nextCursor: anyOf: - type: string minLength: 1 - type: 'null' required: - data - nextCursor additionalProperties: false '400': description: The request did not satisfy the published contract. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' '401': description: The Bearer credential is missing, malformed, or expired. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' '403': description: The credential does not authorize this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' '404': description: The addressed resource does not exist in the credential scope. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' '409': description: The request conflicts with current claim, version, or idempotency state. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' '429': description: The caller exceeded an enforced rate limit. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' '500': description: The server could not complete the request. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' '503': description: A required service is temporarily unavailable. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' default: description: An HTTP error not otherwise listed; decoded through the canonical envelope. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' operationId: listCommits post: tags: - commits summary: Commit a batch of operations atomically, and/or register durable premises parameters: - name: Idempotency-Key in: header schema: type: string maxLength: 255 description: Replay identity. Reuse the same key only for an identical request. requestBody: required: true content: application/json: schema: type: object properties: operations: minItems: 1 type: array items: type: object properties: id: anyOf: - type: string - type: 'null' transactionId: anyOf: - type: string - type: 'null' claimId: anyOf: - type: string minLength: 1 - type: 'null' readAt: anyOf: - type: integer minimum: 0 maximum: 9007199254740991 - type: 'null' onStale: anyOf: - type: string enum: - reject - overwrite - notify - type: 'null' fenceToken: anyOf: - type: number - type: 'null' action: type: string model: type: string data: anyOf: - type: object additionalProperties: true - type: 'null' where: anyOf: - type: object additionalProperties: true - type: 'null' required: - action - model reads: anyOf: - maxItems: 500 type: array items: anyOf: - type: object properties: model: type: string id: type: string fields: readOnly: true type: array items: type: string readAt: type: integer minimum: 0 maximum: 9007199254740991 onStale: type: string enum: - reject - overwrite - notify required: - model - id - readAt - type: object properties: group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ readAt: type: integer minimum: 0 maximum: 9007199254740991 onStale: type: string enum: - reject - overwrite - notify required: - group - readAt - type: 'null' track: anyOf: - maxItems: 500 type: array items: anyOf: - type: object properties: model: type: string id: type: string readAt: type: integer minimum: 0 maximum: 9007199254740991 onStale: type: string enum: - reject - notify required: - model - id - type: object properties: group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ readAt: type: integer minimum: 0 maximum: 9007199254740991 onStale: type: string enum: - reject - notify required: - group - type: 'null' additionalProperties: false responses: '200': description: Commit receipt content: application/json: schema: $ref: '#/components/schemas/CommitReceipt' '400': description: The request did not satisfy the published contract. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' '401': description: The Bearer credential is missing, malformed, or expired. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' '403': description: The credential does not authorize this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' '404': description: The addressed resource does not exist in the credential scope. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' '409': description: The request conflicts with current claim, version, or idempotency state. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' '429': description: The caller exceeded an enforced rate limit. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' '500': description: The server could not complete the request. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' '503': description: A required service is temporarily unavailable. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' default: description: An HTTP error not otherwise listed; decoded through the canonical envelope. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' operationId: commit /v1/commits/{id}: get: tags: - commits summary: Retrieve a commit record parameters: - name: id in: path required: true schema: type: string responses: '200': description: The commit record, or null when absent content: application/json: schema: anyOf: - oneOf: - type: object properties: status: type: string const: queued statusAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ lastSyncId: type: number const: 0 correlationId: type: string minLength: 1 maxLength: 255 id: type: string minLength: 1 attempts: readOnly: true minItems: 1 type: array items: type: object properties: id: type: string minLength: 1 observedAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ transport: type: string enum: - http - websocket - internal kind: type: string enum: - execution - replay required: - id - observedAt - transport - kind additionalProperties: false actor: type: object properties: kind: type: string enum: - user - agent - system id: type: string minLength: 1 required: - kind - id additionalProperties: false authority: type: object properties: organizationId: type: string minLength: 1 projectId: default: null anyOf: - type: string minLength: 1 - type: 'null' branchId: default: null anyOf: - type: string minLength: 1 - type: 'null' syncGroups: type: array items: type: string operations: type: array items: type: string pattern: ^[^.\s]+\.(read|create|update|delete)$ participantKind: type: string enum: - user - agent - system participantId: type: string minLength: 1 deliveryPartition: default: null anyOf: - type: object properties: index: type: integer minimum: 0 maximum: 9007199254740991 count: type: integer minimum: 2 maximum: 9007199254740991 required: - index - count additionalProperties: false - type: 'null' required: - organizationId - projectId - branchId - syncGroups - operations - participantKind - participantId - deliveryPartition additionalProperties: false claims: readOnly: true type: array items: type: object properties: id: type: string minLength: 1 target: type: object properties: scope: type: string const: row model: type: string id: type: string fields: readOnly: true type: array items: type: string required: - scope - model - id additionalProperties: false fenceToken: type: integer minimum: 0 maximum: 9007199254740991 required: - id - target - fenceToken additionalProperties: false createdAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ readSet: readOnly: true maxItems: 500 type: array items: oneOf: - type: object properties: target: oneOf: - type: object properties: scope: type: string const: row model: type: string id: type: string fields: readOnly: true type: array items: type: string required: - scope - model - id additionalProperties: false - type: object properties: scope: type: string const: group group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ required: - scope - group additionalProperties: false watermark: type: integer minimum: 0 maximum: 9007199254740991 lifetime: type: string const: commit onStale: type: string enum: - reject - overwrite - notify required: - target - watermark - lifetime - onStale additionalProperties: false - type: object properties: target: oneOf: - type: object properties: scope: type: string const: row model: type: string id: type: string required: - scope - model - id additionalProperties: false - type: object properties: scope: type: string const: group group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ required: - scope - group additionalProperties: false watermark: type: integer minimum: 0 maximum: 9007199254740991 lifetime: type: string const: persisted onStale: type: string enum: - reject - notify required: - target - watermark - lifetime - onStale additionalProperties: false operations: readOnly: true type: array items: type: object properties: id: anyOf: - type: string - type: 'null' transactionId: anyOf: - type: string - type: 'null' claimId: anyOf: - type: string minLength: 1 - type: 'null' readAt: anyOf: - type: integer minimum: 0 maximum: 9007199254740991 - type: 'null' onStale: anyOf: - type: string enum: - reject - overwrite - notify - type: 'null' fenceToken: anyOf: - type: number - type: 'null' action: type: string model: type: string data: type: object properties: retention: type: string const: redacted required: - retention additionalProperties: false required: - action - model - data additionalProperties: false receipt: type: object properties: clientTxId: type: string minLength: 1 serverTxId: type: string ops: type: integer minimum: 0 maximum: 9007199254740991 notifications: type: array items: oneOf: - type: object properties: object: type: string const: stale_notification target: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false readAt: type: integer minimum: 0 maximum: 9007199254740991 observedSyncId: type: integer minimum: 0 maximum: 9007199254740991 writtenBy: type: object properties: kind: type: string enum: - user - agent - system id: type: string required: - kind - id additionalProperties: false scope: type: string const: row currentValues: type: object additionalProperties: true required: - object - target - readAt - observedSyncId - writtenBy - scope - currentValues additionalProperties: false - type: object properties: object: type: string const: stale_notification target: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false readAt: type: integer minimum: 0 maximum: 9007199254740991 observedSyncId: type: integer minimum: 0 maximum: 9007199254740991 writtenBy: type: object properties: kind: type: string enum: - user - agent - system id: type: string required: - kind - id additionalProperties: false scope: type: string const: group group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ propagation: readOnly: true type: object properties: via: type: string enum: - self - parent - transitive through: readOnly: true type: array items: type: string required: - via - through additionalProperties: false changed: type: object properties: count: type: integer minimum: 0 maximum: 9007199254740991 sample: readOnly: true type: array items: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false truncated: type: boolean required: - count - sample - truncated additionalProperties: false required: - object - target - readAt - observedSyncId - writtenBy - scope - group additionalProperties: false missingIds: type: array items: type: string minLength: 1 error: type: object properties: code: type: string minLength: 1 message: type: string field: type: string request_id: type: string event_id: type: string requiredCapability: type: object properties: scope: type: string constraints: type: object additionalProperties: anyOf: - type: array items: type: string - type: string issuer: type: string ttlSeconds: type: number nonce: type: string required: - scope additionalProperties: true details: type: object additionalProperties: true required: - code - message additionalProperties: false required: - clientTxId - serverTxId additionalProperties: false required: - status - statusAt - lastSyncId - correlationId - id - attempts - actor - authority - claims - createdAt - readSet - operations - receipt additionalProperties: false - type: object properties: status: type: string const: confirmed statusAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ lastSyncId: type: integer minimum: 0 maximum: 9007199254740991 correlationId: type: string minLength: 1 maxLength: 255 id: type: string minLength: 1 attempts: readOnly: true minItems: 1 type: array items: type: object properties: id: type: string minLength: 1 observedAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ transport: type: string enum: - http - websocket - internal kind: type: string enum: - execution - replay required: - id - observedAt - transport - kind additionalProperties: false actor: type: object properties: kind: type: string enum: - user - agent - system id: type: string minLength: 1 required: - kind - id additionalProperties: false authority: type: object properties: organizationId: type: string minLength: 1 projectId: default: null anyOf: - type: string minLength: 1 - type: 'null' branchId: default: null anyOf: - type: string minLength: 1 - type: 'null' syncGroups: type: array items: type: string operations: type: array items: type: string pattern: ^[^.\s]+\.(read|create|update|delete)$ participantKind: type: string enum: - user - agent - system participantId: type: string minLength: 1 deliveryPartition: default: null anyOf: - type: object properties: index: type: integer minimum: 0 maximum: 9007199254740991 count: type: integer minimum: 2 maximum: 9007199254740991 required: - index - count additionalProperties: false - type: 'null' required: - organizationId - projectId - branchId - syncGroups - operations - participantKind - participantId - deliveryPartition additionalProperties: false claims: readOnly: true type: array items: type: object properties: id: type: string minLength: 1 target: type: object properties: scope: type: string const: row model: type: string id: type: string fields: readOnly: true type: array items: type: string required: - scope - model - id additionalProperties: false fenceToken: type: integer minimum: 0 maximum: 9007199254740991 required: - id - target - fenceToken additionalProperties: false createdAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ readSet: readOnly: true maxItems: 500 type: array items: oneOf: - type: object properties: target: oneOf: - type: object properties: scope: type: string const: row model: type: string id: type: string fields: readOnly: true type: array items: type: string required: - scope - model - id additionalProperties: false - type: object properties: scope: type: string const: group group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ required: - scope - group additionalProperties: false watermark: type: integer minimum: 0 maximum: 9007199254740991 lifetime: type: string const: commit onStale: type: string enum: - reject - overwrite - notify required: - target - watermark - lifetime - onStale additionalProperties: false - type: object properties: target: oneOf: - type: object properties: scope: type: string const: row model: type: string id: type: string required: - scope - model - id additionalProperties: false - type: object properties: scope: type: string const: group group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ required: - scope - group additionalProperties: false watermark: type: integer minimum: 0 maximum: 9007199254740991 lifetime: type: string const: persisted onStale: type: string enum: - reject - notify required: - target - watermark - lifetime - onStale additionalProperties: false operations: readOnly: true type: array items: type: object properties: id: anyOf: - type: string - type: 'null' transactionId: anyOf: - type: string - type: 'null' claimId: anyOf: - type: string minLength: 1 - type: 'null' readAt: anyOf: - type: integer minimum: 0 maximum: 9007199254740991 - type: 'null' onStale: anyOf: - type: string enum: - reject - overwrite - notify - type: 'null' fenceToken: anyOf: - type: number - type: 'null' action: type: string model: type: string data: type: object properties: retention: type: string const: redacted required: - retention additionalProperties: false required: - action - model - data additionalProperties: false receipt: type: object properties: clientTxId: type: string minLength: 1 serverTxId: type: string ops: type: integer minimum: 0 maximum: 9007199254740991 notifications: type: array items: oneOf: - type: object properties: object: type: string const: stale_notification target: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false readAt: type: integer minimum: 0 maximum: 9007199254740991 observedSyncId: type: integer minimum: 0 maximum: 9007199254740991 writtenBy: type: object properties: kind: type: string enum: - user - agent - system id: type: string required: - kind - id additionalProperties: false scope: type: string const: row currentValues: type: object additionalProperties: true required: - object - target - readAt - observedSyncId - writtenBy - scope - currentValues additionalProperties: false - type: object properties: object: type: string const: stale_notification target: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false readAt: type: integer minimum: 0 maximum: 9007199254740991 observedSyncId: type: integer minimum: 0 maximum: 9007199254740991 writtenBy: type: object properties: kind: type: string enum: - user - agent - system id: type: string required: - kind - id additionalProperties: false scope: type: string const: group group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ propagation: readOnly: true type: object properties: via: type: string enum: - self - parent - transitive through: readOnly: true type: array items: type: string required: - via - through additionalProperties: false changed: type: object properties: count: type: integer minimum: 0 maximum: 9007199254740991 sample: readOnly: true type: array items: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false truncated: type: boolean required: - count - sample - truncated additionalProperties: false required: - object - target - readAt - observedSyncId - writtenBy - scope - group additionalProperties: false missingIds: type: array items: type: string minLength: 1 error: type: object properties: code: type: string minLength: 1 message: type: string field: type: string request_id: type: string event_id: type: string requiredCapability: type: object properties: scope: type: string constraints: type: object additionalProperties: anyOf: - type: array items: type: string - type: string issuer: type: string ttlSeconds: type: number nonce: type: string required: - scope additionalProperties: true details: type: object additionalProperties: true required: - code - message additionalProperties: false required: - clientTxId - serverTxId additionalProperties: false required: - status - statusAt - lastSyncId - id - attempts - actor - authority - claims - createdAt - readSet - operations - receipt additionalProperties: false - type: object properties: status: type: string const: rejected statusAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ id: type: string minLength: 1 attempts: readOnly: true minItems: 1 type: array items: type: object properties: id: type: string minLength: 1 observedAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ transport: type: string enum: - http - websocket - internal kind: type: string enum: - execution - replay required: - id - observedAt - transport - kind additionalProperties: false actor: type: object properties: kind: type: string enum: - user - agent - system id: type: string minLength: 1 required: - kind - id additionalProperties: false authority: type: object properties: organizationId: type: string minLength: 1 projectId: default: null anyOf: - type: string minLength: 1 - type: 'null' branchId: default: null anyOf: - type: string minLength: 1 - type: 'null' syncGroups: type: array items: type: string operations: type: array items: type: string pattern: ^[^.\s]+\.(read|create|update|delete)$ participantKind: type: string enum: - user - agent - system participantId: type: string minLength: 1 deliveryPartition: default: null anyOf: - type: object properties: index: type: integer minimum: 0 maximum: 9007199254740991 count: type: integer minimum: 2 maximum: 9007199254740991 required: - index - count additionalProperties: false - type: 'null' required: - organizationId - projectId - branchId - syncGroups - operations - participantKind - participantId - deliveryPartition additionalProperties: false claims: readOnly: true type: array items: type: object properties: id: type: string minLength: 1 target: type: object properties: scope: type: string const: row model: type: string id: type: string fields: readOnly: true type: array items: type: string required: - scope - model - id additionalProperties: false fenceToken: type: integer minimum: 0 maximum: 9007199254740991 required: - id - target - fenceToken additionalProperties: false createdAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ readSet: readOnly: true maxItems: 500 type: array items: oneOf: - type: object properties: target: oneOf: - type: object properties: scope: type: string const: row model: type: string id: type: string fields: readOnly: true type: array items: type: string required: - scope - model - id additionalProperties: false - type: object properties: scope: type: string const: group group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ required: - scope - group additionalProperties: false watermark: type: integer minimum: 0 maximum: 9007199254740991 lifetime: type: string const: commit onStale: type: string enum: - reject - overwrite - notify required: - target - watermark - lifetime - onStale additionalProperties: false - type: object properties: target: oneOf: - type: object properties: scope: type: string const: row model: type: string id: type: string required: - scope - model - id additionalProperties: false - type: object properties: scope: type: string const: group group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ required: - scope - group additionalProperties: false watermark: type: integer minimum: 0 maximum: 9007199254740991 lifetime: type: string const: persisted onStale: type: string enum: - reject - notify required: - target - watermark - lifetime - onStale additionalProperties: false operations: readOnly: true type: array items: type: object properties: id: anyOf: - type: string - type: 'null' transactionId: anyOf: - type: string - type: 'null' claimId: anyOf: - type: string minLength: 1 - type: 'null' readAt: anyOf: - type: integer minimum: 0 maximum: 9007199254740991 - type: 'null' onStale: anyOf: - type: string enum: - reject - overwrite - notify - type: 'null' fenceToken: anyOf: - type: number - type: 'null' action: type: string model: type: string data: type: object properties: retention: type: string const: redacted required: - retention additionalProperties: false required: - action - model - data additionalProperties: false receipt: type: object properties: clientTxId: type: string minLength: 1 serverTxId: type: string ops: type: integer minimum: 0 maximum: 9007199254740991 notifications: type: array items: oneOf: - type: object properties: object: type: string const: stale_notification target: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false readAt: type: integer minimum: 0 maximum: 9007199254740991 observedSyncId: type: integer minimum: 0 maximum: 9007199254740991 writtenBy: type: object properties: kind: type: string enum: - user - agent - system id: type: string required: - kind - id additionalProperties: false scope: type: string const: row currentValues: type: object additionalProperties: true required: - object - target - readAt - observedSyncId - writtenBy - scope - currentValues additionalProperties: false - type: object properties: object: type: string const: stale_notification target: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false readAt: type: integer minimum: 0 maximum: 9007199254740991 observedSyncId: type: integer minimum: 0 maximum: 9007199254740991 writtenBy: type: object properties: kind: type: string enum: - user - agent - system id: type: string required: - kind - id additionalProperties: false scope: type: string const: group group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ propagation: readOnly: true type: object properties: via: type: string enum: - self - parent - transitive through: readOnly: true type: array items: type: string required: - via - through additionalProperties: false changed: type: object properties: count: type: integer minimum: 0 maximum: 9007199254740991 sample: readOnly: true type: array items: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false truncated: type: boolean required: - count - sample - truncated additionalProperties: false required: - object - target - readAt - observedSyncId - writtenBy - scope - group additionalProperties: false missingIds: type: array items: type: string minLength: 1 error: type: object properties: code: type: string minLength: 1 message: type: string field: type: string request_id: type: string event_id: type: string requiredCapability: type: object properties: scope: type: string constraints: type: object additionalProperties: anyOf: - type: array items: type: string - type: string issuer: type: string ttlSeconds: type: number nonce: type: string required: - scope additionalProperties: true details: type: object additionalProperties: true required: - code - message additionalProperties: false required: - clientTxId - serverTxId additionalProperties: false lastSyncId: type: number const: 0 required: - status - statusAt - id - attempts - actor - authority - claims - createdAt - readSet - operations - receipt - lastSyncId additionalProperties: false - type: 'null' '400': description: The request did not satisfy the published contract. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' '401': description: The Bearer credential is missing, malformed, or expired. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' '403': description: The credential does not authorize this operation. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' '404': description: The addressed resource does not exist in the credential scope. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' '409': description: The request conflicts with current claim, version, or idempotency state. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' '429': description: The caller exceeded an enforced rate limit. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' '500': description: The server could not complete the request. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' '503': description: A required service is temporarily unavailable. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' default: description: An HTTP error not otherwise listed; decoded through the canonical envelope. content: application/json: schema: $ref: '#/components/schemas/ErrorEnvelope' operationId: getCommit components: schemas: CommitReceipt: oneOf: - type: object properties: status: type: string const: queued statusAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ lastSyncId: type: number const: 0 correlationId: type: string minLength: 1 maxLength: 255 object: type: string const: commit_receipt id: type: string minLength: 1 clientTxId: type: string minLength: 1 serverTxId: type: string minLength: 1 createdAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ success: type: boolean const: true ops: type: integer minimum: 0 maximum: 9007199254740991 authority: type: object properties: organizationId: type: string minLength: 1 projectId: default: null anyOf: - type: string minLength: 1 - type: 'null' branchId: default: null anyOf: - type: string minLength: 1 - type: 'null' syncGroups: type: array items: type: string operations: type: array items: type: string pattern: ^[^.\s]+\.(read|create|update|delete)$ participantKind: type: string enum: - user - agent - system participantId: type: string minLength: 1 deliveryPartition: default: null anyOf: - type: object properties: index: type: integer minimum: 0 maximum: 9007199254740991 count: type: integer minimum: 2 maximum: 9007199254740991 required: - index - count additionalProperties: false - type: 'null' required: - organizationId - projectId - branchId - syncGroups - operations - participantKind - participantId - deliveryPartition additionalProperties: false notifications: type: array items: oneOf: - type: object properties: object: type: string const: stale_notification target: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false readAt: type: integer minimum: 0 maximum: 9007199254740991 observedSyncId: type: integer minimum: 0 maximum: 9007199254740991 writtenBy: type: object properties: kind: type: string enum: - user - agent - system id: type: string required: - kind - id additionalProperties: false scope: type: string const: row currentValues: type: object additionalProperties: true required: - object - target - readAt - observedSyncId - writtenBy - scope - currentValues additionalProperties: false - type: object properties: object: type: string const: stale_notification target: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false readAt: type: integer minimum: 0 maximum: 9007199254740991 observedSyncId: type: integer minimum: 0 maximum: 9007199254740991 writtenBy: type: object properties: kind: type: string enum: - user - agent - system id: type: string required: - kind - id additionalProperties: false scope: type: string const: group group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ propagation: readOnly: true type: object properties: via: type: string enum: - self - parent - transitive through: readOnly: true type: array items: type: string required: - via - through additionalProperties: false changed: type: object properties: count: type: integer minimum: 0 maximum: 9007199254740991 sample: readOnly: true type: array items: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false truncated: type: boolean required: - count - sample - truncated additionalProperties: false required: - object - target - readAt - observedSyncId - writtenBy - scope - group additionalProperties: false missingIds: type: array items: type: string minLength: 1 operationResults: minItems: 1 type: array items: type: object properties: transactionId: type: string minLength: 1 outcome: type: string enum: - created - updated - deleted - archived - unarchived row: type: object additionalProperties: true required: - transactionId - outcome - row additionalProperties: false required: - status - statusAt - lastSyncId - correlationId - object - clientTxId - serverTxId - createdAt - success - ops - authority additionalProperties: false - type: object properties: status: type: string const: confirmed statusAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ lastSyncId: type: integer minimum: 0 maximum: 9007199254740991 correlationId: type: string minLength: 1 maxLength: 255 object: type: string const: commit_receipt id: type: string minLength: 1 clientTxId: type: string minLength: 1 serverTxId: type: string minLength: 1 createdAt: type: string format: date-time pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$ success: type: boolean const: true ops: type: integer minimum: 0 maximum: 9007199254740991 authority: type: object properties: organizationId: type: string minLength: 1 projectId: default: null anyOf: - type: string minLength: 1 - type: 'null' branchId: default: null anyOf: - type: string minLength: 1 - type: 'null' syncGroups: type: array items: type: string operations: type: array items: type: string pattern: ^[^.\s]+\.(read|create|update|delete)$ participantKind: type: string enum: - user - agent - system participantId: type: string minLength: 1 deliveryPartition: default: null anyOf: - type: object properties: index: type: integer minimum: 0 maximum: 9007199254740991 count: type: integer minimum: 2 maximum: 9007199254740991 required: - index - count additionalProperties: false - type: 'null' required: - organizationId - projectId - branchId - syncGroups - operations - participantKind - participantId - deliveryPartition additionalProperties: false notifications: type: array items: oneOf: - type: object properties: object: type: string const: stale_notification target: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false readAt: type: integer minimum: 0 maximum: 9007199254740991 observedSyncId: type: integer minimum: 0 maximum: 9007199254740991 writtenBy: type: object properties: kind: type: string enum: - user - agent - system id: type: string required: - kind - id additionalProperties: false scope: type: string const: row currentValues: type: object additionalProperties: true required: - object - target - readAt - observedSyncId - writtenBy - scope - currentValues additionalProperties: false - type: object properties: object: type: string const: stale_notification target: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false readAt: type: integer minimum: 0 maximum: 9007199254740991 observedSyncId: type: integer minimum: 0 maximum: 9007199254740991 writtenBy: type: object properties: kind: type: string enum: - user - agent - system id: type: string required: - kind - id additionalProperties: false scope: type: string const: group group: type: string pattern: ^[a-z][a-z0-9_]*:[\s\S]{1,}$ propagation: readOnly: true type: object properties: via: type: string enum: - self - parent - transitive through: readOnly: true type: array items: type: string required: - via - through additionalProperties: false changed: type: object properties: count: type: integer minimum: 0 maximum: 9007199254740991 sample: readOnly: true type: array items: readOnly: true type: object properties: model: type: string id: type: string field: type: string fields: readOnly: true type: array items: type: string meta: type: object additionalProperties: true required: - model - id additionalProperties: false truncated: type: boolean required: - count - sample - truncated additionalProperties: false required: - object - target - readAt - observedSyncId - writtenBy - scope - group additionalProperties: false missingIds: type: array items: type: string minLength: 1 operationResults: minItems: 1 type: array items: type: object properties: transactionId: type: string minLength: 1 outcome: type: string enum: - created - updated - deleted - archived - unarchived row: type: object additionalProperties: true required: - transactionId - outcome - row additionalProperties: false required: - status - statusAt - lastSyncId - object - clientTxId - serverTxId - createdAt - success - ops - authority additionalProperties: false discriminator: propertyName: status ErrorEnvelope: type: object properties: type: type: string code: type: string param: type: string message: type: string doc_url: type: string request_id: type: string event_id: type: string errors: readOnly: true type: array items: readOnly: true type: object properties: code: type: string message: type: string param: type: string required: - message additionalProperties: false required: - type - message additionalProperties: true securitySchemes: bearerAuth: type: http scheme: bearer description: Your Ablo API key (sk_… / rk_…).