{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://schemas.receiz.com/v125/external-execution.schema.json",
  "title": "Receiz v126 typed external execution",
  "oneOf": [
    { "$ref": "#/$defs/profile" },
    { "$ref": "#/$defs/plan" },
    { "$ref": "#/$defs/outcome" }
  ],
  "$defs": {
    "digest": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
    "kai": { "type": "string", "pattern": "^(0|[1-9][0-9]*)$" },
    "proofHeads": { "type": "object", "minProperties": 1, "additionalProperties": { "$ref": "#/$defs/digest" } },
    "profile": {
      "type": "object", "additionalProperties": false,
      "required": ["schema", "profileId", "operationKind", "requestSchema", "providerEvidenceSchema", "requiredProofHeads", "terminalMapping", "privacy", "authority"],
      "properties": {
        "schema": { "const": "receiz.external-execution.profile.v125" },
        "profileId": { "type": "string", "minLength": 1 },
        "operationKind": { "enum": ["payment", "refund", "notification", "external-action"] },
        "requestSchema": { "type": "string", "minLength": 1 },
        "providerEvidenceSchema": { "type": "string", "minLength": 1 },
        "requiredProofHeads": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
        "terminalMapping": { "type": "object", "minProperties": 4, "additionalProperties": { "enum": ["succeeded", "failed", "canceled", "expired"] } },
        "privacy": { "type": "object", "additionalProperties": false, "required": ["modelVisibleFields"], "properties": { "modelVisibleFields": { "type": "array", "uniqueItems": true, "items": { "type": "string" } } } },
        "authority": { "const": { "providerIsAuthority": false, "strongerTruth": "sealed-receiz-proof-object" } }
      }
    },
    "plan": {
      "type": "object", "additionalProperties": false,
      "required": ["schema", "operationId", "profileId", "operationKind", "requestDigest", "proofHeads", "idempotencyKey", "planIdentity", "confirmationDigest", "confirmationRequired", "writesPerformed", "authority"],
      "properties": {
        "schema": { "const": "receiz.external-execution.plan.v125" },
        "operationId": { "type": "string", "minLength": 1 },
        "profileId": { "type": "string", "minLength": 1 },
        "operationKind": { "enum": ["payment", "refund", "notification", "external-action"] },
        "requestDigest": { "$ref": "#/$defs/digest" },
        "proofHeads": { "$ref": "#/$defs/proofHeads" },
        "idempotencyKey": { "type": "string", "minLength": 1 },
        "planIdentity": { "$ref": "#/$defs/digest" },
        "confirmationDigest": { "$ref": "#/$defs/digest" },
        "confirmationRequired": { "const": true },
        "writesPerformed": { "const": 0 },
        "authority": { "const": { "planIsOutcome": false, "providerIsAuthority": false, "strongerTruth": "sealed-receiz-proof-object" } }
      }
    },
    "outcome": {
      "type": "object", "additionalProperties": false,
      "required": ["schema", "operationId", "profileId", "planIdentity", "requestDigest", "proofHeads", "providerEvidenceDigest", "terminalStatus", "resolvedKai", "outcomeDigest", "durableHandle", "authority"],
      "properties": {
        "schema": { "const": "receiz.external-execution.outcome.v125" },
        "operationId": { "type": "string", "minLength": 1 },
        "profileId": { "type": "string", "minLength": 1 },
        "planIdentity": { "$ref": "#/$defs/digest" },
        "requestDigest": { "$ref": "#/$defs/digest" },
        "proofHeads": { "$ref": "#/$defs/proofHeads" },
        "providerEvidenceDigest": { "$ref": "#/$defs/digest" },
        "terminalStatus": { "enum": ["succeeded", "failed", "canceled", "expired"] },
        "resolvedKai": { "$ref": "#/$defs/kai" },
        "outcomeDigest": { "$ref": "#/$defs/digest" },
        "durableHandle": { "$ref": "#/$defs/digest" },
        "authority": { "const": { "providerIsAuthority": false, "receiptIsAuthority": false, "strongerTruth": "sealed-receiz-proof-object" } }
      }
    }
  }
}
