NovoPayment Push Provisioning API

Use Cases If you are a Bank that wants to give your customers the possibility to seamless register their debit and credit cards in payment platforms such as Apple Pay, Samsung Pay and Google Pay, as easily as including only one button on your website or app, this API is the solution. NovoPayment does the heavy lifting for you, we take care of providing the service for you, so you can focus on the core of your business and the UX/UI.

Operations 10

POST /universal/core/cards/encryption Encrypt card #
POST /credentials/enrolldata Enroll Data #
POST /credentials/addpayments Add Payment Credentials #
POST /credentials/removeconsumerinformation Remove Consumer Information #
PUT /credentials/updateconsumerinformation Update Consumer Information #
POST /credentials/removepayments Remove payment instruments #
PUT /credentials/updatepayments Update Payment Instruments #
GET /credentials/querydata Query Data #
GET /credentials/requeststatus/{requestTraceId} Check Request Status #
POST /credentials/consumervulnerable Consumer Vulnerable #

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/push-provisioning"
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

novopayment-push-provisioning-openapi.yml Raw ↑
---
openapi: 3.0.0
info:
  title: Push Provisioning API
  description: >
    ## Use Cases ##

    If you are a Bank that wants to give your customers the possibility to

    seamless register their debit and credit cards in payment platforms such as

    Apple Pay, Samsung Pay and Google Pay, as easily as including only one button

    on your website or app, this API is the solution. NovoPayment does the heavy

    lifting for you, we take care of providing the service for you, so you can

    focus on the core of your business and the UX/UI.


    ## Benefits for you ##

    NovoPayment Push Provisioning manages the interaction with the card schemes

    for you and allows you to focus on the core of your business, freeing you

    from the effort of interconnection with each third-party wallet and allowing

    your customers to quickly access the benefits of using gadgets with NFC

    technology.


    ## What do you need to start the project? ##


    1. Register and create a project in NovoPayment’s Developer Hub. Select
      "Novo Push Provisioning", if the option is not available, please contact us.
    2. Perform tests in the sandbox environment for the following operations:
      - Manage the associated cards of a customer.
        1. Register a new card
        2. Delete a registered card
      - Link a card in Apple Pay
      - Link a card in Google Pay
      - Link a card in Samsung Pay
    3. At the time included in your app the services with which you want to

    integrate, by negotiating with the chosen wallet, for example, Apple Pay.

    4. After testing, contact us to deploy to the UAT environment and start the

    certification process with the third party wallet.


    ## System Overview ##


    Push Provisioning (also call in-app provisioning) allows consumers to easily

    add/push their cards to any supported wallets including Apple Pay, Google

    Pay and Samsung Pay - in-app with the click of a button.


    Implementing this API in your wallet allows your clients to enroll their

    cards in Google Pay, Samsung Pay and Apple Pay.


    ## Headers Params ##

    **Header fields**

    | Name             | Description                                                  | Value                                | Required/Optional/Conditional |

    |------------------|--------------------------------------------------------------|--------------------------------------|-------------------------------|

    | Accept-Language | Language used.                                              | en                                   | Required                      |

    | Content-Type    | Response body type. Operation related information.          | application/json                    | Required                      |

    | Accept          | Content types that are acceptable related to this operation.| application/json                    | Conditional                   |

    | Authorization   | Application authentication information based on the RFC6750 OAUTH 2 specification, under the client’s credentials. | 'Bearer ' + accesToken        | Required                      |

    | X-Token         | Application authentication information based on the RFC7515 JWS under petition signature. | 'JWS ' + token               | Required                      |

    | X-Tenant-Id     | Identifies the tenant that is calling the operation.        | < tenantId >                          | Required                      |

    | X-Time-Zone     | Time Zone of the request.                                    | < timeZone >                          | Optional                      |

    | X-Request-Id   | Unique ID for the API request. This ID is the reference in all the API’s processes. | String (1-36)                 | Optional                      |

  version: v1.0
servers:
  - description: Sandbox
    url: https://sandbox-api.novopayment.com/pushprovisioning/v1
