{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://www.ezpharma.app/contracts/partner-readiness.schema.json",
  "title": "EzPharma synthetic partner preparation contracts",
  "description": "Preparation harness only; does not authorize real provider/prescribing/pharmacy traffic.",
  "$defs": {
    "mapping": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "patient",
        "episode",
        "provider",
        "prescription",
        "order",
        "line",
        "package",
        "replacement_package"
      ],
      "properties": {
        "patient": {
          "type": "string",
          "pattern": "^syn-[a-z0-9-]{1,64}$"
        },
        "episode": {
          "type": "string",
          "pattern": "^syn-[a-z0-9-]{1,64}$"
        },
        "provider": {
          "type": "string",
          "pattern": "^syn-[a-z0-9-]{1,64}$"
        },
        "prescription": {
          "type": "string",
          "pattern": "^syn-[a-z0-9-]{1,64}$"
        },
        "order": {
          "type": "string",
          "pattern": "^syn-[a-z0-9-]{1,64}$"
        },
        "line": {
          "type": "string",
          "pattern": "^syn-[a-z0-9-]{1,64}$"
        },
        "package": {
          "type": "string",
          "pattern": "^syn-[a-z0-9-]{1,64}$"
        },
        "replacement_package": {
          "type": "string",
          "pattern": "^syn-[a-z0-9-]{1,64}$"
        }
      }
    },
    "exercise": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "commandId",
        "operation",
        "resource",
        "scenario"
      ],
      "properties": {
        "commandId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{16,100}$"
        },
        "operation": {
          "enum": [
            "referral",
            "eligibility",
            "appointment",
            "encounter",
            "information",
            "document",
            "decision",
            "prescription_handoff",
            "transmission",
            "receipt",
            "review",
            "clarification",
            "cancellation",
            "renewal",
            "dispense",
            "dispatch",
            "tracking"
          ]
        },
        "resource": {
          "enum": [
            "patient",
            "episode",
            "provider",
            "prescription",
            "order",
            "line",
            "package",
            "replacement_package"
          ]
        },
        "scenario": {
          "enum": [
            "accepted",
            "rejected",
            "information_required",
            "cancelled",
            "no_show",
            "corrected",
            "access_revoked",
            "no_capacity",
            "stale",
            "timeout",
            "credential_failure",
            "unknown_status",
            "partial",
            "split",
            "shipping_exception",
            "duplicate",
            "out_of_order"
          ]
        }
      }
    },
    "callback": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "version",
        "eventId",
        "jobId",
        "sequence",
        "status",
        "occurredAt"
      ],
      "properties": {
        "version": {
          "const": "2026-11-01"
        },
        "eventId": {
          "type": "string",
          "pattern": "^ack-[A-Za-z0-9_-]{16,100}$"
        },
        "jobId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{16,100}$"
        },
        "sequence": {
          "type": "string",
          "pattern": "^[0-9]{1,18}$"
        },
        "status": {
          "type": "string",
          "maxLength": 40
        },
        "occurredAt": {
          "type": "string",
          "format": "date-time"
        }
      }
    }
  }
}
