Moneris 3D Secure API

Perform 3D Secure authentications against payment methods

Operations 4

POST /three-d-secure/authentications Create Authentication #
GET /three-d-secure/authentications/{authentication-id} Retrieve Authentication #
POST /three-d-secure/authentications/{authentication-id}/lookup Authentication Value Lookup #
POST /three-d-secure/card-lookups 3DS Card Lookup #

Documentation

Specifications

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/moneris-3d-secure-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

moneris-3d-secure-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 2.6.1
  title: Moneris 3D Secure API
  description: 'Moneris API Platform



    [<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: UnifiedAPI@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'
  /three-d-secure/authentications/{authentication-id}:
    parameters:
    - $ref: '#/components/parameters/apiVersion'
    - $ref: '#/components/parameters/correlationId'
    - $ref: '#/components/parameters/merchantId'
    - $ref: '#/components/parameters/authenticationId'
    get:
      summary: Retrieve Authentication
      description: Retrieve an authentication by its authentication Id
      operationId: getAuthentication
      security:
      - OAuth2:
        - payment.read
      - OAuth2:
        - payment.write
      - ApiKeyAuth: []
      tags:
      - 3D Secure
      responses:
        '200':
          $ref: '#/components/responses/retrieveThreeDSecureAuthenticationSuccessResponse'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/notFound'
        '429':
          $ref: '#/components/responses/tooManyRequests'
        '500':
          $ref: '#/components/responses/internalServer'
        '503':
          $ref: '#/components/responses/serviceUnavailable'
  /three-d-secure/authentications/{authentication-id}/lookup:
    parameters:
    - $ref: '#/components/parameters/apiVersion'
    - $ref: '#/components/parameters/correlationId'
    - $ref: '#/components/parameters/authenticationId'
    - $ref: '#/components/parameters/merchantId'
    post:
      summary: Authentication Value Lookup
      description: The point of the 3-D Secure flow is to verify that the true cardholder is a part of the authorization. The challenge flow is used to present a way of authenticating the cardholder using e.g. OTP or a federated identification method.
      operationId: authenticationValueLookup
      security:
      - OAuth2:
        - payment.write
      - ApiKeyAuth: []
      tags:
      - 3D Secure
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/lookupRequest'
      responses:
        '200':
          $ref: '#/components/responses/threeDSecureAuthenticationLookupSuccessResponse'
        '400':
          $ref: '#/components/responses/badRequest'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/notFound'
        '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'
  /three-d-secure/card-lookups:
    parameters:
    - $ref: '#/components/parameters/apiVersion'
    - $ref: '#/components/parameters/correlationId'
    - $ref: '#/components/parameters/merchantId'
    post:
      summary: 3DS Card Lookup
      operationId: cardLookup
      security:
      - OAuth2:
        - payment.write
      - ApiKeyAuth: []
      tags:
      - 3D Secure
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/cardLookupRequest'
      responses:
        '201':
          $ref: '#/components/responses/createThreeDSecureCardLookupSuccessResponse'
        '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:
  schemas:
    expiryYear:
      type: integer
      format: int32
      description: 'Displays the card expiration year. Accepted format: YYYY'
      minimum: 2022
      maximum: 9999
      example: 2023
    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
    cardholderName:
      type: string
      description: Cardholder name
      minLength: 1
      maxLength: 60
      example: John Doe
    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.

        '
      allOf:
      - type: object
        properties:
          permanentToken:
            $ref: '#/components/schemas/token'
        required:
        - permanentToken
      - $ref: '#/components/schemas/paymentMethodRequestBase'
      required:
      - paymentMethodSource
      - permanentToken
    companyName:
      type:
      - string
      - 'null'
      description: Identifies the associated company name
      minLength: 1
      maxLength: 50
      example: SP Ltd
    threeDSecureAuthenticationValue:
      type:
      - string
      - 'null'
      description: '**CAVV**: Cardholder Authentication Verification Value

        Provided during a payment request to authenticate the card user.

        '
      maxLength: 50
      example: 00000109260000719349
    cardLookupRequest:
      title: cardLookupRequest
      description: The card_lookup request verifies the applicability of 3DS on the card and returns the 3DS version supported by the card. It also returns the 3DS Method URL and 3DS Method Data for submitting a device fingerprinting POST to issuer’s ACS.
      type: object
      properties:
        idempotencyKey:
          $ref: '#/components/schemas/idempotencyKey'
        orderId:
          $ref: '#/components/schemas/orderId'
        paymentMethod:
          $ref: '#/components/schemas/paymentMethodRequest'
        threeDSecureNotificationUrl:
          $ref: '#/components/schemas/threeDSecureNotificationUrl'
      required:
      - idempotencyKey
      - paymentMethod
      - threeDSecureNotificationUrl
    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'
    browserJavascriptEnabled:
      type: boolean
      description: Indicates whether Javascript is enabled in the browser
      example: true
    email:
      type: string
      format: email
      description: 'Contains the customer''s email address.


        For standard email protocols, visit: https://www.rfc-editor.org/rfc/rfc5322

        '
      minLength: 1
      maxLength: 320
      example: moneris@moneris.com
    cardBrand:
      type:
      - string
      - 'null'
      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
      example: MASTERCARD
    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:
          type:
          - string
          - 'null'
          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:
          type:
          - object
          - 'null'
          description: 'The postal address including street, town/city, province, and postal code.

            Optionally an unit number can be provided.

            '
          properties:
            unitNumber:
              type:
              - string
              - 'null'
              description: Unit number
              minLength: 1
              maxLength: 19
              example: 123A
            streetNumber:
              type:
              - string
              - 'null'
              description: Street number
              minLength: 1
              maxLength: 19
              example: '3300'
            streetName:
              type:
              - string
              - 'null'
              description: Street name
              minLength: 1
              maxLength: 100
              example: Bloor
            city:
              type:
              - string
              - 'null'
              description: 'Identifies the city.

                '
              minLength: 1
              maxLength: 50
              example: Toronto
            province:
              type:
              - string
              - 'null'
              description: 'Province or state ISO 3166-2 code '
              minLength: 1
              maxLength: 3
              format: iso-3166-2
              example: 'ON'
            postalCode:
              type:
              - string
              - 'null'
              description: Postal or zip code
              minLength: 1
              maxLength: 30
              example: M8X 2X2
            country:
              type:
              - string
              - 'null'
              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:
          type:
          - string
          - 'null'
          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
          - 'null'
          format: ipv4
          example: 104.75.173.179
        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:
          type:
          - string
          - 'null'
          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
    threeDSecureChallengeRequested:
      type:
      - string
      - 'null'
      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
      - null
      example: NO_PREFERENCE
      default: NO_PREFERENCE
    threeDSecureAuthentication:
      title: authenticationResponse
      type: object
      properties:
        threeDSecureAuthenticationId:
          $ref: '#/components/schemas/resourceId'
        cardLookupId:
          type:
          - string
          - 'null'
          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/ecommerceIndicator'
        threeDSecureChallengeUrl:
          $ref: '#/components/schemas/threeDSecureChallengeUrl'
        threeDSecureChallengeData:
          $ref: '#/components/schemas/threeDSecureChallengeData'
        threeDSecureAuthenticationValue:
          $ref: '#/components/schemas/threeDSecureAuthenticationValue'
        threeDSecureChallengeCompletionIndicator:
          $ref: '#/components/schemas/threeDSecureChallengeCompletionIndicator'
        threeDSecureServerTransactionId:
          type:
          - string
          - 'null'
          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:
          type:
          - string
          - 'null'
          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:
          type:
          - string
          - 'null'
          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/paymentMethod'
        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
    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
    paymentMethod:
      title: paymentMethod
      description: Payment method 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:
          type:
          - object
          - 'null'
          description: 'The postal address including street, town/city, province, and postal code.

            Optionally an unit number can be provided.

            '
          properties:
            unitNumber:
              type:
              - string
              - 'null'
              description: Unit number
              minLength: 1
              maxLength: 19
              example: 123A
            streetNumber:
              type:
              - string
              - 'null'
              description: Street number
              minLength: 1
              maxLength: 19
              example: '3300'
            streetName:
              type:
              - string
              - 'null'
              description: Street name
              minLength: 1
              maxLength: 100
              example: Bloor
            city:
              type:
              - string
              - 'null'
              description: 'Identifies the city.

                '
              minLength: 1
              maxLength: 50
              example: Toronto
            province:
              type:
              - string
              - 'null'
              description: 'Province or state ISO 3166-2 code '
              minLength: 1
              maxLength: 3
              format: iso-3166-2
              example: 'ON'
            postalCode:
              type:
              - string
              - 'null'
              description: Postal or zip code
              minLength: 1
              maxLength: 30
              example: M8X 2X2
            country:
              type:
              - string
              - 'null'
              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
    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
    threeDSecureRecurringExpiry:
      type:
      - string
      - 'null'
      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'
    threeDSecureChallengeUrl:
      type:
      - string
      - 'null'
      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/
    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
    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
    browserJavaEnabled:
      type: boolean
      description: Indicates whether Java is enabled in the browser
      example: true
    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
    cardLookup:
      title: cardLookup
      type: object
      properties:
        cardLookupId:
          $ref: '#/components/schemas/resourceId'
        merchantId:
          $ref: '#/components/schemas/merchantId'
        orderId:
          $ref: '#/components/schemas/orderId'
        threeDSecureServerTransactionId:
          $ref: '#/components/schemas/threeDSecureServerTransactionId'
        paymentMethod:
          $ref: '#/components/schemas/paymentMethod'
        threeDSecureVersion:
          $ref: '#/components/schemas/threeDSecureVersion'
        threeDSecureMethodUrl:
          $ref: '#/components/schemas/threeDSecureMethodUrl'
        threeDSecureMethodData:
          $ref: '#/components/schemas/threeDSecureMethodData'
      required:
      - cardLookupId
      - merchantId
      - paymentMethod
      - threeDSecureServerTransactionId
      - threeDSecureVersion
      - threeDSecureMethodUrl
      - threeDSecureMethodData
    ecommerceIndicator:
      type: string
      description: "The ecommerce indicator (ECI) specifies the level of security that was used to obtain the cardholder's payment data. \nIt is sent by the merchant and returned by the issuer.\nWhen 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
      example: AUTHENTICATED_ECOMMERCE
      default: SSL_MERCHANT
    threeDSecureRecurringFrequency:
      type:
      - integer
      - 'null'
      format: int32
      description: Indicates the minimum number of days between authorisations.
      minimum: 1
      maximum: 9999
      example: 1
    cardInformation:
      type: object
      description: Information about the card being used for the transaction
      properties:
        bankIdentificationNumber:
          type:
          - string
          - 'null'
          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:
          type:
          - string
          - 'null'
          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:
          type:
          - string
          - 'null'
          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'
    googlePayDecryptedWallet:
      title: googlePayDecryptedWallet
      description: Google Pay wallet details after decrypting the token.
      allOf:
      - $ref: '#/components/schemas/paymentMethodRequestBase'
      - type: object
        properties:
          gatewayMerchantId:
            type:
            - string
            - 'null'
            description: Gateway unique store id
            example: cagw123456
          messageExpiration:
            type:
            - string
            - 'null'
            format: date-time
            description: 'Date and time at which the message expires. Integrators should reject any message that''s expire

# --- truncated at 32 KB (82 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/moneris/refs/heads/main/openapi/moneris-3d-secure-api-openapi.yml