{
  "openapi": "3.0.0",
  "info": {
    "title": "Inbound Physical Card API",
    "version": "20260626",
    "description": "This API is used by the core banking system to manage physical cards. API semantic version is 2.0; endpoint path versioning remains v1 for backward compatibility.\n\n## Version 20260626 changes\n- updated the path\n- cardProductId mandatory\n",
    "contact": {
      "name": "Thales Support",
      "url": "https://www.thalesgroup.com/en/markets/digital-identity-and-security",
      "email": "thalessupport@thalesgroup.com"
    }
  },
  "servers": [
    {
      "url": "https://api.d1.thalescloud.io/banking/v1",
      "description": "Production server"
    },
    {
      "url": "https://api.d1-stg.thalescloud.io/banking/v1",
      "description": "Staging server"
    }
  ],
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "paths": {
    "/issuers/{issuerId}/physicalCards/produce": {
      "parameters": [
        {
          "$ref": "#/components/parameters/issuer-id-path"
        },
        {
          "$ref": "#/components/parameters/x-correlation-id"
        }
      ],
      "post": {
        "description": "This API is used by the issuer backend to order a batch of physical cards.",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/cardsRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Successful card orders",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/cardOperationResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailableError"
          }
        },
        "summary": "Order cards",
        "operationId": "orderPhysicalCardsBatch"
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "description": "Requires OAuth2 access token obtained via the D1 OAuth2 API.\n",
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    },
    "schemas": {
      "cardsRequest": {
        "description": "List of cards to be produced in a single request",
        "required": [
          "cards"
        ],
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "cards": {
            "type": "array",
            "minItems": 1,
            "maxItems": 1000,
            "items": {
              "$ref": "#/components/schemas/cardItem"
            }
          }
        }
      },
      "cardItem": {
        "type": "object",
        "allOf": [
          {
            "type": "object",
            "required": [
              "cardId",
              "distributionChannel",
              "cardProductId",
              "services",
              "encryptedData",
              "paymentApplication"
            ],
            "properties": {
              "cardId": {
                "$ref": "#/components/schemas/cardId"
              },
              "distributionChannel": {
                "$ref": "#/components/schemas/distributionChannel"
              },
              "consumerId": {
                "$ref": "#/components/schemas/consumerId"
              },
              "cardProductId": {
                "$ref": "#/components/schemas/cardProductId"
              },
              "issuerRequestId": {
                "$ref": "#/components/schemas/issuerRequestId"
              },
              "services": {
                "$ref": "#/components/schemas/services"
              },
              "encryptedData": {
                "$ref": "#/components/schemas/encryptedData"
              },
              "cardDesign": {
                "$ref": "#/components/schemas/cardDesign"
              },
              "paymentApplication": {
                "$ref": "#/components/schemas/paymentApplication"
              },
              "cardCarrierConfig": {
                "$ref": "#/components/schemas/cardCarrierConfig"
              }
            }
          },
          {
            "$ref": "#/components/schemas/cardRequest"
          }
        ]
      },
      "cardRequest": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/cardRequestThales"
          },
          {
            "$ref": "#/components/schemas/cardRequestInstant"
          },
          {
            "$ref": "#/components/schemas/cardRequestCentral"
          }
        ],
        "required": [
          "distributionChannel"
        ],
        "discriminator": {
          "propertyName": "distributionChannel",
          "mapping": {
            "THALES": "#/components/schemas/cardRequestThales",
            "INSTANT": "#/components/schemas/cardRequestInstant",
            "CENTRAL": "#/components/schemas/cardRequestCentral"
          }
        }
      },
      "distributionChannel": {
        "type": "string",
        "description": "Channel used to personalize the card.\n\n- THALES - Thales personalization center\n- INSTANT - Instant issuance in branch\n- CENTRAL - Bank or partner center\n",
        "enum": [
          "THALES",
          "INSTANT",
          "CENTRAL"
        ]
      },
      "cardRequestThales": {
        "title": "distributionChannel = THALES",
        "required": [
          "shipment"
        ],
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "packagingConfig": {
            "$ref": "#/components/schemas/packagingConfig"
          },
          "shipment": {
            "$ref": "#/components/schemas/shipment"
          }
        }
      },
      "cardRequestCentral": {
        "title": "distributionChannel = CENTRAL",
        "required": [
          "shipment"
        ],
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "persoCenter": {
            "type": "string",
            "description": "Unique identifier of the personalization center."
          },
          "packagingConfig": {
            "$ref": "#/components/schemas/packagingConfig"
          },
          "shipment": {
            "$ref": "#/components/schemas/shipment"
          }
        }
      },
      "cardRequestInstant": {
        "title": "distributionChannel = INSTANT",
        "required": [
          "persoStation"
        ],
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "persoStation": {
            "type": "string",
            "description": "Unique identifier of the station used for card personalization."
          }
        }
      },
      "services": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "issuance"
        ],
        "properties": {
          "issuance": {
            "type": "string",
            "enum": [
              "CREATION",
              "RENEWAL",
              "REPLACEMENT"
            ],
            "description": "The type of issuance.\n\nValue must be one of the identifiers configured during onboarding.\n\n- CREATION - Issuance of a brand-new card to a user\n- RENEWAL - An existing card reaches its expiration date and needs to be replaced with a new one for continued use\n- REPLACEMENT - An existing card needs to be reissued due to loss, theft, or damage\n",
            "example": "RENEWAL"
          },
          "priority": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$",
            "description": "The level of priority agreed for the card production.\n\nValue must be one of the identifiers configured during onboarding.\n",
            "example": "P1"
          },
          "delivery": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$",
            "default": "NO_SHIPMENT",
            "description": "The shipment method.\n\nValue must be one of the identifiers configured during onboarding.\n",
            "example": "DHL"
          },
          "packaging": {
            "type": "string",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$",
            "example": "welcome_pack_red",
            "default": "NO_PACK",
            "description": "Unique identifier of the packaging.\n\nValue must be one of the identifiers configured during onboarding.\n"
          },
          "cardCarrier": {
            "type": "string",
            "default": "NO_CARRIER",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$",
            "description": "Unique identifier of the card carrier.\n\nValue must be one of the identifiers configured during onboarding.\n"
          },
          "pinMailer": {
            "type": "boolean",
            "default": false,
            "description": "Enable the option to send the PIN value to the consumer via post mail. \n"
          },
          "alphaCard": {
            "type": "boolean",
            "default": false,
            "description": "Enable the option to produce a sample card in the production environment.\n"
          }
        }
      },
      "encryptedData": {
        "type": "string",
        "x-sensitive": true,
        "description": "JWE encrypted **cardData** object containing PAN, expiry, and personalization data required for card production.\n"
      },
      "cardData": {
        "type": "object",
        "required": [
          "pan",
          "exp",
          "name"
        ],
        "properties": {
          "pan": {
            "description": "The PAN value (Primary Account Number).",
            "type": "string",
            "pattern": "^[0-9]{12,19}$",
            "example": "4929403965000868"
          },
          "exp": {
            "description": "The card expiration date in the format ```MMYY```.\n",
            "type": "string",
            "pattern": "^(0[1-9]|1[0-2])([0-9]{2})$",
            "example": "1223"
          },
          "name": {
            "description": "The card holder name printed on the card.\n",
            "type": "string",
            "example": "MR. JOHN SMITH"
          },
          "secondName": {
            "description": "The second line of the name printed on the card. \n",
            "type": "string",
            "example": "COMPANY NAME"
          },
          "cvv2": {
            "type": "string",
            "description": "The card verification value printed on the card.\n\nVisa: CVV2 - 3 digits \nMastercard: CVC2 - 3 digits \nAmerican Express: CSC - 4 digits\n",
            "pattern": "^\\d{3,4}$",
            "example": "123"
          },
          "pin": {
            "$ref": "#/components/schemas/pinData"
          },
          "icvv": {
            "description": "The integrated card verification value loaded into the chip.  \n\nVisa: iCVV - 3 digits \nMastercard: iCVC - 3 digits \nAmerican Express: iCSC - 5 digits\n",
            "type": "string",
            "pattern": "^(?:\\d{3}|\\d{5})$",
            "example": "325"
          },
          "panSequenceNumber": {
            "description": "The PAN Sequence Number.",
            "type": "string",
            "pattern": "^[0-9]{2}$",
            "minLength": 2,
            "maxLength": 2,
            "example": "00"
          },
          "effectiveDate": {
            "description": "The card effective date in the format ```YYYY-MM-DD```.\n\nDefault value is the card production request date.\n",
            "type": "string",
            "format": "date",
            "example": "2024-05-15"
          },
          "trackData": {
            "description": "The raw track data to be encoded on the card.",
            "type": "object",
            "required": [
              "track1",
              "track2"
            ],
            "properties": {
              "track1": {
                "type": "string",
                "description": "Formatted track 1 data\n\n```%B<PAN>^<NAME>^<EXP><SERVICE><DISCRETIONARY>?```\n",
                "pattern": "^%B\\d{13,19}\\^[A-Z0-9\\/.\\- ]{2,26}\\^\\d{4}\\d{3}[0-9A-Za-z]{0,39}\\?$",
                "example": "%B5143772040938517^ROGER/ROSALIND ^25121010000000000000?"
              },
              "track2": {
                "type": "string",
                "description": "Formatted track 2 data\n\n```;<PAN>=<EXP><SERVICE><DISCRETIONARY>?```\n",
                "pattern": "^;\\d{13,19}=\\d{4}\\d{3}\\d{0,20}\\?$",
                "example": ";5143772040938517=201020100010000000000?"
              },
              "track3": {
                "type": "string",
                "description": "Formatted track 3 data\n\n```;<PAN>=<BODY>?```\n",
                "pattern": "^;\\d{13,19}=\\d{0,107}\\?$",
                "example": ";0000000000000000=2512101008401234567890123456?"
              }
            }
          },
          "cvv1": {
            "description": "The card verification value encoded in the magnetic stripe.\n\nVisa: CVV1 - 3 digits \nMastercard: CVC1 - 3 digits \nAmerican Express: CSC5 - 5 digits \n",
            "type": "string",
            "pattern": "^(?:\\d{3}|\\d{5})$",
            "example": "965"
          },
          "pvv": {
            "description": "The PIN Verification Value.\n",
            "type": "string",
            "pattern": "^[0-9]{4}$",
            "default": "0000",
            "example": "1754"
          },
          "encodedName": {
            "type": "string",
            "pattern": "^[A-Z0-9/. -]{2,26}$",
            "minLength": 2,
            "maxLength": 26,
            "description": "The card holder name based on ISO-7813, encoded in the magnetic stripe and loaded into the chip.\n\nExamples:\n- LASTNAME/FIRSTNAME - \"DOE/JANE\"\n- LASTNAME/FIRSTNAME.title - \"DOE/JANE.MRS\"\n- with spaces - \"DOE/JANE                  \"\n- with numbers - \"DOE/ JANE 01\"\n- < empty name > - \"/.\"\n"
          },
          "paymentAccountReference": {
            "type": "string",
            "description": "The Payment Account Reference(PAR).\n\nThe PAR Data is comprised of a 4 character BIN Controller Identifier assigned by EMVCo to Registered BIN Controllers followed by a unique 25 character value\n",
            "pattern": "^[0-9A-Z]{29}$",
            "example": "512381D9F8E0629211E3949A08002"
          },
          "applications": {
            "type": "array",
            "minItems": 0,
            "maxItems": 10,
            "items": {
              "$ref": "#/components/schemas/tlvBlock"
            }
          }
        }
      },
      "tlvBlock": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "kekId",
          "macKey",
          "tlvData",
          "mac"
        ],
        "properties": {
          "appletAid": {
            "type": "string",
            "description": "Application AID",
            "example": "FFFFFFFFFFFFFFFFFFD2760000850101",
            "pattern": "^[A-F0-9]{4,32}$"
          },
          "appletDataLength": {
            "type": "string",
            "description": "Application size",
            "pattern": "^[0-9]{1,3}$"
          },
          "appletStartCode": {
            "type": "string",
            "description": "Application start code",
            "pattern": "^[A-F0-9]{4,64}$"
          },
          "kekId": {
            "type": "string",
            "example": "01",
            "description": "The version of the key used to encrypt the block\n",
            "pattern": "^[0-9]{1,3}$"
          },
          "macKey": {
            "type": "string",
            "description": "The MAC key encrypted under the encryption Key.\n",
            "pattern": "^[A-F0-9]{16,32}$"
          },
          "tlvDataLength": {
            "type": "string",
            "description": "TLV data length",
            "pattern": "^[0-9]{1,4}$"
          },
          "tlvData": {
            "type": "string",
            "description": "TLV data",
            "pattern": "^[A-F0-9]{6,20000}$"
          },
          "mac": {
            "type": "string",
            "description": "MAC of the TLV data",
            "example": "01234567",
            "pattern": "^[A-F0-9]{8,8}$"
          }
        }
      },
      "cardDesign": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "images": {
            "description": "List of additional images that can be printed on the card.\n",
            "type": "array",
            "minItems": 0,
            "maxItems": 5,
            "default": [],
            "items": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_.-\\\\\\/%\\^?=]{0,64}$"
            },
            "example": [
              "image_1",
              "image_2"
            ]
          },
          "customLines": {
            "description": "List of additional texts that can be printed on the card.\n",
            "type": "array",
            "minItems": 0,
            "maxItems": 10,
            "default": [],
            "items": {
              "type": "string",
              "pattern": "^[\\p{L}\\p{N}@ ,.'_#;:\\/-?=%\\\\\\^+&]{0,256}$"
            },
            "example": [
              "Custom text 1",
              "Custom text 2"
            ]
          },
          "cardImage": {
            "type": "string",
            "description": "Unique identifier of the AllAboutMe image to be printed onto the card, previously uploaded by end user.\n",
            "pattern": "^[A-Za-z0-9_\\-\\\\\\/.\\^]{0,48}$",
            "example": "3krr0g1r5"
          },
          "artworkId": {
            "type": "string",
            "pattern": "^[A-Za-z0-9_-]{1,64}$",
            "description": "Unique identifier of the physical card artwork.\n"
          },
          "memberId": {
            "type": "string",
            "description": "MemberId printed onto the card.\n",
            "pattern": "^[A-Za-z0-9_\\\\\\/.-]{1,48}$",
            "example": "123456789"
          }
        }
      },
      "paymentApplication": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "config"
        ],
        "properties": {
          "config": {
            "type": "string",
            "description": "The reference to a predefined set of EMV parameters.\n",
            "example": "default",
            "pattern": "^[a-zA-Z0-9_-]{1,64}$"
          },
          "odaKeyIndex": {
            "type": "string",
            "description": "The index of the Master key to be used for the ODA key certification.",
            "example": "01",
            "pattern": "^[A-F0-9]{2}$"
          },
          "derivationKeyIndex": {
            "type": "string",
            "description": "The index of the Issuer Master Keys to be used for ICC Keys computation.",
            "example": "01",
            "pattern": "^[A-F0-9]{2}$"
          },
          "pvKeyIndex": {
            "type": "string",
            "description": "The index of the PIN Verification Key to be used for PVV computation.",
            "example": "01",
            "pattern": "^[A-F0-9]{2}$"
          },
          "cvKeyIndex": {
            "type": "string",
            "description": "The index of the Card Verification Key to be used for CVV computation.",
            "example": "01",
            "pattern": "^[A-F0-9]{2}$"
          }
        }
      },
      "cardCarrierConfig": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "language": {
            "description": "The language of the card carrier, based on ISO 639-1 alpha-2 format.\n",
            "type": "string",
            "minLength": 2,
            "maxLength": 2,
            "pattern": "^[A-Z]{2}$",
            "example": "EN"
          },
          "images": {
            "description": "List of additional images that can be printed on the card carrier.\n",
            "type": "array",
            "minItems": 0,
            "maxItems": 5,
            "default": [],
            "items": {
              "type": "string",
              "pattern": "^[A-Za-z0-9_.-\\\\\\/%\\^?=]{0,64}$"
            },
            "example": [
              "image_1",
              "image_2"
            ]
          },
          "customLines": {
            "description": "List of additional texts that can be printed on the card carrier.\n",
            "type": "array",
            "minItems": 0,
            "maxItems": 10,
            "default": [],
            "items": {
              "type": "string",
              "pattern": "^[\\p{L}\\p{N}@ ,.'_#;:\\/-?=%\\\\\\^+&]{0,256}$"
            },
            "example": [
              "Custom text 1",
              "Custom text 2"
            ]
          },
          "multiCardId": {
            "description": "All the cards with the same identifier will be grouped on the same card carrier.\n",
            "type": "string",
            "minLength": 1,
            "maxLength": 48,
            "pattern": "^[A-Za-z0-9_-]{1,48}$",
            "example": "cmp7m3zdf12qj"
          },
          "multiCardOrder": {
            "description": "Order of the card on the carrier, compared to other cards.\n",
            "type": "string",
            "minLength": 1,
            "maxLength": 2,
            "pattern": "^[0-9]{1,2}$",
            "example": "1"
          }
        }
      },
      "packagingConfig": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "inserts": {
            "type": "array",
            "minItems": 0,
            "maxItems": 10,
            "items": {
              "type": "string",
              "pattern": "^[a-zA-Z0-9_-]{1,48}$"
            },
            "description": "List of inserts. Each insert must be a unique identifier.\n",
            "example": [
              "promo_card",
              "manual_v2"
            ]
          }
        }
      },
      "shipment": {
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/shipmentIndividual"
          },
          {
            "$ref": "#/components/schemas/shipmentBulk"
          }
        ],
        "required": [
          "type"
        ],
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "INDIVIDUAL": "#/components/schemas/shipmentIndividual",
            "BULK": "#/components/schemas/shipmentBulk"
          }
        }
      },
      "shipmentIndividual": {
        "title": "type = INDIVIDUAL",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "deliveryAddress"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "Option to send the card to the consumer individually or in bulk to an agency.\n\nWhen shipment type is ```BULK``` all the cards with the same delivery address, and shipped the same day will be grouped together automatically.\n",
            "enum": [
              "INDIVIDUAL"
            ]
          },
          "deliveryAddress": {
            "$ref": "#/components/schemas/address"
          }
        }
      },
      "shipmentBulk": {
        "title": "type = BULK",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "type",
          "deliveryAddress"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "Option to send the card to the consumer individually or in bulk to an agency.\n\nWhen shipment type is ```BULK``` all the cards with the same delivery address, and shipped the same day will be grouped together automatically.\n",
            "enum": [
              "BULK"
            ]
          },
          "deliveryAddress": {
            "$ref": "#/components/schemas/address"
          },
          "individualAddress": {
            "$ref": "#/components/schemas/address"
          },
          "groupId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "First level of grouping when shipment type is ```BULK```.\n\nOptional, to be used only if grouping per delivery address is not sufficient.\n\nAll the cards with the same groupId will be put together in the same box.\n"
          },
          "orderId": {
            "type": "string",
            "minLength": 1,
            "maxLength": 64,
            "description": "Second level of grouping when shipment type is ```BULK```.\n\nOptional, to be used only if grouping per delivery address is not sufficient.\n\nAll the cards with the same orderId will be put together.\n"
          }
        }
      },
      "pinData": {
        "type": "object",
        "required": [
          "type"
        ],
        "oneOf": [
          {
            "$ref": "#/components/schemas/pinblock3DESISO0"
          },
          {
            "$ref": "#/components/schemas/pinblock3DESISO0TK"
          },
          {
            "$ref": "#/components/schemas/pinblockAESISO4"
          }
        ],
        "discriminator": {
          "propertyName": "type"
        }
      },
      "pinblock3DESISO0": {
        "title": "ISO0",
        "type": "object",
        "required": [
          "type",
          "encryptedPin",
          "kid"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of the PIN Block.",
            "enum": [
              "ISO0"
            ]
          },
          "encryptedPin": {
            "type": "string",
            "minLength": 16,
            "maxLength": 16,
            "description": "The PIN in format ISO0 encrypted under 3DES Key.\n",
            "example": "9BFC7D4D47C14BEE"
          },
          "kid": {
            "type": "string",
            "minLength": 1,
            "maxLength": 3,
            "example": "01",
            "description": "The version of the 3DES key used to encrypt the PIN.\n"
          }
        }
      },
      "pinblock3DESISO0TK": {
        "title": "ISO0TK",
        "type": "object",
        "required": [
          "type",
          "encryptedPin",
          "transportKeyValue",
          "transportKeyKCV",
          "kid"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of the PIN Block.",
            "enum": [
              "ISO0TK"
            ]
          },
          "encryptedPin": {
            "type": "string",
            "minLength": 16,
            "maxLength": 16,
            "description": "The PIN in format ISO0 encrypted under a transport key.\n",
            "example": "9BFC7D4D47C14BEE"
          },
          "transportKeyValue": {
            "type": "string",
            "minLength": 32,
            "maxLength": 32,
            "description": "The transport key encrypted under 3DES Key.\n"
          },
          "transportKeyKCV": {
            "type": "string",
            "minLength": 6,
            "maxLength": 6,
            "description": "The transport key KCV (Key Check Value).\n"
          },
          "kid": {
            "type": "string",
            "minLength": 1,
            "maxLength": 3,
            "example": "01",
            "description": "The version of the 3DES key used to encrypt the KEY.\n"
          }
        }
      },
      "pinblockAESISO4": {
        "title": "ISO4",
        "type": "object",
        "required": [
          "type",
          "encryptedPin",
          "kid"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "The type of the PIN Block.",
            "enum": [
              "ISO4"
            ]
          },
          "encryptedPin": {
            "type": "string",
            "description": "The PIN in format ISO4 encrypted under AES key.\n",
            "pattern": "^[A-F0-9]{32}$",
            "example": "441234AAAAAAAAAA911B9B36BC7CE94E"
          },
          "kid": {
            "type": "string",
            "pattern": "^[0-9]{1,3}$",
            "example": "01",
            "description": "The version of the key used to encrypt the PIN.\n"
          }
        }
      },
      "address": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "lastName",
          "line1",
          "zipCode",
          "city",
          "countryCode"
        ],
        "properties": {
          "title": {
            "type": "string",
            "description": "The title.",
            "minLength": 1,
            "maxLength": 40,
            "pattern": "^[\\p{L}\\p{N}\\p{M} ,.'_#;:\\/-]{1,40}$",
            "example": "Mr."
          },
          "firstName": {
            "type": "string",
            "description": "The first name.",
            "minLength": 1,
            "maxLength": 40,
            "pattern": "^[\\p{L}\\p{N}\\p{M} ,.'_#;:\\/-]{1,40}$",
            "example": "John"
          },
          "lastName": {
            "type": "string",
            "description": "The last name.",
            "minLength": 1,
            "maxLength": 40,
            "pattern": "^[\\p{L}\\p{N}\\p{M} ,.'_#;:\\/-]{1,40}$",
            "example": "Smith"
          },
          "companyName": {
            "type": "string",
            "description": "The name of the company.",
            "minLength": 1,
            "maxLength": 64,
            "example": "Thales",
            "pattern": "^[\\p{L}\\p{N}\\p{M} '_#;:.,-\\/+&]{1,64}$"
          },
          "line1": {
            "type": "string",
            "description": "The first line of the address.",
            "minLength": 1,
            "maxLength": 64,
            "pattern": "^[\\p{L}\\p{N}\\p{M} ,.'_#;:\\/-]{1,64}$",
            "example": "Street #1"
          },
          "line2": {
            "type": "string",
            "description": "The second line of the address.",
            "minLength": 1,
            "maxLength": 64,
            "pattern": "^[\\p{L}\\p{N}\\p{M} ,.'_#;:\\/-]{1,64}$",
            "example": "Street #2"
          },
          "line3": {
            "type": "string",
            "description": "The third line of the address.",
            "minLength": 1,
            "maxLength": 64,
            "pattern": "^[\\p{L}\\p{N}\\p{M} ,.'_#;:\\/-]{1,64}$",
            "example": "Street #3"
          },
          "line4": {
            "type": "string",
            "description": "Deprecated. This field is no longer used and will be removed by end of 2026.\n",
            "minLength": 1,
            "maxLength": 64,
            "pattern": "^[\\p{L}\\p{N}\\p{M} ,.'_#;:\\/-]{1,64}$",
            "example": "Street #4",
            "deprecated": true,
            "x-removal-date": "2026-12-31"
          },
          "city": {
            "type": "string",
            "description": "The city name.",
            "minLength": 1,
            "maxLength": 32,
            "pattern": "^[\\p{L}\\p{N}\\p{M} ,.'_#;:\\/-]{1,32}$",
            "example": "London"
          },
          "state": {
            "type": "string",
            "description": "The state.",
            "minLength": 1,
            "maxLength": 30,
            "pattern": "^[\\p{L}\\p{N}\\p{M} ,.'_#;:\\/-]{1,30}$"
          },
          "zipCode": {
            "type": "string",
            "description": "The postal code or ZIP Code.",
            "minLength": 1,
            "maxLength": 10,
            "pattern": "^[0-9A-Z- ]{1,10}$",
            "example": "WC2N 5DU"
          },
          "countryCode": {
            "type": "string",
            "description": "The country code, based on ISO 3166-1 alpha-2 format",
            "minLength": 2,
            "maxLength": 2,
            "pattern": "^[A-Z]{2}$",
            "example": "GB"
          },
          "mobilePhoneNumber": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "countryCode",
              "phoneNumber"
            ],
            "description": "International phone number, used for card shipment contact purpose.",
            "properties": {
              "countryCode": {
                "type": "string",
                "description": "The country calling code.",
                "minLength": 2,
                "maxLength": 11,
                "pattern": "^\\+[0-9]{1,10}$",
                "example": "+420"
              },
              "phoneNumber": {
                "type": "string",
                "description": "The local phone number.",
                "minLength": 1,
                "maxLength": 14,
                "pattern": "^[0-9]{1,14}$",
                "example": "777222333"
              }
            }
          },
          "email": {
            "type": "string",
            "description": "The email, used for card shipment contact purpose.",
            "minLength": 1,
            "maxLength": 255,
            "pattern": "^[a-zA-Z0-9_+&*-]+(?:\\.[a-zA-Z0-9_+&*-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,15}$",
            "example": "john.doe@dummymail.com"
          }
        }
      },
      "cardOperationResponse": {
        "type": "object",
        "description": "Operation information.",
        "required": [
          "operationId"
        ],
        "properties": {
          "operationId": {
            "$ref": "#/components/schemas/operationId"
          }
        }
      },
      "issuerId": {
        "maxLength": 10,
        "minLength": 10,
        "type": "string"
      },
      "packageId": {
        "type": "string",
        "description": "Unique identifier of the package.",
        "minLength": 1,
        "maxLength": 48,
        "pattern": "^[A-Za-z0-9_-]{1,48}$"
      },
      "cardId": {
        "type": "string",
        "description": "Unique identifier of the card.",
        "minLength": 1,
        "maxLength": 48,
        "pattern": "^[A-Za-z0-9_-]{1,48}$"
      },
      "consumerId": {
        "type": "string",
        "description": "Unique identifier of the consumer. ",
        "minLength": 1,
        "maxLength": 64,
        "pattern": "^[A-Za-z0-9_-]{1,64}$"
      },
      "cardProductId": {
        "type": "string",
        "description": "Unique identifier of the type of card ( defined during the onboarding of D1)",
        "minLength": 1,
        "maxLength": 48,
        "pattern": "^[A-Za-z0-9_-]{1,48}$"
      },
      "issuerRequestId": {
        "type": "string",
        "description": "Identifier provided by issuer to identify the card production request",
        "pattern": "^[a-zA-Z0-9_-]{1,64}$",
        "example": "01c5a05e-e197-11ec-8fea-0242ac120002"
      },
      "operationId": {
        "type": "string",
        "description": "Unique identifier of the operation",
        "minLength": 1,
        "maxLength": 64,
        "pattern": "^[A-Za-z0-9_-]{1,64}$"
      },
      "errorGeneric": {
        "additionalProperties": false,
        "type": "object",
        "description": "Generic error returned by the APIs.",
        "properties": {
          "errorCode": {
            "type": "string",
            "description": "The type of the error",
            "example": "FIELD_INVALID_FORMAT"
          },
          "error": {
            "type": "string",
            "description": "Provide more error details if possible.\n\nFor example name of the field with invalid format.\n\nThis field is for troubleshooting purposes only, it can change at any time so MUST NOT be parsed, and is not supposed to be human readable so CANNOT be displayed to end users.\n",
            "example": "consumerId"
          }
        }
      }
    },
    "responses": {
      "BadRequest": {
        "description": "Bad request due to invalid URI, headers, parameters, or payload.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/errorGeneric"
            }
          }
        }
      },
      "Unauthorized": {
        "description": "Unauthorized request due to missing or invalid access token.\n\nList of errorCode / error:\n- AUTHORIZER_UNAUTHORIZED - Unauthorized message\n",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/errorGeneric"
            }
          }
        }
      },
      "Forbidden": {
        "description": "Request forbidden by authorization rules or business constraints.\n\nList of errorCode / error:\n  - AUTHORIZER_FORBIDDEN  - not authorized error message\n  - OPERATION_NOT_ALLOWED - Name of the operation/field that is not allowed in this operation\n",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/errorGeneric"
            }
          }
        }
      },
      "NotFound": {
        "description": "Requested resource not found.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/errorGeneric"
            }
          }
        }
      },
      "InternalServerError": {
        "description": "Internal server error while processing the request.\n\nList of errorCode / error:\n- INTERNAL_ERROR - Error details (if any)\n",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/errorGeneric"
            }
          }
        }
      },
      "ServiceUnavailableError": {
        "description": "The service is temporarily unavailable. You may retry your request later.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/errorGeneric"
            }
          }
        }
      }
    },
    "parameters": {
      "issuer-id-path": {
        "description": "The id of the issuer",
        "in": "path",
        "name": "issuerId",
        "required": true,
        "schema": {
          "$ref": "#/components/schemas/issuerId"
        }
      },
      "x-correlation-id": {
        "description": "Random identifier which can be used to correlate the different API calls done as part of a single use-case. This identifier will be the one primarily used for troubleshooting.\n\n**Warning:** This identifier should not be derived from sensitive personal data, as its value will be logged in clear.\n\nThere is no strong guarantee of the uniqueness of this identifier, so please refrain from using it for other purpose than logging and troubleshooting.",
        "in": "header",
        "name": "x-correlation-id",
        "schema": {
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,64}$"
        }
      }
    }
  }
}