{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/wordline/main/json-schema/wordline-create-corporate-contract-request-schema.json",
  "title": "CreateCorporateContractRequest",
  "x-generated": "2026-10-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/wordline-corporate-contract-api-openapi.yml#/components/schemas/CreateCorporateContractRequest",
  "type": "object",
  "required": [
    "corporateContract"
  ],
  "properties": {
    "customers": {
      "type": "array",
      "description": "The issuer has to provide all new customers (as person) which don't already exist in our system in a dedicated list (customers).\nFor each new customer, the issuer :\n- can provide an unique external reference: whether this external reference is already assigned to an existing customer for this issuer in our system then the contract creation request is denied\n- must provide mandatory fields and a correlation id that can be used in the contract part to assign the customer, not yet created in our system, as contract owner, root or card account owner, cardholder, etc",
      "items": {
        "$ref": "#/$defs/CreateCorporateContractRequestCustomer"
      }
    },
    "companies": {
      "type": "array",
      "description": "The issuer has to provide companies which don't already exist in our system in a dedicated list (companies).\nFor each new company, the issuer :\n- can provide an unique external reference: whether this external reference is already assigned to an existing company for this issuer in our system then the contract creation request is denied\n- must provide mandatory fields and a correlation id that can be used in the contract part to assign the company, not yet created in our system, as contract owner, root or card account owner etc",
      "items": {
        "$ref": "#/$defs/CreateCorporateContractRequestCompany"
      }
    },
    "corporateContract": {
      "$ref": "#/$defs/CreateCorporateContractRequestContract"
    },
    "addCorporateContractEntities": {
      "type": "array",
      "description": "With the corporate contract creation request it is possible to add an entity (e.g. country, division, department) into the company organization (configured in a product extension).",
      "items": {
        "$ref": "#/$defs/CreateCorporateContractRequestAddCorporateContractEntity"
      }
    },
    "addCorporateEmployeeCardsAndAccounts": {
      "type": "array",
      "description": "With the corporate contract creation request it is possible to add one or several employees with cards and accounts (configured in a product extension).",
      "items": {
        "$ref": "#/$defs/CreateCorporateContractRequestAddCorporateEmployeeCardsAndAccounts"
      }
    },
    "addCorporateVcaServiceCardsAndAccounts": {
      "type": "array",
      "description": "With the corporate contract creation request it is possible to add one or several virtual cards and accounts (configured in a product extension).",
      "items": {
        "$ref": "#/$defs/CreateCorporateContractRequestAddCorporateVcaServiceCardsAndAccounts"
      }
    }
  },
  "$defs": {
    "AccountHierarchyModel": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "description": "Model type of the account hierarchy\nPossible value:\n• reimbursementModel."
        },
        "reference": {
          "type": "string",
          "description": "Reference to the particular model that has been selected in hierarchySelectedModels."
        }
      },
      "title": "AccountHierarchyModel"
    },
    "AccountIdentifier": {
      "type": "object",
      "properties": {
        "accountReference": {
          "type": "string",
          "description": "Account reference is to identify the Account calculated by the system (algorithm is configurable per issuer). Either the account number or the issuerAccountExternalReference is provided, or, if both are provided then only the account number is used."
        },
        "issuerAccountExternalReference": {
          "type": "string",
          "description": "Issuer account external reference is to identify the Account. Either the account number or the issuerAccountExternalReference is provided, or, if both are provided then only the account number is used. Algorithm configurable by issuer, can be generated by the system if there is an externalReferenceGeneratorAlgorithm."
        }
      },
      "title": "AccountIdentifier"
    },
    "AccountModel": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "description": "Type of an account model\nPossible values:\n•\teventFeeModel\n•\ttransactionFeeModel\n•\tmarkupFeeModel\n•\trestrictionModel\n•\tdebitInterestModel\n•\tinterestModel\n•\tdirectDebitAmountModel\n•\taccountAmountDueModel \n•\tstatementModel"
        },
        "reference": {
          "type": "string",
          "description": "Reference to the particular model that has been selected in selectedModels"
        },
        "originalModelReference": {
          "type": "string",
          "description": "DEPRECATED"
        }
      },
      "title": "AccountModel"
    },
    "AdvertisementFlags": {
      "type": "object",
      "properties": {
        "general": {
          "type": "boolean",
          "description": "General advertisement flag. By default, value is false.\nIf this flag is false, other flags are ignored (email, letter, phone, statement, sms flags)."
        },
        "email": {
          "type": "boolean",
          "description": "Indicates if the email advertisement is enabled (true) or not (false). By default, value is false."
        },
        "letter": {
          "type": "boolean",
          "description": "Indicates if the letter advertisement is enabled (true) or not (false). By default, value is false."
        },
        "phone": {
          "type": "boolean",
          "description": "Indicates if the phone advertisement is enabled (true) or not (false). By default, value is false."
        },
        "statement": {
          "type": "boolean",
          "description": "Indicates if the statement advertisement is enabled (true) or not (false). By default, value is false."
        },
        "sms": {
          "type": "boolean",
          "description": "Indicates if the sms advertisement is enabled (true) or not (false). By default, value is false."
        }
      },
      "description": "Specify possible channels used to provide advertisements",
      "title": "AdvertisementFlags"
    },
    "Amount": {
      "type": "object",
      "required": [
        "value",
        "exponent",
        "isoCode"
      ],
      "properties": {
        "value": {
          "type": "integer",
          "format": "int64",
          "description": "Integer amount value. Ex. if it is two hundred euros and 17 cents, then amount value is 20017 (exponent = 2 digits for currency=EUR)"
        },
        "exponent": {
          "type": "integer",
          "format": "int32",
          "description": "Exponent of Amount. Number of decimal digits."
        },
        "isoCode": {
          "type": "string",
          "description": "Currency code of amount\nThe currency in ISO4217 alphabetic format.\nExample: EUR for Euro"
        }
      },
      "title": "Amount"
    },
    "AuthorizationDataValidation": {
      "type": "object",
      "description": "The issuer can update cardholder data used by the Front Office for verification (AVS/ANI).",
      "properties": {
        "firstName": {
          "type": "string",
          "description": "First name of the cardholder"
        },
        "lastName": {
          "type": "string",
          "description": "Last name of the cardholder"
        },
        "secondFirstName": {
          "type": "string",
          "description": "Second first name of the cardholder"
        },
        "streetName": {
          "type": "string",
          "description": "Street name of the cardholder address"
        },
        "zipCode": {
          "type": "string",
          "description": "Zip code of the cardholder address"
        },
        "birthDate": {
          "type": "string",
          "format": "date-time",
          "description": "Birth date of the cardholder"
        }
      }
    },
    "CardContractModel": {
      "type": "object",
      "properties": {
        "reference": {
          "type": "string",
          "description": "Reference of a card contract model"
        },
        "type": {
          "type": "string",
          "description": "Type of a card contract model\nPossible values: CARD_CREATION_MODEL, CARD_AUTONUMBERING_MODEL, TECHNOLOGY_AND_APPLICATION_MODEL, EVENT_FEE_MODEL, CARD_RENEWAL_MODEL, CARD_REPLACEMENT_MODEL, PIN_PRODUCTION_MODEL, DISTRIBUTION_MODEL"
        }
      },
      "title": "CardContractModel"
    },
    "CreateAddressRequestMailAddress": {
      "type": "object",
      "required": [
        "country"
      ],
      "properties": {
        "typeCode": {
          "type": "string",
          "description": "DEPRECATED"
        },
        "courtesyTitle": {
          "type": "string",
          "description": "Courtesy title of the address. Free text"
        },
        "line1": {
          "type": "string",
          "description": "Address line 1 (conditional). Free text. A specific issuer algorithm can be activated to e.g. build the line, apply controls (e.g. length restriction)."
        },
        "line2": {
          "type": "string",
          "description": "Address line 2 (conditional). Free text. A specific issuer algorithm can be activated to e.g. build the line, apply controls (e.g. length restriction)."
        },
        "line3": {
          "type": "string",
          "description": "Address line 3 (conditional). Free text. A specific issuer algorithm can be activated to e.g. build the line, apply controls (e.g. length restriction)."
        },
        "line4": {
          "type": "string",
          "description": "Address line 4 (conditional). Free text. A specific issuer algorithm can be activated to e.g. build the line, apply controls (e.g. length restriction)."
        },
        "line5": {
          "type": "string",
          "description": "Address line 5 (conditional). Free text. A specific issuer algorithm can be activated to e.g. build the line, apply controls (e.g. length restriction)."
        },
        "buildingNumber": {
          "type": "string",
          "description": "Building number of the address (optional)"
        },
        "boxNumber": {
          "type": "string",
          "description": "Box number of the address (optional)"
        },
        "streetName": {
          "type": "string",
          "description": "Street name of the address (optional)"
        },
        "postCode": {
          "type": "string",
          "description": "zip code of the address (optional)"
        },
        "townName": {
          "type": "string",
          "description": "City corresponding to the address"
        },
        "countrySubdivision": {
          "type": "string",
          "description": "Subdivision of the country (optional)"
        },
        "country": {
          "type": "string",
          "description": "Code of the country (mandatory). Free text. The value can be subject to a validation process if a specific rule has been configured at issuer level. The value can be optional if a specific rule has been configured."
        }
      },
      "title": "CreateAddressRequest.MailAddress"
    },
    "CreateAddressRequestPhoneNumber": {
      "type": "object",
      "required": [
        "localPhoneNumber"
      ],
      "properties": {
        "countryCode": {
          "type": "string",
          "description": "Country dialing code (optional). Free text. It is recommended to provide a region dialing code (e.g. +33, +49)."
        },
        "localPhoneNumber": {
          "type": "string",
          "description": "Free text (mandatory). It’s recommended to provide an international phone number in accordance with the value provided in the country code Ex : - country code = ‘+’33’ and localPhoneNumber = ‘0622334455’ - country code = empty and localPhoneNumber = ‘+33622334455’             The value can be subject to a validation process if a specific rule has been configured at issuer level."
        }
      },
      "title": "CreateAddressRequest.PhoneNumber"
    },
    "CreateCorporateContractRequestAccount": {
      "type": "object",
      "properties": {
        "issuerAccountExternalReference": {
          "type": "string",
          "description": "The issuer can provide the external reference for the new account (maximum length of 255 characters).This external reference must be unique per issuer.\nIf not provided, the external reference is calculated by our system if a generation algorithm is configured at account hierarchy level (ExternalReferenceGeneratorAlgorithm), else the issuer account external reference will be empty."
        },
        "accountTemplateReference": {
          "type": "string",
          "description": "The issuer must provide the account template reference to identify the account to be created (optional if only one account has to be created in the product extension)."
        },
        "accountOwnerRequestCorrelationId": {
          "type": "string",
          "description": "Not to be provided if the account owner is the same as the contract owner.\nOtherwise the issuer can provide the correlation id of the new customer or company which represent the account owner (defined in the data block CreateCorporateContractRequest.Customer or in CreateCorporateContractRequest.Company)."
        },
        "accountOwnerIdentifier": {
          "description": "Not to be provided if the account owner is the same as the contract owner.\nOtherwise if the account owner already exists in our system then the issuer has to provide the customer reference or the issuer external customer reference of the existing customer or company. If the account owner does not exist in our system then accountOwnerRequestCorrelationId has to be filled.",
          "allOf": [
            {
              "$ref": "#/$defs/CustomerIdentifier"
            }
          ]
        },
        "accountGuarantorRequestCorrelationId": {
          "type": "string",
          "description": "The issuer can provide the correlation id of the new customer or company which represent the account guarantor (defined in the data block CreateCorporateContractRequest.Customer or in CreateCorporateContractRequest.Company)."
        },
        "accountGuarantorIdentifier": {
          "description": "If the account guarantor already exists in our system then the issuer can provide the customer reference or the issuer external customer reference of the existing customer or company.",
          "allOf": [
            {
              "$ref": "#/$defs/CustomerIdentifier"
            }
          ]
        },
        "selectedModels": {
          "type": "array",
          "description": "The issuer can provide specific account model reference, otherwise the default one from the account template is used.\n\nList of possible models:\n•\trestrictionModel\n•\tstatementModel\n•\tdebitInterestModel\n•\tcreditInterestModel\n•\ttransactionFeeModel\n•\tmarkupFeeModel                ",
          "items": {
            "$ref": "#/$defs/AccountModel"
          }
        },
        "closureCalendarReference": {
          "type": "string",
          "description": "The issuer can provide a specific closure calendar reference, otherwise the default one from the account template is used."
        },
        "name": {
          "type": "string",
          "description": "The issuer can provide the name of the account.\nRefer to Account.name"
        },
        "iban": {
          "type": "string",
          "description": "Refer to Account.iban\nHas to be provided if the IBAN is configured as mandatory in product configuration.\nIf the IBAN is mandatory and the IBAN is not provided, an error occurs\nIf the IBAN is mandatory and the IBAN is provided, the IBAN checksum is performed. If the check is ko (=invalid IBAN), an errors occurs.\nIf  the IBAN is not mandatory and the IBAN is provided during the account creation, the IBAN is stored as received without any check."
        },
        "ibanOwnerName": {
          "type": "string",
          "description": "Refer to Account.ibanOwnerName\nIf Issuer expects to produce direct debits and outgoing credit transfers, it is recommended the Iban owner name to be always provided, except if the payment processing channel is SEPA and SEPA mandate UMR is provided (comes from another system)."
        },
        "secondIban": {
          "type": "string",
          "description": "Refer to Account.secondIban"
        },
        "bic": {
          "type": "string",
          "description": "Refer to Account.bic"
        },
        "sepaIndicator": {
          "type": "boolean",
          "description": "The issuer can indicate if the payment processing channel is SEPA or not (also valid for outgoing credit transfer processing channel).\nIf payment processing channel is SEPA (SEPA indicator is true) and payment mode is AUTOPAYMENT (Direct debit without confirmation), then SEPA mandate data must be provided.\nSEPA indicator default value is false."
        },
        "sepaMandate": {
          "$ref": "#/$defs/CreateCorporateContractRequestSepaMandate"
        },
        "creditLimitAmount": {
          "description": "The issuer can provide a specific credit limit amount (within the minimum/maximum range defined in the restriction model for the credit limit) to replace the default permanent credit limit value.",
          "allOf": [
            {
              "$ref": "#/$defs/Amount"
            }
          ]
        },
        "accountMembershipNumber1": {
          "type": "string",
          "description": "The issuer can provide the membership number 1 of the account."
        },
        "accountMembershipNumber2": {
          "type": "string",
          "description": "The issuer can provide the membership number 2 of the account."
        },
        "specificFields": {
          "type": "object",
          "description": "The issuer can provide Specific Fields for the new account. \nIt is a list of external data {\"label\":\"value\"} separated by a \",\" related to the account (pass-thru data) that can be provided by e.g. the issuer for information or for usage by other systems.\nExample : {\"label1\":\"value1\",\"label2\":\"value2\"}\nThose provided data have no impact on our system business processes.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "payingAccountType": {
          "type": "string",
          "description": "The paying account type can be provided by the issuer or if not provided it is retrieved from the account template.\nIn case it is mandatory in the issuer configuration then the provided value should be the same than the one provided for the account hierarchy.\n\nPossible values:\n- ROOT_PAYS\n- ITSELF_PAYS\n\nSee examples described for CreateCorporateContractRequest.AccountHierarchy.hierarchyPayingAccountType\n\nIn case no payingAccountType is provided on the account hierarchy, then the possible values are:\n- ROOT_PAYS\n- ITSELF_PAYS\n- ENTITY_PAYS"
        },
        "paymentMode": {
          "type": "string",
          "description": "The payment mode can be provided by the issuer or if not provided it is retrieved from the account template.\n\nPossible values:\n- CARDHOLDER_DETERMINED : customer repays its debt by itself (fund transfer to the issuer)\n- AUTOPAYMENT : customer repays its debt via Direct Debit (issued by issuer and paid automatically after X days)"
        },
        "noOtbCheck": {
          "type": "boolean",
          "description": "The issuer can indicate if the Open-to-buy (OTB) must be checked or not when an authorization (authorization system) or a transaction (clearing) is processed.\nThis can be used when there is no need to check the OTB of an account (e.g. for certain levels of a corporate organization)."
        },
        "resetCreditLimit": {
          "type": "boolean",
          "description": "The issuer can indicate if the Open-to-buy should be reset to its maximum Credit limit at Authorization system side as soon as a account cycle is closed. Of course the amount due (minimum payment amount) is considered as to be repaid by the customer by our solution.\nThe default behavior is retrieved from the contract (Corporate only)"
        },
        "liabilityType": {
          "type": "string",
          "description": "The issuer can provide the liability type of the new account (free text). This liability type can be different for each issuer and is stored in our solution for information purpose (e.g. can be used for reporting), not used by any business process."
        },
        "accountDebitOrderDueDateDelay": {
          "type": "integer",
          "description": "The issuer can provide the debit order due date delay for the new account (number of days). This delay is used to calculate the Direct Debit payment date for each cycle of repayment."
        },
        "requestCorrelationId": {
          "type": "string",
          "description": "Unique alias provided by the issuer for each new account (Conditional).\nDuring the corporate contract creation processing, this alias is used to assign the new account to address usage provided in the request (same value as the value provided in entityRequestCorrelationId defined in the data block CreateCorporateContractRequest.AddressUsage)"
        },
        "creditBureauContractFlag": {
          "type": "boolean",
          "description": "The issuer can specify if the Credit Bureau part of the contract has been signed by the credit card owner (pay later).Only for an employee account."
        },
        "corporateContractAddOnsSubscriptions": {
          "type": "array",
          "description": "The issuer can subscribe to additional services (e.g. new letter, travel insurance)",
          "items": {
            "$ref": "#/$defs/CreateCorporateContractRequestAddOnSubscription"
          }
        },
        "payingEntityAccountIdentifier": {
          "description": "The field is used to identify the corresponding entity when the payingAccountType = 'ENTITY_PAYS'. This field provides the possibility to find the exact entity account by its account identifier.",
          "allOf": [
            {
              "$ref": "#/$defs/AccountIdentifier"
            }
          ]
        },
        "payingEntityCompanyExternalReference": {
          "type": "string",
          "description": "The field is used to identify the corresponding entity when the payingAccountType = 'ENTITY_PAYS'. This field provides the possibility to find the exact entity account by the external reference of the corporate entity."
        },
        "payingAccountEntityLevel": {
          "type": "integer",
          "description": "The field is used to identify the corresponding entity when the payingAccountType = 'ENTITY_PAYS'. This field provides the possibility to find the exact entity account by its level number."
        },
        "workingCurrencyCode": {
          "type": "string",
          "description": "Working currency code of the account\nEx : EUR for Euro, USD for dollar, etc.\n\nThe working currency must be allowed by the product.\nIf not provided, the default currency of the product is set.\nAll accounts of the same account hierarchy must have the same currency. "
        }
      },
      "title": "CreateCorporateContractRequest.Account"
    },
    "CreateCorporateContractRequestAccountHierarchy": {
      "type": "object",
      "description": "The issuer must provide at least data related to the root account when creating the corporate contract.",
      "properties": {
        "specificFields": {
          "type": "object",
          "description": "The issuer can provide Specific Fields for the new account hierarchy.\nIt is a list of external data {\"label\":\"value\"} separated by a \",\" related to the account hierarchy (pass-thru data) that can be provided by e.g. the issuer for information or for usage by other systems.\nExample : {\"label1\":\"value1\",\"label2\":\"value2\"}\nThose provided data have no impact on our system business processes.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "hierarchySelectedModels": {
          "type": "array",
          "description": "The issuer can provide specific account model reference for the account hierarchy, otherwise the default one is used.\n\nList of possible models:     \n•\treimbursementModel",
          "items": {
            "$ref": "#/$defs/AccountHierarchyModel"
          }
        },
        "hierarchyDebitOrderDueDateDelay": {
          "type": "integer",
          "description": "The issuer can override the default debit order due date delay defined in the closure calendar."
        },
        "hierarchyPayingAccountType": {
          "type": "string",
          "description": "The issuer must provide at hierarchy level the paying account type if it is mandatory in the issuer configuration. Then the same value must be provided for each account within this hierarchy or should be the same defined within the account template.\n\nPossible values:\n- ROOT_PAYS\n- ITSELF_PAYS\n\nExamples:\nCase 1: issuer configuration indicates that paying account type is mandatory\n. The payingAccountType must be provided at hierarchy level, e.g. ROOT_PAYS\n. then for each account to be created the payingAccountType is either provided with value as ROOT_PAYS or is retrieved from account template but must have value as ROOT_PAYS\n\nCase 2: issuer configuration indicates that paying account type is not mandatory\n. It is not mandatory to provide a payingAccountType value at hierarchy level\n. when creating an account the payingAccountType value can be provided or is retrieved from account template (if provided at hierarchy level then each account must have same value than hierarchy)"
        },
        "hierarchyOutgoingCreditTransferFeature": {
          "$ref": "#/$defs/CreateCorporateContractRequestHierarchyOutgoingCreditTransferFeature"
        }
      },
      "title": "CreateCorporateContractRequest.AccountHierarchy"
    },
    "CreateCorporateContractRequestAddCorporateContractEntity": {
      "type": "object",
      "required": [
        "issuerProductExtensionExternalReference",
        "level",
        "companyEntityExternalReference",
        "parentCompanyEntityExternalReference",
        "corporateContractEntityAccounts"
      ],
      "properties": {
        "issuerProductExtensionExternalReference": {
          "type": "string",
          "description": "The issuer provides the reference of the product extension to be used to add a new entity in the company organization."
        },
        "level": {
          "type": "integer",
          "description": "The issuer must provide the level number of the new entity in the company organization (e.g. 2 corresponding to country). \nThe level must be greater than 1 (the level 1 being the root entity level)."
        },
        "companyEntityExternalReference": {
          "type": "string",
          "description": "The issuer must provide the external reference of the new entity within the company organization (e.g. a code representing the country: FRAN for France). This reference is unique in the corporate contract."
        },
        "parentCompanyEntityExternalReference": {
          "type": "string",
          "description": "The issuer must provide the external reference of the parent entity to which the entity has to be attached. "
        },
        "deliveryChannel": {
          "description": "The issuer can specify the channel for letter delivery used for the entity (corresponding to an entity of the company organization except the root entity).\nCurrently, only the values WEB, LETTER or LETTER_AND_WEB can be used.",
          "allOf": [
            {
              "$ref": "#/$defs/DeliveryChannel"
            }
          ]
        },
        "advertisementFlags": {
          "description": "The issuer can specify which advertisement flags are enabled (Email, Letter, Phone, etc.) used for the entity (corresponding to an entity of the company organization except the root entity).",
          "allOf": [
            {
              "$ref": "#/$defs/AdvertisementFlags"
            }
          ]
        },
        "corporateContractEntityAccounts": {
          "type": "array",
          "description": "The issuer must provide the list of accounts for the new entity.",
          "items": {
            "$ref": "#/$defs/CreateCorporateContractRequestCorporateContractEntityAccount"
          }
        }
      },
      "title": "CreateCorporateContractRequest.AddCorporateContractEntity"
    },
    "CreateCorporateContractRequestAddCorporateEmployeeCardsAndAccounts": {
      "type": "object",
      "required": [
        "issuerProductExtensionExternalReference",
        "parentCompanyEntityExternalReference",
        "companyEntityExternalReference"
      ],
      "properties": {
        "issuerProductExtensionExternalReference": {
          "type": "string",
          "description": "The issuer provides the reference of the product extension to be used to add an employee, its card(s) and account(s). Usually an employee is added with its corporate card and related card account."
        },
        "parentCompanyEntityExternalReference": {
          "type": "string",
          "description": "The issuer must provide the external reference of the parent company entity to which the employee cards and accounts have to be attached."
        },
        "corporateEmployeeAccounts": {
          "type": "array",
          "description": "Data related to each employee account have to be provided.",
          "items": {
            "$ref": "#/$defs/CreateCorporateContractRequestCorporateEmployeeAccount"
          }
        },
        "companyEntityExternalReference": {
          "type": "string",
          "description": "The issuer must provide the value of the external reference of the company entity."
        },
        "corporateEmployeeCards": {
          "type": "array",
          "description": "Data related to each employee card have to be provided.",
          "items": {
            "$ref": "#/$defs/CreateCorporateContractRequestCorporateEmployeeCard"
          }
        }
      },
      "title": "CreateCorporateContractRequest.AddCorporateEmployeeCardsAndAccounts"
    },
    "CreateCorporateContractRequestAddCorporateVcaServiceCardsAndAccounts": {
      "type": "object",
      "required": [
        "issuerProductExtensionExternalReference",
        "parentCompanyEntityExternalReference"
      ],
      "properties": {
        "issuerProductExtensionExternalReference": {
          "type": "string",
          "description": "The issuer provides the reference of the product extension to be used to add corporate service virtual card and account"
        },
        "parentCompanyEntityExternalReference": {
          "type": "string",
          "description": "The issuer must provide the external reference of the parent company entity under which the VCA service virtual card needs to be created"
        },
        "corporateEmployeeAccounts": {
          "type": "array",
          "description": "Data related to each VCA service virtual card account has to be provided.",
          "items": {
            "$ref": "#/$defs/CreateCorporateContractRequestCorporateEmployeeAccount"
          }
        },
        "companyEntityExternalReference": {
          "type": "string",
          "description": "The issuer must provide the value of the external reference of the company entity."
        },
        "corporateEmployeeVcaServiceCards": {
          "type": "array",
          "description": "Data related to the corporate VCA service card accounts to be provided",
          "items": {
            "$ref": "#/$defs/CreateCorporateContractRequestCorporateVcaServiceCard"
          }
        }
      },
      "title": "CreateCorporateContractRequest.AddCorporateVcaServiceCardsAndAccounts"
    },
    "CreateCorporateContractRequestAddOnParameter": {
      "type": "object",
      "properties": {
        "reference": {
          "type": "string",
          "description": "Refer to AddOnServiceParameter.reference"
        },
        "value": {
          "type": "string",
          "description": "Refer to AddOnServiceParameter.value"
        }
      },
      "title": "CreateCorporateContractRequest.AddOnParameter"
    },
    "CreateCorporateContractRequestAddOnSubscription": {
      "type": "object",
      "properties": {
        "addonReference": {
          "type": "string",
          "description": "Refer to AddOnSubscription.addonReference"
        },
        "subscriptionDate": {
          "type": "string",
          "description": "If provided, this date will be used as the starting date of the add-on subscription.",
          "format": "date-time"
        },
        "serviceTypeReference": {
          "type": "string",
          "description": "Refer to AddOnSubscription.serviceType"
        },
        "parameters": {
          "type": "array",
          "description": "The issuer can provide a list of parameters related to the addOn.",
          "items": {
            "$ref": "#/$defs/CreateCorporateContractRequestAddOnParameter"
          }
        }
      },
      "title": "CreateCorporateContractRequest.AddOnSubscription"
    },
    "CreateCorporateContractRequestAddress": {
      "type": "object",
      "required": [
        "addressLabel",
        "addressType"
      ],
      "properties": {
        "addressLabel": {
          "type": "string",
          "description": "Refer to Address.addressLabel"
        },
        "addressType": {
          "type": "string",
          "description": "Refer to Address.addressType"
        },
        "postalAddress": {
          "description": "Refer to Address.postalAddress",
          "allOf": [
            {
              "$ref": "#/$defs/CreateAddressRequestMailAddress"
            }
          ]
        },
        "emailAddress": {
          "description": "Refer to Address.eMail",
          "allOf": [
            {
              "$ref": "#/$defs/EmailAddress"
            }
          ]
        },
        "phone": {
          "description": "Refer to Address.phone",
          "allOf": [
            {
              "$ref": "#/$defs/CreateAddressRequestPhoneNumber"
            }
          ]
        },
        "addressUsages": {
          "type": "array",
          "items": {
            "description": "Refer to Address.addressUsages",
            "allOf": [
              {
                "$ref": "#/$defs/CreateCorporateContractRequestAddressUsage"
              }
            ]
          }
        },
        "mainAddress": {
          "type": "boolean",
          "description": "Deprecated"
        },
        "issuerAddressExternalReference": {
          "type": "string",
          "description": "Refer to AddressIdentifier.issuerAddressExternalReference"
        }
      },
      "title": "CreateCorporateContractRequest.Address"
    },
    "CreateCorporateContractRequestAddressUsage": {
      "type": "object",
      "required": [
        "addressUsageName",
        "serviceCode"
      ],
      "properties": {
        "addressUsageName": {
          "type": "string",
          "description": "The business process for which the address usage is defined such as CARD_DELIVERY, PIN_MAILER_DELIVERY, STATEMENT_DELIVERY."
        },
        "entityReference": {
          "type": "string",
          "description": "This field is filled by the User while adding the usage to a particular Address of the Customer. It can be eg a card contract reference, card account reference. It is an optional field."
        },
        "serviceCode": {
          "type": "string",
          "description": "The Service for which the address usage is defined : CARD_SERVICE, ACCOUNT_SERVICE, …"
        },
        "entityRequestCorrelationId": {
          "type": "string",
          "description": "The issuer can provide the correlation id of the new entity (card contract or account) which linked to the address usage (account defined in the data block CreateCorporateContractRequest.Account and card contract defined in the data block CreateCorporateContractRequest.CardContract -  field : requestCorrelationId)."
        },
        "entityType": {
          "type": "string",
          "description": "If a correlation id is filled for an entity reference, the entity type must be provided to indicate if the entity is related to a card contract or to an account.\nPossible values:\n- CARD_CONTRACT\n- ACCOUNT",
          "enum": [
            "ACCOUNT",
            "CARD_CONTRACT"
          ]
        }
      },
      "title": "CreateCorporateContractRequest.AddressUsage"
    },
    "CreateCorporateContractRequestCard": {
      "type": "object",
      "description": "Card related data to be provided for the creation of the card.",
      "properties": {
        "pan": {
          "type": "string",
          "description": "The issuer can provide the Primary Account Number (PAN) or card number if this is allowed by the product configuration only. The provided PAN must belong to the card product BIN range."
        },
        "panSequenceNumber": {
          "type": "string",
          "description": "PAN sequence number of the card. It will be possible to override PSN at the time of card creation if it is allowed in card creation model configuration"
        },
        "issuerCardExternalReference": {
          "type": "string",
          "description": "The issuer can provide the external reference for the new card (maximum length is 50 characters). This external reference must be unique per issuer.\nIf not provided, the external reference is calculated by the system if a reference generation algorithm is configured for the issuer else the issuer card external reference will be empty."
        },
        "embossingLine5": {
          "type": "string",
          "description": "The issuer must provide the embossing line 5 if required within card Technology and Application model. Otherwise the issuer can provide it and the embossing line 5 will be sent to the embosser."
        },
        "expiryDate": {
          "type": "string",
          "description": "The issuer can provide the expiry date of the card if allowed by the product configuration (note that the provided expiry date must belong to the range allowed by the product, e.g. [expiry date calculated by our system - 12 months, expiry date calculated by our system + 12 months].\nIf provided and not allowed then an error is raised.\nFormat is MMYY (month and year)."
        },
        "pinInheritanceCardReference": {
          "type": "string",
          "description": "Deprecated"
        },
        "pinInheritanceCardIdentifier": {
          "description": "If the PIN inheritance is authorized for the issuer, the issuer can provide the reference of a card (card reference in the Issuing Back Office system or external card reference provided by the issuer) to inherit the PIN from a another card (if the provided card reference does not exist in the system, no PIN inheritance could be used).",
          "allOf": [
            {
              "$ref": "#/$defs/PinInheritanceCardIdentifier"
            }
          ]
        },
        "specificFields": {
          "type": "object",
          "description": "The issuer can provide Specific Fields for the new card order. \nIt is a list of external data {\"label\":\"value\"} separated by a \",\" related to the card order (pass-thru data) that can be provided by e.g. the issuer for information or for usage by other systems.\nExample : {\"label1\":\"value1\",\"label2\":\"value2\"}\nThose provided data have no impact on our system business processes.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "cardOrder": {
          "$ref": "#/$defs/CreateCorporateContractRequestCardOrder"
        },
        "pinMailerOrder": {
          "$ref": "#/$defs/CreateCorporateContractRequestPinMailerOrder"
        },
        "subBinRangeReference": {
          "type": "string",
          "description": "Reference of the sub BIN range selected for PAN generation.This field applies only if the card product is configured with random PAN generation and sub BIN range references"
        }
      },
      "title": "CreateCorporateContractRequest.Card"
    },
    "CreateCorporateContractRequestCardContract": {
      "type": "object",
      "description": "Data related to each card contract and card have to be provided.\nIf there is no card at creation time then no data to be provided.",
      "properties": {
        "issuerCardContractExternalReference": {
          "type": "string",
          "description": "The issuer can provide the external reference for the new card contract.\nRefer to CardContractIdentifier.cardContractReference."
        },
        "artwork": {
          "type": "string",
          "description": "The issuer can provide the artwork to be used for the card contract creation, among those allowed, instead of the default one retrieved from the card template."
        },
        "cardHolderRequestCorrelationId": {
          "type": "string",
          "description": "Not to be provided if the cardholder is the same as the account owner of the default account of the card.\nOtherwise the issuer can provide the correlation id of the new customer which represent the cardholder (defined in the data block CreateCorporateContractRequest.Customer)."
        },
        "cardHolderIdentifier": {
          "description": "Not to be provided if the cardholder is the same as the account owner of the default account of the card.\nIf the cardholder already exists in our system then the issuer has to provide the customer reference or the issuer external customer reference of the existing customer.\nIf the cardholder does not exist in our system then cardholderRequestCorrelationId has to be filled.",
          "allOf": [
            {
              "$ref": "#/$defs/CustomerIdentifier"
            }
          ]
        },
        "issuerBranchCode": {
          "type": "string",
          "description": "The issuer can provide the issuer branch code of the card contract. If not provided, then the contract issuer branch code is used."
        },
        "forcedEmbossingName": {
          "type": "string",
          "description": "The first line of the name to be embossed on the physical card for the new card can be provided.\nThe field is mandatory depending on the issuer configuration.\nThe character \"*\" is not allowed in the line 1 of the embossing name."
        },
        "forcedEmbossingName2ndLine": {
          "type": "string",
          "description": "The second line of the name to be embossed on the physical card for the new card can be provided (if allowed by the product configuration).\nThe character \"*\" is not allowed in the line 2 of the embossing name."
        },
        "selectedModels": {
          "type": "array",
          "description": "The issuer can replace one or several card contract models by providing new card contract model references, otherwise the default ones from the card contract template are used.\n List of possible models that can be replaced:\n • EVENT_FEE_MODEL \n • DISTRIBUTION_MODEL \n • CARD_CREATION_MODEL \n • TECHNOLOGY_AND_APPLICATION_MODEL \n • PIN_PRODUCTION_MODEL ",
          "items": {
            "$ref": "#/$defs/CardContractModel"
          }
        },
        "specificFields": {
          "type": "object",
          "description": "The issuer can provide Specific Fields for the new card contract. \nIt is a list of external data {\"label\":\"value\"} separated by a \",\" related to the card contract (pass-thru data) that can be provided by e.g. the issuer for information or for usage by other systems.\nExample : {\"label1\":\"value1\",\"label2\":\"value2\"}\nThose provided data have no impact on our system business processes.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "photoReference": {
          "type": "string",
          "description": "The issuer can provide the photo reference for the new card.\nRefer to Card.photoReference"
        },
        "pictureReference": {
          "type": "string",
          "description": "The issuer can provide the picture reference for the new card.\nRefer to Card.pictureReference"
        },
        "logoReference": {
          "type": "string",
          "description": "A logo reference can be provided for corporate card only (is also used for next cards in case of renewal, replacement)."
        },
        "card": {
          "$ref": "#/$defs/CreateCorporateContractRequestCard"
        },
        "corporateContractAddOnsSubscriptions": {
          "type": "array",
          "description": "The issuer can subscribe to additional services (e.g. new letter, travel insurance)",
          "items": {
            "$ref": "#/$defs/CreateCorporateContractRequestAddOnSubscription"
          }
        },
        "requestCorrelationId": {
          "type": "string",
          "description": "Unique alias provided by the issuer for each new account (Conditional).\nDuring the contract creation processing, this alias is used to assign the new card contract to address usage provided in the request"
        },
        "clickToPayEnrollment": {
          "type": "string",
          "description": "Indicates if the card enrollment in Click to Pay service is requested or not. \nRelevant only if the Click to Pay feature is enabled. If the Click to Pay feature is disabled, the use of this attribute generates an error.\n\nPossible values are :\n- OPT_IN : enrollment of the card in Click to Pay service is requested.\n- OPT_OUT : enrollment of the card in Click to Pay service is not requested. \n\nIf the Click to Pay feature is enabled and the attribute is empty, the default value set on card product is applied.\n\nAs a result :\nIf OPT_IN, the enrollment of the new card in Click to Pay service is requested and will be effective through WL iTSP at card activation\nIf OPT_OUT, the enrollment of the new card in Click to Pay service is not requested."
        },
        "cardClass": {
          "type": "string",
          "description": "The issuer can provide the card class (free text, no business rule). \nExample: \nStandard, Extended "
        },
        "schemeReportDeclarationBehavior": {
          "type": "string",
          "description": "The issuer can indicate if the card events are reported to the scheme. Relevant only if the ABU-VAU program is enabled. If the ABU-VAU program is disabled, the use of this attribute generates an error. Possible values are: OPT_IN: the card events are reported to the scheme, OPT_OUT: the card events are not reported to the scheme. If the ABU-VAU program is enabled and the attribute is empty, the default value set on card product is applied."
        },
        "authorizationDataValidation": {
          "description": "Cardholder data defined at card contract level and used by the Front Office for verification (AVS/ANI)",
          "allOf": [
            {
              "$ref": "#/$defs/AuthorizationDataValidation"
            }
          ]
        }
      },
      "title": "CreateCorporateContractRequest.CardContract"
    },
    "CreateCorporateContractRequestCardOrder": {
      "type": "object",
      "description": "The issuer can provide data related to the card order if physical card is requested.\nIf not provided and required then the default sending mode is retrieved from product configuration.",
      "properties": {
        "specificFields": {
          "type": "object",
          "description": "The issuer can provide Specific Fields for the card order. \nIt is a list of external data {\"label\":\"value\"} separated by a \",\" related to the card order (pass-thru data) that can be provided to the embosser by e.g. the issuer for information or for usage by other systems.\nExample : {\"label1\":\"value1\",\"label2\":\"value2\"}\nThose provided data have no impact on our system business processes.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "cardProducer": {
          "type": "string",
          "description": "The issuer can provide the card producer if it is different than the default one (defined in the card profile)."
        },
        "sendingMode": {
          "type": "string",
          "description": "The issuer can provide the sending mode if a physical card (card order) is requested. Default sending mode is retrieved from configuration.\nExample: Normal, Urgent, Ultra Urgent"
        },
        "skipCardOrderGeneration": {
          "type": "boolean",
          "description": "If this field is true, the card order will not be generated (no plastic).\nBy default, a card order is requested (except if it is a virtual card configured in the Technology and Application model)."
        }
      },
      "title": "CreateCorporateContractRequest.CardOrder"
    },
    "CreateCorporateContractRequestCompany": {
      "type": "object",
      "required": [
        "corporateName",
        "commercialStatus",
        "addresses"
      ],
      "properties": {
        "requestCorrelationId": {
          "type": "string",
          "description": "Unique alias provided by the issuer for each new company. During the contract creation processing, this alias is used to assign a new company to certain company roles (contract owner, account owner, guarantor)."
        },
        "issuerCustomerExternalReference": {
          "type": "string",
          "description": "Customer (as company) identifier provided by the Issuer"
        },
        "active": {
          "type": "boolean",
          "description": "DEPRECATED"
        },
        "corporateName": {
          "type": "string",
          "description": "Refer to Company.corporateName"
        },
        "nationalFiscalIdentifier": {
          "type": "string",
          "description": "Refer to Company.nationalFiscalIdentifier"
        },
        "vatCode": {
          "type": "string",
          "description": "Refer to Company.vatCode"
        },
        "type": {
          "type": "string",
          "description": "Refer to Company.type"
        },
        "size": {
          "type": "string",
          "description": "Refer to Company.size"
        },
        "businessArea": {
          "type": "string",
          "description": "Refer to Company.businessArea"
        },
        "activityCode": {
          "type": "string",
          "description": "Refer to Company.activityCode"
        },
        "revenue": {
          "type": "string",
          "description": "Refer to Company.revenue"
        },
        "legalForm": {
          "type": "string",
          "description": "Refer to Company.legalForm"
        },
        "commercialStatus": {
          "type": "string",
          "description": "Refer to Company.commercialStatus"
        },
        "preferredCorrespondenceLanguage": {
          "type": "string",
          "description": "Refer to Company.preferredCorrespondenceLanguage."
        },
        "specificFields": {
          "type": "object",
          "description": "The issuer can provide Specific Fields for the new company. \nIt is a list of external data {\"label\":\"value\"} separated by a \",\" related to the company (pass-thru data) that can be provided by e.g. the issuer for information or for usage by other systems.\nExample : {\"label1\":\"value1\",\"label2\":\"value2\"}\nThose provided data have no impact on our system business processes.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "addresses": {
          "type": "array",
          "description": "The Head office (addressLabel as HEAD_OFFICE )  has to be provided because used as default address by all business processes if no address usage is defined.",
          "items": {
            "$ref": "#/$defs/CreateCorporateContractRequestAddress"
          }
        },
        "contacts": {
          "type": "array",
          "description": "The issuer can provide data related to the contacts of the company.",
          "items": {
            "$ref": "#/$defs/CreateCorporateContractRequestContact"
          }
        }
      },
      "title": "CreateCorporateContractRequest.Company"
    },
    "CreateCorporateContractRequestContact": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "The contact name has to be provided if the department name is not provided."
        },
        "firstName": {
          "type": "string",
          "description": "Refer to Contact.firstName"
        },
        "departmentName": {
          "type": "string",
          "description": "The department name has to be provided if the contact name is not provided."
        },
        "sex": {
          "type": "string",
          "description": "Refer to Contact.sex"
        },
        "description": {
          "type": "string",
          "description": "Refer to Contact.description"
        },
        "courtesyTitle": {
          "type": "string",
          "description": "Refer to Contact.courtesyTitle"
        },
        "birthDate": {
          "type": "string",
          "format": "date-time",
          "description": "Refer to Contact.birthDate"
        },
        "postalAddress": {
          "description": "Refer to Contact.postalAddress",
          "allOf": [
            {
              "$ref": "#/$defs/CreateAddressRequestMailAddress"
            }
          ]
        }
      },
      "title": "CreateCorporateContractRequest.Contact"
    },
    "CreateCorporateContractRequestContract": {
      "type": "object",
      "description": "The issuer must provide data related to the contract.",
      "required": [
        "issuerProductExternalReference",
        "corporateContractRootEntity",
        "accountHierarchy"
      ],
      "properties": {
        "issuerProductExternalReference": {
          "type": "string",
          "description": "The issuer must provide the external reference of the product to be used to create the corporate contract."
        },
        "issuerContractExternalReference": {
          "type": "string",
          "description": "The issuer can provide an external reference (e.g. used as contract identifier in Issuer's system). This latter can be used by the issuer to identify, retrieve the contract later, etc.\nIf not provided by the issuer, it is filled by default with the contract reference generated by our system."
        },
        "specificFields": {
          "type": "object",
          "description": "The issuer can provide Specific Fields for the new corporate contract. \nIt is a list of external data {\"label\":\"value\"} separated by a \",\" related to the contract (pass-thru data) that can be provided by e.g. the issuer for information or for usage by other systems.\nExample : {\"label1\":\"value1\",\"label2\":\"value2\"}\nThose provided data have no impact on our system business processes.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "contractOwnerRequestCorrelationId": {
          "type": "string",
          "description": "If the contract owner does not exist in our system as customer or company, the issuer must provide the correlation id of the new customer related to it (defined in the data block CreateCorporateContractRequest.Customer or in CreateCorporateContractRequest.Customer).\nIt can be a customer or a company."
        },
        "contractOwner": {
          "description": "If the contract owner already exists in our system as customer or company, the issuer must provide either the customerReference or the issuerCustomerExternalReference related to it.\nIf the contract owner does not exist in our system then the contractOwnerRequestCorrelationId has to be filled.\nIt can be a customer or a company.",
          "allOf": [
            {
              "$ref": "#/$defs/CustomerIdentifier"
            }
          ]
        },
        "statementDuplicatedForCompany": {
          "type": "boolean",
          "description": "The issuer can indicate if the company receives a duplicate for statement generated by other paying accounts in the corporate contract (true). By default, the value is false.\nE.g. A card account is paid by the cardholder itself, the company can receive a duplicate of its statement.",
          "default": false
        },
        "hierarchyDefaultResetCreditLimit": {
          "type": "boolean",
          "description": "The issuer can indicate, for a Corporate contract only, the default value at contract level to be applied for each account if the Open-to-buy should be reset to its maximum Credit limit at Authorization system side as soon as an account cycle is closed. Of course the amount due (minimum payment amount) is considered as to be repaid by the customer by our solution."
        },
        "logoReference": {
          "type": "string",
          "description": "The issuer can provide the default logo reference to be used for each card issued from this corporate contract."
        },
        "dispatchCode": {
          "type": "string",
          "description": "The issuer can provide the default dispatch code to be used by the embosser to send cards to the right addressee."
        },
        "postingAccountForMembershipFee": {
          "type": "string",
          "description": "The issuer can indicate if the membership fees have to be posted to employee card accounts, intermediate entity account or to the root (usually paid by the company) as default value for the corporate contract.\nPossible values:\n- ROOT_ACCOUNT \n- CARD_ACCOUNT \n- ENTITY_ACCOUNT"
        },
        "postingAccountForAccountSetupFee": {
          "type": "string",
          "description": "The issuer can indicate if the account setup fees have to be posted to employee card account, intermediate entity account or to the root (usually paid by the company) as default value for the corporate contract. \nPossible values:\n- ROOT_ACCOUNT \n- CARD_ACCOUNT \n- ENTITY_ACCOUNT"
        },
        "corporateContractLevels": {
          "type": "array",
          "description": "The issuer can provide the list of all levels of a company organization belonging to the corporate contract.",
          "items": {
            "$ref": "#/$defs/CreateCorporateContractRequestCorporateContractLevel"
          }
        },
        "corporateContractRootEntity": {
          "$ref": "#/$defs/CreateCorporateContractRequestCorporateContractRootEntity"
        },
        "accountHierarchy": {
          "$ref": "#/$defs/CreateCorporateContractRequestAccountHierarchy"
        },
        "postingEntityLevelForMembershipFee": {
          "type": "integer",
          "description": "The Issuer must provide the corresponding entity level for Membership fee posting, when postingAccountForMembershipFee = ENTITY_ACCOUNT"
        },
        "postingEntityLevelForAccountSetupFee": {
          "type": "integer",
          "description": "The Issuer must provide the corresponding entity level for Account Setup fee posting, when postingAccountForAccountSetupFee = ENTITY_ACCOUNT"
        },
        "numberOfFreeCardsAccountSetupFee": {
          "type": "integer",
          "format": "int32",
          "description": "The issuer can define the number of cards for which account setup fee is not generated  (free cards).\nIf not provided, the default value will be used if defined at product level."
        },
        "numberOfFreeCardsMembershipFee": {
          "type": "integer",
          "format": "int32",
          "description": "The issuer can define the number of cards for which membership fee is not generated (free cards).\nIf not provided, the default value will be used if defined at product level."
        }
      },
      "title": "CreateCorporateContractRequest.Contract"
    },
    "CreateCorporateContractRequestCorporateContractEntityAccount": {
      "type": "object",
      "properties": {
        "account": {
          "description": "Data related to each account have to be provided.",
          "allOf": [
            {
              "$ref": "#/$defs/CreateCorporateContractRequestAccount"
            }
          ]
        }
      },
      "title": "CreateCorporateContractRequest.CorporateContractEntityAccount"
    },
    "CreateCorporateContractRequestCorporateContractFee": {
      "type": "object",
      "properties": {
        "accountSetupFeeModelReference": {
          "type": "string",
          "description": "Account setup fee model to be used for the account"
        },
        "membershipFeeModelReference": {
          "type": "string",
          "description": "Membership fee model to be used for the account"
        },
        "postingAccountForMembershipFee": {
          "type": "string",
          "description": "The issuer can indicate if the membership fees are paid by the employee (posted to its card account), intermediate entity (posted to the entity account) or by the company (can be posted to the root currently) if the value is different from the default one defined at corporate contract level. \nPossible values:\n- ROOT_ACCOUNT \n- CARD_ACCOUNT\n- ENTITY_ACCOUNT"
        },
        "postingAccountForAccountSetupFee": {
          "type": "string",
          "description": "The issuer can indicate if the account setup fees are paid by the employee (posted to its card account), intermediate entity (posted to the entity account) or by the company (can be posted to the root currently) if the value is different from the default one defined at corporate contract level.\nPossible values:\n- ROOT_ACCOUNT \n- CARD_ACCOUNT\n- ENTITY_ACCOUNT"
        },
        "entityIdentifierMembershipFeePosting": {
          "description": "It is mandatory to provide one of the attributes of this data type in case postingAccountForMembershipFee = ENTITY_ACCOUNT. The issuer will provide the exact entity on which Membership Fee will be posted",
          "allOf": [
            {
              "$ref": "#/$defs/FeePostingEntityIdentifier"
            }
          ]
        },
        "membershipFeePromotionalPeriod": {
          "type": "integer",
          "description": "Membership fee promotional period\nIndicates the period (number of years/months (depending on the frequency defined in the membership fee model)) during which the promotional membership fee amount (if any) is applied from the card creation.\nIf the issuer configuration allows it, it is possible to extend the default promotional period defined in the membership fee model. The value must be greater than the default value and greater than the already passed promotional period."
        },
        "entityIdentifierAccountSetupFeePosting": {
          "description": "It is mandatory to provide one of the attributes of this data type in case postingAccountForAccountSetupFee = ENTITY_ACCOUNT. The issuer will provide the exact entity on which Account Setup Fee will be posted",
          "allOf": [
            {
              "$ref": "#/$defs/FeePostingEntityIdentifier"
            }
          ]
        }
      },
      "title": "CreateCorporateContractRequest.CorporateContractFee"
    },
    "CreateCorporateContractRequestCorporateContractLevel": {
      "type": "object",
      "required": [
        "level",
        "levelDescription"
      ],
      "properties": {
        "level": {
          "type": "integer",
          "description": "The issuer must provide the level number in the company organization (e.g. 1 corresponding to the company, 2 corresponding to country)"
        },
        "levelDescription": {
          "type": "string",
          "description": "The issuer must provide the description of the level in the company organization (e.g. Company for level 1, Country for level 2)"
        }
      },
      "title": "CreateCorporateContractRequest.CorporateContractLevel"
    },
    "CreateCorporateContractRequestCorporateContractRootEntity": {
      "type": "object",
      "description": "The issuer must define the first level of the company organization (corresponding to the root entity).",
      "required": [
        "companyEntityExternalReference",
        "rootAccount"
      ],
      "properties": {
        "companyEntityExternalReference": {
          "type": "string",
          "description": "The issuer must provide the external reference of the entity within the company organization (e.g. a code representing the country: FRAN for France) "
        },
        "rootAccount": {
          "description": "The issuer must provide data related to the root account.",
          "allOf": [
            {
              "$ref": "#/$defs/CreateCorporateContractRequestAccount"
            }
          ]
        },
        "deliveryChannel": {
          "description": "The issuer can specify the channel for letter delivery used for the root entity (corresponding to the first level of the company organization).\nCurrently, only the values WEB, LETTER or LETTER_AND_WEB can be used.",
          "allOf": [
            {
              "$ref": "#/$defs/DeliveryChannel"
            }
          ]
        },
        "advertisementFlags": {
          "description": "The issuer can specify which advertisement flags are enabled (Email, Letter, Phone, etc.) used for the root entity (corresponding to the first level of the company organization).",
          "allOf": [
            {
              "$ref": "#/$defs/AdvertisementFlags"
            }
          ]
        }
      },
      "title": "CreateCorporateContractRequest.CorporateContractRootEntity"
    },
    "CreateCorporateContractRequestCorporateEmployeeAccount": {
      "type": "object",
      "properties": {
        "deliveryChannel": {
          "description": "The issuer can specify the channel for letter delivery used for this account.\nCurrently, only the values WEB, LETTER or LETTER_AND_WEB can be used.",
          "allOf": [
            {
              "$ref": "#/$defs/DeliveryChannel"
            }
          ]
        },
        "advertisementFlags": {
          "description": "The issuer can specify which advertisement flags are enabled (Email, Letter, Phone, etc.).",
          "allOf": [
            {
              "$ref": "#/$defs/AdvertisementFlags"
            }
          ]
        },
        "waiveFee": {
          "type": "boolean",
          "description": "The issuer can indicate if contract related fees, membership fee and account setup fee, are waived (true) or not (false, by default) for this employee account."
        },
        "postingAccountForMembershipFee": {
          "type": "string",
          "description": "DEPRECATED"
        },
        "postingAccountForAccountSetupFee": {
          "type": "string",
          "description": "DEPRECATED"
        },
        "contractFee": {
          "description": "The issuer can replace both default membership fee and account set up fee models for each account (usually card account). ",
          "allOf": [
            {
              "$ref": "#/$defs/CreateCorporateContractRequestCorporateContractFee"
            }
          ]
        },
        "account": {
          "description": "The issuer must provide data related to the employee account.",
          "allOf": [
            {
              "$ref": "#/$defs/CreateCorporateContractRequestAccount"
            }
          ]
        },
        "entityIdentifierMembershipFeePosting": {
          "description": "DEPRECATED",
          "allOf": [
            {
              "$ref": "#/$defs/FeePostingEntityIdentifier"
            }
          ]
        },
        "entityIdentifierAccountSetupFeePosting": {
          "description": "DEPRECATED",
          "allOf": [
            {
              "$ref": "#/$defs/FeePostingEntityIdentifier"
            }
          ]
        }
      },
      "title": "CreateCorporateContractRequest.CorporateEmployeeAccount"
    },
    "CreateCorporateContractRequestCorporateEmployeeCard": {
      "type": "object",
      "properties": {
        "cardContract": {
          "$ref": "#/$defs/CreateCorporateContractRequestCardContract"
        }
      },
      "title": "CreateCorporateContractRequest.CorporateEmployeeCard"
    },
    "CreateCorporateContractRequestCorporateVcaServiceCard": {
      "type": "object",
      "properties": {
        "vcaServiceCardContract": {
          "$ref": "#/$defs/CreateCorporateContractRequestVcaServiceCardContract"
        }
      },
      "title": "CreateCorporateContractRequest.CorporateVcaServiceCard"
    },
    "CreateCorporateContractRequestCustomer": {
      "type": "object",
      "required": [
        "lastName",
        "firstName",
        "addresses"
      ],
      "properties": {
        "requestCorrelationId": {
          "type": "string",
          "description": "Unique alias provided by the issuer for each new customer.\nDuring the corporate contract creation processing, this alias is used to assign a new customer to certain customer roles (cardholder, contract owner, account owner, guarantor)."
        },
        "issuerCustomerExternalReference": {
          "type": "string",
          "description": "Refer to CustomerIdentifier.issuerCustomerExternalReference"
        },
        "active": {
          "type": "boolean",
          "description": "DEPRECATED"
        },
        "courtesyTitle": {
          "type": "string",
          "description": "Refer to Customer.courtesyTitle"
        },
        "lastName": {
          "type": "string",
          "description": "Refer to Customer.lastName"
        },
        "firstName": {
          "type": "string",
          "description": "Refer to Customer.firstName"
        },
        "onlineRiskCategory": {
          "type": "string",
          "description": "Categorizes the person for online  risk management.\n List of possible values is defined per Issuer (eg.Business, Student, Teenager, Standard).\n Mandatory if no default value is defined"
        },
        "offlineRiskCategory": {
          "type": "string",
          "description": "Categorizes the person for offline risk management.\n List of possible values is defined per Issuer (eg.Business, Student, Teenager, Standard).\n Mandatory if no default value is defined"
        },
        "commercialStatus": {
          "type": "string",
          "description": "Refer to Customer.commercialStatus"
        },
        "customerReference": {
          "type": "string",
          "description": "DEPRECATED"
        },
        "secondFirstName": {
          "type": "string",
          "description": "Refer to Customer.secondFirstName"
        },
        "maidenName": {
          "type": "string",
          "description": "Refer to Customer.maidenName"
        },
        "sex": {
          "type": "string",
          "description": "Refer to Customer.sex"
        },
        "birthDate": {
          "type": "string",
          "description": "Refer to Customer.birthDate",
          "format": "date-time"
        },
        "birthPlace": {
          "type": "string",
          "description": "Refer to Customer.birthPlace"
        },
        "nationality": {
          "type": "string",
          "description": "Refer to Customer.nationality"
        },
        "profession": {
          "type": "string",
          "description": "Refer to Customer.profession"
        },
        "employerName": {
          "type": "string",
          "description": "Refer to Customer.employerName"
        },
        "employerAddress": {
          "type": "string",
          "description": "Refer to Customer.employerAddress"
        },
        "monthlySalary": {
          "type": "string",
          "description": "Refer to Customer.monthlySalary"
        },
        "maritalStatus": {
          "type": "string",
          "description": "Refer to Customer.maritalStatus"
        },
        "preferredCorrespondenceLanguage": {
          "type": "string",
          "description": "Refer to Customer.preferredCorrespondenceLanguage"
        },
        "picture": {
          "type": "string",
          "description": "Refer to Customer.picture"
        },
        "url1": {
          "type": "string",
          "description": "Refer to Customer.url1"
        },
        "url2": {
          "type": "string",
          "description": "Refer to Customer.url2"
        },
        "secretQuestion": {
          "type": "string",
          "description": "Refer to Customer.secretQuestion"
        },
        "secretAnswer": {
          "type": "string",
          "description": "Refer to Customer.secretAnswer"
        },
        "vatNumber": {
          "type": "string",
          "description": "Refer to Customer.vatNumber"
        },
        "vatCountry": {
          "type": "string",
          "description": "Refer to Customer.vatCountry"
        },
        "customerClass": {
          "type": "string",
          "description": "Refer to Customer.customerClass"
        },
        "employee": {
          "type": "boolean",
          "description": "Refer to Customer.employee"
        },
        "partnerExternalReference": {
          "type": "string",
          "description": "Refer to Customer.partnerExternalReference"
        },
        "doNotContact": {
          "type": "boolean",
          "description": "Refer to Customer.doNotContact"
        },
        "specificFields": {
          "type": "object",
          "description": "The issuer can provide Specific Fields for the new customer.\nIt is a list of external data {\"label\":\"value\"} separated by a \",\" related to the customer (pass-thru data) that can be provided by e.g. the issuer for information or for usage by other systems.\nExample : {\"label1\":\"value1\",\"label2\":\"value2\"}\nThose provided data have no impact on our system business processes.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "addresses": {
          "type": "array",
          "description": "The Main postal address (addressLabel as MAIN_POSTAL_ADDRESS)  has to be provided because used as default address by all business processes if no address usage is defined.\n E.g. if no address usage as CARD_DELIVERY is attached to a customer's address then the Main postal address is used as card order delivery address.",
          "items": {
            "$ref": "#/$defs/CreateCorporateContractRequestAddress"
          }
        }
      },
      "title": "CreateCorporateContractRequest.Customer"
    },
    "CreateCorporateContractRequestHierarchyOutgoingCreditTransferFeature": {
      "type": "object",
      "description": "The issuer can enable or not each different Outgoing Credit Transfer (OCT) options if this latter is enabled and if can be overriden within the reimbursement model.\nE.g. the periodicOCT is allowed in the reimbursement model, default choice, and it is not possible to override this choice. When creating the account hierarchy it is not possible to change this configuration and to not allow this option.",
      "properties": {
        "periodicOctAllowed": {
          "type": "boolean",
          "description": "The issuer can enable or disable the periodic OCT option, if it is possible within the reimbursement model to change the default choice."
        },
        "periodicOctType": {
          "type": "string",
          "description": "The issuer can override the periodic OCT type if allowed within the reimbursment model.\nPossibles values:\n- DAILY = OCT can be triggered on a daily basis if account is in credit position\n- CYCLIC = OCT can be triggered at cycle closure date if account is in credit position"
        },
        "periodicMaxThreshold": {
          "description": "The issuer can override the maximum threshold amount defined for periodic OCT if allowed within the reimbursment model, where maximum threshold amount provides lower limit for OCT amount calculation, i.e., if maximum threshold amount is provided, the OCT amount will be equal not to card account credit balance but to account credit balance – maximum threshold amount instead.\nE.g. maximum threshold amount as 10.000€: if credit balance is 15.000€ then OCT is issued with amount equal to 15.000-10.000 = 5.000€. If credit balance is 9.000€ then OCT is issued.",
          "allOf": [
            {
              "$ref": "#/$defs/Amount"
            }
          ]
        },
        "octOnContractTerminationAllowed": {
          "type": "boolean",
          "description": "The issuer can enable or disable the OCT on contract termination, if it is possible within the reimbursement model to change the default choice."
        },
        "octOnDemandAllowed": {
          "type": "boolean",
          "description": "The issuer can enable or disable the OCT on demand, if it is possible within the reimbursement model to change the default choice."
        },
        "octOnDemandLimitType": {
          "type": "string",
          "description": "The issuer can override the limit type of the OCT on demand if allowed within the reimbursement \nPossible values:\n- BALANCE = a customer can only request an OCT in case of account in credit position\n- OTB (open-to-buy) = a customer can request an OCT from its current Open-to-buy (so from its credit limit allowed by the issuer)"
        },
        "octOnContractTerminationType": {
          "type": "string"
        },
        "octOnAccountTerminationAllowed": {
          "type": "boolean",
          "description": "The issuer can enable or not each different Outgoing Credit Transfer (OCT) options if this latter is enabled and if can be overriden within the reimbursement model.\nE.g. the periodicOCT is allowed in the reimbursement model, default choice, and it is not possible to override this choice. When creating the account hierarchy it is not possible to change this configuration and to not allow this option."
        }
      },
      "title": "CreateCorporateContractRequest.HierarchyOutgoingCreditTransferFeature"
    },
    "CreateCorporateContractRequestPinMailerOrder": {
      "type": "object",
      "description": "The issuer can provide data related to a PIN mailer order if it is configured as required in the PIN production model.\nIf not provided and required then the default sending mode is retrieved from product configuration.",
      "properties": {
        "specificFields": {
          "type": "object",
          "description": "The issuer can provide Specific Fields for the PIN mailer order. \nIt is a list of external data {\"label\":\"value\"} separated by a \",\" related to the PIN mailer order (pass-thru data) that can be provided by e.g. the issuer for information or for usage by other systems.\nExample : {\"label1\":\"value1\",\"label2\":\"value2\"}\nThose provided data have no impact on our system business processes.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "sendingMode": {
          "type": "string",
          "description": "The issuer can provide the sending mode if  a PIN mailer (PIN mailer order) is requested. Default sending mode is retrieved from configuration.\nExample: Normal, Urgent, Ultra Urgent"
        },
        "skipPinMailerOrderGeneration": {
          "type": "boolean",
          "description": "The issuer can provide data related to a PIN mailer order if it is configured as required in the PIN production model.\nIf not provided and required then the default sending mode is retrieved from product configuration."
        }
      },
      "title": "CreateCorporateContractRequest.PinMailerOrder"
    },
    "CreateCorporateContractRequestSepaMandate": {
      "type": "object",
      "description": "The issuer must provide SEPA mandate if payment processing channel is SEPA (SEPA indicator is true) and payment mode is AUTOPAYMENT",
      "required": [
        "mandateContractId"
      ],
      "properties": {
        "mandateContractId": {
          "type": "string",
          "description": "Mandate underlying contract identifier (external reference) used by the issuer. E.g., if the mandate is set up along with the contract creation, it may contain the application number, etc. "
        },
        "debtorId": {
          "type": "string",
          "description": "Deprecated field - not to be used"
        },
        "debtorName": {
          "type": "string",
          "description": "Deprecated field - not to be used"
        },
        "debtorAddressType": {
          "type": "string",
          "description": "Deprecated field - not to be used"
        },
        "debtorPostalAddress": {
          "allOf": [
            {
              "$ref": "#/$defs/SepaMandateMailAddress"
            }
          ],
          "description": "Address lines 1 and 2, street name, building number, post code, town name, country and country subdivision can be provided in certain cases - refer to SEPA rules when debtor's address is required."
        },
        "debtorPhoneNumber": {
          "type": "string",
          "description": "SEPA debtor phone number"
        },
        "debtorEmail": {
          "type": "string",
          "description": "SEPA debtor e-mail"
        },
        "mandateNatureType": {
          "type": "string",
          "description": "SEPA mandate nature type. PAPER_MANDATE is taken as a default.\nList of mandate possible nature types (for future usage only, not to be used):\nCOMPUTING_MIGRATION_NO_SIGNATURE, COMPUTING_MIGRATION_WITH_SIGNATURE, FR_MIGRATION_DOMESTIC_FILES,\nMANDATE_FROMDIGITALIZATION, e_MANDATE, SIGNATURE_MANDATE, MYBANK_e_MANDATE, IDEAL_e_MANDATE"
        },
        "mandateSignDate": {
          "type": "string",
          "description": "The mandate signature date has to be provided except if the SEPA mandate UMR is provided (comes from another system).",
          "format": "date-time"
        },
        "mandateSignCity": {
          "type": "string",
          "description": "SEPA mandate city of signature "
        },
        "sepaMandateUmr": {
          "type": "string",
          "description": "Unique reference to identify the SEPA mandate. Can be provided to our system if mandate is created explicitly by another system."
        },
        "validateMandate": {
          "type": "boolean",
          "description": "Deprecated field - not to be used\nNot to be overridden, as there is a risk for an internal business process."
        },
        "futureMandateExternalReference": {
          "type": "string",
          "description": "Deprecated field - not to be used"
        }
      },
      "title": "CreateCorporateContractRequest.SepaMandate"
    },
    "CreateCorporateContractRequestVcaServiceCard": {
      "type": "object",
      "description": "Card related data to be provided for the creation of the card.",
      "properties": {
        "issuerCardExternalReference": {
          "type": "string",
          "description": "The issuer can provide the external reference for the new card (maximum length is 50 characters). This external reference must be unique per issuer.\nIf not provided, the external reference is calculated by the system if a reference generation algorithm is configured for the issuer else the issuer card external reference will be empty."
        },
        "expiryDate": {
          "type": "string",
          "description": "The issuer can provide the expiry date of the card if allowed by the product configuration (note that the provided expiry date must belong to the range allowed by the product, e.g. [expiry date calculated by our system - 12 months, expiry date calculated by our system + 12 months].\nIf provided and not allowed then an error is raised.\nFormat is MMYY (month and year)."
        },
        "specificFields": {
          "type": "object",
          "description": "The issuer can provide Specific Fields for the new card. \nIt is a list of external data {\"label\":\"value\"} separated by a \",\" related to the card (pass-thru data) that can be provided by e.g. the issuer for information or for usage by other systems.\nExample : {\"label1\":\"value1\",\"label2\":\"value2\"}\nThose provided data have no impact on our system business processes.",
          "additionalProperties": {
            "type": "string"
          }
        }
      },
      "title": "CreateCorporateContractRequest.VcaServiceCard"
    },
    "CreateCorporateContractRequestVcaServiceCardContract": {
      "type": "object",
      "description": "Data related to each VCA service virtual card contract needs to be provided",
      "properties": {
        "issuerCardContractExternalReference": {
          "type": "string",
          "description": "The issuer can provide the external reference for the new card contract."
        },
        "cardHolderRequestCorrelationId": {
          "type": "string",
          "description": "Not to be provided if the cardholder is the same as the account owner of the default account of the card.\nOtherwise the issuer can provide the correlation id of the new customer which represent the cardholder (defined in the data block CreateCorporateContractRequest.Customer)."
        },
        "cardHolderIdentifier": {
          "description": "Not to be provided if the cardholder is the same as the account owner of the default account of the card.\nIf the cardholder already exists in our system then the issuer has to provide the customer reference or the issuer external customer reference of the existing customer.\nIf the cardholder does not exist in our system then cardholderRequestCorrelationId has to be filled.",
          "allOf": [
            {
              "$ref": "#/$defs/CustomerIdentifier"
            }
          ]
        },
        "issuerBranchCode": {
          "type": "string",
          "description": "The issuer can provide the issuer branch code of the card contract. If not provided, then the contract issuer branch code is used."
        },
        "selectedModels": {
          "type": "array",
          "description": "The issuer can replace one or several card contract models by providing new card contract model references, otherwise the default ones from the card contract template are used.\n List of possible models that can be replaced:\n • EVENT_FEE_MODEL \n • DISTRIBUTION_MODEL \n • CARD_CREATION_MODEL \n • TECHNOLOGY_AND_APPLICATION_MODEL ",
          "items": {
            "$ref": "#/$defs/CardContractModel"
          }
        },
        "specificFields": {
          "type": "object",
          "description": "The issuer can provide Specific Fields for the new card contract.\nIt is a list of external data {\"label\":\"value\"} separated by a \",\" related to the card contract (pass-thru data) that can be provided by e.g. the issuer for information or for usage by other systems.\nExample : {\"label1\":\"value1\",\"label2\":\"value2\"}\nThose provided data have no impact on our system business processes.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "vcaServiceCard": {
          "$ref": "#/$defs/CreateCorporateContractRequestVcaServiceCard"
        },
        "forcedEmbossingName": {
          "type": "string",
          "description": "The first line of the name to be embossed on the physical card for the new card can be provided.\nThe character \"*\" is not allowed in the line 1 of the embossing name.\nDefault value is set to \"VCAForcedname\""
        },
        "cardClass": {
          "type": "string",
          "description": "Card class for the new card"
        },
        "corporateContractAddOnsSubscriptions": {
          "type": "array",
          "description": "The issuer can subscribe to additional services (e.g. new letter, travel insurance)",
          "items": {
            "$ref": "#/$defs/CreateCorporateContractRequestAddOnSubscription"
          }
        }
      },
      "title": "CreateCorporateContractRequest.VcaServiceCardContract"
    },
    "CustomerIdentifier": {
      "type": "object",
      "description": "Identification of the updated customer either by Issuer customer external reference or by customer reference",
      "properties": {
        "customerReference": {
          "type": "string",
          "description": "Reference computed internally by our system"
        },
        "issuerCustomerExternalReference": {
          "type": "string",
          "description": "Reference provided by the Issuer"
        }
      },
      "title": "CustomerIdentifier"
    },
    "DeliveryChannel": {
      "type": "object",
      "properties": {
        "contractLetterType": {
          "type": "string",
          "description": "Delivery channel used for card contract letters (optional) \nPossible values: EMAIL, WEB, LETTER, LETTER_AND_WEB, PUSH and MOBILE_APP",
          "enum": [
            "EMAIL",
            "WEB",
            "LETTER",
            "LETTER_AND_WEB",
            "PUSH",
            "MOBILE_APP"
          ]
        },
        "disputeLetterType": {
          "type": "string",
          "description": "Delivery channel used for dispute letters (optional) \nPossible values: EMAIL, WEB, LETTER, LETTER_AND_WEB, PUSH and MOBILE_APP",
          "enum": [
            "EMAIL",
            "WEB",
            "LETTER",
            "LETTER_AND_WEB",
            "PUSH",
            "MOBILE_APP"
          ]
        },
        "statementType": {
          "type": "string",
          "description": "Delivery channel used for statements (optional) \nPossible values: EMAIL, WEB, LETTER, LETTER_AND_WEB, PUSH and MOBILE_APP",
          "enum": [
            "EMAIL",
            "WEB",
            "LETTER",
            "LETTER_AND_WEB",
            "PUSH",
            "MOBILE_APP"
          ]
        }
      },
      "description": "Specify the channel for letter delivery used for this contract",
      "title": "DeliveryChannel"
    },
    "EmailAddress": {
      "type": "object",
      "required": [
        "email"
      ],
      "properties": {
        "email": {
          "type": "string",
          "description": "Email address of the Customer (mandatory). The email address should have the following format: aaa@bbb.ccc\naaa, bbb, ccc are character string."
        }
      },
      "title": "EmailAddress"
    },
    "FeePostingEntityIdentifier": {
      "type": "object",
      "properties": {
        "postingEntityAccountIdentifier": {
          "description": "The account identifier of the entity on which Membership Fee or Account setup Fee will be posted",
          "allOf": [
            {
              "$ref": "#/$defs/AccountIdentifier"
            }
          ]
        },
        "postingEntityCompanyExternalReference": {
          "type": "string",
          "description": "The external reference of the entity, provided by the Company, on which Membership Fee or Account setup Fee will be posted"
        },
        "postingEntityLevel": {
          "type": "integer",
          "description": "The corporate entitity level number on which Membership Fee or Account setup Fee will be posted"
        }
      },
      "title": "FeePostingEntityIdentifier"
    },
    "PinInheritanceCardIdentifier": {
      "type": "object",
      "properties": {
        "pinInheritanceCardReference": {
          "type": "string",
          "description": "The reference of the card from which the PIN is inherited."
        },
        "pinInheritanceIssuerCardExternalReference": {
          "type": "string",
          "description": "The external reference of the card from which the PIN is inherited."
        }
      },
      "title": "PinInheritanceCardIdentifier"
    },
    "SepaMandateMailAddress": {
      "type": "object",
      "properties": {
        "typeCode": {
          "type": "string",
          "description": "DEPRECATED"
        },
        "line1": {
          "type": "string",
          "description": "Address line 1 (conditional). Free text. A specific issuer algorithm can be activated to e.g. build the line, apply controls (e.g. length restriction)."
        },
        "line2": {
          "type": "string",
          "description": "Address line 2 (conditional). Free text. A specific issuer algorithm can be activated to e.g. build the line, apply controls (e.g. length restriction)."
        },
        "line3": {
          "type": "string",
          "description": "Address line 3 (conditional). Free text. A specific issuer algorithm can be activated to e.g. build the line, apply controls (e.g. length restriction)."
        },
        "line4": {
          "type": "string",
          "description": "Address line 4 (conditional). Free text. A specific issuer algorithm can be activated to e.g. build the line, apply controls (e.g. length restriction)."
        },
        "line5": {
          "type": "string",
          "description": "Address line 5 (conditional). Free text. A specific issuer algorithm can be activated to e.g. build the line, apply controls (e.g. length restriction)."
        },
        "buildingNumber": {
          "type": "string",
          "description": "Building number of the address (optional)"
        },
        "boxNumber": {
          "type": "string",
          "description": "Box number of the address (optional)"
        },
        "streetName": {
          "type": "string",
          "description": "Street name of the address (optional)"
        },
        "postCode": {
          "type": "string",
          "description": "zip code of the address (optional)"
        },
        "townName": {
          "type": "string",
          "description": "City corresponding to the address"
        },
        "countrySubdivision": {
          "type": "string",
          "description": "Subdivision of the country (optional)"
        },
        "country": {
          "type": "string",
          "description": "Code of the country.Free text."
        }
      },
      "title": "SepaMandateMailAddress"
    }
  }
}