Skip to content

Adapter protocol schemas ​

These are the fixed control/context and parameterized data contracts for proposed profile v0.2 in ADR#8612050910. The runtime rules define trust, method behavior, atomicity and failure semantics. Application data slots are validated by their declared application schema; they do not permit arbitrary control or trust fields. This source is the same artifact used by the example contracts and offline checker.

json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "NATS contract adapter data protocols v0.2",
  "description": "Closed control/trust protocols for the proposed profile. AdapterCall.data and application input/result/body slots are parameterized by separately validated application schemas. This schema does not assert deployment evidence or execute atomic transitions.",
  "$ref": "#/definitions/AdapterCall",
  "definitions": {
    "JsonValue": {
      "description": "Application business data, constrained by the declared application schema at the call boundary."
    },
    "Identifier": {
      "type": "string",
      "minLength": 1
    },
    "Digest": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$"
    },
    "SafeInteger": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "RuntimeContext": {
      "type": "object",
      "properties": {
        "contractId": {
          "$ref": "#/definitions/Identifier"
        },
        "contractVersion": {
          "$ref": "#/definitions/Identifier"
        },
        "contractDigest": {
          "$ref": "#/definitions/Digest"
        },
        "operationId": {
          "$ref": "#/definitions/OperationId"
        },
        "principalId": {
          "$ref": "#/definitions/Identifier"
        },
        "senderPeerId": {
          "$ref": "#/definitions/Identifier"
        },
        "scopeId": {
          "$ref": "#/definitions/Identifier"
        },
        "systemId": {
          "$ref": "#/definitions/Identifier"
        },
        "accountId": {
          "$ref": "#/definitions/Identifier"
        },
        "jetstreamDomain": {
          "$ref": "#/definitions/Identifier"
        },
        "nowMs": {
          "$ref": "#/definitions/SafeInteger"
        },
        "deadlineMs": {
          "anyOf": [
            {
              "$ref": "#/definitions/SafeInteger"
            },
            {
              "type": "null"
            }
          ],
          "description": "Null only before atomic admission; protected post-admission calls use the recorded absolute deadline."
        },
        "policyRevision": {
          "$ref": "#/definitions/Identifier"
        }
      },
      "required": [
        "contractId",
        "contractVersion",
        "contractDigest",
        "operationId",
        "principalId",
        "senderPeerId",
        "scopeId",
        "systemId",
        "accountId",
        "jetstreamDomain",
        "nowMs",
        "deadlineMs",
        "policyRevision"
      ],
      "additionalProperties": false
    },
    "AdapterCall": {
      "type": "object",
      "properties": {
        "context": {
          "$ref": "#/definitions/RuntimeContext"
        },
        "data": {
          "$ref": "#/definitions/JsonValue"
        }
      },
      "required": ["context", "data"],
      "additionalProperties": false
    },
    "Peer": {
      "type": "object",
      "properties": {
        "peerId": {
          "$ref": "#/definitions/Identifier"
        },
        "online": {
          "type": "boolean"
        }
      },
      "required": ["peerId", "online"],
      "additionalProperties": false
    },
    "AudienceQuery": {
      "type": "object",
      "properties": {
        "kind": {
          "enum": ["peer", "group", "scope"]
        },
        "value": {
          "$ref": "#/definitions/Identifier"
        },
        "includeSender": {
          "type": "boolean"
        },
        "offline": {
          "enum": ["include", "exclude"]
        }
      },
      "required": ["kind", "value", "includeSender", "offline"],
      "additionalProperties": false
    },
    "AudienceSnapshot": {
      "type": "object",
      "properties": {
        "revision": {
          "$ref": "#/definitions/Identifier"
        },
        "observedAtMs": {
          "$ref": "#/definitions/SafeInteger"
        },
        "peers": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Peer"
          },
          "minItems": 0,
          "uniqueItems": true
        }
      },
      "required": ["revision", "observedAtMs", "peers"],
      "additionalProperties": false
    },
    "AuthorizationInput": {
      "type": "object",
      "properties": {
        "action": {
          "enum": ["dispatch", "result", "cancel", "claim"]
        },
        "peerId": {
          "$ref": "#/definitions/Identifier"
        },
        "branchId": {
          "anyOf": [
            {
              "$ref": "#/definitions/Identifier"
            },
            {
              "type": "null"
            }
          ]
        },
        "attempt": {
          "type": "integer",
          "minimum": 1,
          "maximum": 16
        }
      },
      "required": ["action", "peerId", "branchId", "attempt"],
      "additionalProperties": false
    },
    "AuthorizationDecision": {
      "type": "object",
      "properties": {
        "allowed": {
          "type": "boolean"
        },
        "revision": {
          "$ref": "#/definitions/Identifier"
        },
        "validUntilMs": {
          "$ref": "#/definitions/SafeInteger"
        },
        "reason": {
          "enum": ["allowed", "denied", "revoked", "expired", "unavailable"]
        }
      },
      "required": ["allowed", "revision", "validUntilMs", "reason"],
      "additionalProperties": false,
      "allOf": [
        {
          "if": {
            "properties": {
              "allowed": {
                "const": true
              }
            },
            "required": ["allowed"]
          },
          "then": {
            "properties": {
              "reason": {
                "const": "allowed"
              }
            }
          },
          "else": {
            "properties": {
              "reason": {
                "enum": ["denied", "revoked", "expired", "unavailable"]
              }
            }
          }
        }
      ]
    },
    "BranchIdentity": {
      "type": "object",
      "properties": {
        "operationId": {
          "$ref": "#/definitions/OperationId"
        },
        "branchId": {
          "$ref": "#/definitions/Identifier"
        },
        "peerId": {
          "$ref": "#/definitions/Identifier"
        },
        "attempt": {
          "type": "integer",
          "minimum": 1,
          "maximum": 16
        },
        "fence": {
          "type": "integer",
          "minimum": 1,
          "maximum": 9007199254740991
        }
      },
      "required": ["operationId", "branchId", "peerId", "attempt", "fence"],
      "additionalProperties": false
    },
    "Message": {
      "type": "object",
      "properties": {
        "headers": {
          "type": "object",
          "minProperties": 0,
          "propertyNames": {
            "type": "string",
            "minLength": 1
          },
          "additionalProperties": {
            "type": "string"
          }
        },
        "payload": {
          "$ref": "#/definitions/JsonValue"
        }
      },
      "required": ["headers", "payload"],
      "additionalProperties": false
    },
    "ResultVerificationInput": {
      "type": "object",
      "properties": {
        "subject": {
          "$ref": "#/definitions/Identifier"
        },
        "expected": {
          "$ref": "#/definitions/BranchIdentity"
        },
        "message": {
          "$ref": "#/definitions/Message"
        }
      },
      "required": ["subject", "expected", "message"],
      "additionalProperties": false
    },
    "ResultVerificationOutput": {
      "type": "object",
      "properties": {
        "accepted": {
          "type": "boolean"
        },
        "peerId": {
          "anyOf": [
            {
              "$ref": "#/definitions/Identifier"
            },
            {
              "type": "null"
            }
          ]
        },
        "reason": {
          "enum": ["accepted", "wrong-peer", "stale-attempt", "invalid-proof", "revoked", "closed"]
        }
      },
      "required": ["accepted", "peerId", "reason"],
      "additionalProperties": false,
      "allOf": [
        {
          "if": {
            "properties": {
              "accepted": {
                "const": true
              }
            },
            "required": ["accepted"]
          },
          "then": {
            "properties": {
              "reason": {
                "const": "accepted"
              },
              "peerId": {
                "$ref": "#/definitions/Identifier"
              }
            }
          },
          "else": {
            "properties": {
              "reason": {
                "enum": ["wrong-peer", "stale-attempt", "invalid-proof", "revoked", "closed"]
              }
            }
          }
        }
      ]
    },
    "BranchOutcome": {
      "type": "object",
      "properties": {
        "branchId": {
          "$ref": "#/definitions/Identifier"
        },
        "peerId": {
          "$ref": "#/definitions/Identifier"
        },
        "attempt": {
          "type": "integer",
          "minimum": 1,
          "maximum": 16
        },
        "fence": {
          "type": "integer",
          "minimum": 1,
          "maximum": 9007199254740991
        },
        "status": {
          "enum": ["pending", "success", "failure", "revoked", "cancelled", "indeterminate"]
        },
        "retryable": {
          "type": "boolean"
        },
        "result": {
          "anyOf": [
            {
              "$ref": "#/definitions/JsonValue"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": ["branchId", "peerId", "attempt", "fence", "status", "retryable", "result"],
      "additionalProperties": false
    },
    "AggregationInput": {
      "type": "object",
      "properties": {
        "operationId": {
          "$ref": "#/definitions/OperationId"
        },
        "branches": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/BranchOutcome"
          },
          "minItems": 0
        },
        "outcome": {
          "enum": ["success", "partial", "failed", "indeterminate"]
        }
      },
      "required": ["operationId", "branches", "outcome"],
      "additionalProperties": false
    },
    "SelectionInput": {
      "type": "object",
      "properties": {
        "candidates": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Identifier"
          },
          "minItems": 0,
          "uniqueItems": true
        },
        "previousPeerId": {
          "anyOf": [
            {
              "$ref": "#/definitions/Identifier"
            },
            {
              "type": "null"
            }
          ]
        },
        "strategy": {
          "const": "lexicographic"
        }
      },
      "required": ["candidates", "previousPeerId", "strategy"],
      "additionalProperties": false
    },
    "SelectionOutput": {
      "type": "object",
      "properties": {
        "peerId": {
          "anyOf": [
            {
              "$ref": "#/definitions/Identifier"
            },
            {
              "type": "null"
            }
          ]
        },
        "reason": {
          "enum": ["selected", "empty"]
        }
      },
      "required": ["peerId", "reason"],
      "additionalProperties": false,
      "allOf": [
        {
          "if": {
            "properties": {
              "reason": {
                "const": "selected"
              }
            },
            "required": ["reason"]
          },
          "then": {
            "properties": {
              "peerId": {
                "$ref": "#/definitions/Identifier"
              }
            }
          },
          "else": {
            "properties": {
              "peerId": {
                "type": "null"
              }
            }
          }
        }
      ]
    },
    "DeliveryRequest": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "method": {
              "const": "publish"
            },
            "messageId": {
              "$ref": "#/definitions/Identifier"
            },
            "subject": {
              "$ref": "#/definitions/Identifier"
            },
            "headers": {
              "type": "object",
              "minProperties": 0,
              "propertyNames": {
                "type": "string",
                "minLength": 1
              },
              "additionalProperties": {
                "type": "string"
              }
            },
            "payload": {
              "$ref": "#/definitions/JsonValue"
            },
            "stream": {
              "$ref": "#/definitions/Identifier"
            },
            "consumer": {
              "$ref": "#/definitions/Identifier"
            },
            "peerId": {
              "$ref": "#/definitions/Identifier"
            },
            "expiresAtMs": {
              "$ref": "#/definitions/SafeInteger"
            }
          },
          "required": [
            "method",
            "messageId",
            "subject",
            "headers",
            "payload",
            "stream",
            "consumer",
            "peerId",
            "expiresAtMs"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "const": "reconcile"
            },
            "messageId": {
              "$ref": "#/definitions/Identifier"
            },
            "stream": {
              "$ref": "#/definitions/Identifier"
            },
            "consumer": {
              "$ref": "#/definitions/Identifier"
            },
            "peerId": {
              "$ref": "#/definitions/Identifier"
            }
          },
          "required": ["method", "messageId", "stream", "consumer", "peerId"],
          "additionalProperties": false
        }
      ]
    },
    "DeliveryReceipt": {
      "type": "object",
      "properties": {
        "status": {
          "enum": ["stored", "already-stored", "rejected", "unknown", "exhausted"]
        },
        "messageId": {
          "$ref": "#/definitions/Identifier"
        },
        "stream": {
          "anyOf": [
            {
              "$ref": "#/definitions/Identifier"
            },
            {
              "type": "null"
            }
          ]
        },
        "sequence": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 1,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "reason": {
          "$ref": "#/definitions/Identifier"
        }
      },
      "required": ["status", "messageId", "stream", "sequence", "reason"],
      "additionalProperties": false,
      "allOf": [
        {
          "if": {
            "properties": {
              "status": {
                "enum": ["stored", "already-stored"]
              }
            },
            "required": ["status"]
          },
          "then": {
            "properties": {
              "stream": {
                "$ref": "#/definitions/Identifier"
              },
              "sequence": {
                "type": "integer",
                "minimum": 1,
                "maximum": 9007199254740991
              }
            }
          }
        }
      ]
    },
    "OwnershipRequest": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "method": {
              "const": "acquire"
            },
            "branch": {
              "$ref": "#/definitions/BranchIdentity"
            },
            "leaseMs": {
              "type": "integer",
              "minimum": 1,
              "maximum": 9007199254740991
            }
          },
          "required": ["method", "branch", "leaseMs"],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "const": "renew"
            },
            "branch": {
              "$ref": "#/definitions/BranchIdentity"
            },
            "leaseMs": {
              "type": "integer",
              "minimum": 1,
              "maximum": 9007199254740991
            }
          },
          "required": ["method", "branch", "leaseMs"],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "const": "release"
            },
            "branch": {
              "$ref": "#/definitions/BranchIdentity"
            }
          },
          "required": ["method", "branch"],
          "additionalProperties": false
        }
      ]
    },
    "OwnershipResult": {
      "type": "object",
      "properties": {
        "status": {
          "enum": ["acquired", "renewed", "released", "conflict", "expired", "unavailable"]
        },
        "branch": {
          "$ref": "#/definitions/BranchIdentity"
        },
        "leaseUntilMs": {
          "anyOf": [
            {
              "$ref": "#/definitions/SafeInteger"
            },
            {
              "type": "null"
            }
          ]
        },
        "committedAtMs": {
          "anyOf": [
            {
              "$ref": "#/definitions/SafeInteger"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": ["status", "branch", "leaseUntilMs", "committedAtMs"],
      "additionalProperties": false,
      "allOf": [
        {
          "if": {
            "properties": {
              "status": {
                "enum": ["acquired", "renewed", "released"]
              }
            },
            "required": ["status"]
          },
          "then": {
            "properties": {
              "committedAtMs": {
                "$ref": "#/definitions/SafeInteger"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "status": {
                "enum": ["acquired", "renewed"]
              }
            },
            "required": ["status"]
          },
          "then": {
            "properties": {
              "leaseUntilMs": {
                "$ref": "#/definitions/SafeInteger"
              }
            }
          }
        }
      ]
    },
    "CancellationState": {
      "type": "object",
      "properties": {
        "status": {
          "enum": ["none", "requested", "stopped", "already-completed", "unknown"]
        },
        "deadlineMs": {
          "anyOf": [
            {
              "$ref": "#/definitions/SafeInteger"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": ["status", "deadlineMs"],
      "additionalProperties": false
    },
    "OutboxEntry": {
      "type": "object",
      "properties": {
        "messageId": {
          "$ref": "#/definitions/Identifier"
        },
        "branchId": {
          "$ref": "#/definitions/Identifier"
        },
        "attempt": {
          "type": "integer",
          "minimum": 1,
          "maximum": 16
        },
        "fence": {
          "type": "integer",
          "minimum": 1,
          "maximum": 9007199254740991
        },
        "kind": {
          "enum": ["request", "cancel", "completion"]
        },
        "subject": {
          "$ref": "#/definitions/Identifier"
        },
        "headers": {
          "type": "object",
          "minProperties": 0,
          "propertyNames": {
            "type": "string",
            "minLength": 1
          },
          "additionalProperties": {
            "type": "string"
          }
        },
        "payload": {
          "$ref": "#/definitions/JsonValue"
        },
        "status": {
          "enum": ["pending", "stored", "unknown", "rejected"]
        },
        "nextSendAtMs": {
          "$ref": "#/definitions/SafeInteger"
        }
      },
      "required": [
        "messageId",
        "branchId",
        "attempt",
        "fence",
        "kind",
        "subject",
        "headers",
        "payload",
        "status",
        "nextSendAtMs"
      ],
      "additionalProperties": false
    },
    "BranchRecord": {
      "type": "object",
      "properties": {
        "branchId": {
          "$ref": "#/definitions/Identifier"
        },
        "peerId": {
          "$ref": "#/definitions/Identifier"
        },
        "attempt": {
          "type": "integer",
          "minimum": 1,
          "maximum": 16
        },
        "fence": {
          "type": "integer",
          "minimum": 1,
          "maximum": 9007199254740991
        },
        "status": {
          "enum": ["pending", "success", "failure", "revoked", "cancelled", "indeterminate"]
        },
        "retryable": {
          "type": "boolean"
        },
        "result": {
          "anyOf": [
            {
              "$ref": "#/definitions/JsonValue"
            },
            {
              "type": "null"
            }
          ]
        },
        "input": {
          "$ref": "#/definitions/JsonValue"
        },
        "leaseUntilMs": {
          "anyOf": [
            {
              "$ref": "#/definitions/SafeInteger"
            },
            {
              "type": "null"
            }
          ]
        },
        "nextAttemptAtMs": {
          "anyOf": [
            {
              "$ref": "#/definitions/SafeInteger"
            },
            {
              "type": "null"
            }
          ]
        },
        "outboxStatus": {
          "enum": ["pending", "stored", "unknown", "rejected", "none"]
        },
        "cancellation": {
          "$ref": "#/definitions/CancellationState"
        },
        "seenResultIds": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Identifier"
          },
          "minItems": 0,
          "uniqueItems": true
        }
      },
      "required": [
        "branchId",
        "peerId",
        "attempt",
        "fence",
        "status",
        "retryable",
        "result",
        "input",
        "leaseUntilMs",
        "nextAttemptAtMs",
        "outboxStatus",
        "cancellation",
        "seenResultIds"
      ],
      "additionalProperties": false
    },
    "OperationDecision": {
      "type": "object",
      "properties": {
        "outcome": {
          "enum": ["success", "partial", "failed", "indeterminate"]
        },
        "decidedAtMs": {
          "$ref": "#/definitions/SafeInteger"
        },
        "reason": {
          "$ref": "#/definitions/Identifier"
        }
      },
      "required": ["outcome", "decidedAtMs", "reason"],
      "additionalProperties": false
    },
    "OperationRecord": {
      "type": "object",
      "properties": {
        "contractId": {
          "$ref": "#/definitions/Identifier"
        },
        "contractVersion": {
          "$ref": "#/definitions/Identifier"
        },
        "contractDigest": {
          "$ref": "#/definitions/Digest"
        },
        "operationId": {
          "$ref": "#/definitions/OperationId"
        },
        "principalId": {
          "$ref": "#/definitions/Identifier"
        },
        "invocationKey": {
          "$ref": "#/definitions/Identifier"
        },
        "inputDigest": {
          "$ref": "#/definitions/Digest"
        },
        "input": {
          "$ref": "#/definitions/JsonValue"
        },
        "phase": {
          "enum": ["admitted", "active", "closed", "settled"]
        },
        "admittedAtMs": {
          "$ref": "#/definitions/SafeInteger"
        },
        "deadlineMs": {
          "$ref": "#/definitions/SafeInteger"
        },
        "snapshot": {
          "$ref": "#/definitions/AudienceSnapshot"
        },
        "policyRevision": {
          "$ref": "#/definitions/Identifier"
        },
        "branches": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/BranchRecord"
          },
          "minItems": 0
        },
        "decision": {
          "anyOf": [
            {
              "$ref": "#/definitions/OperationDecision"
            },
            {
              "type": "null"
            }
          ]
        },
        "settlement": {
          "enum": ["pending", "complete", "indeterminate"]
        },
        "outbox": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OutboxEntry"
          },
          "minItems": 0
        },
        "senderPeerId": {
          "$ref": "#/definitions/Identifier"
        },
        "scopeId": {
          "$ref": "#/definitions/Identifier"
        },
        "systemId": {
          "$ref": "#/definitions/Identifier"
        },
        "accountId": {
          "$ref": "#/definitions/Identifier"
        },
        "jetstreamDomain": {
          "$ref": "#/definitions/Identifier"
        }
      },
      "required": [
        "contractId",
        "contractVersion",
        "contractDigest",
        "operationId",
        "principalId",
        "invocationKey",
        "inputDigest",
        "input",
        "phase",
        "admittedAtMs",
        "deadlineMs",
        "snapshot",
        "policyRevision",
        "branches",
        "decision",
        "settlement",
        "outbox",
        "senderPeerId",
        "scopeId",
        "systemId",
        "accountId",
        "jetstreamDomain"
      ],
      "additionalProperties": false
    },
    "StateStoreRequest": {
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "method": {
              "const": "get"
            },
            "key": {
              "$ref": "#/definitions/Identifier"
            }
          },
          "required": ["method", "key"],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "const": "create"
            },
            "key": {
              "$ref": "#/definitions/Identifier"
            },
            "record": {
              "$ref": "#/definitions/AdmissionRecord"
            },
            "timeGuard": {
              "$ref": "#/definitions/TimeGuard"
            },
            "timeoutMs": {
              "type": "integer",
              "minimum": 1,
              "maximum": 9007199254740991
            }
          },
          "required": ["method", "key", "record", "timeGuard", "timeoutMs"],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "method": {
              "const": "replace"
            },
            "key": {
              "$ref": "#/definitions/Identifier"
            },
            "expectedRevision": {
              "$ref": "#/definitions/Identifier"
            },
            "record": {
              "$ref": "#/definitions/OperationRecord"
            },
            "timeGuard": {
              "$ref": "#/definitions/TimeGuard"
            }
          },
          "required": ["method", "key", "expectedRevision", "record", "timeGuard"],
          "additionalProperties": false
        }
      ]
    },
    "StateStoreResult": {
      "type": "object",
      "properties": {
        "status": {
          "enum": ["found", "created", "replaced", "missing", "conflict", "unavailable", "expired"]
        },
        "revision": {
          "anyOf": [
            {
              "$ref": "#/definitions/Identifier"
            },
            {
              "type": "null"
            }
          ]
        },
        "record": {
          "anyOf": [
            {
              "$ref": "#/definitions/OperationRecord"
            },
            {
              "type": "null"
            }
          ]
        },
        "committedAtMs": {
          "anyOf": [
            {
              "$ref": "#/definitions/SafeInteger"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": ["status", "revision", "record", "committedAtMs"],
      "additionalProperties": false,
      "allOf": [
        {
          "if": {
            "properties": {
              "status": {
                "enum": ["found", "created", "replaced"]
              }
            },
            "required": ["status"]
          },
          "then": {
            "properties": {
              "revision": {
                "$ref": "#/definitions/Identifier"
              },
              "record": {
                "$ref": "#/definitions/OperationRecord"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "status": {
                "enum": ["created", "replaced"]
              }
            },
            "required": ["status"]
          },
          "then": {
            "properties": {
              "committedAtMs": {
                "$ref": "#/definitions/SafeInteger"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "status": {
                "const": "missing"
              }
            },
            "required": ["status"]
          },
          "then": {
            "properties": {
              "revision": {
                "type": "null"
              },
              "record": {
                "type": "null"
              },
              "committedAtMs": {
                "type": "null"
              }
            }
          }
        },
        {
          "if": {
            "properties": {
              "status": {
                "const": "expired"
              }
            },
            "required": ["status"]
          },
          "then": {
            "properties": {
              "committedAtMs": {
                "type": "null"
              }
            }
          }
        }
      ]
    },
    "CancelRequest": {
      "type": "object",
      "properties": {
        "operationId": {
          "$ref": "#/definitions/OperationId"
        },
        "branchId": {
          "$ref": "#/definitions/Identifier"
        },
        "peerId": {
          "$ref": "#/definitions/Identifier"
        },
        "attempt": {
          "type": "integer",
          "minimum": 1,
          "maximum": 16
        },
        "fence": {
          "type": "integer",
          "minimum": 1,
          "maximum": 9007199254740991
        },
        "reason": {
          "enum": ["early-decision", "revoked", "deadline", "caller-cancelled"]
        },
        "cancelDeadlineMs": {
          "$ref": "#/definitions/SafeInteger"
        }
      },
      "required": ["operationId", "branchId", "peerId", "attempt", "fence", "reason", "cancelDeadlineMs"],
      "additionalProperties": false
    },
    "CancelResult": {
      "type": "object",
      "properties": {
        "operationId": {
          "$ref": "#/definitions/OperationId"
        },
        "branchId": {
          "$ref": "#/definitions/Identifier"
        },
        "peerId": {
          "$ref": "#/definitions/Identifier"
        },
        "attempt": {
          "type": "integer",
          "minimum": 1,
          "maximum": 16
        },
        "fence": {
          "type": "integer",
          "minimum": 1,
          "maximum": 9007199254740991
        },
        "status": {
          "enum": ["stopped", "already-completed", "unknown"]
        }
      },
      "required": ["operationId", "branchId", "peerId", "attempt", "fence", "status"],
      "additionalProperties": false
    },
    "WorkflowInput": {
      "type": "object",
      "properties": {
        "workflowId": {
          "$ref": "#/definitions/Identifier"
        },
        "input": {
          "$ref": "#/definitions/JsonValue"
        }
      },
      "required": ["workflowId", "input"],
      "additionalProperties": false
    },
    "WorkflowOutput": {
      "type": "object",
      "properties": {
        "outcome": {
          "enum": ["success", "partial", "failed", "indeterminate"]
        },
        "output": {
          "$ref": "#/definitions/JsonValue"
        }
      },
      "required": ["outcome", "output"],
      "additionalProperties": false
    },
    "TimeGuard": {
      "type": "object",
      "properties": {
        "notBeforeMs": {
          "$ref": "#/definitions/SafeInteger"
        },
        "notAfterMs": {
          "$ref": "#/definitions/SafeInteger"
        }
      },
      "required": ["notBeforeMs", "notAfterMs"],
      "additionalProperties": false,
      "description": "Provider-side interval notBeforeMs <= serialized decision time < notAfterMs. The same decision time is returned as committedAtMs on mutation. Empty/reversed intervals are semantic errors."
    },
    "AdapterError": {
      "type": "object",
      "properties": {
        "kind": {
          "enum": ["invalid-input", "denied", "unavailable", "conflict", "expired", "unsupported", "protocol-conflict"]
        },
        "description": {
          "type": "string"
        }
      },
      "required": ["kind"],
      "additionalProperties": false
    },
    "InvocationRequest": {
      "type": "object",
      "properties": {
        "contractId": {
          "$ref": "#/definitions/Identifier"
        },
        "contractVersion": {
          "$ref": "#/definitions/Identifier"
        },
        "contractDigest": {
          "$ref": "#/definitions/Digest"
        },
        "interactionId": {
          "$ref": "#/definitions/Identifier"
        },
        "invocationKey": {
          "$ref": "#/definitions/Identifier"
        },
        "input": {
          "$ref": "#/definitions/JsonValue"
        },
        "waitFor": {
          "enum": ["decision", "settled"]
        }
      },
      "required": [
        "contractId",
        "contractVersion",
        "contractDigest",
        "interactionId",
        "invocationKey",
        "input",
        "waitFor"
      ],
      "additionalProperties": false
    },
    "InvocationResult": {
      "type": "object",
      "properties": {
        "operationId": {
          "$ref": "#/definitions/OperationId"
        },
        "decision": {
          "anyOf": [
            {
              "$ref": "#/definitions/OperationDecision"
            },
            {
              "type": "null"
            }
          ]
        },
        "settlement": {
          "enum": ["pending", "complete", "indeterminate"]
        },
        "output": {
          "anyOf": [
            {
              "$ref": "#/definitions/JsonValue"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "required": ["operationId", "decision", "settlement", "output"],
      "additionalProperties": false
    },
    "OperationId": {
      "type": "string",
      "pattern": "^op[0-9a-f]{64}$"
    },
    "AdmissionRecord": {
      "type": "object",
      "properties": {
        "contractId": {
          "$ref": "#/definitions/Identifier"
        },
        "contractVersion": {
          "$ref": "#/definitions/Identifier"
        },
        "contractDigest": {
          "$ref": "#/definitions/Digest"
        },
        "operationId": {
          "$ref": "#/definitions/OperationId"
        },
        "principalId": {
          "$ref": "#/definitions/Identifier"
        },
        "invocationKey": {
          "$ref": "#/definitions/Identifier"
        },
        "inputDigest": {
          "$ref": "#/definitions/Digest"
        },
        "input": {
          "$ref": "#/definitions/JsonValue"
        },
        "phase": {
          "const": "admitted"
        },
        "snapshot": {
          "$ref": "#/definitions/AudienceSnapshot"
        },
        "policyRevision": {
          "$ref": "#/definitions/Identifier"
        },
        "branches": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/BranchRecord"
          },
          "minItems": 0
        },
        "decision": {
          "type": "null"
        },
        "settlement": {
          "const": "pending"
        },
        "outbox": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/OutboxEntry"
          },
          "minItems": 0
        },
        "senderPeerId": {
          "$ref": "#/definitions/Identifier"
        },
        "scopeId": {
          "$ref": "#/definitions/Identifier"
        },
        "systemId": {
          "$ref": "#/definitions/Identifier"
        },
        "accountId": {
          "$ref": "#/definitions/Identifier"
        },
        "jetstreamDomain": {
          "$ref": "#/definitions/Identifier"
        }
      },
      "required": [
        "contractId",
        "contractVersion",
        "contractDigest",
        "operationId",
        "principalId",
        "invocationKey",
        "inputDigest",
        "input",
        "phase",
        "snapshot",
        "policyRevision",
        "branches",
        "decision",
        "settlement",
        "outbox",
        "senderPeerId",
        "scopeId",
        "systemId",
        "accountId",
        "jetstreamDomain"
      ],
      "additionalProperties": false,
      "description": "Creation input before admission timestamps exist. Provider stamps admittedAtMs and deadlineMs at the guarded serialization point and returns the complete authoritative OperationRecord."
    }
  }
}

Except as otherwise noted, the content of this repository is licensed under the Creative Commons Attribution 4.0 License and code samples are licensed under the MIT