{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://app.loyumi.com/schemas/portability-export.v1.6.0.json",
  "title": "Loyumi portability export 1.6.0",
  "description": "A deterministic, tenant-scoped portability view covering business configuration, value, activity, outstanding program state, participant-safe bilateral exchange evidence, and reward-gift invitation, choice, delivery, entitlement, and use evidence. Recipient-reference HMACs, encrypted blobs and IVs, delivery destinations, provider references, approvals, action authority, sessions, replay bindings, and one-use secrets are not transferred; destination references must be re-entered.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "$schema",
    "version",
    "requestId",
    "generatedAt",
    "scope",
    "environment",
    "manifest",
    "data"
  ],
  "properties": {
    "$schema": {
      "const": "https://app.loyumi.com/schemas/portability-export.v1.6.0.json"
    },
    "version": {
      "const": "1.6.0"
    },
    "requestId": {
      "type": "string",
      "minLength": 1
    },
    "generatedAt": {
      "type": "string",
      "format": "date-time"
    },
    "scope": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "organizationId",
        "environmentId"
      ],
      "properties": {
        "organizationId": {
          "type": "string",
          "minLength": 1
        },
        "environmentId": {
          "type": "string",
          "minLength": 1
        }
      }
    },
    "environment": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "id",
        "name",
        "kind",
        "status"
      ],
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1
        },
        "name": {
          "type": "string"
        },
        "kind": {
          "type": "string"
        },
        "status": {
          "type": "string"
        }
      }
    },
    "manifest": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "format",
        "mode",
        "requestedCollection",
        "ordering",
        "consistencyModel",
        "consistency",
        "cutoverRequiresPausedWrites",
        "delta",
        "includedCollections",
        "excludedSensitiveCollections",
        "recordCounts",
        "pagination"
      ],
      "properties": {
        "format": {
          "const": "application/json"
        },
        "mode": {
          "enum": [
            "bundle",
            "collection-page"
          ]
        },
        "requestedCollection": {
          "oneOf": [
            {
              "$ref": "#/$defs/collectionName"
            },
            {
              "type": "null"
            }
          ]
        },
        "ordering": {
          "type": "string",
          "minLength": 1
        },
        "consistencyModel": {
          "const": "best-effort-request-view"
        },
        "consistency": {
          "type": "string",
          "minLength": 1
        },
        "cutoverRequiresPausedWrites": {
          "const": true
        },
        "delta": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "supported",
            "reason"
          ],
          "properties": {
            "supported": {
              "const": false
            },
            "reason": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "includedCollections": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/collectionName"
          },
          "uniqueItems": true,
          "minItems": 1,
          "maxItems": 53
        },
        "excludedSensitiveCollections": {
          "type": "array",
          "description": "The complete machine-readable list of identity, access-control, security, bearer-value, and transient runtime records that are not transferred, including the required source drain or destination reissue action.",
          "items": {
            "$ref": "#/$defs/excludedCollection"
          },
          "minItems": 1,
          "uniqueItems": true
        },
        "recordCounts": {
          "$ref": "#/$defs/countMap"
        },
        "pagination": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "limitPerCollection",
            "complete",
            "next",
            "instructions"
          ],
          "properties": {
            "limitPerCollection": {
              "type": "integer",
              "minimum": 1,
              "maximum": 5000
            },
            "complete": {
              "type": "boolean"
            },
            "next": {
              "$ref": "#/$defs/cursorMap"
            },
            "instructions": {
              "type": "string",
              "minLength": 1
            }
          }
        }
      }
    },
    "data": {
      "$ref": "#/$defs/dataMap"
    }
  },
  "$defs": {
    "collectionName": {
      "enum": [
        "configuration",
        "members",
        "memberProfiles",
        "programs",
        "programRules",
        "tiers",
        "rewards",
        "campaigns",
        "campaignRules",
        "campaignMemberUsage",
        "loyaltyEvents",
        "referrals",
        "challengeProgress",
        "memberChoiceAwards",
        "sharedWalletMembers",
        "commerceOrders",
        "commerceOrderLines",
        "commerceReturns",
        "ledgerAccounts",
        "ledgerBalances",
        "pointLots",
        "pointLotAllocations",
        "ledgerTransactions",
        "ledgerEntries",
        "consentEvents",
        "riskCases",
        "approvalRequests",
        "operations",
        "importBatches",
        "importRows",
        "auditEvents",
        "programConfigurations",
        "redemptionQuotes",
        "redemptions",
        "reservationLotAllocations",
        "rewardFulfillments",
        "rewardGiftQuotes",
        "rewardGifts",
        "rewardGiftInvitations",
        "rewardGiftInvitationOptions",
        "rewardGiftInvitationDeliveries",
        "rewardGiftSelections",
        "rewardGiftEntitlements",
        "rewardGiftEntitlementUseEvents",
        "valueDisputes",
        "ledgerAdjustments",
        "partnerAgreements",
        "partnerAgreementVersions",
        "partnerAgreementPauseHolds",
        "partnerUsageWindows",
        "partnerExchangeQuotes",
        "partnerExchanges",
        "partnerSettlements"
      ]
    },
    "excludedCollection": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "collection",
        "table",
        "category",
        "transferred",
        "reason",
        "requiredAction"
      ],
      "properties": {
        "collection": {
          "type": "string",
          "minLength": 1
        },
        "table": {
          "type": "string",
          "minLength": 1
        },
        "category": {
          "enum": [
            "identity",
            "security",
            "transient",
            "privacy-security",
            "access-control",
            "bearer-value"
          ]
        },
        "transferred": {
          "const": false
        },
        "reason": {
          "type": "string",
          "minLength": 1
        },
        "requiredAction": {
          "type": "string",
          "minLength": 1
        }
      }
    },
    "record": {
      "type": "object",
      "additionalProperties": true
    },
    "records": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/record"
      }
    },
    "identifier": {
      "type": "string",
      "minLength": 1
    },
    "nullableIdentifier": {
      "oneOf": [
        {
          "$ref": "#/$defs/identifier"
        },
        {
          "type": "null"
        }
      ]
    },
    "timestamp": {
      "type": "string",
      "minLength": 1
    },
    "nullableTimestamp": {
      "oneOf": [
        {
          "$ref": "#/$defs/timestamp"
        },
        {
          "type": "null"
        }
      ]
    },
    "rewardGiftParticipant": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "displayName",
        "identityHint"
      ],
      "properties": {
        "displayName": {
          "type": "string",
          "minLength": 1
        },
        "identityHint": {
          "type": "string",
          "minLength": 1
        }
      }
    },
    "rewardGiftDisclosure": {
      "oneOf": [
        { "$ref": "#/$defs/rewardGiftEntitlementDisclosure" },
        { "$ref": "#/$defs/rewardGiftChoiceDisclosure" }
      ],
      "description": "Immutable participant-visible terms for a recipient-bound catalog reward entitlement or choice of entitlements."
    },
    "rewardGiftQuoteRecord": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "id",
        "organizationId",
        "environmentId",
        "programId",
        "senderMemberId",
        "recipientMemberId",
        "rewardId",
        "points",
        "sourceReference",
        "disclosure",
        "disclosureFingerprint",
        "disclosureRedactedAt",
        "claimDeadline",
        "rewardExpiresAt",
        "state",
        "expiresAt",
        "createdAt",
        "updatedAt"
      ],
      "properties": {
        "id": {
          "$ref": "#/$defs/identifier"
        },
        "organizationId": {
          "$ref": "#/$defs/identifier"
        },
        "environmentId": {
          "$ref": "#/$defs/identifier"
        },
        "programId": {
          "$ref": "#/$defs/identifier"
        },
        "senderMemberId": {
          "$ref": "#/$defs/identifier"
        },
        "recipientMemberId": {
          "$ref": "#/$defs/identifier"
        },
        "rewardId": {
          "$ref": "#/$defs/identifier"
        },
        "points": {
          "type": "integer",
          "minimum": 1
        },
        "sourceReference": {
          "$ref": "#/$defs/identifier"
        },
        "disclosure": {
          "$ref": "#/$defs/rewardGiftDisclosure"
        },
        "disclosureFingerprint": {
          "type": "string",
          "pattern": "^[0-9a-f]{64}$"
        },
        "disclosureRedactedAt": {
          "$ref": "#/$defs/nullableTimestamp"
        },
        "claimDeadline": {
          "$ref": "#/$defs/timestamp"
        },
        "rewardExpiresAt": {
          "$ref": "#/$defs/timestamp"
        },
        "state": {
          "enum": [
            "quoted",
            "consumed",
            "expired",
            "cancelled"
          ]
        },
        "expiresAt": {
          "$ref": "#/$defs/timestamp"
        },
        "createdAt": {
          "$ref": "#/$defs/timestamp"
        },
        "updatedAt": {
          "$ref": "#/$defs/timestamp"
        }
      }
    },
    "rewardGiftRecord": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "id",
        "quoteId",
        "organizationId",
        "environmentId",
        "programId",
        "senderMemberId",
        "recipientMemberId",
        "rewardId",
        "points",
        "sourceReference",
        "disclosure",
        "disclosureFingerprint",
        "disclosureRedactedAt",
        "claimDeadline",
        "rewardExpiresAt",
        "state",
        "reservationId",
        "fulfillmentId",
        "returnedPoints",
        "expiredPoints",
        "replacementPoints",
        "reversalDisputeId",
        "fulfillmentCancellationReference",
        "acceptedAt",
        "declinedAt",
        "cancelledAt",
        "expiredAt",
        "reversedAt",
        "createdAt",
        "updatedAt"
      ],
      "properties": {
        "id": {
          "$ref": "#/$defs/identifier"
        },
        "quoteId": {
          "$ref": "#/$defs/identifier"
        },
        "organizationId": {
          "$ref": "#/$defs/identifier"
        },
        "environmentId": {
          "$ref": "#/$defs/identifier"
        },
        "programId": {
          "$ref": "#/$defs/identifier"
        },
        "senderMemberId": {
          "$ref": "#/$defs/identifier"
        },
        "recipientMemberId": {
          "$ref": "#/$defs/identifier"
        },
        "rewardId": {
          "$ref": "#/$defs/identifier"
        },
        "points": {
          "type": "integer",
          "minimum": 1
        },
        "sourceReference": {
          "$ref": "#/$defs/identifier"
        },
        "disclosure": {
          "$ref": "#/$defs/rewardGiftDisclosure"
        },
        "disclosureFingerprint": {
          "type": "string",
          "pattern": "^[0-9a-f]{64}$"
        },
        "disclosureRedactedAt": {
          "$ref": "#/$defs/nullableTimestamp"
        },
        "claimDeadline": {
          "$ref": "#/$defs/timestamp"
        },
        "rewardExpiresAt": {
          "$ref": "#/$defs/timestamp"
        },
        "state": {
          "enum": [
            "pending_claim",
            "fulfilled",
            "declined",
            "cancelled",
            "expired",
            "reversed"
          ]
        },
        "reservationId": {
          "$ref": "#/$defs/identifier"
        },
        "fulfillmentId": {
          "$ref": "#/$defs/nullableIdentifier"
        },
        "returnedPoints": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0
            },
            {
              "type": "null"
            }
          ]
        },
        "expiredPoints": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0
            },
            {
              "type": "null"
            }
          ]
        },
        "replacementPoints": {
          "oneOf": [
            {
              "type": "integer",
              "minimum": 0
            },
            {
              "type": "null"
            }
          ]
        },
        "reversalDisputeId": {
          "$ref": "#/$defs/nullableIdentifier"
        },
        "fulfillmentCancellationReference": {
          "oneOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 300
            },
            {
              "type": "null"
            }
          ]
        },
        "acceptedAt": {
          "$ref": "#/$defs/nullableTimestamp"
        },
        "declinedAt": {
          "$ref": "#/$defs/nullableTimestamp"
        },
        "cancelledAt": {
          "$ref": "#/$defs/nullableTimestamp"
        },
        "expiredAt": {
          "$ref": "#/$defs/nullableTimestamp"
        },
        "reversedAt": {
          "$ref": "#/$defs/nullableTimestamp"
        },
        "createdAt": {
          "$ref": "#/$defs/timestamp"
        },
        "updatedAt": {
          "$ref": "#/$defs/timestamp"
        }
      }
    },
    "rewardGiftPersonalization": {
      "type": "object",
      "additionalProperties": false,
      "required": ["version", "message", "occasion", "theme", "locale"],
      "properties": {
        "version": { "const": 1 },
        "message": { "type": "string" },
        "occasion": { "type": "string" },
        "theme": {
          "enum": ["celebration", "birthday", "thank_you", "holiday", "custom"]
        },
        "locale": { "type": "string", "minLength": 1 }
      }
    },
    "rewardGiftOptionSnapshot": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "version", "reward", "senderCostPoints", "claimWindowDays",
        "validityDays", "fulfillment"
      ],
      "properties": {
        "version": { "const": 1 },
        "reward": {
          "type": "object",
          "additionalProperties": false,
          "required": ["id", "name", "description", "catalogVersion"],
          "properties": {
            "id": { "$ref": "#/$defs/identifier" },
            "name": { "type": "string", "minLength": 1 },
            "description": { "type": "string", "minLength": 1 },
            "catalogVersion": { "type": "integer", "minimum": 1 }
          }
        },
        "senderCostPoints": { "type": "integer", "minimum": 1 },
        "claimWindowDays": { "type": "integer", "minimum": 1, "maximum": 30 },
        "validityDays": { "type": "integer", "minimum": 1, "maximum": 3650 },
        "fulfillment": {
          "type": "object",
          "additionalProperties": false,
          "required": ["kind", "policy", "totalUses"],
          "properties": {
            "kind": { "const": "loyumi_recipient_entitlement" },
            "policy": { "const": "recipient_bound_single_use" },
            "totalUses": { "const": 1 }
          }
        }
      }
    },
    "rewardGiftInvitationRecord": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "id", "organizationId", "environmentId", "programId",
        "senderMemberId", "recipientMemberId", "sourceReference", "state",
        "readinessState", "readinessReason", "coolingUntil", "personalization",
        "personalizationFingerprint", "personalizationRedactedAt", "deliveryMode",
        "deliveryChannel", "scheduledFor", "currentQuoteId", "giftId",
        "selectedRewardId", "destinationReentryRequired", "expiresAt", "readyAt",
        "reservedAt", "terminalAt", "createdAt", "updatedAt"
      ],
      "properties": {
        "id": { "$ref": "#/$defs/identifier" },
        "organizationId": { "$ref": "#/$defs/identifier" },
        "environmentId": { "$ref": "#/$defs/identifier" },
        "programId": { "$ref": "#/$defs/identifier" },
        "senderMemberId": { "$ref": "#/$defs/identifier" },
        "recipientMemberId": { "$ref": "#/$defs/nullableIdentifier" },
        "sourceReference": { "$ref": "#/$defs/identifier" },
        "state": {
          "enum": [
            "onboarding", "ready", "quoted", "reserved", "accepted",
            "declined", "cancelled", "expired", "reversed", "revoked"
          ]
        },
        "readinessState": {
          "enum": [
            "ready", "enrollment_required", "verification_required",
            "cooling_until", "ineligible"
          ]
        },
        "readinessReason": {
          "oneOf": [{ "type": "string" }, { "type": "null" }]
        },
        "coolingUntil": { "$ref": "#/$defs/nullableTimestamp" },
        "personalization": {
          "oneOf": [
            { "$ref": "#/$defs/rewardGiftPersonalization" },
            { "type": "null" }
          ]
        },
        "personalizationFingerprint": {
          "type": "string", "pattern": "^[0-9a-f]{64}$"
        },
        "personalizationRedactedAt": { "$ref": "#/$defs/nullableTimestamp" },
        "deliveryMode": { "enum": ["immediate", "scheduled"] },
        "deliveryChannel": { "enum": ["merchant", "email", "sms", "push"] },
        "scheduledFor": { "$ref": "#/$defs/timestamp" },
        "currentQuoteId": { "$ref": "#/$defs/nullableIdentifier" },
        "giftId": { "$ref": "#/$defs/nullableIdentifier" },
        "selectedRewardId": { "$ref": "#/$defs/nullableIdentifier" },
        "destinationReentryRequired": { "const": true },
        "expiresAt": { "$ref": "#/$defs/timestamp" },
        "readyAt": { "$ref": "#/$defs/nullableTimestamp" },
        "reservedAt": { "$ref": "#/$defs/nullableTimestamp" },
        "terminalAt": { "$ref": "#/$defs/nullableTimestamp" },
        "createdAt": { "$ref": "#/$defs/timestamp" },
        "updatedAt": { "$ref": "#/$defs/timestamp" }
      },
      "allOf": [
        {
          "if": { "properties": { "personalizationRedactedAt": { "type": "null" } } },
          "then": { "properties": { "personalization": { "$ref": "#/$defs/rewardGiftPersonalization" } } },
          "else": { "properties": { "personalization": { "type": "null" } } }
        }
      ]
    },
    "rewardGiftInvitationOptionRecord": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "id", "invitationId", "organizationId", "environmentId", "programId",
        "rewardId", "position", "catalogVersion", "pointsCost", "claimWindowDays",
        "validityDays", "snapshot", "snapshotFingerprint", "reservationState",
        "reservedAt", "selectedAt", "releasedAt", "createdAt", "updatedAt"
      ],
      "properties": {
        "id": { "$ref": "#/$defs/identifier" },
        "invitationId": { "$ref": "#/$defs/identifier" },
        "organizationId": { "$ref": "#/$defs/identifier" },
        "environmentId": { "$ref": "#/$defs/identifier" },
        "programId": { "$ref": "#/$defs/identifier" },
        "rewardId": { "$ref": "#/$defs/identifier" },
        "position": { "type": "integer", "minimum": 0, "maximum": 3 },
        "catalogVersion": { "type": "integer", "minimum": 1 },
        "pointsCost": { "type": "integer", "minimum": 1 },
        "claimWindowDays": { "type": "integer", "minimum": 1, "maximum": 30 },
        "validityDays": { "type": "integer", "minimum": 1, "maximum": 3650 },
        "snapshot": { "$ref": "#/$defs/rewardGiftOptionSnapshot" },
        "snapshotFingerprint": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
        "reservationState": {
          "enum": ["unreserved", "reserved", "selected", "released"]
        },
        "reservedAt": { "$ref": "#/$defs/nullableTimestamp" },
        "selectedAt": { "$ref": "#/$defs/nullableTimestamp" },
        "releasedAt": { "$ref": "#/$defs/nullableTimestamp" },
        "createdAt": { "$ref": "#/$defs/timestamp" },
        "updatedAt": { "$ref": "#/$defs/timestamp" }
      }
    },
    "rewardGiftInvitationDeliveryRecord": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "id", "invitationId", "organizationId", "environmentId", "programId",
        "phase", "kind", "channel", "state", "attemptNumber", "reminderNumber",
        "failureCode", "scheduledFor", "sentAt", "deliveredAt", "failedAt",
        "createdAt", "updatedAt", "destinationReentryRequired"
      ],
      "properties": {
        "id": { "$ref": "#/$defs/identifier" },
        "invitationId": { "$ref": "#/$defs/identifier" },
        "organizationId": { "$ref": "#/$defs/identifier" },
        "environmentId": { "$ref": "#/$defs/identifier" },
        "programId": { "$ref": "#/$defs/identifier" },
        "phase": { "enum": ["onboarding_notice", "gift_ready"] },
        "kind": { "enum": ["initial", "reminder", "resend"] },
        "channel": { "enum": ["merchant", "email", "sms", "push"] },
        "state": { "enum": ["scheduled", "sent", "delivered", "failed", "cancelled"] },
        "attemptNumber": { "type": "integer", "minimum": 1, "maximum": 12 },
        "reminderNumber": { "type": "integer", "minimum": 0, "maximum": 3 },
        "failureCode": { "oneOf": [{ "type": "string" }, { "type": "null" }] },
        "scheduledFor": { "$ref": "#/$defs/timestamp" },
        "sentAt": { "$ref": "#/$defs/nullableTimestamp" },
        "deliveredAt": { "$ref": "#/$defs/nullableTimestamp" },
        "failedAt": { "$ref": "#/$defs/nullableTimestamp" },
        "createdAt": { "$ref": "#/$defs/timestamp" },
        "updatedAt": { "$ref": "#/$defs/timestamp" },
        "destinationReentryRequired": { "const": true }
      }
    },
    "rewardGiftSelectionRecord": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "id", "giftId", "invitationId", "optionId", "selectedRewardId",
        "recipientMemberId", "state", "consumedAt", "createdAt", "updatedAt"
      ],
      "properties": {
        "id": { "$ref": "#/$defs/identifier" },
        "giftId": { "$ref": "#/$defs/identifier" },
        "invitationId": { "$ref": "#/$defs/identifier" },
        "optionId": { "$ref": "#/$defs/identifier" },
        "selectedRewardId": { "$ref": "#/$defs/identifier" },
        "recipientMemberId": { "$ref": "#/$defs/identifier" },
        "state": { "enum": ["proposed", "consumed", "revoked"] },
        "consumedAt": { "$ref": "#/$defs/nullableTimestamp" },
        "createdAt": { "$ref": "#/$defs/timestamp" },
        "updatedAt": { "$ref": "#/$defs/timestamp" }
      }
    },
    "rewardGiftEntitlementRecord": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "id", "giftId", "fulfillmentId", "organizationId", "environmentId",
        "programId", "rewardId", "memberId", "state", "totalUses",
        "remainingUses", "version", "disclosureFingerprint", "availableAt",
        "expiresAt", "usedAt", "expiredAt", "reversedAt", "createdAt", "updatedAt"
      ],
      "properties": {
        "id": { "$ref": "#/$defs/identifier" },
        "giftId": { "$ref": "#/$defs/identifier" },
        "fulfillmentId": { "$ref": "#/$defs/identifier" },
        "organizationId": { "$ref": "#/$defs/identifier" },
        "environmentId": { "$ref": "#/$defs/identifier" },
        "programId": { "$ref": "#/$defs/identifier" },
        "rewardId": { "$ref": "#/$defs/identifier" },
        "memberId": { "$ref": "#/$defs/identifier" },
        "state": { "enum": ["legacy_untracked", "available", "used", "expired", "reversed"] },
        "totalUses": { "const": 1 },
        "remainingUses": { "enum": [0, 1] },
        "version": { "const": 1 },
        "disclosureFingerprint": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
        "availableAt": { "$ref": "#/$defs/nullableTimestamp" },
        "expiresAt": { "$ref": "#/$defs/timestamp" },
        "usedAt": { "$ref": "#/$defs/nullableTimestamp" },
        "expiredAt": { "$ref": "#/$defs/nullableTimestamp" },
        "reversedAt": { "$ref": "#/$defs/nullableTimestamp" },
        "createdAt": { "$ref": "#/$defs/timestamp" },
        "updatedAt": { "$ref": "#/$defs/timestamp" }
      }
    },
    "rewardGiftEntitlementUseEventRecord": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "id", "entitlementId", "giftId", "organizationId", "environmentId",
        "programId", "memberId", "kind", "quantity", "remainingAfter",
        "sourceReference", "occurredAt", "createdAt", "updatedAt"
      ],
      "properties": {
        "id": { "$ref": "#/$defs/identifier" },
        "entitlementId": { "$ref": "#/$defs/identifier" },
        "giftId": { "$ref": "#/$defs/identifier" },
        "organizationId": { "$ref": "#/$defs/identifier" },
        "environmentId": { "$ref": "#/$defs/identifier" },
        "programId": { "$ref": "#/$defs/identifier" },
        "memberId": { "$ref": "#/$defs/identifier" },
        "kind": { "enum": ["consume", "expire", "reverse"] },
        "quantity": { "const": 1 },
        "remainingAfter": { "const": 0 },
        "sourceReference": { "$ref": "#/$defs/identifier" },
        "occurredAt": { "$ref": "#/$defs/timestamp" },
        "createdAt": { "$ref": "#/$defs/timestamp" },
        "updatedAt": { "$ref": "#/$defs/timestamp" }
      }
    },
    "bilateralRecord": {
      "type": "object",
      "additionalProperties": true,
      "required": [
        "id",
        "exportParticipantRole"
      ],
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1
        },
        "exportParticipantRole": {
          "enum": [
            "source",
            "destination"
          ]
        }
      }
    },
    "partnerAgreementRecord": {
      "allOf": [
        {
          "$ref": "#/$defs/bilateralRecord"
        },
        {
          "oneOf": [
            {
              "properties": {
                "exportParticipantRole": {
                  "const": "source"
                },
                "acceptedBy": {
                  "type": "null"
                },
                "acceptedByPrincipalId": {
                  "type": "null"
                },
                "acceptanceReference": {
                  "type": "null"
                }
              },
              "required": [
                "acceptedBy",
                "acceptedByPrincipalId",
                "acceptanceReference"
              ]
            },
            {
              "properties": {
                "exportParticipantRole": {
                  "const": "destination"
                },
                "proposedBy": {
                  "type": "null"
                },
                "proposedByPrincipalId": {
                  "type": "null"
                }
              },
              "required": [
                "proposedBy",
                "proposedByPrincipalId"
              ]
            }
          ]
        }
      ]
    },
    "partnerAgreementVersionRecord": {
      "allOf": [
        {
          "$ref": "#/$defs/bilateralRecord"
        },
        {
          "oneOf": [
            {
              "properties": {
                "exportParticipantRole": {
                  "const": "source"
                },
                "destinationApprovalReference": {
                  "type": "null"
                },
                "acceptedBy": {
                  "type": "null"
                },
                "acceptedByPrincipalId": {
                  "type": "null"
                }
              },
              "required": [
                "destinationApprovalReference",
                "acceptedBy",
                "acceptedByPrincipalId"
              ]
            },
            {
              "properties": {
                "exportParticipantRole": {
                  "const": "destination"
                },
                "sourceApprovalReference": {
                  "type": "null"
                },
                "proposedBy": {
                  "type": "null"
                },
                "proposedByPrincipalId": {
                  "type": "null"
                }
              },
              "required": [
                "sourceApprovalReference",
                "proposedBy",
                "proposedByPrincipalId"
              ]
            }
          ]
        }
      ]
    },
    "partnerAgreementPauseHoldRecord": {
      "allOf": [
        {
          "$ref": "#/$defs/bilateralRecord"
        },
        {
          "type": "object",
          "required": [
            "agreementId",
            "participantRole",
            "termsHash",
            "state"
          ],
          "properties": {
            "participantRole": {
              "enum": [
                "source",
                "destination"
              ]
            },
            "state": {
              "enum": [
                "active",
                "released",
                "terminated"
              ]
            }
          }
        }
      ]
    },
    "partnerQuoteTerms": {
      "type": "object",
      "additionalProperties": true,
      "not": {
        "required": [
          "customerVerification"
        ]
      },
      "properties": {
        "memberLink": {
          "type": "object",
          "additionalProperties": true,
          "not": {
            "required": [
              "sourceLinkChallengeId"
            ]
          }
        },
        "confirmation": {
          "type": "object",
          "additionalProperties": true,
          "not": {
            "required": [
              "nonce"
            ]
          }
        }
      }
    },
    "partnerExchangeQuoteRecord": {
      "allOf": [
        {
          "$ref": "#/$defs/bilateralRecord"
        },
        {
          "type": "object",
          "required": [
            "sourceMemberId",
            "destinationMemberId",
            "terms"
          ],
          "properties": {
            "terms": {
              "$ref": "#/$defs/partnerQuoteTerms"
            }
          },
          "oneOf": [
            {
              "properties": {
                "exportParticipantRole": {
                  "const": "source"
                },
                "sourceMemberId": {
                  "type": "string",
                  "minLength": 1
                },
                "destinationMemberId": {
                  "type": "null"
                }
              }
            },
            {
              "properties": {
                "exportParticipantRole": {
                  "const": "destination"
                },
                "sourceMemberId": {
                  "type": "null"
                },
                "destinationMemberId": {
                  "type": "string",
                  "minLength": 1
                },
                "sourceReference": {
                  "type": "null"
                },
                "idempotencyKey": {
                  "type": "null"
                },
                "requestHash": {
                  "type": "null"
                }
              },
              "required": [
                "sourceReference",
                "idempotencyKey",
                "requestHash"
              ]
            }
          ]
        }
      ]
    },
    "partnerExchangeRecord": {
      "allOf": [
        {
          "$ref": "#/$defs/bilateralRecord"
        },
        {
          "not": {
            "required": [
              "confirmationAssertionId"
            ]
          }
        },
        {
          "not": {
            "required": [
              "confirmationReference"
            ]
          }
        },
        {
          "not": {
            "required": [
              "approvalIntentId"
            ]
          }
        },
        {
          "oneOf": [
            {
              "properties": {
                "exportParticipantRole": {
                  "const": "source"
                },
                "destinationTransactionId": {
                  "type": "null"
                },
                "destinationLotId": {
                  "type": "null"
                },
                "destinationReversalTransactionId": {
                  "type": "null"
                }
              },
              "required": [
                "destinationTransactionId",
                "destinationLotId",
                "destinationReversalTransactionId"
              ]
            },
            {
              "properties": {
                "exportParticipantRole": {
                  "const": "destination"
                },
                "sourceReservationId": {
                  "type": "null"
                },
                "sourceReference": {
                  "type": "null"
                },
                "sourceTransactionId": {
                  "type": "null"
                },
                "sourceReversalTransactionId": {
                  "type": "null"
                }
              },
              "required": [
                "sourceReservationId",
                "sourceReference",
                "sourceTransactionId",
                "sourceReversalTransactionId"
              ]
            }
          ]
        }
      ]
    },
    "partnerSettlementRecord": {
      "allOf": [
        {
          "$ref": "#/$defs/bilateralRecord"
        },
        {
          "type": "object",
          "required": [
            "recordedBy"
          ],
          "properties": {
            "recordedBy": {
              "type": "null"
            }
          }
        }
      ]
    },
    "bilateralRecords": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/bilateralRecord"
      }
    },
    "dataMap": {
      "type": "object",
      "additionalProperties": false,
      "minProperties": 1,
      "maxProperties": 53,
      "properties": {
        "configuration": {
          "$ref": "#/$defs/records"
        },
        "members": {
          "$ref": "#/$defs/records"
        },
        "memberProfiles": {
          "$ref": "#/$defs/records"
        },
        "programs": {
          "$ref": "#/$defs/records"
        },
        "programRules": {
          "$ref": "#/$defs/records"
        },
        "tiers": {
          "$ref": "#/$defs/records"
        },
        "rewards": {
          "$ref": "#/$defs/records"
        },
        "campaigns": {
          "$ref": "#/$defs/records"
        },
        "campaignRules": {
          "$ref": "#/$defs/records"
        },
        "campaignMemberUsage": {
          "$ref": "#/$defs/records"
        },
        "loyaltyEvents": {
          "$ref": "#/$defs/records"
        },
        "referrals": {
          "$ref": "#/$defs/records"
        },
        "challengeProgress": {
          "$ref": "#/$defs/records"
        },
        "memberChoiceAwards": {
          "$ref": "#/$defs/records"
        },
        "sharedWalletMembers": {
          "$ref": "#/$defs/records"
        },
        "commerceOrders": {
          "$ref": "#/$defs/records"
        },
        "commerceOrderLines": {
          "$ref": "#/$defs/records"
        },
        "commerceReturns": {
          "$ref": "#/$defs/records"
        },
        "ledgerAccounts": {
          "$ref": "#/$defs/records"
        },
        "ledgerBalances": {
          "$ref": "#/$defs/records"
        },
        "pointLots": {
          "$ref": "#/$defs/records"
        },
        "pointLotAllocations": {
          "$ref": "#/$defs/records"
        },
        "ledgerTransactions": {
          "$ref": "#/$defs/records"
        },
        "ledgerEntries": {
          "$ref": "#/$defs/records"
        },
        "consentEvents": {
          "$ref": "#/$defs/records"
        },
        "riskCases": {
          "$ref": "#/$defs/records"
        },
        "approvalRequests": {
          "$ref": "#/$defs/records"
        },
        "operations": {
          "$ref": "#/$defs/records"
        },
        "importBatches": {
          "$ref": "#/$defs/records"
        },
        "importRows": {
          "$ref": "#/$defs/records"
        },
        "auditEvents": {
          "$ref": "#/$defs/records"
        },
        "programConfigurations": {
          "$ref": "#/$defs/records"
        },
        "redemptionQuotes": {
          "$ref": "#/$defs/records"
        },
        "redemptions": {
          "$ref": "#/$defs/records"
        },
        "reservationLotAllocations": {
          "$ref": "#/$defs/records"
        },
        "rewardFulfillments": {
          "$ref": "#/$defs/records"
        },
        "rewardGiftQuotes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/rewardGiftQuoteRecord"
          }
        },
        "rewardGifts": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/rewardGiftRecord"
          }
        },
        "rewardGiftInvitations": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/rewardGiftInvitationRecord"
          }
        },
        "rewardGiftInvitationOptions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/rewardGiftInvitationOptionRecord"
          }
        },
        "rewardGiftInvitationDeliveries": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/rewardGiftInvitationDeliveryRecord"
          }
        },
        "rewardGiftSelections": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/rewardGiftSelectionRecord"
          }
        },
        "rewardGiftEntitlements": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/rewardGiftEntitlementRecord"
          }
        },
        "rewardGiftEntitlementUseEvents": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/rewardGiftEntitlementUseEventRecord"
          }
        },
        "valueDisputes": {
          "$ref": "#/$defs/records"
        },
        "ledgerAdjustments": {
          "$ref": "#/$defs/records"
        },
        "partnerAgreements": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/partnerAgreementRecord"
          }
        },
        "partnerAgreementVersions": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/partnerAgreementVersionRecord"
          }
        },
        "partnerAgreementPauseHolds": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/partnerAgreementPauseHoldRecord"
          }
        },
        "partnerUsageWindows": {
          "$ref": "#/$defs/bilateralRecords"
        },
        "partnerExchangeQuotes": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/partnerExchangeQuoteRecord"
          }
        },
        "partnerExchanges": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/partnerExchangeRecord"
          }
        },
        "partnerSettlements": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/partnerSettlementRecord"
          }
        }
      }
    },
    "countMap": {
      "type": "object",
      "additionalProperties": {
        "type": "integer",
        "minimum": 0
      },
      "propertyNames": {
        "$ref": "#/$defs/collectionName"
      },
      "minProperties": 1,
      "maxProperties": 53
    },
    "cursorMap": {
      "type": "object",
      "additionalProperties": {
        "type": "string",
        "minLength": 1,
        "maxLength": 256
      },
      "propertyNames": {
        "$ref": "#/$defs/collectionName"
      },
      "maxProperties": 53
    },
    "rewardGiftEntitlementDisclosure": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "version",
        "product",
        "reward",
        "issuer",
        "participants",
        "fulfillment",
        "senderCost",
        "recipientOutcome",
        "deadlines",
        "finality",
        "restrictions"
      ],
      "properties": {
        "version": {
          "const": 1
        },
        "reward": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "id",
            "name",
            "description",
            "version"
          ],
          "properties": {
            "id": {
              "$ref": "#/$defs/identifier"
            },
            "name": {
              "type": "string",
              "minLength": 1
            },
            "description": {
              "type": "string",
              "minLength": 1
            },
            "version": {
              "type": "integer",
              "minimum": 1
            }
          }
        },
        "issuer": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "organizationName",
            "programName",
            "unitName"
          ],
          "properties": {
            "organizationName": {
              "type": "string",
              "minLength": 1
            },
            "programName": {
              "type": "string",
              "minLength": 1
            },
            "unitName": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "participants": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "sender",
            "recipient"
          ],
          "properties": {
            "sender": {
              "$ref": "#/$defs/rewardGiftParticipant"
            },
            "recipient": {
              "$ref": "#/$defs/rewardGiftParticipant"
            }
          }
        },
        "senderCost": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "points",
            "unitName"
          ],
          "properties": {
            "points": {
              "type": "integer",
              "minimum": 1
            },
            "unitName": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "deadlines": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "quoteExpiresAt",
            "claimDeadline"
          ],
          "properties": {
            "quoteExpiresAt": {
              "$ref": "#/$defs/timestamp"
            },
            "claimDeadline": {
              "$ref": "#/$defs/timestamp"
            }
          }
        },
        "finality": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "beforeAcceptance",
            "afterAcceptance",
            "deliveryFailure"
          ],
          "properties": {
            "beforeAcceptance": {
              "type": "string",
              "minLength": 1
            },
            "afterAcceptance": {
              "type": "string",
              "minLength": 1
            },
            "deliveryFailure": {
              "type": "string",
              "minLength": 1
            }
          }
        },
        "product": {
          "const": "catalog_reward_entitlement_gift"
        },
        "fulfillment": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "policy"
          ],
          "properties": {
            "kind": {
              "const": "loyumi_recipient_entitlement"
            },
            "policy": {
              "const": "recipient_bound_single_use"
            }
          }
        },
        "recipientOutcome": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "kind",
            "name",
            "description",
            "expiresAt"
          ],
          "properties": {
            "kind": {
              "const": "single_recipient_reward_entitlement"
            },
            "name": {
              "type": "string",
              "minLength": 1
            },
            "description": {
              "type": "string",
              "minLength": 1
            },
            "expiresAt": {
              "$ref": "#/$defs/timestamp"
            }
          }
        },
        "restrictions": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "cashValue",
            "transferable",
            "regiftable",
            "resellable"
          ],
          "properties": {
            "cashValue": {
              "const": false
            },
            "transferable": {
              "const": false
            },
            "regiftable": {
              "const": false
            },
            "resellable": {
              "const": false
            }
          }
        }
      }
    },
    "rewardGiftChoiceDisclosure": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "version", "product", "reward", "issuer", "participants",
        "fulfillment", "senderCost", "recipientOutcome", "deadlines",
        "finality", "restrictions", "invitationId", "rewardOptions",
        "personalization", "delivery"
      ],
      "properties": {
        "version": { "const": 2 },
        "product": { "const": "catalog_reward_entitlement_choice_gift" },
        "reward": {
          "$ref": "#/$defs/rewardGiftEntitlementDisclosure/properties/reward"
        },
        "issuer": {
          "$ref": "#/$defs/rewardGiftEntitlementDisclosure/properties/issuer"
        },
        "participants": {
          "$ref": "#/$defs/rewardGiftEntitlementDisclosure/properties/participants"
        },
        "fulfillment": {
          "$ref": "#/$defs/rewardGiftEntitlementDisclosure/properties/fulfillment"
        },
        "senderCost": {
          "$ref": "#/$defs/rewardGiftEntitlementDisclosure/properties/senderCost"
        },
        "recipientOutcome": {
          "type": "object",
          "additionalProperties": false,
          "required": ["kind", "name", "description", "expiresAt"],
          "properties": {
            "kind": { "const": "recipient_choice_reward_entitlement" },
            "name": { "type": "string", "minLength": 1 },
            "description": { "type": "string", "minLength": 1 },
            "expiresAt": { "$ref": "#/$defs/timestamp" }
          }
        },
        "deadlines": {
          "$ref": "#/$defs/rewardGiftEntitlementDisclosure/properties/deadlines"
        },
        "finality": {
          "$ref": "#/$defs/rewardGiftEntitlementDisclosure/properties/finality"
        },
        "restrictions": {
          "$ref": "#/$defs/rewardGiftEntitlementDisclosure/properties/restrictions"
        },
        "invitationId": { "$ref": "#/$defs/identifier" },
        "rewardOptions": {
          "type": "array",
          "minItems": 1,
          "maxItems": 4,
          "items": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id", "rewardId", "position", "snapshot", "snapshotFingerprint"
            ],
            "properties": {
              "id": { "$ref": "#/$defs/identifier" },
              "rewardId": { "$ref": "#/$defs/identifier" },
              "position": { "type": "integer", "minimum": 0, "maximum": 3 },
              "snapshot": { "$ref": "#/$defs/rewardGiftOptionSnapshot" },
              "snapshotFingerprint": {
                "type": "string", "pattern": "^[0-9a-f]{64}$"
              }
            }
          }
        },
        "personalization": { "$ref": "#/$defs/rewardGiftPersonalization" },
        "delivery": {
          "type": "object",
          "additionalProperties": false,
          "required": ["mode", "channel", "scheduledFor"],
          "properties": {
            "mode": { "enum": ["immediate", "scheduled"] },
            "channel": { "enum": ["merchant", "email", "sms", "push"] },
            "scheduledFor": { "$ref": "#/$defs/timestamp" }
          }
        }
      }
    }
  }
}