paths:
  #/universal/core/cards:
  #  post:
  #    summary: Enroll Card
  #    description: |
  #      This endpoint allows the enrollment of the card on the VISA system for
  #      later tokenization in a third wallet with In-App Provisioning.

  #    operationId: EnrollCard
  #    requestBody:
  #      $ref: "#/components/requestBodies/RQEnrollCard"
  #    responses:
  #      "200":
  #        $ref: "#/components/responses/RSEnrollCard200"
  #      "400":
  #        $ref: "#/components/responses/RS400"
  #      "401":
  #        $ref: "#/components/responses/RS401"
  #      "404":
  #        $ref: "#/components/responses/RS404"
  #      "500":
  #        $ref: "#/components/responses/RS500"

  # /inapp/provisioning/cardData/applePay:
  #   post:
  #     summary: Apple Pay
  #     description: |
  #       This endpoint allows to enroll the card in the Apple Pay wallet. This
  #       endpoint is used after the enrollment of the card.
  #     requestBody:
  #       $ref: "#/components/requestBodies/RQApplePay"
  #     operationId: ApplePay
  #     responses:
  #       "200":
  #         $ref: "#/components/responses/RSApplePay200"
  #       "400":
  #         $ref: "#/components/responses/RS400"
  #       "401":
  #         $ref: "#/components/responses/RS401"
  #       "404":
  #         $ref: "#/components/responses/RS404"
  #       "500":
  #         $ref: "#/components/responses/RS500"

  # /inapp/provisioning/cardData/googlePay:
  #   post:
  #     summary: Google Pay
  #     description: |
  #       This endpoint allows to enroll the card in the Google Pay wallet.
  #       This endpoint is post enrollment of the card.
  #     operationId: GooglePay
  #     requestBody:
  #       $ref: "#/components/requestBodies/RQGooglePay"
  #     responses:
  #       "200":
  #         $ref: "#/components/responses/RSGooglePay200"
  #       "400":
  #         $ref: "#/components/responses/RS400"
  #       "401":
  #         $ref: "#/components/responses/RS401"
  #       "404":
  #         $ref: "#/components/responses/RS404"
  #       "500":
  #         $ref: "#/components/responses/RS500"

  # /universal/core/cards/{vCardId}:
  #   delete:
  #     summary: Delete Card
  #     description: |
  #       Allows the deletion of a previously registered card.
  #     operationId: DeleteCard
  #     parameters:
  #       - $ref: "#/components/parameters/vCardId"
  #     responses:
  #       "200":
  #         $ref: "#/components/responses/RS200"
  #       "400":
  #         $ref: "#/components/responses/RSDeleteCard400"
  #       "401":
  #         $ref: "#/components/responses/RS401"
  #       "404":
  #         $ref: "#/components/responses/RS404"
  #       "500":
  #         $ref: "#/components/responses/RS500"

  /universal/core/cards/encryption:
    post:
      summary: Encrypt card
      description: |
        This endpoint returns the card information in an encrypted form.
      operationId: EncryptCard
      requestBody:
        $ref: "#/components/requestBodies/RQEncryptCard"
      responses:
        "200":
          $ref: "#/components/responses/RSEncryptCard200"
        "400":
          $ref: "#/components/responses/RSEncryptCard400"
        "401":
          $ref: "#/components/responses/RSEncryptCard401"
        "500":
          $ref: "#/components/responses/RSEncryptCard500"

  /credentials/enrolldata:
    post:
      summary: Enroll Data
      description: |
        This endpoint is used to send customer and associated card data to the provisioning service.
        It is consumed by both internal and external issuers.
      operationId: EnrollData
      parameters:
        - name: X-Transaction-Id
          in: header
          description: |
            Unique ID for every API request - an optional header. Generated by the API client. 
            Used for end-to-end tracing/debugging.
          required: false
          schema:
            type: string
            minLength: 1
            maxLength: 36
            example: "123e4567-e89b-12d3-a456-426614174000"
      requestBody:
        $ref: "#/components/requestBodies/RQEnrollData"
      responses:
        "202":
          $ref: "#/components/responses/RSEnrollData202"
        "400":
          $ref: "#/components/responses/RS400"
        "500":
          $ref: "#/components/responses/RS500"
  /credentials/addpayments:
    post:
      summary: Add Payment Credentials
      description: |
        This API is consumed by any issuer, both internal and external, and is used to send customer data 
         and all associated card information to VISA.
      operationId: addPaymentCredentials
      parameters:
        - name: X-Transaction-Id
          in: header
          description: |
            Unique ID for every API request - an optional header. Generated by the API client. 
            Used for end-to-end tracing/debugging.
          required: false
          schema:
            type: string
            minLength: 1
            maxLength: 36
            example: "123e4567-e89b-12d3-a456-426614174000"
      requestBody:
        $ref: "#/components/requestBodies/RQAddPayments"
      responses:
        "202":
          $ref: "#/components/responses/RSAddPayments202"
        "400":
          $ref: "#/components/responses/RS400"
        "500":
          $ref: "#/components/responses/RS500"

  /credentials/removeconsumerinformation:
    post:
      summary: Remove Consumer Information
      description: |
        This API is consumed by any issuer, both internal and external, and is used to delete customer data 
         and all associated card information to VISA.
      operationId: removeConsumerInformation
      parameters:
        - name: X-Transaction-Id
          in: header
          description: |
            Unique ID for every API request. Generated by the API client. 
            Used for end-to-end tracing/debugging.
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 36
            example: "123e4567-e89b-12d3-a456-426614174000"
        - name: X-Tenant-Id
          in: header
          description: |
            Tenant identificator
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 36
            example: "co-dale"
      requestBody:
        $ref: "#/components/requestBodies/RQDeleteConsumerInfo"
      responses:
        "202":
          $ref: "#/components/responses/RSAddPayments202"
        "400":
          $ref: "#/components/responses/RS400"
        "500":
          $ref: "#/components/responses/RS500"

  /credentials/updateconsumerinformation:
    put:
      summary: Update Consumer Information
      description: |
        This API is consumed by any issuer, both internal and external, and is used to update customer data to VISA.
      operationId: updateConsumerInformation
      parameters:
        - name: X-Transaction-Id
          in: header
          description: |
            Unique ID for every API request. Generated by the API client. 
            Used for end-to-end tracing/debugging.
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 36
            example: "123e4567-e89b-12d3-a456-426614174000"
        - name: X-Tenant-Id
          in: header
          description: |
            Tenant identificator
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 36
            example: "co-dale"
      requestBody:
        $ref: "#/components/requestBodies/RQUpdateConsumerInfo"
      responses:
        "202":
          $ref: "#/components/responses/RSAddPayments202"
        "400":
          $ref: "#/components/responses/RS400"
        "500":
          $ref: "#/components/responses/RS500"
  /credentials/removepayments:
    post:
      summary: Remove payment instruments
      description: |
        This API is consumed by any issuer, both internal and external, and is used to delete paymente instrument data to VISA.
      operationId: removePaymentInstruments
      parameters:
        - name: X-Transaction-Id
          in: header
          description: |
            Unique ID for every API request. Generated by the API client. 
            Used for end-to-end tracing/debugging.
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 36
            example: "123e4567-e89b-12d3-a456-426614174000"
        - name: X-Tenant-Id
          in: header
          description: |
            Tenant identificator
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 36
            example: "co-dale"
      requestBody:
        $ref: "#/components/requestBodies/RQDeletePaymentInstrument"
      responses:
        "202":
          $ref: "#/components/responses/RSAddPayments202"
        "400":
          $ref: "#/components/responses/RS400"
        "500":
          $ref: "#/components/responses/RS500"
  /credentials/updatepayments:
    put:
      summary: Update Payment Instruments
      description: |
        This API is consumed by any issuer, both internal and external, and is used to update payment instrument data to VISA.
      operationId: updatePaymentInstruments
      parameters:
        - name: X-Transaction-Id
          in: header
          description: |
            Unique ID for every API request. Generated by the API client. 
            Used for end-to-end tracing/debugging.
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 36
            example: "123e4567-e89b-12d3-a456-426614174000"
        - name: X-Tenant-Id
          in: header
          description: |
            Tenant identificator
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 36
            example: "co-dale"
      requestBody:
        $ref: "#/components/requestBodies/RQUpdatePayment"
      responses:
        "202":
          $ref: "#/components/responses/RSAddPayments202"
        "400":
          $ref: "#/components/responses/RS400"
        "500":
          $ref: "#/components/responses/RS500"
  /credentials/querydata:
    get:
      summary: Query Data
      description: |
        This API is consumed by any issuer, both internal and external, and is used to get paymentcredential and consumer info for a given product to VISA.
      operationId: queryData
      parameters:
        - name: X-Transaction-Id
          in: header
          description: |
            Unique ID for every API request. Generated by the API client. 
            Used for end-to-end tracing/debugging.
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 36
            example: "123e4567-e89b-12d3-a456-426614174000"
        - name: X-Tenant-Id
          in: header
          description: |
            Tenant identificator
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 36
            example: "co-dale"
        - name: type
          in: query
          required: true
          description: Type of the intent
          schema:
            type: string
            example: "PRODUCT_CODE"
        - name: value
          in: query
          required: true
          description: Value associated with the intent
          schema:
            type: string
            example: "CLICK_TO_PAY"
        - name: externalConsumerIDOwnerBID
          in: query
          required: false
          description: Business ID of the external consumer's owner
          schema:
            type: string
            example: "10098765"
        - name: externalConsumerID
          in: query
          required: true
          description: External consumer ID
          schema:
            type: string
            example: "63421837-d597-4f0f-89e4-930c1a7b9e85"
      responses:
        "200":
          $ref: "#/components/responses/RSQueryData200"
        "400":
          $ref: "#/components/responses/RS400"
        "404":
          description: Request not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RS404"
        "500":
          $ref: "#/components/responses/RS500"
  /credentials/requeststatus/{requestTraceId}:
    get:
      summary: Check Request Status
      description: |
        This endpoint allows internal and external issuers to check the current status of a previously submitted request 
        using the request trace identifier.
      operationId: GetRequestStatus
      parameters:
        - name: requestTraceId
          in: path
          required: true
          description: |
            Unique identifier of the request to retrieve its current processing status.
          schema:
            type: string
            format: uuid
            minLength: 36
            maxLength: 36
            example: "351562ba-83cf-11ee-b962-0242ac120002"
        - name: X-Transaction-Id
          in: header
          description: |
            Unique ID for every API request - an optional header. Generated by the API client. 
            Used for end-to-end tracing/debugging.
          required: false
          schema:
            type: string
            minLength: 1
            maxLength: 36
            example: "123e4567-e89b-12d3-a456-426614174000"
      responses:
        "200":
          $ref: "#/components/responses/RSRequestStatus200"
        "400":
          $ref: "#/components/responses/RS400"
        "404":
          description: Request not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/RS404"
        "500":
          $ref: "#/components/responses/RS500"
  /credentials/consumervulnerable:
    post:
      summary: Consumer Vulnerable
      description: |
        This API is consumed by any issuer, both internal and external, and is used to update payment instrument data to VISA.
      operationId: consumerVulnerable
      parameters:
        - name: X-Transaction-Id
          in: header
          description: |
            Unique ID for every API request. Generated by the API client. 
            Used for end-to-end tracing/debugging.
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 36
            example: "123e4567-e89b-12d3-a456-426614174000"
        - name: X-Tenant-Id
          in: header
          description: |
            Tenant identificator
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 36
            example: "co-dale"
      requestBody:
        $ref: "#/components/requestBodies/RQConsumerVulnerable"
      responses:
        "202":
          $ref: "#/components/responses/RSAddPayments202"
        "400":
          $ref: "#/components/responses/RS400"
        "500":
          $ref: "#/components/responses/RS500"


