---
updatedAt: 2026-08-14T03:35:54.000Z
agentTools:
  projectIndex: https://developer.moneris.com/moneris-api/llms.txt
---

# Create Authentication

This operation is used to create an Authentication request. 
The authentication request is used to start the validation process of the card. 
The result of this request determines whether 3DS is supported by the card and what type of authentication is required.


# OpenAPI definition

```json
{
  "openapi": "3.0.3",
  "info": {
    "version": "2.15.1",
    "title": "Moneris API",
    "description": "Moneris API Platform\n\n\n[<img src=\"https://run.pstmn.io/button.svg\" alt=\"Run In Postman\" style=\"width: 128px; height:32px;\">](https://god.gw.postman.com/run-collection/25575461-f04750a0-88e9-4c83-8b58-a3aff15eeea8?action=collection%2Ffork&collection-url=entityId%3D25575461-f04750a0-88e9-4c83-8b58-a3aff15eeea8%26entityType%3Dcollection%26workspaceId%3D5d2a9a0f-57a7-441c-b2af-fe6315e80a08)",
    "termsOfService": "https://www.moneris.com/en/legal/terms-of-use",
    "contact": {
      "url": "https://api-developer.moneris.com",
      "email": "api@moneris.com"
    },
    "license": {
      "name": "Moneris",
      "url": "https://developer.moneris.com/Agreements/Terms%20of%20Use"
    },
    "x-audience": "external-public"
  },
  "servers": [
    {
      "url": "https://api.sb.moneris.io",
      "description": "Sandbox server (uses test data)",
      "x-internal": false
    },
    {
      "url": "https://api.moneris.io",
      "description": "Production server (uses live data)",
      "x-internal": false
    }
  ],
  "tags": [
    {
      "name": "3D Secure",
      "description": "Perform 3D Secure authentications against payment methods"
    }
  ],
  "paths": {
    "/three-d-secure/authentications": {
      "parameters": [
        {
          "$ref": "#/components/parameters/apiVersion"
        },
        {
          "$ref": "#/components/parameters/correlationId"
        },
        {
          "$ref": "#/components/parameters/merchantId"
        }
      ],
      "post": {
        "summary": "Create Authentication",
        "description": "This operation is used to create an Authentication request. \nThe authentication request is used to start the validation process of the card. \nThe result of this request determines whether 3DS is supported by the card and what type of authentication is required.\n",
        "operationId": "createAuthentication",
        "security": [
          {
            "OAuth2": [
              "payment.write"
            ]
          },
          {
            "ApiKeyAuth": []
          }
        ],
        "tags": [
          "3D Secure"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/authenticationRequest"
              },
              "examples": {
                "threeDSecureBrowserChannelWithPaymentMethodId": {
                  "$ref": "#/components/examples/threeDSecureBrowserChannelWithPaymentMethodId"
                },
                "threeDSecureBrowserChannelWithCardPaymentMethod": {
                  "$ref": "#/components/examples/threeDSecureBrowserChannelWithCardPaymentMethod"
                },
                "threeDSecureBrowserChannelWithTemporaryToken": {
                  "$ref": "#/components/examples/threeDSecureBrowserChannelWithTemporaryToken"
                },
                "threeDSecureBrowserChannelWithPermanentToken": {
                  "$ref": "#/components/examples/threeDSecureBrowserChannelWithPermanentToken"
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "$ref": "#/components/responses/createThreeDSecureAuthenticationSuccessResponse"
          },
          "202": {
            "$ref": "#/components/responses/createThreeDSecureAuthenticationChallengeResponse"
          },
          "400": {
            "$ref": "#/components/responses/badRequest"
          },
          "401": {
            "$ref": "#/components/responses/unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/forbidden"
          },
          "409": {
            "$ref": "#/components/responses/conflict"
          },
          "422": {
            "$ref": "#/components/responses/unprocessableContent"
          },
          "429": {
            "$ref": "#/components/responses/tooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/internalServer"
          },
          "503": {
            "$ref": "#/components/responses/serviceUnavailable"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "ApiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Api-Key",
        "description": "An API key is a token that a client provides when making API calls.\n\nAPI keys are supposed to be a secret that only the client and server know about.\n"
      },
      "OAuth2": {
        "type": "oauth2",
        "description": "OAuth 2.0 is an authorization protocol that gives an API client limited access to user data on a web server.\n\nOAuth relies on authentication scenarios, that allows the resource owner (user) to share the protected content from the server, hosting the resource, without sharing their credentials. For that purpose, an OAuth 2.0 server issues access tokens that the client applications can use to access protected resources on behalf of the resource owner.\n\nMoneris recommends the use of OAuth 2.0 as it provides fine grained authorization levels.\n",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "/oauth2/token",
            "scopes": {
              "payment.read": "Grants read access to payment related APIs",
              "payment.write": "Grants read & write access to payment related APIs",
              "refund.read": "Grants read access to refunds",
              "refund.write": "Grants read & write access to refunds",
              "customer.read": "Grants read access to customer data",
              "customer.write": "Grants read & write access to customer data",
              "kount.read": "Grants read access to Kount inquiries",
              "kount.write": "Grants read & write access to Kount inquiries",
              "onboarding.merchant.read": "Grants read access to merchant onboarding related APIs",
              "onboarding.merchant.write": "Grants read & write access to merchant onboarding related APIs",
              "onboarding.order.read": "Grants read access to onboarding orders related APIs",
              "onboarding.order.write": "Grants read & write access to onboarding orders related APIs",
              "dispute.read": "Grants read access to disputes",
              "dispute.write": "Grants read & write access to disputes",
              "payout.write": "Grants read & write access to payouts",
              "partner.account.write": "Grants read & write access to partner merchant accounts"
            }
          }
        }
      }
    },
    "schemas": {
      "apiVersion": {
        "description": "The endpoint's API Version.  Must be provided through headers.\n",
        "type": "string",
        "example": "2026-08-14",
        "default": "2026-08-14"
      },
      "merchantId": {
        "type": "string",
        "description": "Thirteen character long identification provided to merchants by Moneris. \n",
        "minLength": 13,
        "maxLength": 13,
        "example": "0123456789101"
      },
      "resourceId": {
        "type": "string",
        "description": "Used to identify API resources which may be required for future follow-on transactions; i.e. Refunds, Corrections, Completions, Reversals, etc.",
        "pattern": "^[A-Za-z]{2}\\d{2}[A-Za-z0-9]{26}$",
        "minLength": 30,
        "maxLength": 30,
        "example": "pi0105ARZ3NDEKTSV4RRFFQ69G5FAV"
      },
      "idempotencyKey": {
        "type": "string",
        "description": "A Unique Identifier that is required for handling idempotent requests. \n\nNote: Moneris encourages the use of UUID Version 4 in APIs as an idempotency key.\"    \n",
        "minLength": 1,
        "maxLength": 36,
        "example": "b3e1f8c2-4d2a-4e6b-9c1a-2f3e4d5b6a7c"
      },
      "orderId": {
        "type": "string",
        "description": "Indicates the merchant-defined transaction identifer or order ID. Identifiers are unique for every Purchase, Pre-Authorization and Independent Refund transaction\n\n**Note**: No two transactions of these types may have the same order ID. Field only accepts alphanumerical characters, dashes and underscores.\n",
        "minLength": 1,
        "maxLength": 50,
        "example": "1q2w3e4r5t6t78",
        "pattern": "^[a-zA-Z0-9-_]+$",
        "nullable": true
      },
      "amount": {
        "type": "integer",
        "format": "int32",
        "minimum": 0,
        "maximum": 999999999,
        "example": 10000,
        "description": "Amount"
      },
      "currency": {
        "type": "string",
        "description": "Provides the three letter currency code according the ISO 4217 standard. \n\nFor a complete list of currency codes, visit: https://en.wikipedia.org/wiki/ISO_4217\n",
        "minLength": 3,
        "maxLength": 4,
        "example": "CAD",
        "format": "iso-4217"
      },
      "money": {
        "type": "object",
        "description": "Monetary amount. \nNote: The value must be in cents. Therefore $10.59 must be sent as 1059.\n",
        "properties": {
          "amount": {
            "$ref": "#/components/schemas/amount"
          },
          "currency": {
            "$ref": "#/components/schemas/currency"
          }
        },
        "required": [
          "amount",
          "currency"
        ],
        "example": {
          "amount": 16000,
          "currency": "CAD"
        }
      },
      "cardholderName": {
        "type": "string",
        "description": "Cardholder name",
        "minLength": 1,
        "maxLength": 60,
        "example": "John Doe"
      },
      "email": {
        "type": "string",
        "format": "email",
        "description": "Contains the customer's email address.\n\nFor standard email protocols, visit: https://www.rfc-editor.org/rfc/rfc5322\n",
        "minLength": 1,
        "maxLength": 320,
        "example": "moneris@moneris.com"
      },
      "phoneNumber": {
        "type": "string",
        "description": "Phone number.",
        "pattern": "^\\+[1-9]\\d{1,14}$",
        "minLength": 3,
        "maxLength": 16,
        "example": "+18663197450"
      },
      "streetNumber": {
        "type": "string",
        "description": "Street number",
        "minLength": 1,
        "maxLength": 19,
        "example": "3300"
      },
      "streetName": {
        "type": "string",
        "description": "Street name",
        "minLength": 1,
        "maxLength": 100,
        "example": "Bloor"
      },
      "city": {
        "type": "string",
        "description": "Identifies the city.\n",
        "minLength": 1,
        "maxLength": 50,
        "example": "Toronto"
      },
      "province": {
        "type": "string",
        "description": "Province or state ISO 3166-2 code ",
        "minLength": 1,
        "maxLength": 3,
        "format": "iso-3166-2",
        "example": "ON"
      },
      "postalCode": {
        "type": "string",
        "description": "Postal or zip code",
        "minLength": 1,
        "maxLength": 30,
        "example": "M8X 2X2"
      },
      "country": {
        "type": "string",
        "description": "Provides the two letter country code according the ISO 3166-1 alpha-2 standard. \nFor a complete list of country codes, visit: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2.\n",
        "minLength": 2,
        "maxLength": 2,
        "example": "CA",
        "format": "iso-3166"
      },
      "threeDSecureAuthenticationBillingAddress": {
        "type": "object",
        "title": "threeDSecureAuthenticationRequestBillingAddress",
        "description": "The postal address including street, town/city, province, and postal code.",
        "properties": {
          "unitNumber": {
            "nullable": true,
            "type": "string",
            "description": "Unit number",
            "minLength": 1,
            "maxLength": 19,
            "example": "123A"
          },
          "streetNumber": {
            "$ref": "#/components/schemas/streetNumber"
          },
          "streetName": {
            "$ref": "#/components/schemas/streetName"
          },
          "city": {
            "$ref": "#/components/schemas/city"
          },
          "province": {
            "$ref": "#/components/schemas/province"
          },
          "postalCode": {
            "$ref": "#/components/schemas/postalCode"
          },
          "country": {
            "$ref": "#/components/schemas/country"
          }
        },
        "example": {
          "unitNumber": "123A",
          "streetNumber": "3300",
          "streetName": "Bloor Street West",
          "city": "Toronto",
          "province": "ON",
          "postalCode": "M8X 2X2",
          "country": "CA"
        },
        "required": [
          "streetNumber",
          "streetName",
          "city",
          "province",
          "postalCode",
          "country"
        ]
      },
      "paymentMethodRequestSource": {
        "type": "string",
        "description": "The source of Payment Method being used. \n",
        "enum": [
          "PAYMENT_METHOD_ID",
          "CARD",
          "TEMPORARY_TOKEN",
          "PERMANENT_TOKEN",
          "APPLE_PAY_ENCRYPTED",
          "APPLE_PAY_DECRYPTED",
          "GOOGLE_PAY_ENCRYPTED",
          "GOOGLE_PAY_DECRYPTED",
          "KONEK"
        ]
      },
      "paymentMethodId": {
        "type": "string",
        "description": "Unique Identifier of the payment method.",
        "pattern": "^[A-Za-z]{2}\\d{2}[A-Za-z0-9]{26}$",
        "minLength": 30,
        "maxLength": 30,
        "example": "pi0105ARZ3NDEKTSV4RRFFQ69G5FAV"
      },
      "paymentMethodWithId": {
        "title": "paymentMethodWithId",
        "description": "Use existing unique payment method identifier.",
        "properties": {
          "paymentMethodSource": {
            "$ref": "#/components/schemas/paymentMethodRequestSource"
          },
          "paymentMethodId": {
            "$ref": "#/components/schemas/paymentMethodId"
          }
        },
        "required": [
          "paymentMethodSource",
          "paymentMethodId"
        ]
      },
      "cardNumber": {
        "type": "string",
        "description": "Identifies the customer's credit or debit card number (Primary Account Number).",
        "pattern": "^[0-9]{13,19}$",
        "example": "4242424242424242"
      },
      "expiryMonth": {
        "type": "integer",
        "format": "int32",
        "description": "Card expiration month. Format must be MM",
        "minimum": 1,
        "maximum": 12,
        "example": 1
      },
      "expiryYear": {
        "type": "integer",
        "format": "int32",
        "description": "Displays the card expiration year. Accepted format: YYYY",
        "minimum": 2022,
        "maximum": 9999,
        "example": 2023
      },
      "cardSecurityCode": {
        "type": "string",
        "pattern": "[0-9]*",
        "description": "CVD value located on credit card. The CVD value (supplied by the cardholder) must only be passed to the payment gateway. Under no circumstances may it be stored for subsequent use or displayed as part of the receipt information.",
        "minLength": 3,
        "maxLength": 4,
        "example": "123"
      },
      "card": {
        "type": "object",
        "description": "Card details",
        "properties": {
          "cardNumber": {
            "$ref": "#/components/schemas/cardNumber"
          },
          "expiryMonth": {
            "$ref": "#/components/schemas/expiryMonth"
          },
          "expiryYear": {
            "$ref": "#/components/schemas/expiryYear"
          },
          "cardSecurityCode": {
            "$ref": "#/components/schemas/cardSecurityCode"
          }
        },
        "required": [
          "cardNumber",
          "expiryMonth",
          "expiryYear",
          "cardSecurityCode"
        ]
      },
      "firstName": {
        "type": "string",
        "description": "First name.",
        "minLength": 1,
        "maxLength": 30,
        "example": "John",
        "nullable": true
      },
      "middleName": {
        "type": "string",
        "description": "Customer's middle name.",
        "minLength": 1,
        "maxLength": 30,
        "example": "J.",
        "nullable": true
      },
      "lastName": {
        "type": "string",
        "description": "Last name.",
        "minLength": 1,
        "maxLength": 30,
        "example": "Doe",
        "nullable": true
      },
      "cardholderNameDetails": {
        "type": "object",
        "description": "Cardholder name details",
        "nullable": true,
        "properties": {
          "firstName": {
            "$ref": "#/components/schemas/firstName"
          },
          "middleName": {
            "$ref": "#/components/schemas/middleName"
          },
          "lastName": {
            "$ref": "#/components/schemas/lastName"
          }
        }
      },
      "companyName": {
        "type": "string",
        "description": "Identifies the associated company name",
        "minLength": 1,
        "maxLength": 50,
        "example": "SP Ltd",
        "nullable": true
      },
      "cardholderInformation": {
        "type": "object",
        "description": "Information about the holder of the card.",
        "nullable": true,
        "properties": {
          "cardholderName": {
            "$ref": "#/components/schemas/cardholderName"
          },
          "cardholderNameDetails": {
            "$ref": "#/components/schemas/cardholderNameDetails"
          },
          "companyName": {
            "$ref": "#/components/schemas/companyName"
          }
        },
        "required": [
          "cardholderName"
        ]
      },
      "contactDetails": {
        "type": "object",
        "description": "Contact details",
        "nullable": true,
        "properties": {
          "phoneNumber": {
            "nullable": true,
            "type": "string",
            "description": "Phone number.",
            "pattern": "^\\+[1-9]\\d{1,14}$",
            "minLength": 3,
            "maxLength": 16,
            "example": "+18663197450"
          },
          "email": {
            "nullable": true,
            "type": "string",
            "format": "email",
            "description": "Contains the customer's email address.\n\nFor standard email protocols, visit: https://www.rfc-editor.org/rfc/rfc5322\n",
            "minLength": 1,
            "maxLength": 320,
            "example": "moneris@moneris.com"
          }
        },
        "example": {
          "phoneNumber": "+18663197450",
          "email": "moneris@moneris.com"
        }
      },
      "customData": {
        "description": "Merchant can send custom meta data with the transaction in this object. Moneris will echo these values back in response.",
        "type": "object",
        "additionalProperties": {
          "type": "string",
          "minLength": 1,
          "maxLength": 50
        },
        "maxProperties": 10,
        "nullable": true
      },
      "paymentMethodRequestBase": {
        "description": "Payment Method details.\n\nNote: If defined, this will result in the creation of Payment Method as defined in the Payment Method API.\n",
        "type": "object",
        "properties": {
          "cardholderInformation": {
            "$ref": "#/components/schemas/cardholderInformation"
          },
          "contactDetails": {
            "$ref": "#/components/schemas/contactDetails"
          },
          "billingAddress": {
            "nullable": true,
            "type": "object",
            "description": "The postal address including street, town/city, province, and postal code.\nOptionally an unit number can be provided.\n",
            "properties": {
              "unitNumber": {
                "nullable": true,
                "type": "string",
                "description": "Unit number",
                "minLength": 1,
                "maxLength": 19,
                "example": "123A"
              },
              "streetNumber": {
                "nullable": true,
                "type": "string",
                "description": "Street number",
                "minLength": 1,
                "maxLength": 19,
                "example": "3300"
              },
              "streetName": {
                "nullable": true,
                "type": "string",
                "description": "Street name",
                "minLength": 1,
                "maxLength": 100,
                "example": "Bloor"
              },
              "city": {
                "nullable": true,
                "type": "string",
                "description": "Identifies the city.\n",
                "minLength": 1,
                "maxLength": 50,
                "example": "Toronto"
              },
              "province": {
                "nullable": true,
                "type": "string",
                "description": "Province or state ISO 3166-2 code ",
                "minLength": 1,
                "maxLength": 3,
                "format": "iso-3166-2",
                "example": "ON"
              },
              "postalCode": {
                "nullable": true,
                "type": "string",
                "description": "Postal or zip code",
                "minLength": 1,
                "maxLength": 30,
                "example": "M8X 2X2"
              },
              "country": {
                "nullable": true,
                "type": "string",
                "description": "Provides the two letter country code according the ISO 3166-1 alpha-2 standard. \nFor a complete list of country codes, visit: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2.\n",
                "minLength": 2,
                "maxLength": 2,
                "example": "CA",
                "format": "iso-3166"
              }
            },
            "example": {
              "unitNumber": "123A",
              "streetNumber": "3300",
              "streetName": "Bloor Street West",
              "city": "Toronto",
              "province": "ON",
              "postalCode": "M8X 2X2",
              "country": "CA"
            }
          },
          "paymentMethodSource": {
            "$ref": "#/components/schemas/paymentMethodRequestSource"
          },
          "customData": {
            "$ref": "#/components/schemas/customData"
          }
        },
        "required": [
          "paymentMethodSource"
        ]
      },
      "paymentMethodCard": {
        "title": "paymentMethodCard",
        "description": "Credit/Debit/Gift Card payment method details.",
        "allOf": [
          {
            "type": "object",
            "properties": {
              "card": {
                "$ref": "#/components/schemas/card"
              }
            },
            "required": [
              "card"
            ]
          },
          {
            "$ref": "#/components/schemas/paymentMethodRequestBase"
          }
        ],
        "required": [
          "paymentMethodSource",
          "card"
        ]
      },
      "token": {
        "type": "string",
        "description": "Created when a temporary token is created and returned. This acts as a unique profile identifier, and is a required value for temporary token transactions.",
        "minLength": 25,
        "maxLength": 28,
        "example": "ot-HCUeCFtXJfEZSSUqvUJkS0"
      },
      "paymentMethodTemporaryToken": {
        "title": "paymentMethodTemporaryToken",
        "description": "A Temporary Token is issued by Moneris to the merchant and represents the card details. Please review the Hosted Tokenization feature documentation to learn how to issue such a token.\n",
        "allOf": [
          {
            "type": "object",
            "properties": {
              "temporaryToken": {
                "$ref": "#/components/schemas/token"
              }
            },
            "required": [
              "paymentMethodSource",
              "temporaryToken"
            ]
          },
          {
            "$ref": "#/components/schemas/paymentMethodRequestBase"
          }
        ],
        "required": [
          "paymentMethodSource",
          "temporaryToken"
        ]
      },
      "paymentMethodPermanentToken": {
        "title": "paymentMethodPermanentToken",
        "description": "A Permanent Token is issued by Moneris to the merchant and represents the card details. This option is used for legacy purposes.\n",
        "allOf": [
          {
            "type": "object",
            "properties": {
              "permanentToken": {
                "$ref": "#/components/schemas/token"
              }
            },
            "required": [
              "permanentToken"
            ]
          },
          {
            "$ref": "#/components/schemas/paymentMethodRequestBase"
          }
        ],
        "required": [
          "paymentMethodSource",
          "permanentToken"
        ]
      },
      "walletIndicator": {
        "type": "string",
        "description": "Only available to Canada integrations.\nApplies to merchants using their own API for transaction payload encryptions for Apple Pay and Google Pay transactions.\n**NOTE**: This field is mandatory for wallet transactions and is case senstive.\"\n",
        "enum": [
          "IN_APPLICATION",
          "IN_BROWSER"
        ]
      },
      "applePayEncryptedWallet": {
        "title": "applePayEncryptedWallet",
        "description": "Apple Pay encrypted wallet details.",
        "allOf": [
          {
            "$ref": "#/components/schemas/paymentMethodRequestBase"
          },
          {
            "type": "object",
            "properties": {
              "displayName": {
                "type": "string",
                "description": "Display Name",
                "example": "MasterCard 4079"
              },
              "cardBrand": {
                "type": "string",
                "description": "Card Brand.",
                "enum": [
                  "MASTERCARD",
                  "VISA",
                  "AMERICAN_EXPRESS",
                  "INTERAC",
                  "DISCOVER"
                ],
                "example": "MASTERCARD"
              },
              "applePayVersion": {
                "type": "string",
                "description": "Version information about the payment token.\n  - EC_V1: For ECC-encrypted data\n  - RSA_V1: For RSA-encrypted data\n",
                "enum": [
                  "EC_V1",
                  "RSA_V1"
                ],
                "example": "EC_V1"
              },
              "data": {
                "type": "string",
                "description": "Encrypted payment data. Base64 encoded as a string.\n",
                "format": "byte",
                "example": "MTIzNDU2Njc4OQ=="
              },
              "signature": {
                "type": "string",
                "description": "Signature of the payment and header data, Base64 encoded as a string. The signature includes the signing certificate, its intermediate CA certificate, and information about the signing algorithm. Can be a detached PKCS #7 signature, Base64 encoded as a string\n"
              },
              "publicKeyHash": {
                "type": "string",
                "description": "Hash of the X.509 encoded public key bytes of the merchant’s certificate. Can be either a base64 encoded or SHA-256 Hash string.\n"
              },
              "ephemeralPublicKey": {
                "type": "string",
                "description": "Ephemeral public key bytes. Only for RSA_v1. Can be either a base64 encoded string or X.509 bytes.\n",
                "format": "byte"
              },
              "applePayTransactionId": {
                "type": "string",
                "description": "The Apple Pay unique identifier for a transaction such as an in-app purchase, restored in-app purchase, or subscription renewal."
              },
              "walletIndicator": {
                "$ref": "#/components/schemas/walletIndicator"
              }
            },
            "required": [
              "displayName",
              "cardBrand",
              "applePayVersion",
              "data",
              "signature",
              "publicKeyHash",
              "ephemeralPublicKey",
              "applePayTransactionId",
              "walletIndicator"
            ]
          }
        ],
        "required": [
          "paymentMethodSource"
        ]
      },
      "deviceManufacturerIdentifier": {
        "type": "string",
        "description": "Hex-encoded device manufacturer identifier",
        "nullable": true
      },
      "dataType": {
        "type": "string",
        "description": "Only available to Canada integrations.\n\nApplies to merchants using their own API for transaction payload encryptions and is mandatory for INTERAC® e-Commerce Apple Pay and Google Pay transactions.\n",
        "enum": [
          "THREE_D_SECURE",
          "EMV"
        ]
      },
      "walletCryptogram": {
        "type": "string",
        "description": "Token cryptogram or encoded Base64 for Interac Wallets.",
        "maxLength": 500,
        "example": "8YGKgiD0iJic84fBLVj3QuwuclqLp7QvizbKnGRYAMVfVwBobYMBAIQBAIUBAIZTWgpQdgQQKZkZFHGfXySDKRAxXyoCASSfAgYAAAAQAABfIAIgL58ZBgSSSSSSSL9JIoEgAAMj1qj1U9jsORa1qxqAEAHOBAAEAECKALEAAAADEACHCAAAAAAAAAAAkAA="
      },
      "walletEcommerceIndicator": {
        "type": "string",
        "description": "ECI Indicator as provided by the Wallet.",
        "nullable": true
      },
      "applePayDecryptedWallet": {
        "title": "applePayDecryptedWallet",
        "description": "Apple Pay wallet details after decrypting the token.",
        "allOf": [
          {
            "$ref": "#/components/schemas/paymentMethodRequestBase"
          },
          {
            "type": "object",
            "properties": {
              "applicationPrimaryAccountNumber": {
                "description": "The unique identifier for the primary account number for the payment card.",
                "type": "string",
                "pattern": "^[0-9]{13,19}$",
                "example": "4242424242424242"
              },
              "expiryMonth": {
                "$ref": "#/components/schemas/expiryMonth"
              },
              "expiryYear": {
                "$ref": "#/components/schemas/expiryYear"
              },
              "deviceManufacturerIdentifier": {
                "$ref": "#/components/schemas/deviceManufacturerIdentifier"
              },
              "dataType": {
                "$ref": "#/components/schemas/dataType"
              },
              "cryptogram": {
                "$ref": "#/components/schemas/walletCryptogram"
              },
              "cardBrand": {
                "type": "string",
                "description": "Card Brand.",
                "enum": [
                  "MASTERCARD",
                  "VISA",
                  "AMERICAN_EXPRESS",
                  "INTERAC",
                  "DISCOVER"
                ]
              },
              "walletEcommerceIndicator": {
                "$ref": "#/components/schemas/walletEcommerceIndicator"
              },
              "walletIndicator": {
                "$ref": "#/components/schemas/walletIndicator"
              }
            },
            "required": [
              "applicationPrimaryAccountNumber",
              "expiryMonth",
              "expiryYear",
              "dataType",
              "cryptogram",
              "cardBrand",
              "walletIndicator"
            ]
          }
        ],
        "required": [
          "paymentMethodSource"
        ]
      },
      "googlePayEncryptedWallet": {
        "title": "googlePayEncryptedWallet",
        "description": "Apple Pay encrypted wallet details.",
        "allOf": [
          {
            "$ref": "#/components/schemas/paymentMethodRequestBase"
          },
          {
            "type": "object",
            "properties": {
              "cardBrand": {
                "type": "string",
                "description": "Card Brand.",
                "enum": [
                  "MASTERCARD",
                  "VISA",
                  "AMERICAN_EXPRESS",
                  "INTERAC"
                ],
                "example": "INTERAC"
              },
              "signature": {
                "type": "string",
                "description": "Verifies that the message came from Google.  It's base64-encoded, and created with ECDSA by the intermediate signing key.\n"
              },
              "googlePayProtocolVersion": {
                "type": "string",
                "description": "Identifies the encryption or signing scheme under which the message is created. \nIt allows the protocol to evolve over time, if needed.\nMust be fowarded as provided by Google Pay.\n",
                "example": "ECv1"
              },
              "signedMessage": {
                "type": "string",
                "description": "A JSON object serialized as an HTML-safe string that contains the encryptedMessage, ephemeralPublicKey, and tag.  It's serialized to simplify the signature verification process.\n"
              },
              "walletIndicator": {
                "$ref": "#/components/schemas/walletIndicator"
              }
            },
            "required": [
              "cardBrand",
              "signature",
              "googlePayProtocolVersion",
              "signedMessage",
              "walletIndicator"
            ]
          }
        ],
        "required": [
          "paymentMethodSource"
        ]
      },
      "googlePayDecryptedCardDetails": {
        "description": "The payment credential itself.  The format of this object is determined by the paymentMethod\n",
        "type": "object",
        "properties": {
          "personalAccountNumber": {
            "description": "The personal account number charged. This string contains only digits.",
            "type": "string",
            "pattern": "^[0-9]{13,19}$",
            "example": "4242424242424242"
          },
          "expiryMonth": {
            "$ref": "#/components/schemas/expiryMonth"
          },
          "expiryYear": {
            "$ref": "#/components/schemas/expiryYear"
          },
          "authenticationMethod": {
            "description": "The authentication method of the card transaction.\nMust be forwarded as provided by Google Pay.\n",
            "type": "string",
            "nullable": true
          },
          "cryptogram": {
            "nullable": true,
            "type": "string",
            "description": "Token cryptogram or encoded Base64 for Interac Wallets.",
            "maxLength": 500,
            "example": "8YGKgiD0iJic84fBLVj3QuwuclqLp7QvizbKnGRYAMVfVwBobYMBAIQBAIUBAIZTWgpQdgQQKZkZFHGfXySDKRAxXyoCASSfAgYAAAAQAABfIAIgL58ZBgSSSSSSSL9JIoEgAAMj1qj1U9jsORa1qxqAEAHOBAAEAECKALEAAAADEACHCAAAAAAAAAAAkAA="
          },
          "walletEcommerceIndicator": {
            "$ref": "#/components/schemas/walletEcommerceIndicator"
          }
        },
        "required": [
          "personalAccountNumber",
          "expiryMonth",
          "expiryYear"
        ]
      },
      "googlePayDecryptedWallet": {
        "title": "googlePayDecryptedWallet",
        "description": "Google Pay wallet details after decrypting the token.",
        "allOf": [
          {
            "$ref": "#/components/schemas/paymentMethodRequestBase"
          },
          {
            "type": "object",
            "properties": {
              "gatewayMerchantId": {
                "nullable": true,
                "type": "string",
                "description": "Gateway unique store id",
                "example": "cagw123456"
              },
              "messageExpiration": {
                "type": "string",
                "nullable": true,
                "format": "date-time",
                "description": "Date and time at which the message expires. Integrators should reject any message that's expired.\n",
                "example": "2024-09-19T00:00:00Z"
              },
              "messageId": {
                "type": "string",
                "nullable": true,
                "description": "A unique ID that identifies the message in case it needs to be revoked or located at a later time."
              },
              "walletSource": {
                "type": "string",
                "description": "The type of the payment credential. Supported values are:\n  - CARD\n  - TOKENIZED_CARD\n",
                "enum": [
                  "CARD",
                  "TOKENIZED_CARD"
                ]
              },
              "cardBrand": {
                "type": "string",
                "description": "Card Network.",
                "enum": [
                  "MASTERCARD",
                  "VISA",
                  "AMERICAN_EXPRESS",
                  "INTERAC"
                ]
              },
              "walletIndicator": {
                "$ref": "#/components/schemas/walletIndicator"
              },
              "cardDetails": {
                "$ref": "#/components/schemas/googlePayDecryptedCardDetails"
              }
            },
            "required": [
              "walletSource",
              "cardBrand",
              "cardDetails",
              "walletIndicator"
            ]
          }
        ],
        "required": [
          "paymentMethodSource"
        ]
      },
      "paymentMethodRequest": {
        "title": "paymentMethodRequest",
        "description": "Payment method details",
        "oneOf": [
          {
            "$ref": "#/components/schemas/paymentMethodWithId"
          },
          {
            "$ref": "#/components/schemas/paymentMethodCard"
          },
          {
            "$ref": "#/components/schemas/paymentMethodTemporaryToken"
          },
          {
            "$ref": "#/components/schemas/paymentMethodPermanentToken"
          },
          {
            "$ref": "#/components/schemas/applePayDecryptedWallet"
          },
          {
            "$ref": "#/components/schemas/applePayEncryptedWallet"
          },
          {
            "$ref": "#/components/schemas/googlePayDecryptedWallet"
          },
          {
            "$ref": "#/components/schemas/googlePayEncryptedWallet"
          }
        ],
        "discriminator": {
          "propertyName": "paymentMethodSource",
          "mapping": {
            "PAYMENT_METHOD_ID": "#/components/schemas/paymentMethodWithId",
            "CARD": "#/components/schemas/paymentMethodCard",
            "TEMPORARY_TOKEN": "#/components/schemas/paymentMethodTemporaryToken",
            "PERMANENT_TOKEN": "#/components/schemas/paymentMethodPermanentToken",
            "APPLE_PAY_ENCRYPTED": "#/components/schemas/applePayEncryptedWallet",
            "APPLE_PAY_DECRYPTED": "#/components/schemas/applePayDecryptedWallet",
            "GOOGLE_PAY_ENCRYPTED": "#/components/schemas/googlePayEncryptedWallet",
            "GOOGLE_PAY_DECRYPTED": "#/components/schemas/googlePayDecryptedWallet"
          }
        },
        "required": [
          "paymentMethodSource"
        ]
      },
      "threeDSecureMessageCategory": {
        "type": "string",
        "description": "Identifies the category of the message for a specific use case.",
        "enum": [
          "PAYMENT",
          "NON_PAYMENT"
        ],
        "example": "PAYMENT"
      },
      "threeDSecureDeviceChannel": {
        "type": "string",
        "description": "Indicates the type of channel interface being used to initiate the transaction.",
        "enum": [
          "BROWSER",
          "THREE_D_SECURE_REQUESTOR_INITIATED"
        ],
        "example": "BROWSER"
      },
      "threeDSecureRequestType": {
        "type": "string",
        "nullable": true,
        "description": "Type of payment that triggered the verification.\n  - **CARDHOLDER**: Cardholder initiated payment.\n  - **RECURRING**: Recurring payment.\n",
        "enum": [
          "CARDHOLDER",
          "RECURRING",
          null
        ],
        "example": "CARDHOLDER"
      },
      "threeDSecureRecurringFrequency": {
        "type": "integer",
        "format": "int32",
        "description": "Indicates the minimum number of days between authorisations.",
        "minimum": 1,
        "maximum": 9999,
        "example": 1,
        "nullable": true
      },
      "threeDSecureRecurringExpiry": {
        "type": "string",
        "description": "Date after which no further authorisations shall be performed. This is a required field for recurring transactions, we suggest setting it at a reasonably high value if you don't have a defined expiry date.",
        "format": "date",
        "example": "2019-07-30",
        "nullable": true
      },
      "threeDSecureRequestorInitiatedIndicator": {
        "type": "string",
        "description": "Indicates the type of 3RI request. This data element provides additional information to the ACS to determine the best approach for handing a 3RI request.",
        "enum": [
          "RECURRING_TRANSACTION",
          "INSTALMENT_TRANSACTION",
          "ADD_CARD",
          "MAINTAIN_CARD_INFORMATION",
          "ACCOUNT_VERIFICATION",
          "SPLIT_DELAYED_SHIPMENT",
          "TOP_UP",
          "MAIL_ORDER",
          "TELEPHONE_ORDER",
          "WHITELIST_STATUS_CHECK",
          "OTHER_PAYMENT",
          null
        ],
        "example": "RECURRING_TRANSACTION",
        "nullable": true
      },
      "threeDSecurePriorAuthenticationData": {
        "type": "string",
        "description": "Data that documents and supports a specific authentication process. In the current version of the specification this data element is not defined in detail, however the intention is that for each 3DS Requestor Authentication Method, this field carry data that the ACS can use to verify the authentication process. In future versions of the specification, these details are expected to be included.",
        "maxLength": 2048,
        "example": "12345678",
        "nullable": true
      },
      "threeDSecurePriorAuthenticationMethod": {
        "type": "string",
        "description": "Mechanism used by the Cardholder to previously authenticate to the 3DS Requestor.",
        "enum": [
          "FRICTIONLESS_AUTHENTICATION_OCCURRED_BY_ACS",
          "CARDHOLDER_CHALLENGE_OCCURRED_BY_ACS",
          "AVS_VERIFIED",
          "OTHER_ISSUER_METHODS",
          null
        ],
        "example": "AVS_VERIFIED",
        "nullable": true
      },
      "threeDSecurePriorAuthenticationTimestamp": {
        "type": "string",
        "description": "Date and time in UTC of the prior cardholder authentication.",
        "format": "date-time",
        "example": "2019-07-30T06:43:40.252Z",
        "nullable": true
      },
      "threeDSecurePriorAuthenticationReference": {
        "type": "string",
        "description": "This data element provides additional information to the ACS to determine the best approach for handing a request.",
        "maxLength": 36,
        "example": "12345678",
        "nullable": true
      },
      "threeDSecurePriorAuthenticationInformation": {
        "type": "object",
        "description": "Information about how the 3DS Requestor authenticated the cardholder as part of a previous 3DS transaction.",
        "nullable": true,
        "properties": {
          "threeDSecurePriorAuthenticationData": {
            "$ref": "#/components/schemas/threeDSecurePriorAuthenticationData"
          },
          "threeDSecurePriorAuthenticationMethod": {
            "$ref": "#/components/schemas/threeDSecurePriorAuthenticationMethod"
          },
          "threeDSecurePriorAuthenticationTimestamp": {
            "$ref": "#/components/schemas/threeDSecurePriorAuthenticationTimestamp"
          },
          "threeDSecurePriorAuthenticationReference": {
            "$ref": "#/components/schemas/threeDSecurePriorAuthenticationReference"
          }
        }
      },
      "threeDSecureCompletionIndicator": {
        "type": "string",
        "description": "Indicates whether 3DS Card Lookup was successfully completed.  A successful Card Lookup increases the chances of a frictionless card authentication.\n  - **SUCCESS**: Successfully completed.\n  - **FAILURE**: 3DS Card Lookup attempted, but failed.\n  - **UNAVAILABLE**: Unavailable or not attempted.\n",
        "enum": [
          "SUCCESS",
          "FAILURE",
          "UNAVAILABLE",
          null
        ],
        "example": "SUCCESS",
        "nullable": true
      },
      "threeDSecureChallengeRequested": {
        "type": "string",
        "description": "Indicates whether a browser-based challenge is requested for this transaction. Standard is 'No Preference'",
        "enum": [
          "NO_PREFERENCE",
          "NO_CHALLENGE_REQUESTED",
          "CHALLENGE_REQUESTED_MANDATE",
          "CHALLENGE_REQUESTED_PREFERENCE",
          "NO_CHALLENGE_REQUESTED_RISK_ANALYSIS_PERFORMED",
          "NO_CHALLENGE_REQUESTED_DATA_ONLY",
          "NO_CHALLENGE_REQUESTED_AUTHENTICATION_PERFORMED",
          "NO_CHALLENGE_REQUESTED_WHITELIST_EXEMPTION",
          "CHALLENGE_REQUESTED_WHITELIST_PROMPT"
        ],
        "example": "NO_PREFERENCE",
        "default": "NO_PREFERENCE"
      },
      "threeDSecureChallengeWindowSize": {
        "type": "string",
        "description": "Relates to the rendering of the challenge within the browser.\n  - **X_SMALL**: 250 x 400\n  - **SMALL**: 390 x 400\n  - **MEDIUM**: 500 x 600\n  - **LARGE**: 600 x 400\n  - **FULL_SCREEN**: Full Screen\n",
        "enum": [
          "X_SMALL",
          "SMALL",
          "MEDIUM",
          "LARGE",
          "FULL_SCREEN",
          null
        ],
        "example": "FULL_SCREEN",
        "nullable": true
      },
      "browserUserAgent": {
        "type": "string",
        "description": "Exact content of the HTTP user-agent header.\nNote, when total length exceeds 2048 characters, truncate the excess portion.\n",
        "maxLength": 2048,
        "example": "Mozilla/5.0 (Linux; {Android Version}; {Build Tag etc.})",
        "nullable": true
      },
      "browserJavaEnabled": {
        "type": "boolean",
        "description": "Indicates whether Java is enabled in the browser",
        "example": true
      },
      "browserJavascriptEnabled": {
        "type": "boolean",
        "description": "Indicates whether Javascript is enabled in the browser",
        "example": true
      },
      "browserScreenHeight": {
        "type": "integer",
        "format": "int32",
        "description": "Defines the pixel height of the cardholder's screen.",
        "minimum": 0,
        "maximum": 999999,
        "example": 1080
      },
      "browserScreenWidth": {
        "type": "integer",
        "format": "int32",
        "description": "Defines the pixel width of the cardholder's screen.",
        "minimum": 0,
        "maximum": 999999,
        "example": 1920
      },
      "authenticationRequest": {
        "title": "authenticationRequest",
        "description": "Use the 3DS Authentication request to start the validation process of the card and cardholder identity. This request supports all 3DS authentication methods, including 3DS Requestor Initiated (3RI) and Decoupled Authentication. The fields device_channel and message_category control the type of 3DS request made. To perform a standard 3DS Authentication with a cardholder browser experience, send device_channel = 02 for BRW. The result of this request determines whether the card supports 3DS features and, if supported, whether the transaction uses a frictionless or challenge flow. To perform a 3DS Requestor Initiated Authentication without a cardholder browser experience, send device_channel = 03 for 3RI. Any fields related to the browser’s challenge prompt are no longer required, but other conditional fields for 3RI become mandatory.",
        "type": "object",
        "properties": {
          "idempotencyKey": {
            "$ref": "#/components/schemas/idempotencyKey"
          },
          "cardLookupId": {
            "nullable": true,
            "type": "string",
            "description": "Used to identify API resources which may be required for future follow-on transactions; i.e. Refunds, Corrections, Completions, Reversals, etc.",
            "pattern": "^[A-Za-z]{2}\\d{2}[A-Za-z0-9]{26}$",
            "minLength": 30,
            "maxLength": 30,
            "example": "pi0105ARZ3NDEKTSV4RRFFQ69G5FAV"
          },
          "orderId": {
            "$ref": "#/components/schemas/orderId"
          },
          "amount": {
            "$ref": "#/components/schemas/money"
          },
          "cardholderName": {
            "$ref": "#/components/schemas/cardholderName"
          },
          "cardholderEmail": {
            "$ref": "#/components/schemas/email"
          },
          "cardholderPhoneNumber": {
            "$ref": "#/components/schemas/phoneNumber"
          },
          "shippingAddress": {
            "nullable": true,
            "type": "object",
            "description": "The postal address including street, town/city, province, and postal code.\nOptionally an unit number can be provided.\n",
            "properties": {
              "unitNumber": {
                "nullable": true,
                "type": "string",
                "description": "Unit number",
                "minLength": 1,
                "maxLength": 19,
                "example": "123A"
              },
              "streetNumber": {
                "nullable": true,
                "type": "string",
                "description": "Street number",
                "minLength": 1,
                "maxLength": 19,
                "example": "3300"
              },
              "streetName": {
                "nullable": true,
                "type": "string",
                "description": "Street name",
                "minLength": 1,
                "maxLength": 100,
                "example": "Bloor"
              },
              "city": {
                "nullable": true,
                "type": "string",
                "description": "Identifies the city.\n",
                "minLength": 1,
                "maxLength": 50,
                "example": "Toronto"
              },
              "province": {
                "nullable": true,
                "type": "string",
                "description": "Province or state ISO 3166-2 code ",
                "minLength": 1,
                "maxLength": 3,
                "format": "iso-3166-2",
                "example": "ON"
              },
              "postalCode": {
                "nullable": true,
                "type": "string",
                "description": "Postal or zip code",
                "minLength": 1,
                "maxLength": 30,
                "example": "M8X 2X2"
              },
              "country": {
                "nullable": true,
                "type": "string",
                "description": "Provides the two letter country code according the ISO 3166-1 alpha-2 standard. \nFor a complete list of country codes, visit: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2.\n",
                "minLength": 2,
                "maxLength": 2,
                "example": "CA",
                "format": "iso-3166"
              }
            },
            "example": {
              "unitNumber": "123A",
              "streetNumber": "3300",
              "streetName": "Bloor Street West",
              "city": "Toronto",
              "province": "ON",
              "postalCode": "M8X 2X2",
              "country": "CA"
            }
          },
          "billingAddress": {
            "$ref": "#/components/schemas/threeDSecureAuthenticationBillingAddress"
          },
          "paymentMethod": {
            "$ref": "#/components/schemas/paymentMethodRequest"
          },
          "threeDSecureMessageCategory": {
            "$ref": "#/components/schemas/threeDSecureMessageCategory"
          },
          "threeDSecureDeviceChannel": {
            "$ref": "#/components/schemas/threeDSecureDeviceChannel"
          },
          "threeDSecureRequestType": {
            "$ref": "#/components/schemas/threeDSecureRequestType"
          },
          "threeDSecureRecurringFrequency": {
            "$ref": "#/components/schemas/threeDSecureRecurringFrequency"
          },
          "threeDSecureRecurringExpiry": {
            "$ref": "#/components/schemas/threeDSecureRecurringExpiry"
          },
          "threeDSecureRequestorInitiatedIndicator": {
            "$ref": "#/components/schemas/threeDSecureRequestorInitiatedIndicator"
          },
          "threeDSecurePriorAuthenticationInformation": {
            "$ref": "#/components/schemas/threeDSecurePriorAuthenticationInformation"
          },
          "threeDSecureNotificationUrl": {
            "nullable": true,
            "type": "string",
            "description": "URL-encoded, fully qualified callback URL that receives the response or error message. \n\nNote: Request with URL that is not URL-encoded will be rejected for security reasons.\n\nExample (URL-encoded): https%3A%2F%2Fmerchant.example.com%2Fcallback%3ForderId%3D123\n",
            "minLength": 1,
            "maxLength": 256,
            "example": "https%3A%2F%2Fdeveloper.moneris.com%2F"
          },
          "threeDSecureCompletionIndicator": {
            "$ref": "#/components/schemas/threeDSecureCompletionIndicator"
          },
          "threeDSecureChallengeRequested": {
            "$ref": "#/components/schemas/threeDSecureChallengeRequested"
          },
          "threeDSecureChallengeWindowSize": {
            "$ref": "#/components/schemas/threeDSecureChallengeWindowSize"
          },
          "browserIpAddress": {
            "description": "IP address the browser is connecting from.",
            "type": "string",
            "format": "ipv4",
            "example": "104.75.173.179",
            "nullable": true
          },
          "browserUserAgent": {
            "$ref": "#/components/schemas/browserUserAgent"
          },
          "browserJavaEnabled": {
            "$ref": "#/components/schemas/browserJavaEnabled"
          },
          "browserJavascriptEnabled": {
            "$ref": "#/components/schemas/browserJavascriptEnabled"
          },
          "browserScreenHeight": {
            "$ref": "#/components/schemas/browserScreenHeight"
          },
          "browserScreenWidth": {
            "$ref": "#/components/schemas/browserScreenWidth"
          },
          "browserLanguage": {
            "nullable": true,
            "type": "string",
            "format": "iso-639",
            "description": "Provides the two letter language code according the ISO 639-1 standard. \n\nFor a complete list of language codes, visit: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes.\n",
            "minLength": 2,
            "maxLength": 2,
            "example": "en"
          }
        },
        "required": [
          "amount",
          "billingAddress",
          "browserIpAddress",
          "browserScreenHeight",
          "browserScreenWidth",
          "cardholderEmail",
          "cardholderName",
          "cardholderPhoneNumber",
          "idempotencyKey",
          "threeDSecureDeviceChannel",
          "threeDSecureMessageCategory"
        ]
      },
      "threeDSecureMessageType": {
        "type": "string",
        "description": "Indicates the response type in 3DS flow.",
        "nullable": true,
        "enum": [
          "AUTHENTICATION_RESPONSE_MESSAGE",
          "AUTHENTICATION_REQUEST_MESSAGE",
          "PREPARATION_RESPONSE_MESSAGE",
          "PREPARATION_REQUEST_MESSAGE",
          "CHALLENGE_RESPONSE_MESSAGE",
          "CHALLENGE_REQUEST_MESSAGE",
          "RESULTS_REQUEST_MESSAGE",
          "RESULTS_RESPONSE_MESSAGE",
          "ERROR_MESSAGE",
          null
        ],
        "example": "CHALLENGE_RESPONSE_MESSAGE"
      },
      "threeDSecureTransactionStatus": {
        "type": "string",
        "description": "Indicates the Transaction result.  For more information about this field, please review https://docs.3dsecure.io/3dsv2/specification_220.html#attr-ARes-transStatus\n  - **AUTHENTICATED**: Authentication/ Account Verification Successful.\n  - **AUTHENTICATION_ATTEMPTED**: Attempts Processing Performed; Not Authenticated/Verified , but a proof of attempted authentication/verification is provided.\n  - **CHALLENGE_AUTHENTICATION_REQUIRED**: Challenge Required; Additional authentication is required using the `challengeUrl` and `challengeData`.\n  - **CHALLENGE_DECOUPLED_AUTHENTICATION_CONFIRMED**: Challenge Required; Decoupled Authentication confirmed. \n  - **TECHNICAL_ISSUE**: Authentication/ Account Verification Could Not Be Performed; Technical or other problem.\n  - **NOT_AUTHENTICATED**: Not Authenticated /Account Not Verified; Transaction denied.\n  - **REJECTED**: Authentication/ Account Verification Rejected; Issuer is rejecting authentication/verification and request that authorisation not be attempted.\n  - **CHALLENGE_PREFERENCE_ACKNOWLEDGED**: Informational Only; 3DS Requestor challenge preference acknowledged.\n",
        "enum": [
          "AUTHENTICATED",
          "AUTHENTICATION_ATTEMPTED",
          "CHALLENGE_AUTHENTICATION_REQUIRED",
          "CHALLENGE_DECOUPLED_AUTHENTICATION_CONFIRMED",
          "TECHNICAL_ISSUE",
          "NOT_AUTHENTICATED",
          "REJECTED",
          "CHALLENGE_PREFERENCE_ACKNOWLEDGED"
        ]
      },
      "threeDSecureTransactionStatusReason": {
        "type": "string",
        "nullable": true,
        "description": "Provides information on why the Transaction Status field has the specified value.\n",
        "example": "01 - Card authentication failed"
      },
      "threeDSecureECommerceIndicator": {
        "type": "string",
        "description": "The ecommerce indicator (ECI) specifies the level of security that was used to obtain the cardholder's payment data.  It is sent by the merchant and returned by the issuer. When returned in the response, it can be different from the value sent in the request in case transaction was downgraded by the issuer.\n",
        "enum": [
          "MAIL_TELEPHONE_ORDER_SINGLE",
          "MAIL_TELEPHONE_ORDER_RECURRING",
          "MAIL_TELEPHONE_ORDER_INSTALMENT",
          "MAIL_TELEPHONE_ORDER_UNKNOWN",
          "AUTHENTICATED_ECOMMERCE",
          "NON_AUTHENTICATED_ECOMMERCE",
          "SSL_MERCHANT",
          "NON_PAYMENT_AUTHENTICATED",
          "NON_PAYMENT_NON_AUTHENTICATED",
          "UNKNOWN"
        ],
        "example": "AUTHENTICATED_ECOMMERCE",
        "default": "SSL_MERCHANT"
      },
      "threeDSecureChallengeUrl": {
        "type": "string",
        "description": "If the transStatus is “C” this field will be populated with the URL to POST the challengeData to create the cardholder challenge screen",
        "format": "uri",
        "minLength": 1,
        "maxLength": 2048,
        "example": "https://developer.moneris.com/",
        "nullable": true
      },
      "threeDSecureChallengeData": {
        "type": "string",
        "description": "String that must be POSTed to the Challenge URL to create challenge screen",
        "minLength": 1,
        "maxLength": 2048,
        "nullable": true
      },
      "threeDSecureAuthenticationValue": {
        "type": "string",
        "description": "**CAVV**: Cardholder Authentication Verification Value\nProvided during a payment request to authenticate the card user.\n",
        "maxLength": 50,
        "example": "00000109260000719349",
        "nullable": true
      },
      "threeDSecureChallengeCompletionIndicator": {
        "type": "string",
        "nullable": true,
        "description": "Indicates if Challenge was completed. This is returned in CAVV Lookup Request.\n",
        "enum": [
          "YES",
          "NO",
          null
        ]
      },
      "cardBrand": {
        "type": "string",
        "description": "Displays the card brand name associated with the card type.",
        "enum": [
          "MASTERCARD",
          "VISA",
          "AMERICAN_EXPRESS",
          "JCB",
          "DISCOVER",
          "INTERAC",
          "UNIONPAY",
          "GIFT_MONERIS",
          "GIFT_DATACANDY",
          "GIFT_GIVEX",
          null
        ],
        "nullable": true,
        "example": "MASTERCARD"
      },
      "cardFingerprint": {
        "type": "string",
        "description": "Unique card identifier. \n\nFingerprinting randomly assigns identfiers for cards that share the same Primary Account Number (PAN) to easily identify when multiple payments methods are attached to the same underlying card, and assists merchants identify individual customers across various channels; i.e.  loyalty programs.\n",
        "maxLength": 255,
        "example": "1Q2W3E4r5t6rfwewerwewrrw",
        "nullable": true
      },
      "issuer": {
        "type": "string",
        "description": "Card issuer.",
        "minLength": 1,
        "maxLength": 100,
        "example": "RBC",
        "nullable": true
      },
      "cardInformation": {
        "type": "object",
        "description": "Information about the card being used for the transaction",
        "properties": {
          "bankIdentificationNumber": {
            "nullable": true,
            "type": "string",
            "description": "**BIN**: Bank Identification Number \n\nConsists of the first six to eight digits of the Primary Account Number (PAN) and identifies the relevant payment network and the specific payment issuing institution.\n",
            "minLength": 6,
            "maxLength": 8,
            "example": "123456"
          },
          "lastFour": {
            "nullable": true,
            "type": "string",
            "description": "Last 4 digits of the card.",
            "minLength": 4,
            "maxLength": 4,
            "example": "1234"
          },
          "expiryMonth": {
            "$ref": "#/components/schemas/expiryMonth"
          },
          "expiryYear": {
            "$ref": "#/components/schemas/expiryYear"
          },
          "cardBrand": {
            "$ref": "#/components/schemas/cardBrand"
          },
          "cardType": {
            "nullable": true,
            "type": "string",
            "description": "Specifies the intended card use; i.e. debit or credit.",
            "enum": [
              "CREDIT",
              "DEBIT",
              "DOMESTIC_DEBIT",
              "PREPAID_RELOADABLE",
              "PREPAID_NON_RELOADABLE",
              "UNKNOWN",
              "GIFT",
              "LOYALTY",
              "FLEET",
              "CORPORATE"
            ],
            "example": "CREDIT"
          },
          "cardFingerprint": {
            "$ref": "#/components/schemas/cardFingerprint"
          },
          "issuer": {
            "$ref": "#/components/schemas/issuer"
          }
        }
      },
      "paymentAccountReference": {
        "type": "string",
        "nullable": true,
        "description": "Used to link Primary Account Number (PAN) based transactions and transactions on associated payment tokens without using the PAN as the linking mechanism.\n",
        "minLength": 1,
        "maxLength": 29,
        "example": "11112222333344445555666677778"
      },
      "storePaymentMethod": {
        "description": "Store this payment method created through this payment for future use. \n- DO_NOT_STORE: Payment method will not be stored.\n- CARDHOLDER_INITIATED: Payment method to be stored and can only re-used with cardholder's consent. Limited to store, pre-authorisation, and card validations.\"\n- MERCHANT_INITIATED: Payment method to be stored and can be reused without the cardholder's consent. For example, subscriptions.\n",
        "type": "string",
        "default": "DO_NOT_STORE",
        "enum": [
          "DO_NOT_STORE",
          "CARDHOLDER_INITIATED",
          "MERCHANT_INITIATED"
        ]
      },
      "cardPaymentMethodInformation": {
        "title": "Card Payment Method Information",
        "description": "Details about the card used in the payment method.",
        "type": "object",
        "properties": {
          "paymentMethodType": {
            "type": "string",
            "description": "The type of Payment Method being used. It can be:\n  - Card.\n",
            "enum": [
              "CARD"
            ]
          },
          "paymentMethodSource": {
            "type": "string",
            "description": "The source of Payment Method being used. It can be:\n  - The Id of a Payment Method already created.\n  - Permanent Token.\n  - Temporary Token.\n  - Card.\n  - E-Wallet.\n",
            "enum": [
              "CARD",
              "TEMPORARY_TOKEN",
              "PERMANENT_TOKEN",
              "APPLE_PAY_ENCRYPTED",
              "APPLE_PAY_DECRYPTED",
              "GOOGLE_PAY_ENCRYPTED",
              "GOOGLE_PAY_DECRYPTED"
            ],
            "example": "TEMPORARY_TOKEN"
          },
          "cardInformation": {
            "$ref": "#/components/schemas/cardInformation"
          },
          "paymentAccountReference": {
            "$ref": "#/components/schemas/paymentAccountReference"
          },
          "storePaymentMethod": {
            "$ref": "#/components/schemas/storePaymentMethod"
          }
        },
        "required": [
          "paymentMethodType",
          "paymentMethodSource",
          "cardInformation",
          "storePaymentMethod"
        ]
      },
      "createdAt": {
        "description": "Time at which the object was created",
        "type": "string",
        "format": "date-time",
        "example": "2019-07-30T06:43:40.252Z"
      },
      "modifiedAt": {
        "nullable": true,
        "description": "Time at which the object was modified",
        "type": "string",
        "format": "date-time",
        "example": "2019-07-30T06:43:40.252Z"
      },
      "cardPaymentMethod": {
        "title": "cardPaymentMethod",
        "description": "Card Payment method information response object",
        "type": "object",
        "properties": {
          "paymentMethodId": {
            "$ref": "#/components/schemas/paymentMethodId"
          },
          "merchantId": {
            "$ref": "#/components/schemas/merchantId"
          },
          "cardholderInformation": {
            "$ref": "#/components/schemas/cardholderInformation"
          },
          "contactDetails": {
            "$ref": "#/components/schemas/contactDetails"
          },
          "billingAddress": {
            "nullable": true,
            "type": "object",
            "description": "The postal address including street, town/city, province, and postal code.\nOptionally an unit number can be provided.\n",
            "properties": {
              "unitNumber": {
                "nullable": true,
                "type": "string",
                "description": "Unit number",
                "minLength": 1,
                "maxLength": 19,
                "example": "123A"
              },
              "streetNumber": {
                "nullable": true,
                "type": "string",
                "description": "Street number",
                "minLength": 1,
                "maxLength": 19,
                "example": "3300"
              },
              "streetName": {
                "nullable": true,
                "type": "string",
                "description": "Street name",
                "minLength": 1,
                "maxLength": 100,
                "example": "Bloor"
              },
              "city": {
                "nullable": true,
                "type": "string",
                "description": "Identifies the city.\n",
                "minLength": 1,
                "maxLength": 50,
                "example": "Toronto"
              },
              "province": {
                "nullable": true,
                "type": "string",
                "description": "Province or state ISO 3166-2 code ",
                "minLength": 1,
                "maxLength": 3,
                "format": "iso-3166-2",
                "example": "ON"
              },
              "postalCode": {
                "nullable": true,
                "type": "string",
                "description": "Postal or zip code",
                "minLength": 1,
                "maxLength": 30,
                "example": "M8X 2X2"
              },
              "country": {
                "nullable": true,
                "type": "string",
                "description": "Provides the two letter country code according the ISO 3166-1 alpha-2 standard. \nFor a complete list of country codes, visit: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2.\n",
                "minLength": 2,
                "maxLength": 2,
                "example": "CA",
                "format": "iso-3166"
              }
            },
            "example": {
              "unitNumber": "123A",
              "streetNumber": "3300",
              "streetName": "Bloor Street West",
              "city": "Toronto",
              "province": "ON",
              "postalCode": "M8X 2X2",
              "country": "CA"
            }
          },
          "paymentMethodInformation": {
            "$ref": "#/components/schemas/cardPaymentMethodInformation"
          },
          "createdAt": {
            "$ref": "#/components/schemas/createdAt"
          },
          "modifiedAt": {
            "$ref": "#/components/schemas/modifiedAt"
          },
          "customData": {
            "$ref": "#/components/schemas/customData"
          }
        },
        "required": [
          "paymentMethodId",
          "merchantId",
          "paymentMethodInformation",
          "createdAt"
        ]
      },
      "threeDSecureCardholderInformation": {
        "nullable": true,
        "type": "string",
        "description": "Text provided by the ACS/Issuer to Cardholder during a Frictionless or Decoupled transaction. The Issuer can provide information to Cardholder.",
        "maxLength": 128,
        "example": "Additional authentication is needed for this transaction, please contact (Issuer Name) at xxx-xxx-xxxx."
      },
      "threeDSecureVersion": {
        "type": "string",
        "description": "Required when sending a 3-D Secure version 2.0+ transaction. If no value is provided, default to V1.",
        "maxLength": 10,
        "nullable": true,
        "example": "2.2"
      },
      "threeDSecureAuthenticationType": {
        "type": "string",
        "nullable": true,
        "description": "Indicates the type of authentication method the Issuer will use to challenge the Cardholder, whether in the ARes message or what was used by the ACS when in the RReq message.",
        "enum": [
          "STATIC",
          "DYNAMIC",
          "OUT_OF_BAND",
          "DECOUPLED",
          null
        ],
        "example": "DYNAMIC"
      },
      "threeDSecureAuthenticationTimestamp": {
        "type": "string",
        "description": "Date and time in UTC of the cardholder authentication.",
        "format": "date-time",
        "example": "2019-07-30T06:43:40.252Z",
        "nullable": true
      },
      "threeDSecureAuthentication": {
        "title": "authenticationResponse",
        "type": "object",
        "properties": {
          "threeDSecureAuthenticationId": {
            "$ref": "#/components/schemas/resourceId"
          },
          "cardLookupId": {
            "nullable": true,
            "type": "string",
            "description": "Used to identify API resources which may be required for future follow-on transactions; i.e. Refunds, Corrections, Completions, Reversals, etc.",
            "pattern": "^[A-Za-z]{2}\\d{2}[A-Za-z0-9]{26}$",
            "minLength": 30,
            "maxLength": 30,
            "example": "pi0105ARZ3NDEKTSV4RRFFQ69G5FAV"
          },
          "merchantId": {
            "$ref": "#/components/schemas/merchantId"
          },
          "orderId": {
            "$ref": "#/components/schemas/orderId"
          },
          "threeDSecureMessageType": {
            "$ref": "#/components/schemas/threeDSecureMessageType"
          },
          "threeDSecureTransactionStatus": {
            "$ref": "#/components/schemas/threeDSecureTransactionStatus"
          },
          "threeDSecureTransactionStatusReason": {
            "$ref": "#/components/schemas/threeDSecureTransactionStatusReason"
          },
          "ecommerceIndicator": {
            "$ref": "#/components/schemas/threeDSecureECommerceIndicator"
          },
          "threeDSecureChallengeUrl": {
            "$ref": "#/components/schemas/threeDSecureChallengeUrl"
          },
          "threeDSecureChallengeData": {
            "$ref": "#/components/schemas/threeDSecureChallengeData"
          },
          "threeDSecureAuthenticationValue": {
            "$ref": "#/components/schemas/threeDSecureAuthenticationValue"
          },
          "threeDSecureChallengeCompletionIndicator": {
            "$ref": "#/components/schemas/threeDSecureChallengeCompletionIndicator"
          },
          "threeDSecureServerTransactionId": {
            "nullable": true,
            "type": "string",
            "description": "Indicates information required when sending a version 3-D Secure 2.0+ transaction. \n\nThis data is obtained from a CAVV Lookup Request or MPI 3DS Authentication Request transaction.\n",
            "format": "uuid",
            "example": "ad9b0eda-bf9b-4288-b188-9467993603e1"
          },
          "threeDSecureDirectoryServerTransactionId": {
            "nullable": true,
            "type": "string",
            "description": "Universally unique transaction identifier assigned by the 3DS Directory Server (DS) to identify a single transaction.",
            "format": "uuid",
            "example": "ad9b0eda-bf9b-4288-b188-9467993603e1"
          },
          "threeDSecureAccessControlServerTransactionId": {
            "nullable": true,
            "type": "string",
            "description": "Required if sending a version 3-D Secure 2.0+ transaction. Data is obtained from a Cavv Lookup Request or MPI 3DS Authentication Request transaction",
            "format": "uuid",
            "example": "ad9b0eda-bf9b-4288-b188-9467993603e1"
          },
          "paymentMethod": {
            "$ref": "#/components/schemas/cardPaymentMethod"
          },
          "threeDSecureCardholderInformation": {
            "$ref": "#/components/schemas/threeDSecureCardholderInformation"
          },
          "threeDSecureVersion": {
            "$ref": "#/components/schemas/threeDSecureVersion"
          },
          "threeDSecureAuthenticationType": {
            "$ref": "#/components/schemas/threeDSecureAuthenticationType"
          },
          "threeDSecureAuthenticationTimestamp": {
            "$ref": "#/components/schemas/threeDSecureAuthenticationTimestamp"
          }
        },
        "required": [
          "threeDSecureAuthenticationId",
          "merchantId",
          "threeDSecureTransactionStatus",
          "ecommerceIndicator",
          "paymentMethod",
          "threeDSecureVersion"
        ]
      },
      "parameterError": {
        "title": "Parameter error",
        "description": "Request property or header related error.",
        "type": "object",
        "properties": {
          "parameterName": {
            "type": "string",
            "description": "Property or header name. Can contain nested path separated by '.'",
            "example": "address.postalCode"
          },
          "parameterValue": {
            "type": "string",
            "nullable": true,
            "description": "Property or header value string representation.",
            "example": "MAP3J8"
          },
          "reasonCode": {
            "type": "string",
            "description": "Reason that triggered the error.",
            "enum": [
              "INVALID_FORMAT",
              "REQUIRED_FIELD",
              "INVALID_VALUE"
            ],
            "example": "INVALID_FORMAT"
          },
          "errorMessage": {
            "type": "string",
            "description": "Human readable description of the error.",
            "nullable": true,
            "example": "String 'MAP3J8' does not match the postal code pattern."
          }
        },
        "required": [
          "parameterName",
          "reasonCode"
        ]
      },
      "error": {
        "description": "Error response details.",
        "properties": {
          "type": {
            "description": "A URI reference that identifies the problem type.  Ideally it should be a stable URL to the documentation of the details about this type of error but it also can be a URN.  If nothing can be provided, a \"about:blank\" value is returned.\n",
            "type": "string",
            "format": "uri",
            "example": "https://api-developer.moneris.com/responsehandling"
          },
          "title": {
            "description": "A short, human-readable summary of the problem type.   It SHOULD NOT change from occurrence to occurrence of the problem, except for purposes of localization\n",
            "type": "string",
            "example": "INSUFFICIENT_FUNDS",
            "nullable": true
          },
          "status": {
            "description": "it conveys the HTTP status code used for the convenience of the consumer.\n",
            "type": "integer",
            "format": "int32",
            "minimum": 100,
            "maximum": 505,
            "nullable": true
          },
          "detail": {
            "description": "A human-readable message providing more details about the error. For card errors, these messages can be shown to your users.\n",
            "type": "string",
            "example": "Funds are insufficient to execute the operation.",
            "nullable": true
          },
          "instance": {
            "description": "A URI reference that identifies the specific occurrence of the problem. Typically, this resolves to a resource that might include more details about the problem.\n",
            "type": "string",
            "example": "/payments/12f3e0a8-1d68-2b86-dd30-4ca51bb66e10",
            "format": "uri-reference",
            "nullable": true
          },
          "category": {
            "description": "The type of error returned. \n - `API_ERROR`: This occurs due to an intermittent issue.  \n - `IDEMPOTENCY_ERROR`: The idempotency key has already been used.\n - `INVALID_REQUEST_ERROR`: The data provided in the request is invalid.\n - `DECLINED_ERROR`: Transaction was declined by the issuer.\n - `UNAUTHORIZED_ERROR`: Caller not authenticated, or not allowed to execute the current operation.\n - `INTERNAL_SERVER_ERROR`: An internal issue with our servers has occured.\n",
            "enum": [
              "API_ERROR",
              "IDEMPOTENCY_ERROR",
              "INVALID_REQUEST_ERROR",
              "DECLINED_ERROR",
              "UNAUTHORIZED_ERROR",
              "INTERNAL_SERVER_ERROR",
              null
            ],
            "type": "string",
            "nullable": true,
            "example": "DECLINED_ERROR"
          },
          "errors": {
            "type": "array",
            "description": "List of validation errors when error category is INVALID_REQUEST_ERROR.",
            "items": {
              "type": "object",
              "$ref": "#/components/schemas/parameterError"
            },
            "example": [
              {
                "parameterName": "address.postalCode",
                "parameterValue": "MAP3J8",
                "errorMessage": "address.Postal code does not match regular expression",
                "reasonCode": "INVALID_FORMAT"
              }
            ]
          }
        },
        "title": "API Error",
        "type": "object",
        "required": [
          "type"
        ]
      }
    },
    "parameters": {
      "apiVersion": {
        "in": "header",
        "name": "Api-Version",
        "required": true,
        "example": "2024-09-17",
        "description": "The endpoint's API Version. \n\nMust be provided through the headers section. \n",
        "schema": {
          "$ref": "#/components/schemas/apiVersion"
        }
      },
      "correlationId": {
        "in": "header",
        "name": "X-Correlation-Id",
        "example": "06f1e47b-a1b5-4902-be9c-bccc506127c4",
        "description": "Correlates a series of requests within the same flow.\n\nNote: This ID is generated by Moneris with every request or response, if it doesn't exist. \nMerchants are to echo back the value with every request that is part of the call flow.\"\n",
        "required": false,
        "schema": {
          "type": "string",
          "example": "06f1e47b-a1b5-4902-be9c-bccc506127c4"
        }
      },
      "merchantId": {
        "in": "header",
        "name": "X-Merchant-Id",
        "example": "0123456789101",
        "description": "Thirteen character identification code. \n\nNote: This code is provided by Moneris and is required to identify the Merchant executing the transaction.\n",
        "required": true,
        "schema": {
          "$ref": "#/components/schemas/merchantId"
        }
      }
    },
    "examples": {
      "threeDSecureBrowserChannelWithPaymentMethodId": {
        "summary": "3D-Secure Browser channel, with Payment Method Id",
        "value": {
          "idempotencyKey": "5d8f812e-9969-4885-85bb-d03948eccac2",
          "amount": {
            "amount": 16000,
            "currency": "CAD"
          },
          "browserIpAddress": "104.75.173.179",
          "browserScreenHeight": 1080,
          "browserScreenWidth": 1920,
          "cardholderEmail": "moneris@moneris.com",
          "cardholderName": "John Doe",
          "cardholderPhoneNumber": "+18663197450",
          "threeDSecureDeviceChannel": "BROWSER",
          "threeDSecureMessageCategory": "PAYMENT",
          "billingAddress": {
            "unitNumber": "123A",
            "streetNumber": "3300",
            "streetName": "Bloor",
            "city": "Toronto",
            "province": "ON",
            "postalCode": "M8X 2X2",
            "country": "CA"
          },
          "paymentMethod": {
            "paymentMethodSource": "PAYMENT_METHOD_ID",
            "paymentMethodId": "pm0001J7HZZHPB20VCHWN8PEEPXZYH"
          },
          "threeDSecureRequestType": "CARDHOLDER",
          "threeDSecureNotificationUrl": "https%3A%2F%2Fputsreq.com%2FnMhp2fzHDgfzSs4GiNTD",
          "threeDSecureCompletionIndicator": "SUCCESS",
          "threeDSecureChallengeWindowSize": "FULL_SCREEN",
          "browserUserAgent": "Mozilla/5.0 (Linux; {Android Version}; {Build Tag etc.})",
          "browserJavaEnabled": true,
          "browserJavascriptEnabled": true,
          "browserLanguage": "en"
        }
      },
      "threeDSecureBrowserChannelWithCardPaymentMethod": {
        "summary": "3D-Secure Browser channel, with Card Payment Method",
        "value": {
          "idempotencyKey": "5d8f812e-9969-4885-85bb-d03948eccac2",
          "amount": {
            "amount": 16000,
            "currency": "CAD"
          },
          "browserIpAddress": "104.75.173.179",
          "browserScreenHeight": 1080,
          "browserScreenWidth": 1920,
          "cardholderEmail": "moneris@moneris.com",
          "cardholderName": "John Doe",
          "cardholderPhoneNumber": "+18663197450",
          "threeDSecureDeviceChannel": "BROWSER",
          "threeDSecureMessageCategory": "PAYMENT",
          "billingAddress": {
            "unitNumber": "123A",
            "streetNumber": "3300",
            "streetName": "Bloor",
            "city": "Toronto",
            "province": "ON",
            "postalCode": "M8X 2X2",
            "country": "CA"
          },
          "paymentMethod": {
            "paymentMethodSource": "CARD",
            "card": {
              "cardNumber": "4365729291041247",
              "expiryMonth": 1,
              "expiryYear": 2028,
              "cardSecurityCode": "123"
            }
          },
          "threeDSecureRequestType": "CARDHOLDER",
          "threeDSecureNotificationUrl": "https%3A%2F%2Fputsreq.com%2FnMhp2fzHDgfzSs4GiNTD",
          "threeDSecureCompletionIndicator": "SUCCESS",
          "threeDSecureChallengeWindowSize": "FULL_SCREEN",
          "browserUserAgent": "Mozilla/5.0 (Linux; {Android Version}; {Build Tag etc.})",
          "browserJavaEnabled": true,
          "browserJavascriptEnabled": true,
          "browserLanguage": "en"
        }
      },
      "threeDSecureBrowserChannelWithTemporaryToken": {
        "summary": "3D-Secure Browser channel, with Temporary Token",
        "value": {
          "idempotencyKey": "5d8f812e-9969-4885-85bb-d03948eccac2",
          "amount": {
            "amount": 16000,
            "currency": "CAD"
          },
          "browserIpAddress": "104.75.173.179",
          "browserScreenHeight": 1080,
          "browserScreenWidth": 1920,
          "cardholderEmail": "moneris@moneris.com",
          "cardholderName": "John Doe",
          "cardholderPhoneNumber": "+18663197450",
          "threeDSecureDeviceChannel": "BROWSER",
          "threeDSecureMessageCategory": "PAYMENT",
          "billingAddress": {
            "unitNumber": "123A",
            "streetNumber": "3300",
            "streetName": "Bloor",
            "city": "Toronto",
            "province": "ON",
            "postalCode": "M8X 2X2",
            "country": "CA"
          },
          "paymentMethod": {
            "paymentMethodSource": "TEMPORARY_TOKEN",
            "temporaryToken": "ot-y2mxjFqmqDisQQGB6hQ8xwQ2"
          },
          "threeDSecureRequestType": "CARDHOLDER",
          "threeDSecureNotificationUrl": "https%3A%2F%2Fputsreq.com%2FnMhp2fzHDgfzSs4GiNTD",
          "threeDSecureCompletionIndicator": "SUCCESS",
          "threeDSecureChallengeWindowSize": "FULL_SCREEN",
          "browserUserAgent": "Mozilla/5.0 (Linux; {Android Version}; {Build Tag etc.})",
          "browserJavaEnabled": true,
          "browserJavascriptEnabled": true,
          "browserLanguage": "en"
        }
      },
      "threeDSecureBrowserChannelWithPermanentToken": {
        "summary": "3D-Secure Browser channel, with Permanent Token",
        "value": {
          "idempotencyKey": "5d8f812e-9969-4885-85bb-d03948eccac2",
          "amount": {
            "amount": 16000,
            "currency": "CAD"
          },
          "browserIpAddress": "104.75.173.179",
          "browserScreenHeight": 1080,
          "browserScreenWidth": 1920,
          "cardholderEmail": "moneris@moneris.com",
          "cardholderName": "John Doe",
          "cardholderPhoneNumber": "+18663197450",
          "threeDSecureDeviceChannel": "BROWSER",
          "threeDSecureMessageCategory": "PAYMENT",
          "billingAddress": {
            "unitNumber": "123A",
            "streetNumber": "3300",
            "streetName": "Bloor",
            "city": "Toronto",
            "province": "ON",
            "postalCode": "M8X 2X2",
            "country": "CA"
          },
          "paymentMethod": {
            "paymentMethodSource": "PERMANENT_TOKEN",
            "permanentToken": "ot-y2mxjFqmqDisQQGB6hQ8xwQ2"
          },
          "threeDSecureRequestType": "CARDHOLDER",
          "threeDSecureNotificationUrl": "https%3A%2F%2Fputsreq.com%2FnMhp2fzHDgfzSs4GiNTD",
          "threeDSecureCompletionIndicator": "SUCCESS",
          "threeDSecureChallengeWindowSize": "FULL_SCREEN",
          "browserUserAgent": "Mozilla/5.0 (Linux; {Android Version}; {Build Tag etc.})",
          "browserJavaEnabled": true,
          "browserJavascriptEnabled": true,
          "browserLanguage": "en"
        }
      },
      "IdempotencyRequestErrorResponse": {
        "value": {
          "type": "https://developer.moneris.com/en/More/Testing/Response%20Codes",
          "title": "IDEMPOTENCY_KEY_ALREADY_EXISTS",
          "status": 409,
          "detail": null,
          "instance": null,
          "category": "IDEMPOTENCY_ERROR",
          "errors": []
        }
      }
    },
    "headers": {
      "apiVersion": {
        "description": "The endpoint's API Version.",
        "example": "2026-08-14",
        "schema": {
          "type": "string"
        }
      },
      "correlationId": {
        "example": "06f1e47b-a1b5-4902-be9c-bccc506127c4",
        "description": "Correlates a series of requests within the same flow. \n\nNote: This ID is generated by Moneris with every request or response, if it doesn't exist, and the Merchant is recommended to echo back the value.\"  \n",
        "schema": {
          "type": "string",
          "example": "06f1e47b-a1b5-4902-be9c-bccc506127c4"
        }
      },
      "sunset": {
        "example": "2025-07-30T06:43:40.252Z",
        "description": "Optional.\n\nIndicates that the resource URI will be decommissioned, and put out of service at the specified point in the future. \nMore details are available at [RFC 8594](https://www.rfc-editor.org/rfc/rfc8594.html)\n",
        "schema": {
          "type": "string",
          "format": "date-time",
          "example": "2025-07-30T06:43:40.252Z"
        }
      },
      "rateLimitCount": {
        "description": "The maximum number of requests that the client can make in this window.",
        "schema": {
          "type": "integer",
          "format": "int64"
        },
        "example": 1000
      },
      "rateLimitRemaining": {
        "description": "The number of requests allowed in the current window.",
        "schema": {
          "type": "integer",
          "format": "int64"
        },
        "example": 0
      },
      "rateLimitReset": {
        "description": "The relative time in seconds when the rate limit window will be reset.",
        "schema": {
          "type": "integer",
          "format": "int32"
        },
        "example": 3600
      },
      "retryAfter": {
        "description": "Indicates how long clients should wait before retrying.",
        "schema": {
          "type": "integer",
          "format": "int32"
        },
        "example": 60
      }
    },
    "responses": {
      "createThreeDSecureAuthenticationSuccessResponse": {
        "description": "3DS Secure authentication was successfully created & executed.",
        "headers": {
          "Api-Version": {
            "$ref": "#/components/headers/apiVersion"
          },
          "X-Correlation-Id": {
            "$ref": "#/components/headers/correlationId"
          },
          "Sunset": {
            "$ref": "#/components/headers/sunset"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/rateLimitCount"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/rateLimitRemaining"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/threeDSecureAuthentication"
            }
          }
        }
      },
      "createThreeDSecureAuthenticationChallengeResponse": {
        "description": "MPI Authentication operation resulted in a challenge.",
        "headers": {
          "Api-Version": {
            "$ref": "#/components/headers/apiVersion"
          },
          "X-Correlation-Id": {
            "$ref": "#/components/headers/correlationId"
          },
          "Sunset": {
            "$ref": "#/components/headers/sunset"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/rateLimitCount"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/rateLimitRemaining"
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/threeDSecureAuthentication"
            }
          }
        }
      },
      "badRequest": {
        "description": "Bad Request.",
        "headers": {
          "Api-Version": {
            "$ref": "#/components/headers/apiVersion"
          },
          "X-Correlation-Id": {
            "$ref": "#/components/headers/correlationId"
          },
          "Sunset": {
            "$ref": "#/components/headers/sunset"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/rateLimitCount"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/rateLimitRemaining"
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/error"
            }
          }
        }
      },
      "unauthorized": {
        "description": "Not authorized. The user does not have a valid API Key or Access Token.",
        "headers": {
          "Api-Version": {
            "$ref": "#/components/headers/apiVersion"
          },
          "X-Correlation-Id": {
            "$ref": "#/components/headers/correlationId"
          },
          "Sunset": {
            "$ref": "#/components/headers/sunset"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/rateLimitCount"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/rateLimitRemaining"
          },
          "WWW-Authenticate": {
            "schema": {
              "type": "string",
              "example": "Bearer, error=\"invalid_token\""
            }
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/error"
            },
            "example": {
              "type": "https://developer.moneris.com/en/More/Testing/Response%20Codes",
              "title": "UNAUTHORIZED_REQUEST",
              "status": 401,
              "detail": null,
              "instance": null,
              "category": "UNAUTHORIZED_ERROR",
              "errors": []
            }
          }
        }
      },
      "forbidden": {
        "description": "Forbidden. The user does not have permission to access the requested resource.",
        "headers": {
          "Api-Version": {
            "$ref": "#/components/headers/apiVersion"
          },
          "X-Correlation-Id": {
            "$ref": "#/components/headers/correlationId"
          },
          "Sunset": {
            "$ref": "#/components/headers/sunset"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/rateLimitCount"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/rateLimitRemaining"
          },
          "WWW-Authenticate": {
            "schema": {
              "type": "string",
              "example": "Bearer, error=\"insufficient_scope\""
            }
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/error"
            },
            "example": {
              "type": "https://developer.moneris.com/en/More/Testing/Response%20Codes",
              "title": "FORBIDDEN_REQUEST",
              "status": 403,
              "detail": null,
              "instance": null,
              "category": "UNAUTHORIZED_ERROR",
              "errors": []
            }
          }
        }
      },
      "conflict": {
        "description": "Request could not be completed due to a conflict with resource state or existing idempotency key.",
        "headers": {
          "Api-Version": {
            "$ref": "#/components/headers/apiVersion"
          },
          "X-Correlation-Id": {
            "$ref": "#/components/headers/correlationId"
          },
          "Sunset": {
            "$ref": "#/components/headers/sunset"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/rateLimitCount"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/rateLimitRemaining"
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/error"
            },
            "examples": {
              "idempotency_error": {
                "$ref": "#/components/examples/IdempotencyRequestErrorResponse"
              }
            }
          }
        }
      },
      "unprocessableContent": {
        "description": "The API cannot complete the requested action due to semantic or business validation errors. \n",
        "headers": {
          "Api-Version": {
            "$ref": "#/components/headers/apiVersion"
          },
          "X-Correlation-Id": {
            "$ref": "#/components/headers/correlationId"
          },
          "Sunset": {
            "$ref": "#/components/headers/sunset"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/rateLimitCount"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/rateLimitRemaining"
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/error"
            }
          }
        }
      },
      "tooManyRequests": {
        "description": "Too Many Requests",
        "headers": {
          "Api-Version": {
            "$ref": "#/components/headers/apiVersion"
          },
          "X-Correlation-Id": {
            "$ref": "#/components/headers/correlationId"
          },
          "Sunset": {
            "$ref": "#/components/headers/sunset"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/rateLimitCount"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/rateLimitRemaining"
          },
          "X-RateLimit-Reset": {
            "$ref": "#/components/headers/rateLimitReset"
          },
          "Retry-After": {
            "$ref": "#/components/headers/rateLimitReset"
          }
        }
      },
      "internalServer": {
        "description": "Unexpected error.",
        "headers": {
          "Api-Version": {
            "$ref": "#/components/headers/apiVersion"
          },
          "X-Correlation-Id": {
            "$ref": "#/components/headers/correlationId"
          },
          "Sunset": {
            "$ref": "#/components/headers/sunset"
          },
          "X-RateLimit-Limit": {
            "$ref": "#/components/headers/rateLimitCount"
          },
          "X-RateLimit-Remaining": {
            "$ref": "#/components/headers/rateLimitRemaining"
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/error"
            },
            "example": {
              "type": "https://api-developer.moneris.com/responsehandling/",
              "title": "INTERNAL_SERVER_ERROR",
              "status": 500,
              "detail": null,
              "instance": null,
              "category": "INTERNAL_SERVER_ERROR",
              "errors": []
            }
          }
        }
      },
      "serviceUnavailable": {
        "description": "Service Temporarily Unavailable",
        "headers": {
          "Api-Version": {
            "$ref": "#/components/headers/apiVersion"
          },
          "X-Correlation-Id": {
            "$ref": "#/components/headers/correlationId"
          },
          "Sunset": {
            "$ref": "#/components/headers/sunset"
          },
          "Retry-After": {
            "$ref": "#/components/headers/retryAfter"
          }
        },
        "content": {
          "application/problem+json": {
            "schema": {
              "$ref": "#/components/schemas/error"
            },
            "example": {
              "type": "https://api-developer.moneris.com/responsehandling/",
              "title": "SERVICE_UNAVAILABLE",
              "status": 503,
              "detail": null,
              "instance": null,
              "category": "INTERNAL_SERVER_ERROR",
              "errors": []
            }
          }
        }
      }
    }
  }
}
```