{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/citi/main/json-schema/citi-authentication-request-schema.json",
  "title": "Authentication Request",
  "description": "Authentication Request",
  "x-generated": "2026-10-12",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/citi-authentication-api-openapi.yml#/components/schemas/Authentication-Request",
  "type": "object",
  "required": [
    "authentication",
    "order",
    "method",
    "transaction"
  ],
  "properties": {
    "authentication": {
      "$ref": "#/$defs/Initiate-Authentication"
    },
    "method": {
      "$ref": "#/$defs/Authentication-Method"
    },
    "transaction": {
      "$ref": "#/$defs/Authentication-Transaction"
    },
    "order": {
      "$ref": "#/$defs/Authentication-Order"
    }
  },
  "additionalProperties": false,
  "$defs": {
    "Authentication-Card": {
      "title": "card",
      "description": "Card informations",
      "properties": {
        "number": {
          "description": "The customer’s payment card number, also known as the Primary Account Number (PAN).",
          "type": "string",
          "minLength": 9,
          "maxLength": 23,
          "title": "number"
        },
        "expiry_month": {
          "description": "Two-digit month in which the payment card expires.",
          "type": "string",
          "pattern": "^(0?[1-9]|1[0-2])$",
          "title": "expiry_month"
        },
        "expiry_year": {
          "description": "Two-digit year in which the payment card expires.",
          "type": "string",
          "pattern": "^[0-9]{2,2}$",
          "title": "expiry_year"
        },
        "device_payment": {
          "$ref": "#/$defs/Authentication-Device-Payment"
        }
      }
    },
    "Authentication-Device-Payment": {
      "title": "device",
      "type": "object",
      "description": "Device",
      "properties": {
        "eci_indicator": {
          "description": "The Electronic Commerce Indicator generated for device payments.",
          "maxLength": 2,
          "minLength": 1,
          "type": "string",
          "title": "eci_indicator"
        },
        "online_payment_cryptogram": {
          "description": "A cryptogram used to authenticate the transaction (from decrypted token).",
          "maxLength": 200,
          "minLength": 1,
          "type": "string",
          "title": "online payment cryptogram"
        },
        "cryptogram_format": {
          "description": "The format of the cryptogram provided for the digital payment.",
          "enum": [
            "3DSECURE",
            "EMV"
          ],
          "type": "string",
          "title": "cryptogram_format"
        },
        "token": {
          "description": "The payment token received from the device's payment SDK (e.g., Apple Pay).",
          "maxLength": 16384,
          "minLength": 1,
          "type": "string",
          "title": "token"
        }
      }
    },
    "Authentication-Method": {
      "type": "object",
      "title": "Authentication Method",
      "required": [
        "type"
      ],
      "properties": {
        "type": {
          "description": "Method specified by the customer for the transaction  \n- Provide CARD for CARD transactions",
          "type": "string",
          "enum": [
            "CARD",
            "GOOGLEPAY",
            "APPLEPAY"
          ],
          "title": "type"
        },
        "card": {
          "$ref": "#/$defs/Authentication-Card"
        },
        "token_id": {
          "description": "Token_number.",
          "maxLength": 50,
          "minLength": 1,
          "type": "string",
          "title": "token_number"
        },
        "token_type": {
          "description": "Token type.",
          "enum": [
            "ALT_TOKEN",
            "NETWORK_TOKEN",
            "ISSUER_TOKEN",
            "CITI_TOKEN"
          ],
          "type": "string",
          "title": "token_type"
        },
        "session_id": {
          "description": "Session identification number",
          "type": "string",
          "minLength": 36,
          "maxLength": 37,
          "title": "session_id"
        }
      }
    },
    "Authentication-Order": {
      "title": "Authentication Order",
      "required": [
        "currency_code",
        "id"
      ],
      "properties": {
        "id": {
          "description": "A unique identifier for this order to distinguish it from any other order you create.",
          "maxLength": 40,
          "minLength": 1,
          "type": "string",
          "title": "id"
        },
        "currency_code": {
          "description": "The currency of the order expressed as an ISO 4217 alpha code, e.g. USD.",
          "enum": [
            "USD"
          ],
          "type": "string",
          "title": "currency_code"
        },
        "reference": {
          "description": "An optional identifier for the order For example, a shopping cart number, an order number, or an invoice number.",
          "maxLength": 250,
          "minLength": 1,
          "type": "string",
          "title": "reference"
        },
        "mcc": {
          "description": "The invoice number you issued for this order",
          "maxLength": 4,
          "minLength": 4,
          "type": "string",
          "title": "mcc"
        }
      },
      "type": "object"
    },
    "Authentication-Transaction": {
      "title": " Authentication Transaction",
      "required": [
        "id",
        "currency_code",
        "country_code"
      ],
      "properties": {
        "currency_code": {
          "description": "ISO 4217 Currency Code for instance USD/GBP/EUR \n- transaction.currency_code parameter is mandatory for all transaction type creation",
          "enum": [
            "USD"
          ],
          "type": "string",
          "title": "currency_code"
        },
        "reference": {
          "description": "Value provided by the merchant for internal tracking/referencing.",
          "maxLength": 250,
          "minLength": 1,
          "type": "string",
          "title": "reference"
        },
        "country_code": {
          "description": "The transaction country",
          "enum": [
            "US"
          ],
          "type": "string",
          "title": "country_code"
        },
        "id": {
          "description": "Unique Transaction identification provided by the merchant during  transaction creation",
          "maxLength": 128,
          "minLength": 1,
          "type": "string",
          "title": "id"
        }
      },
      "type": "object"
    },
    "Initiate-Authentication": {
      "title": " Intiate Authentication",
      "required": [
        "channel"
      ],
      "properties": {
        "channel": {
          "description": "Indicates the channel in which the authentication request is initiated.",
          "enum": [
            "MERCHANT_REQUESTED",
            "PAYER_APP",
            "PAYER_BROWSER"
          ],
          "type": "string",
          "title": "channel"
        },
        "purpose": {
          "description": "Indicates the context in which payer authentication is requested.",
          "enum": [
            "ADD_CARD",
            "AGREEMENT_CANCELLATION",
            "MAINTAIN_CARD",
            "PAYMENT_TRANSACTION",
            "REFRESH_AUTHENTICATION"
          ],
          "type": "string",
          "title": "purpose"
        },
        "type": {
          "type": "array",
          "items": {
            "type": "string",
            "description": "A comma separated list of accepted payer authentication forms. \n- Accepted values are 3DS1,3DS2,PASSKEY",
            "title": "type"
          }
        },
        "line_of_business": {
          "description": "Identifier for different lines of business configured in the merchant profile.",
          "maxLength": 100,
          "minLength": 1,
          "type": "string",
          "title": "line_of_business"
        }
      }
    }
  }
}