security:
  - oAuth2ClientCredentials: []
components:
  securitySchemes:
    oAuth2ClientCredentials:
      type: oauth2
      description: >
        See [Oauth2
        API](https://developer.novopayment.com/api/authentication-method-and-encryption/oauth2-api)
      flows:
        clientCredentials:
          tokenUrl: https://sandbox-api.novopayment.com/oauth2/token
          scopes: {}
  examples:
    HeaderParamsRequired:
      value:
        code: 400.00.001
        message: Header Params Required
        datetime: "2022-04-25T23:19:12.000Z"
    JWEInvalidFormat:
      value:
        code: 400.00.002
        message: JWE Invalid format
        datetime: "2022-04-25T23:19:12.000Z"
    InvalidTenantID:
      value:
        code: 400.00.004
        message: Invalid Tenant ID
        datetime: "2022-04-25T23:19:12.000Z"
    UnableProcessRequest:
      value:
        code: 400.00.324
        message: We were unable to process your request
        datetime: "2022-04-25T23:19:12.000Z"
    InvalidParameters:
      value:
        code: 400.00.396
        message: Invalid parameters.
        datetime: "2022-04-25T23:19:12.000Z"
        data:
          errors:
            - message: "Field fielName: must not be blank"
    NotFound:
      value:
        code: 404.00.900
        message: Not Found
        datetime: "2022-04-25T23:19:12.000Z"
    InvalidCardId:
      value:
        code: 404.00.009
        message: Invalid Card ID
        datetime: "2022-04-25T23:19:12.000Z"
    IntegrationError:
      value:
        code: 400.00.376
        message: Integration Error
        datetime: "2022-04-25T23:19:12.000Z"
    InvalidAccessToken:
      value:
        code: 401.00.990
        message: Invalid Access Token
        datetime: "2022-04-25T23:19:12.000Z"
    AccessTokenNotApproved:
      value:
        code: 401.00.991
        message: Access Token not approved
        datetime: "2022-04-25T23:19:12.000Z"
    InvalidSignature:
      value:
        code: 401.00.992
        message: Invalid signature
        datetime: "2022-04-25T23:19:12.000Z"
    AccessTokenExpired:
      value:
        code: 401.00.993
        message: Access token expired
        datetime: "2022-04-25T23:19:12.000Z"
    InternalServerError:
      value:
        code: 500.00.999
        message: Internal Server Error
        datetime: "2022-04-25T23:19:12.000Z"
    HeaderParamsRequiredTk:
      value:
        code: 400.00.001
        message: Header Params Required
        datetime: "2022-04-25T23:19:12.000Z"
    ErrorGeneralService:
      value:
        code: 400.00.350
        message: Error General Service.
        datetime: "2022-04-25T23:19:12.000Z"
    InvalidParams:
      value:
        code: 400.00.396
        message: Invalid parameters.
        datetime: "2024-07-17T00:57:36.360Z"
    ConfigurationNotFound:
      value:
        code: 400.00.356
        message: Component configuration not found.
        datetime: "2024-07-17T00:57:36.360Z"
    EncryptionError:
      value:
        code: 400.00.994
        message: Encryption error
        datetime: "2024-07-17T00:57:36.360Z"
    InvalidSignatureTk:
      value:
        code: 401.00.992
        message: Invalid signature
        datetime: "2024-07-17T00:57:36.360Z"
    DecryptionError:
      value:
        code: 401.00.997
        message: Decryption Error
        datetime: "2024-07-17T00:57:36.360Z"
    InternalServerErrorTk:
      value:
        code: 500.00.999
        message: Internal Server Error
        datetime: "2022-04-25T23:19:12.000Z"
  parameters:
    vCardId:
      name: vCardId
      in: path
      description: |
        This value is generated on Universal Card Enrollment.
      required: true
      example: 502c2656-7110-4994-a820-f593e468c6b4
      schema:
        type: string
        maxLength: 42
  schemas:
    RQApplePay:
      type: object
      required:
        - vCardId
        - deviceCert
        - nonceSignature
        - nonce
      properties:
        vCardId:
          type: string
          description: |
            Unique Visa identifier for the card. 
            This field was generated on Universal Card Enrollment Process.
          example: v-123-b25dd0af-2960-420b-8aaa-49b3e466c00f
          maxLength: 42
        deviceCert:
          type: string
          description: Certify the Apple Device. Consult Apple Pre-requisites.
          example: adevicecert
          maxLength: 8192
        nonceSignature:
          type: string
          description: |
            Signature signed on nonce in SE.
            See pre-requisites above on how to obtain this.
            Consult Apple Pre-requisites.
          example: jD4Aphu+93N2wbBn
          maxLength: 512
        nonce:
          type: string
          description: |
            A one-time use nonce generated by Apple Servers.
            To be included in the encrypted card data under the key: “nonce”.
            Consult Apple Pre-requisites.
          example: vXWJaBidcTLaJJCF
          maxLength: 32
    RQEnrollCard:
      type: object
      required:
        - card
      properties:
        card:
          $ref: "#/components/schemas/ObjEnrollCardCard"
        customerIdForPartner:
          type: string
          description: |
            This is the Visa generated unique identifier of the customer of the
            Digital Wallet Provider ClientFor a bank wallet;
            For bank wallets this parameter is not Required.
          example: jD4Aphu+93N2wbBn
          maxLength: 36
        clientCustomerId:
          type: string
          description: |
            Unique identificator of the customer in the client system.
          example: ae25OGhjZTk2dsr452dgsr51
          maxLength: 36
        clientIdForPartner:
          type: string
          description: |
            Identity of the client. This field is Required only when the Enroll
            card API is being made on behalf of another partner.
            For bank wallets, this parameter is not Required.
          example: vXWJaBidcTLaJJCF
          maxLength: 36

    ObjEnrollCardCard:
      type: object
      required:
        - accountNumber
        - expirationDate
      properties:
        accountNumber:
          type: string
          minLength: 15
          maxLength: 19
          description: |
            PAN (Primary Account Number) is the number of the card.
          example: Phasellus pharetra vulputate metus
        expirationDate:
          $ref: "#/components/schemas/ObjExpirationDate"
        paymentAccountReference:
          type: string
          maxLength: 29
          description: |
            PAR. Unique reference number for the card. Verify the EMVCo in the
            VISA documentation.
          example: v-123-b25dd0af-2960-420b-8aaa-49b3e466c00f
        cvv2:
          type: string
          maxLength: 3
          description: |
            CVV2 of the card. 
            For bank wallet, this parameter is not Required.
          example: 808
        nameOnCard:
          type: string
          maxLength: 256
          description: |
            Name printed on the card.This parameter is Required for ApplePay.
          example: John Smith
        BillingAddress:
          $ref: "#/components/schemas/ObjBillingAddress"
    GetCardPaymentInstrument:
      type: object
      required:
        - accountNumber
        - billingAddress
        - expirationDate
        - nameOnCard
        - type
      properties:
        accountNumber:
          type: string
          minLength: 16
          maxLength: 19
          example: "4111111145551140"
        billingAddress:
          $ref: "#/components/schemas/BillingAddress"
        expirationDate:
          type: string
          example: "2030-01"
        nameOnCard:
          type: string
          maxLength: 120
          example: "John Doe"
        type:
          type: string
          example: "CARD"
        cardType:
          type: string
          maxLength: 70
          example: "Visa Platinum"
        issuerName:
          type: string
          maxLength: 150
          example: "Bank A"
        status:
          type: string
          enum: [ACTIVE, DISABLED]
          example: "ACTIVE"
        tokenDetails:
          $ref: "#/components/schemas/TokenDetails"
        panReferenceID:
          type: string
          maxLength: 32
          example: "3123123123122"
        paymentAccountReference:
          type: string
          maxLength: 50
          minLength: 29
          example: "3123123123123123123123123123123123"
    GetBankAccountPaymentInstrument:
      type: object
      required:
        - accountName
        - currencyCode
        - accountNumber
        - accountNumberType
        - type
      properties:
        type:
          type: string
          example: "BANK_ACCOUNT"
        status:
          type: string
          enum: [ACTIVE, DISABLED]
          example: "ACTIVE"
        address:
          $ref: "#/components/schemas/BillingAddress"
        bankCode:
          type: string
          maxLength: 12
          minLength: 1
          example: "123"
        bankName:
          type: string
          maxLength: 50
          minLength: 1
          example: "Bank A"
        branchCode:
          type: string
          maxLength: 12
          minLength: 1
          example: "123456"
        accountName:
          type: string
          maxLength: 70
          minLength: 1
          example: "Alex Miller"
        countryCode:
          type: string
          maxLength: 3
          minLength: 3
          example: "USA"
        bankCodeType:
          type: string
          enum: [ ABA, SORT_CODE, DEFAULT ]
          example: "ABA"
        currencyCode:
          type: string
          maxLength: 3
          minLength: 3
          example: "USD"
        accountNumber:
          type: string
          minLength: 34
          maxLength: 1
          example: "1001001234"
        accountNumberType:
          type: string
          enum: [ IBAN, DEFAULT ]
          example: "IBAN"
        bankIdentifierCode:
          type: string
          minLength: 11
          maxLength: 1
          example: "AAAABBCC123"
    ObjGetDataPaymentInstrumentList:
      maxItems: 5
      minItems: 1
      type: array
      items:
        oneOf:
          - $ref: '#/components/schemas/GetCardPaymentInstrument'
          - $ref: '#/components/schemas/GetBankAccountPaymentInstrument'
    ObjExpirationDate:
      type: object
      required:
        - month
        - year
      properties:
        month:
          type: string
          description: Month of expiration date
          maxLength: 2
          example: 7
        year:
          type: string
          description: Year  of expiration date
          maxLength: 4
          example: 2016
    ObjBillingAddress:
      type: object
      required:
      properties:
        name:
          type: string
          description: Physical address or shipping address.
          maxLength: 100
          example: Digital Issuance
        line1:
          type: string
          description: |
            First line of the address. Usually for the complete address,
            this is Required for the US and Canada.
          maxLength: 256
          example: 10808 Research Boulevard
        line2:
          type: string
          description: |
            Second line, usually corresponds to house, apartment,
            suite, etc.
          maxLength: 256
          example: Provisioning Boulevard
        city:
          type: string
          description: Name of the city.
          maxLength: 100
          example: Austin
        state:
          type: string
          description: |
            State or province in the country.This field must be valid
            for the respective country.The country will be related to the
            country of the bank.
          example: TX
        postalCode:
          type: string
          description: |
            Postal Code.

            Condition: If address is provided this field has the following
            characteristics.
          maxLength: 40
          example: 78759
        countryCode:
          type: string
          description: |
            Code of the Issuer’s country.
            Format: String; ISO country code ISO 3166-1 alpha-2.
          maxLength: 2
          example: US
    ObjIntent:
      type: object
      required:
        - type
        - value
      properties:
        type:
          type: string
          enum: [PRODUCT_CODE]
          example: "PRODUCT_CODE"
          description: Indicates the type of the intent
        value:
          type: string
          enum: [CLICK_TO_PAY]
          example: "CLICK_TO_PAY"
          description: Product name for which the request is intended
    ObjCardEncryptionEncryptedData:
      type: object
      description: |
        Encrypted and signed request data
      required:
        - signedNonce
        - accountNumber
        - expirationMonth
        - expirationYear
        - nameOnAccount
        - cardType
        - cardBrand
        - billingAddress
      properties:
        signedNonce:
          type: string
          maxLength: 256
          description: |
            Nonce signed with signature shared secret
          example: eyJle...XcClc
        accountNumber:
          type: string
          maxLength: 19
          description: |
            Full Card Number, numeric value
          example: "4012888888881881"
        expirationMonth:
          type: string
          maxLength: 2
          description: |
            Month when

# --- truncated at 32 KB (88 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/novopayment/refs/heads/main/openapi/novopayment-push-provisioning-openapi.yml