{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/barclays/main/json-schema/barclays-wallet-provision-request-data-schema.json",
  "title": "WalletProvisionRequestData",
  "description": "Request data for provisioning a credit card to a digital wallet.\n\n**Purpose:**\n- Provision credit cards to Apple Pay, Google Pay, or Samsung Pay\n- Includes eligibility criteria and device provisioning information\n- Supports both Mastercard and VISA card networks\n\n**Wallet-Specific Requirements:**\n- **Apple Pay**: Requires device certificates, nonce, and nonce signature from Apple SDK\n- **Google Pay**: Requires device information; VISA cards also need client wallet and device IDs\n- **Samsung Pay**: Requires device information; VISA cards also need client wallet and device IDs\n\n**Processing:**\n- Eligibility verification performed automatically\n- Fraud assessment based on account status and risk rules\n- Returns wallet-specific provisioning data for activation\n",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/barclays-digital-wallet-provision-api-openapi.yml#/components/schemas/WalletProvisionRequestData",
  "type": "object",
  "additionalProperties": false,
  "deprecated": false,
  "properties": {
    "data": {
      "$ref": "#/$defs/ExternalWalletProvision"
    }
  },
  "required": [
    "data"
  ],
  "nullable": false,
  "$defs": {
    "ExternalWalletProvision": {
      "type": "object",
      "additionalProperties": false,
      "deprecated": false,
      "description": "Wallet provisioning request with eligibility criteria and device information",
      "properties": {
        "walletId": {
          "type": "string",
          "description": "Wallet provider identifier:\n- 103: Apple Pay\n- 216: Google Pay\n- 217: Samsung Pay\n- 101: Apple Pay (deprecated, use 103)\n",
          "enum": [
            "101",
            "103",
            "216",
            "217"
          ]
        },
        "eligibility": {
          "$ref": "#/$defs/WalletEligibility"
        },
        "provision": {
          "$ref": "#/$defs/WalletProvision"
        }
      },
      "required": [
        "eligibility",
        "provision",
        "walletId"
      ],
      "nullable": false
    },
    "WalletEligibility": {
      "type": "object",
      "additionalProperties": false,
      "deprecated": false,
      "description": "Eligibility criteria for wallet provisioning",
      "properties": {
        "enrollmentIndicator": {
          "type": "string",
          "description": "Enrollment type (NEW for first-time enrollment, RE_ENROLL for re-enrollment)",
          "enum": [
            "NEW",
            "RE_ENROLL"
          ]
        },
        "sourceChannel": {
          "type": "string",
          "description": "Channel identifier (e.g., BCUS_Mobile, SAMSUNG_Mobile, GAP_Mobile)",
          "maxLength": 20,
          "minLength": 1,
          "pattern": "^[A-Za-z0-9\\-_]{1,20}$"
        }
      },
      "required": [
        "enrollmentIndicator",
        "sourceChannel"
      ],
      "nullable": false
    },
    "WalletProvision": {
      "type": "object",
      "additionalProperties": false,
      "deprecated": false,
      "description": "Device and certificate information for wallet provisioning",
      "properties": {
        "leafCertificate": {
          "type": "string",
          "description": "Base64-encoded leaf certificate from Apple SDK (Apple Pay only)",
          "maxLength": 10000,
          "minLength": 0,
          "pattern": "^[a-zA-Z0-9.\\/+=&']{0,10000}$"
        },
        "nonceId": {
          "type": "string",
          "description": "Hex-encoded nonce from Apple SDK (Apple Pay only)",
          "maxLength": 10000,
          "minLength": 0,
          "pattern": "^[a-zA-Z0-9.\\/+=&']{0,10000}$"
        },
        "nonceSignature": {
          "type": "string",
          "description": "Hex-encoded nonce signature from Apple SDK (Apple Pay only)",
          "maxLength": 10000,
          "minLength": 0,
          "pattern": "^[a-zA-Z0-9.\\/+=&']{0,10000}$"
        },
        "subCertificate": {
          "type": "string",
          "description": "Base64-encoded sub-certificate from Apple SDK (Apple Pay only)",
          "maxLength": 10000,
          "minLength": 0,
          "pattern": "^[a-zA-Z0-9.\\/+=&']{0,10000}$"
        },
        "deviceName": {
          "type": "string",
          "description": "User-friendly device name (e.g., \"iPhone 14 Pro\", \"Galaxy S24\")",
          "maxLength": 255,
          "minLength": 1,
          "pattern": "^[a-zA-Z0-9\\s+'-]{1,255}$"
        },
        "osName": {
          "type": "string",
          "description": "Device operating system (IOS for Apple Pay, ANDROID for Google Pay and Samsung Pay)",
          "enum": [
            "IOS",
            "ANDROID"
          ]
        },
        "osVersion": {
          "type": "string",
          "description": "Operating system version (e.g., \"17.2.1\", \"14.0.0\")",
          "maxLength": 20,
          "minLength": 1,
          "pattern": "^[0-9.]{1,20}$"
        },
        "clientWalletAccountId": {
          "type": "string",
          "description": "Wallet account ID from wallet SDK (required for VISA cards only)",
          "maxLength": 1000,
          "minLength": 0,
          "pattern": "^[a-zA-Z0-9.\\/+=&' ]{0,1000}$"
        },
        "clientDeviceId": {
          "type": "string",
          "description": "Device ID from wallet SDK (required for VISA cards only)",
          "maxLength": 1000,
          "minLength": 0,
          "pattern": "^[a-zA-Z0-9.\\/+=&']{0,1000}$"
        }
      },
      "required": [
        "deviceName",
        "osName",
        "osVersion"
      ],
      "nullable": false
    }
  }
}