openapi: 3.0.1
info:
  title: OpenAPI definition
  version: v0
servers:
- url: http://localhost
  description: Generated server url
paths:
  /admin/start-preparation:
    post:
      tags:
      - preparation-request-controller
      operationId: postAsyncRequest
      parameters:
      - name: schemeId
        in: query
        required: false
        schema:
          type: string
      responses:
        "200":
          description: OK
  /3ds/versioning:
    post:
      tags:
      - three-ds-versioning-controller
      operationId: getThreeDSVersioningData
      requestBody:
        content:
          application/json;charset=UTF-8:
            schema:
              $ref: '#/components/schemas/ThreeDSServerVersioningRequest'
        required: true
      responses:
        default:
          description: default response
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/ThreeDSServerVersioningResponse'
  /3ds/v2/versioning:
    post:
      tags:
      - three-ds-versioning-controller
      operationId: getThreeDSVersioningDataV2
      requestBody:
        content:
          application/json;charset=UTF-8:
            schema:
              $ref: '#/components/schemas/ThreeDSServerVersioningRequest'
        required: true
      responses:
        default:
          description: default response
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/ThreeDSServerVersioningV2Response'
  /3ds/challenge-response:
    post:
      tags:
      - challenge-response-controller
      operationId: getCResData
      requestBody:
        content:
          application/json;charset=UTF-8:
            schema:
              $ref: '#/components/schemas/ThreeDSServerFinalCResRequest'
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/ThreeDSServerChallengeResponse'
  /3ds/authentication:
    post:
      tags:
      - authentication-request-controller
      operationId: postThreeDSServerAReq
      requestBody:
        content:
          application/json;charset=UTF-8:
            schema:
              $ref: '#/components/schemas/ThreeDSServerAuthenticationRequest'
        required: true
      responses:
        default:
          description: default response
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/ThreeDSServerAuthenticationResponse'
components:
  schemas:
    AcsInformationIndicatorEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
      - "04"
      - "80"
      - "81"
      - "82"
      - "83"
      - "84"
      - "85"
      - "86"
      - "87"
      - "88"
      - "89"
      - "90"
      - "91"
      - "92"
      - "93"
      - "94"
      - "95"
      - "96"
      - "97"
      - "98"
      - "99"
    ErrorCodeEnum:
      type: string
      enum:
      - "101"
      - "102"
      - "103"
      - "201"
      - "202"
      - "203"
      - "204"
      - "301"
      - "302"
      - "303"
      - "304"
      - "305"
      - "306"
      - "307"
      - "402"
      - "403"
      - "404"
      - "405"
      - "911"
      - "912"
      - "-1"
    ErrorComponentEnum:
      type: string
      enum:
      - C
      - S
      - D
      - A
    ErrorDetails:
      type: object
      properties:
        threeDSServerTransID:
          type: string
        acsTransID:
          type: string
        dsTransID:
          type: string
        errorCode:
          $ref: '#/components/schemas/ErrorCodeEnum'
        errorComponent:
          $ref: '#/components/schemas/ErrorComponentEnum'
        errorDescription:
          type: string
        errorDetail:
          type: string
        sdkTransID:
          type: string
        errorMessageType:
          $ref: '#/components/schemas/MessageTypeEnum'
    MessageTypeEnum:
      type: string
      enum:
      - AReq
      - ARes
      - CReq
      - CRes
      - PReq
      - PRes
      - RReq
      - RRes
      - Erro
      - 3dsMethodReq
    ProtocolVersionEnum:
      type: string
      enum:
      - 2.1.0
      - 2.2.0
    ThreeDSMethodData:
      type: object
      properties:
        threeDSMethodNotificationURL:
          type: string
          format: url
        threeDSServerTransID:
          type: string
    ThreeDSServerVersioningResponse:
      type: object
      properties:
        threeDSServerTransID:
          type: string
        acsStartProtocolVersion:
          $ref: '#/components/schemas/ProtocolVersionEnum'
        acsEndProtocolVersion:
          $ref: '#/components/schemas/ProtocolVersionEnum'
        dsStartProtocolVersion:
          $ref: '#/components/schemas/ProtocolVersionEnum'
        dsEndProtocolVersion:
          $ref: '#/components/schemas/ProtocolVersionEnum'
        highestCommonSupportedProtocolVersion:
          $ref: '#/components/schemas/ProtocolVersionEnum'
        acsInfoInd:
          type: array
          items:
            $ref: '#/components/schemas/AcsInformationIndicatorEnum'
        threeDSMethodURL:
          type: string
          format: url
        threeDSMethodDataForm:
          type: object
          additionalProperties:
            type: string
        threeDSMethodData:
          $ref: '#/components/schemas/ThreeDSMethodData'
        errorDetails:
          $ref: '#/components/schemas/ErrorDetails'
    ThreeDSServerVersioningRequest:
      type: object
      properties:
        threeDSServerTransID:
          type: string
        cardholderAccountNumber:
          type: string
        schemeId:
          type: string
    ThreeDSServerVersioningV2Response:
      type: object
      properties:
        threeDSServerTransID:
          type: string
        acsStartProtocolVersion:
          $ref: '#/components/schemas/ProtocolVersionEnum'
        acsEndProtocolVersion:
          $ref: '#/components/schemas/ProtocolVersionEnum'
        dsStartProtocolVersion:
          $ref: '#/components/schemas/ProtocolVersionEnum'
        dsEndProtocolVersion:
          $ref: '#/components/schemas/ProtocolVersionEnum'
        highestCommonSupportedProtocolVersion:
          $ref: '#/components/schemas/ProtocolVersionEnum'
        acsInfoInd:
          type: array
          items:
            $ref: '#/components/schemas/AcsInformationIndicatorEnum'
        threeDSMethodURL:
          type: string
          format: url
        threeDSMethodDataForm:
          type: object
          additionalProperties:
            type: string
        threeDSMethodData:
          $ref: '#/components/schemas/ThreeDSMethodData'
        errorDetails:
          $ref: '#/components/schemas/ErrorDetails'
        isCardFoundIn2xRanges:
          type: boolean
    ThreeDSServerFinalCResRequest:
      type: object
      properties:
        base64EncodedCRes:
          type: string
    ACSUITemplateEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
      - "04"
      - "05"
      - "80"
      - "81"
      - "82"
      - "83"
      - "84"
      - "85"
      - "86"
      - "87"
      - "88"
      - "89"
      - "90"
      - "91"
      - "92"
      - "93"
      - "94"
      - "95"
      - "96"
      - "97"
      - "98"
      - "99"
    ChallengeCompletionIndicatorEnum:
      type: string
      enum:
      - "Y"
      - "N"
    ChallengeInformationTextIndicatorEnum:
      type: string
      enum:
      - "Y"
      - "N"
    ChallengeResponse:
      type: object
      properties:
        messageType:
          $ref: '#/components/schemas/MessageTypeEnum'
        threeDSServerTransID:
          type: string
        acsCounterAtoS:
          type: integer
          format: int32
        acsTransID:
          type: string
        acsHTML:
          type: string
        acsUiType:
          $ref: '#/components/schemas/ACSUITemplateEnum'
        challengeAddInfo:
          type: string
        challengeCompletionInd:
          $ref: '#/components/schemas/ChallengeCompletionIndicatorEnum'
        challengeInfoHeader:
          type: string
        challengeInfoLabel:
          type: string
        challengeInfoText:
          type: string
        challengeInfoTextIndicator:
          $ref: '#/components/schemas/ChallengeInformationTextIndicatorEnum'
        challengeSelectInfo:
          type: array
          items:
            type: object
            properties:
              value:
                type: string
              key:
                type: string
        expandInfoLabel:
          type: string
        expandInfoText:
          type: string
        issuerImage:
          $ref: '#/components/schemas/ChallengeResponseImage'
        messageExtension:
          type: array
          items:
            $ref: '#/components/schemas/MessageExtensionAttribute'
        messageVersion:
          $ref: '#/components/schemas/ProtocolVersionEnum'
        oobAppURL:
          type: string
          format: url
        oobAppLabel:
          type: string
        oobContinueLabel:
          type: string
        psImage:
          $ref: '#/components/schemas/ChallengeResponseImage'
        resendInformationLabel:
          type: string
        sdkTransID:
          type: string
        submitAuthenticationLabel:
          type: string
        whyInfoLabel:
          type: string
        whyInfoText:
          type: string
        transStatus:
          $ref: '#/components/schemas/TransactionStatusEnum'
        acsHTMLRefresh:
          type: string
        whitelistingInfoText:
          type: string
    ChallengeResponseImage:
      type: object
      properties:
        medium:
          type: string
          format: url
        high:
          type: string
          format: url
        extraHigh:
          type: string
          format: url
    MessageExtensionAttribute:
      type: object
      properties:
        name:
          type: string
        id:
          type: string
        criticalityIndicator:
          type: boolean
        data:
          $ref: '#/components/schemas/MessageExtensionData'
    MessageExtensionData:
      type: object
    ThreeDSServerChallengeResponse:
      type: object
      properties:
        threeDSServerTransID:
          type: string
        base64EncodedCRes:
          type: string
        challengeResponse:
          $ref: '#/components/schemas/ChallengeResponse'
        errorDetails:
          $ref: '#/components/schemas/ErrorDetails'
    TransactionStatusEnum:
      type: string
      enum:
      - "Y"
      - "N"
      - U
      - C
      - R
      - A
      - D
      - I
    ACSChallengeMandatedIndicatorEnum:
      type: string
      enum:
      - "Y"
      - "N"
    ACSDecoupledConfirmationIndicatorEnum:
      type: string
      enum:
      - "Y"
      - "N"
    ACSInterfaceEnum:
      type: string
      enum:
      - "01"
      - "02"
    ACSRenderingType:
      type: object
      properties:
        acsInterface:
          $ref: '#/components/schemas/ACSInterfaceEnum'
        acsUiTemplate:
          $ref: '#/components/schemas/ACSUITemplateEnum'
    AccountAgeIndicatorEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
      - "04"
      - "05"
    AccountTypeEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
      - "80"
      - "81"
      - "82"
      - "83"
      - "84"
      - "85"
      - "86"
      - "87"
      - "88"
      - "89"
      - "90"
      - "91"
      - "92"
      - "93"
      - "94"
      - "95"
      - "96"
      - "97"
      - "98"
      - "99"
    AddressMatchIndicatorEnum:
      type: string
      enum:
      - "Y"
      - "N"
    AuthenticationRequest:
      type: object
      properties:
        messageType:
          $ref: '#/components/schemas/MessageTypeEnum'
        threeDSCompInd:
          $ref: '#/components/schemas/ThreeDSMethodCompletionIndicatorEnum'
        threeDSRequestorAuthenticationInfo:
          $ref: '#/components/schemas/ThreeDSRequestorAuthenticationInformation'
        threeDSRequestorChallengeInd:
          $ref: '#/components/schemas/ThreeDSRequestorChallengeIndicatorEnum'
        threeDSRequestorID:
          type: string
        threeRIInd:
          $ref: '#/components/schemas/ThreeRIIndicatorEnum'
        threeDSRequestorName:
          type: string
        threeDSRequestorAuthenticationInd:
          $ref: '#/components/schemas/ThreeDSRequestorAuthenticationIndicatorEnum'
        threeDSRequestorPriorAuthenticationInfo:
          $ref: '#/components/schemas/ThreeDSRequestorPriorTransactionAuthenticationInformation'
        threeDSRequestorURL:
          type: string
          format: url
        threeDSServerRefNumber:
          type: string
        threeDSServerOperatorID:
          type: string
        threeDSServerTransID:
          type: string
        threeDSServerURL:
          type: string
          format: url
        acctType:
          $ref: '#/components/schemas/AccountTypeEnum'
        acquirerBIN:
          type: string
        acquirerMerchantID:
          type: string
        addrMatch:
          $ref: '#/components/schemas/AddressMatchIndicatorEnum'
        browserAcceptHeader:
          type: string
        browserIP:
          type: string
        browserJavaEnabled:
          type: boolean
        browserLanguage:
          type: string
        browserColorDepth:
          $ref: '#/components/schemas/BrowserColorDepthEnum'
        browserScreenHeight:
          type: integer
          format: int32
        browserScreenWidth:
          type: integer
          format: int32
        browserTZ:
          type: integer
          format: int32
        browserUserAgent:
          type: string
        cardExpiryDate:
          type: string
        acctInfo:
          $ref: '#/components/schemas/CardholderAccountInformation'
        acctNumber:
          type: string
        acctID:
          type: string
        billAddrCity:
          type: string
        billAddrCountry:
          type: string
        billAddrLine1:
          type: string
        billAddrLine2:
          type: string
        billAddrLine3:
          type: string
        billAddrPostCode:
          type: string
        billAddrState:
          type: string
        email:
          type: string
        homePhone:
          $ref: '#/components/schemas/CardholderPhoneNumber'
        mobilePhone:
          $ref: '#/components/schemas/CardholderPhoneNumber'
        cardholderName:
          type: string
        shipAddrCity:
          type: string
        shipAddrCountry:
          type: string
        shipAddrLine1:
          type: string
        shipAddrLine2:
          type: string
        shipAddrLine3:
          type: string
        shipAddrPostCode:
          type: string
        shipAddrState:
          type: string
        workPhone:
          $ref: '#/components/schemas/CardholderPhoneNumber'
        deviceChannel:
          $ref: '#/components/schemas/DeviceChannelEnum'
        deviceInfo:
          type: string
        deviceRenderOptions:
          $ref: '#/components/schemas/DeviceRenderingOptionsSupported'
        dsReferenceNumber:
          type: string
        dsTransID:
          type: string
        dsURL:
          type: string
          format: url
        payTokenInd:
          type: boolean
        purchaseInstalData:
          type: integer
          format: int32
        mcc:
          type: string
        merchantCountryCode:
          type: string
        merchantName:
          type: string
        merchantRiskIndicator:
          $ref: '#/components/schemas/MerchantRiskIndicator'
        messageCategory:
          $ref: '#/components/schemas/MessageCategoryEnum'
        messageExtension:
          type: array
          items:
            $ref: '#/components/schemas/MessageExtensionAttribute'
        messageVersion:
          $ref: '#/components/schemas/ProtocolVersionEnum'
        purchaseAmount:
          type: integer
        purchaseExponent:
          type: integer
          format: int32
        purchaseCurrency:
          type: string
        purchaseDate:
          pattern: "^[0-9]{14}$"
          type: string
          description: yyyyMMddHHmmss
        recurringExpiry:
          pattern: "^[0-9]{8}$"
          type: string
          description: yyyyMMdd
        recurringFrequency:
          type: integer
          format: int32
        sdkAppID:
          type: string
        sdkEphemPubKey:
          type: object
          additionalProperties:
            type: object
        sdkReferenceNumber:
          type: string
        sdkTransID:
          type: string
        transType:
          $ref: '#/components/schemas/TransactionTypeEnum'
        sdkMaxTimeout:
          type: integer
          format: int32
        notificationURL:
          type: string
          format: url
        broadInfo:
          type: string
        sdkEncData:
          type: string
        threeDSReqAuthMethodInd:
          $ref: '#/components/schemas/ThreeDSRequestorAuthenticationMethodVerificationIndicatorEnum'
        threeDSRequestorDecMaxTime:
          type: integer
          format: int32
        threeDSRequestorDecReqInd:
          $ref: '#/components/schemas/ThreeDSRequestorDecoupledRequestIndicatorEnum'
        browserJavascriptEnabled:
          type: boolean
        payTokenSource:
          $ref: '#/components/schemas/EmvPaymentTokenSourceEnum'
        whiteListStatus:
          $ref: '#/components/schemas/WhitelistStatusEnum'
        whiteListStatusSource:
          $ref: '#/components/schemas/WhitelistStatusSourceEnum'
    AuthenticationResponse:
      type: object
      properties:
        messageType:
          $ref: '#/components/schemas/MessageTypeEnum'
        threeDSServerTransID:
          type: string
        acsTransID:
          type: string
        acsReferenceNumber:
          type: string
        acsRenderingType:
          $ref: '#/components/schemas/ACSRenderingType'
        acsOperatorID:
          type: string
        acsSignedContent:
          type: string
        acsURL:
          type: string
          format: url
        authenticationType:
          $ref: '#/components/schemas/AuthenticationTypeEnum'
        authenticationValue:
          type: string
        cardholderInfo:
          type: string
        acsChallengeMandated:
          $ref: '#/components/schemas/ACSChallengeMandatedIndicatorEnum'
        dsReferenceNumber:
          type: string
        dsTransID:
          type: string
        eci:
          type: string
        messageExtension:
          type: array
          items:
            $ref: '#/components/schemas/MessageExtensionAttribute'
        messageVersion:
          $ref: '#/components/schemas/ProtocolVersionEnum'
        sdkTransID:
          type: string
        transStatus:
          $ref: '#/components/schemas/TransactionStatusEnum'
        transStatusReason:
          $ref: '#/components/schemas/TransactionStatusReasonEnum'
        broadInfo:
          type: string
        acsDecConInd:
          $ref: '#/components/schemas/ACSDecoupledConfirmationIndicatorEnum'
        whiteListStatus:
          $ref: '#/components/schemas/WhitelistStatusEnum'
        whiteListStatusSource:
          $ref: '#/components/schemas/WhitelistStatusSourceEnum'
    AuthenticationTypeEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
      - "04"
      - "80"
      - "81"
      - "82"
      - "83"
      - "84"
      - "85"
      - "86"
      - "87"
      - "88"
      - "89"
      - "90"
      - "91"
      - "92"
      - "93"
      - "94"
      - "95"
      - "96"
      - "97"
      - "98"
      - "99"
    BrowserColorDepthEnum:
      type: string
      enum:
      - "1"
      - "4"
      - "8"
      - "15"
      - "16"
      - "24"
      - "32"
      - "48"
    CardholderAccountAgeIndicatorEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
      - "04"
      - "05"
    CardholderAccountChangeIndicatorEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
      - "04"
    CardholderAccountInformation:
      type: object
      properties:
        chAccAgeInd:
          $ref: '#/components/schemas/CardholderAccountAgeIndicatorEnum'
        chAccDate:
          pattern: "^[0-9]{8}$"
          type: string
          description: yyyyMMdd
        chAccChangeInd:
          $ref: '#/components/schemas/CardholderAccountChangeIndicatorEnum'
        chAccChange:
          pattern: "^[0-9]{8}$"
          type: string
          description: yyyyMMdd
        chAccPwChangeInd:
          $ref: '#/components/schemas/CardholderAccountPasswordChangeIndicatorEnum'
        chAccPwChange:
          pattern: "^[0-9]{8}$"
          type: string
          description: yyyyMMdd
        shipAddressUsageInd:
          $ref: '#/components/schemas/ShippingAddressUsageIndicatorEnum'
        shipAddressUsage:
          pattern: "^[0-9]{8}$"
          type: string
          description: yyyyMMdd
        txnActivityDay:
          type: integer
          format: int32
        txnActivityYear:
          type: integer
          format: int32
        provisionAttemptsDay:
          type: integer
          format: int32
        nbPurchaseAccount:
          type: integer
          format: int32
        suspiciousAccActivity:
          $ref: '#/components/schemas/SuspiciousAccountActivityEnum'
        shipNameIndicator:
          $ref: '#/components/schemas/ShippingNameIndicatorEnum'
        paymentAccInd:
          $ref: '#/components/schemas/AccountAgeIndicatorEnum'
        paymentAccAge:
          pattern: "^[0-9]{8}$"
          type: string
          description: yyyyMMdd
    CardholderAccountPasswordChangeIndicatorEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
      - "04"
      - "05"
    CardholderPhoneNumber:
      type: object
      properties:
        cc:
          type: string
        subscriber:
          type: string
    ChallengeCancellationIndicatorEnum:
      type: string
      enum:
      - "01"
      - "03"
      - "04"
      - "05"
      - "06"
      - "07"
      - "08"
      - "80"
      - "81"
      - "82"
      - "83"
      - "84"
      - "85"
      - "86"
      - "87"
      - "88"
      - "89"
      - "90"
      - "91"
      - "92"
      - "93"
      - "94"
      - "95"
      - "96"
      - "97"
      - "98"
      - "99"
    ChallengeNoEntryEnum:
      type: string
      enum:
      - "Y"
    ChallengeRequest:
      type: object
      properties:
        messageType:
          $ref: '#/components/schemas/MessageTypeEnum'
        threeDSServerTransID:
          type: string
        acsTransID:
          type: string
        challengeCancel:
          $ref: '#/components/schemas/ChallengeCancellationIndicatorEnum'
        challengeDataEntry:
          type: string
        challengeHTMLDataEntry:
          type: string
        challengeWindowSize:
          $ref: '#/components/schemas/ChallengeWindowSizeEnum'
        messageExtension:
          type: array
          items:
            $ref: '#/components/schemas/MessageExtensionAttribute'
        messageVersion:
          $ref: '#/components/schemas/ProtocolVersionEnum'
        oobContinue:
          type: boolean
        resendChallenge:
          $ref: '#/components/schemas/ResendChallengeInformationCodeEnum'
        sdkTransID:
          type: string
        sdkCounterStoA:
          type: integer
          format: int32
        challengeNoEntry:
          $ref: '#/components/schemas/ChallengeNoEntryEnum'
        threeDSRequestorAppURL:
          type: string
          format: uri
        whitelistingDataEntry:
          $ref: '#/components/schemas/WhitelistingDataEntryEnum'
    ChallengeWindowSizeEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
      - "04"
      - "05"
    DeliveryTimeframeEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
      - "04"
    DeviceChannelEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
    DeviceRenderingOptionsSupported:
      type: object
      properties:
        sdkInterface:
          $ref: '#/components/schemas/SdkInterfaceEnum'
        sdkUiType:
          type: array
          items:
            $ref: '#/components/schemas/SdkUITypeEnum'
    EmvPaymentTokenSourceEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "80"
      - "81"
      - "82"
      - "83"
      - "84"
      - "85"
      - "86"
      - "87"
      - "88"
      - "89"
      - "90"
      - "91"
      - "92"
      - "93"
      - "94"
      - "95"
      - "96"
      - "97"
      - "98"
      - "99"
    MerchantRiskIndicator:
      type: object
      properties:
        shipIndicator:
          $ref: '#/components/schemas/ShippingIndicatorEnum'
        deliveryTimeframe:
          $ref: '#/components/schemas/DeliveryTimeframeEnum'
        deliveryEmailAddress:
          type: string
        reorderItemsInd:
          $ref: '#/components/schemas/ReorderItemsIndicatorEnum'
        preOrderPurchaseInd:
          $ref: '#/components/schemas/PreOrderPurchaseIndicatorEnum'
        preOrderDate:
          pattern: "^[0-9]{8}$"
          type: string
          description: yyyyMMdd
        giftCardAmount:
          type: integer
          format: int64
        giftCardCurr:
          type: string
        giftCardCount:
          type: integer
          format: int32
    MessageCategoryEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "80"
      - "81"
      - "82"
      - "83"
      - "84"
      - "85"
      - "86"
      - "87"
      - "88"
      - "89"
      - "90"
      - "91"
      - "92"
      - "93"
      - "94"
      - "95"
      - "96"
      - "97"
      - "98"
      - "99"
    PreOrderPurchaseIndicatorEnum:
      type: string
      enum:
      - "01"
      - "02"
    ReorderItemsIndicatorEnum:
      type: string
      enum:
      - "01"
      - "02"
    ResendChallengeInformationCodeEnum:
      type: string
      enum:
      - "Y"
      - "N"
    SdkInterfaceEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
    SdkUITypeEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
      - "04"
      - "05"
    ShippingAddressUsageIndicatorEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
      - "04"
    ShippingIndicatorEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
      - "04"
      - "05"
      - "06"
      - "07"
      - "80"
      - "81"
    ShippingNameIndicatorEnum:
      type: string
      enum:
      - "01"
      - "02"
    SuspiciousAccountActivityEnum:
      type: string
      enum:
      - "01"
      - "02"
    ThreeDSMethodCompletionIndicatorEnum:
      type: string
      enum:
      - "Y"
      - "N"
      - U
    ThreeDSRequestorAuthenticationIndicatorEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
      - "04"
      - "05"
      - "06"
      - "07"
      - "80"
      - "81"
      - "82"
      - "83"
      - "84"
      - "85"
      - "86"
      - "87"
      - "88"
      - "89"
      - "90"
      - "91"
      - "92"
      - "93"
      - "94"
      - "95"
      - "96"
      - "97"
      - "98"
      - "99"
    ThreeDSRequestorAuthenticationInformation:
      type: object
      properties:
        threeDSReqAuthMethod:
          $ref: '#/components/schemas/ThreeDSRequestorAuthenticationMethodEnum'
        threeDSReqAuthTimestamp:
          pattern: "^[0-9]{12}$"
          type: string
          description: yyyyMMddHHmm
        threeDSReqAuthData:
          type: string
    ThreeDSRequestorAuthenticationMethodEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
      - "04"
      - "05"
      - "06"
      - "07"
      - "08"
      - "80"
      - "81"
      - "82"
      - "83"
      - "84"
      - "85"
      - "86"
      - "87"
      - "88"
      - "89"
      - "90"
      - "91"
      - "92"
      - "93"
      - "94"
      - "95"
      - "96"
      - "97"
      - "98"
      - "99"
    ThreeDSRequestorAuthenticationMethodVerificationIndicatorEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
      - "80"
      - "81"
      - "82"
      - "83"
      - "84"
      - "85"
      - "86"
      - "87"
      - "88"
      - "89"
      - "90"
      - "91"
      - "92"
      - "93"
      - "94"
      - "95"
      - "96"
      - "97"
      - "98"
      - "99"
    ThreeDSRequestorChallengeIndicatorEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
      - "04"
      - "05"
      - "06"
      - "07"
      - "08"
      - "09"
      - "80"
      - "81"
      - "82"
      - "83"
      - "84"
      - "85"
      - "86"
      - "87"
      - "88"
      - "89"
      - "90"
      - "91"
      - "92"
      - "93"
      - "94"
      - "95"
      - "96"
      - "97"
      - "98"
      - "99"
    ThreeDSRequestorDecoupledRequestIndicatorEnum:
      type: string
      enum:
      - "Y"
      - "N"
    ThreeDSRequestorPriorTransactionAuthenticationInformation:
      type: object
      properties:
        threeDSReqPriorRef:
          type: string
        threeDSReqPriorAuthMethod:
          $ref: '#/components/schemas/ThreeDSRequestorPriorTransactionAuthenticationMethodEnum'
        threeDSReqPriorAuthTimestamp:
          pattern: "^[0-9]{12}$"
          type: string
          description: yyyyMMddHHmm
        threeDSReqPriorAuthData:
          type: string
    ThreeDSRequestorPriorTransactionAuthenticationMethodEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
      - "04"
      - "80"
      - "81"
      - "82"
      - "83"
      - "84"
      - "85"
      - "86"
      - "87"
      - "88"
      - "89"
      - "90"
      - "91"
      - "92"
      - "93"
      - "94"
      - "95"
      - "96"
      - "97"
      - "98"
      - "99"
    ThreeDSServerAuthenticationResponse:
      type: object
      properties:
        threeDSServerTransID:
          type: string
        acsURL:
          type: string
          format: url
        transStatus:
          $ref: '#/components/schemas/TransactionStatusEnum'
        authenticationValue:
          type: string
        eci:
          type: string
        acsChallengeMandated:
          $ref: '#/components/schemas/ACSChallengeMandatedIndicatorEnum'
        authenticationRequest:
          $ref: '#/components/schemas/AuthenticationRequest'
        authenticationResponse:
          $ref: '#/components/schemas/AuthenticationResponse'
        purchaseDate:
          pattern: "^[0-9]{14}$"
          type: string
          description: yyyyMMddHHmmss
        errorDetails:
          $ref: '#/components/schemas/ErrorDetails'
        challengeRequest:
          $ref: '#/components/schemas/ChallengeRequest'
        base64EncodedChallengeRequest:
          type: string
    ThreeRIIndicatorEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
      - "04"
      - "05"
      - "06"
      - "07"
      - "08"
      - "09"
      - "10"
      - "11"
      - "12"
      - "80"
      - "81"
      - "82"
      - "83"
      - "84"
      - "85"
      - "86"
      - "87"
      - "88"
      - "89"
      - "90"
      - "91"
      - "92"
      - "93"
      - "94"
      - "95"
      - "96"
      - "97"
      - "98"
      - "99"
    TransactionStatusReasonEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
      - "04"
      - "05"
      - "06"
      - "07"
      - "08"
      - "09"
      - "10"
      - "11"
      - "12"
      - "13"
      - "14"
      - "15"
      - "16"
      - "17"
      - "18"
      - "19"
      - "20"
      - "21"
      - "22"
      - "23"
      - "24"
      - "25"
      - "26"
      - "80"
      - "81"
      - "82"
      - "83"
      - "84"
      - "85"
      - "86"
      - "87"
      - "88"
      - "89"
      - "90"
      - "91"
      - "92"
      - "93"
      - "94"
      - "95"
      - "96"
      - "97"
      - "98"
      - "99"
    TransactionTypeEnum:
      type: string
      enum:
      - "01"
      - "03"
      - "10"
      - "11"
      - "28"
    WhitelistStatusEnum:
      type: string
      enum:
      - "Y"
      - "N"
      - E
      - P
      - R
      - U
    WhitelistStatusSourceEnum:
      type: string
      enum:
      - "01"
      - "02"
      - "03"
      - "80"
      - "81"
      - "82"
      - "83"
      - "84"
      - "85"
      - "86"
      - "87"
      - "88"
      - "89"
      - "90"
      - "91"
      - "92"
      - "93"
      - "94"
      - "95"
      - "96"
      - "97"
      - "98"
      - "99"
    WhitelistingDataEntryEnum:
      type: string
      enum:
      - "Y"
      - "N"
    AcquirerData:
      type: object
      properties:
        acquirerBin:
          type: string
        acquirerMerchantId:
          type: string
    Browser:
      type: object
      properties:
        browserAcceptHeader:
          type: string
        browserIP:
          type: string
        browserJavaEnabled:
          type: boolean
        browserLanguage:
          type: string
        browserColorDepth:
          type: string
        browserScreenHeight:
          type: integer
          format: int32
        browserScreenWidth:
          type: integer
          format: int32
        browserTZ:
          type: integer
          format: int32
        browserUserAgent:
          type: string
        challengeWindowSize:
          $ref: '#/components/schemas/ChallengeWindowSizeEnum'
        browserJavascriptEnabled:
          type: boolean
    Cardholder:
      type: object
      properties:
        addrMatch:
          $ref: '#/components/schemas/AddressMatchIndicatorEnum'
        billAddrCity:
          type: string
        billAddrCountry:
          type: string
        billAddrLine1:
          type: string
        billAddrLine2:
          type: string
        billAddrLine3:
          type: string
        billAddrPostCode:
          type: string
        billAddrState:
          type: string
        email:
          type: string
        homePhone:
          $ref: '#/components/schemas/CardholderPhoneNumber'
        mobilePhone:
          $ref: '#/components/schemas/CardholderPhoneNumber'
        workPhone:
          $ref: '#/components/schemas/CardholderPhoneNumber'
        cardholderName:
          type: string
        shipAddrCity:
          type: string
        shipAddrCountry:
          type: string
        shipAddrLine1:
          type: string
        shipAddrLine2:
          type: string
        shipAddrLine3:
          type: string
        shipAddrPostCode:
          type: string
        shipAddrState:
          type: string
    CardholderAccount:
      type: object
      properties:
        acctType:
          $ref: '#/components/schemas/AccountTypeEnum'
        cardExpiryDate:
          type: string
        acctInfo:
          $ref: '#/components/schemas/CardholderAccountInformation'
        acctNumber:
          type: string
        schemeId:
          type: string
        acctID:
          type: string
        payTokenInd:
          type: boolean
    MerchantData:
      type: object
      properties:
        merchantConfigurationId:
          type: string
        mcc:
          type: string
        merchantCountryCode:
          type: string
        merchantName:
          type: string
        notificationURL:
          type: string
          format: url
        threeDSRequestorId:
          type: string
        threeDSRequestorName:
          type: string
        whiteListStatus:
          $ref: '#/components/schemas/WhitelistStatusEnum'
        resultsResponseNotificationUrl:
          type: string
          format: url
    PreferredProtocolVersionEnum:
      type: string
      enum:
      - 2.1.0
      - 2.2.0
      - latest
    Purchase:
      type: object
      properties:
        purchaseInstalData:
          type: integer
          format: int32
        merchantRiskIndicator:
          $ref: '#/components/schemas/MerchantRiskIndicator'
        purchaseAmount:
          type: integer
        purchaseCurrency:
          type: string
        purchaseExponent:
          type: integer
          format: int32
        purchaseDate:
          pattern: "^[0-9]{14}$"
          type: string
          description: yyyyMMddHHmmss
        recurringExpiry:
          pattern: "^[0-9]{8}$"
          type: string
          description: yyyyMMdd
        recurringFrequency:
          type: integer
          format: int32
        transType:
          $ref: '#/components/schemas/TransactionTypeEnum'
    Sdk:
      type: object
      properties:
        sdkAppID:
          type: string
        sdkEncData:
          type: string
        sdkEphemPubKey:
          type: object
          additionalProperties:
            type: object
        sdkMaxTimeout:
          type: integer
          format: int32
        sdkReferenceNumber:
          type: string
        sdkTransID:
          type: string
    ThreeDSRequestor:
      type: object
      properties:
        threeDSRequestorAuthenticationInd:
          $ref: '#/components/schemas/ThreeDSRequestorAuthenticationIndicatorEnum'
        threeDSRequestorAuthenticationInfo:
          $ref: '#/components/schemas/ThreeDSRequestorAuthenticationInformation'
        threeDSRequestorChallengeInd:
          $ref: '#/components/schemas/ThreeDSRequestorChallengeIndicatorEnum'
        threeDSRequestorPriorAuthenticationInfo:
          $ref: '#/components/schemas/ThreeDSRequestorPriorTransactionAuthenticationInformation'
        threeDSRequestorDecReqInd:
          $ref: '#/components/schemas/ThreeDSRequestorDecoupledRequestIndicatorEnum'
        threeDSRequestorDecMaxTime:
          type: integer
          format: int32
    ThreeDSServerAuthenticationRequest:
      type: object
      properties:
        preferredProtocolVersion:
          $ref: '#/components/schemas/PreferredProtocolVersionEnum'
        enforcePreferredProtocolVersion:
          type: boolean
        deviceChannel:
          $ref: '#/components/schemas/DeviceChannelEnum'
        messageCategory:
          $ref: '#/components/schemas/MessageCategoryEnum'
        threeDSCompInd:
          $ref: '#/components/schemas/ThreeDSMethodCompletionIndicatorEnum'
        threeDSRequestor:
          $ref: '#/components/schemas/ThreeDSRequestor'
        threeDSServerTransID:
          type: string
        threeDSRequestorURL:
          type: string
          format: url
        cardholderAccount:
          $ref: '#/components/schemas/CardholderAccount'
        cardholder:
          $ref: '#/components/schemas/Cardholder'
        purchase:
          $ref: '#/components/schemas/Purchase'
        acquirer:
          $ref: '#/components/schemas/AcquirerData'
        merchant:
          $ref: '#/components/schemas/MerchantData'
        broadInfo:
          type: string
        deviceRenderOptions:
          $ref: '#/components/schemas/DeviceRenderingOptionsSupported'
        messageExtension:
          type: array
          items:
            $ref: '#/components/schemas/MessageExtensionAttribute'
        challengeMessageExtension:
          type: array
          items:
            $ref: '#/components/schemas/MessageExtensionAttribute'
        browserInformation:
          $ref: '#/components/schemas/Browser'
        threeRIInd:
          $ref: '#/components/schemas/ThreeRIIndicatorEnum'
        sdkInformation:
          $ref: '#/components/schemas/Sdk'
