Ravelin 3D Secure API

EMV 3DS 2.x authentication operations.

OpenAPI Specification

ravelin-3d-secure-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Ravelin Server 3D Secure API
  version: '1'
  description: 'Ravelin''s PSP-agnostic, PCI 3DS-validated 3D Secure Server API. Implements EMV 3DS 2.x

    Authentication Request (AReq), Challenge, Result, and Version Lookup operations against

    3ds.live.pci.ravelin.com. Supports both encrypted payment method payloads and unencrypted

    PAN, dynamic exemption routing, and card-scheme-specific authentication values (CAVV, AAV,

    AEVV). Integrates with the Ravelin iOS, Android, and browser SDKs for App-based (APP),

    Browser-based (BRW), and 3RI (3DS Requestor Initiated) channels.


    Endpoint documentation: https://developer.ravelin.com/merchant/api/endpoints/3d-secure/.

    '
  contact:
    name: Ravelin Support
    url: https://support.ravelin.com/
  termsOfService: https://www.ravelin.com/legal/terms-of-service
  license:
    name: Proprietary
servers:
- url: https://3ds.live.pci.ravelin.com
  description: PCI 3DS production endpoint
security:
- secretApiKey: []
tags:
- name: 3D Secure
  description: EMV 3DS 2.x authentication operations.
paths:
  /3ds/version:
    post:
      tags:
      - 3D Secure
      summary: Look Up 3DS Version for a Card
      operationId: lookup3dsVersion
      description: Look up the available 3DS protocol versions for a given card. Used before initiating an Authentication Request to determine the supported 3DS Method URL and protocol version.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - timestamp
              properties:
                timestamp:
                  type: integer
                  format: int64
                pan:
                  type: string
                paymentMethod:
                  type: object
                  description: Encrypted payment method payload.
      responses:
        '200':
          description: Version lookup result.
          content:
            application/json:
              schema:
                type: object
                properties:
                  threeDSServerTransID:
                    type: string
                  acsStartProtocolVersion:
                    type: string
                  acsEndProtocolVersion:
                    type: string
                  dsStartProtocolVersion:
                    type: string
                  dsEndProtocolVersion:
                    type: string
                  threeDSMethodURL:
                    type: string
                    format: uri
  /3ds/authenticate:
    post:
      tags:
      - 3D Secure
      summary: Send a 3DS Authentication Request (AReq)
      operationId: authenticate3ds
      description: Send transaction, merchant, and cardholder data to the 3DS Server to initiate an Authentication Request (AReq). Returns the transStatus and, when applicable, the data needed to proceed to a challenge.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AuthenticateRequest'
      responses:
        '200':
          description: AReq result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticateResponse'
  /3ds/challenge:
    post:
      tags:
      - 3D Secure
      summary: Send a 3DS Challenge Request
      operationId: challenge3ds
      description: Submit the Challenge Request when the AReq returned transStatus=C, completing the cardholder challenge flow (OTP, biometric, etc.).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - timestamp
              - acsTransID
              - threeDSServerTransID
              properties:
                timestamp:
                  type: integer
                  format: int64
                acsTransID:
                  type: string
                threeDSServerTransID:
                  type: string
      responses:
        '200':
          description: Challenge response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticateResponse'
  /3ds/result:
    post:
      tags:
      - 3D Secure
      summary: Retrieve a 3DS Authentication Result
      operationId: result3ds
      description: Retrieve the final authentication result by 3DS Server Transaction ID after a Challenge has completed.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - timestamp
              - threeDSServerTransID
              properties:
                timestamp:
                  type: integer
                  format: int64
                threeDSServerTransID:
                  type: string
      responses:
        '200':
          description: Authentication result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AuthenticateResponse'
components:
  schemas:
    AuthenticateResponse:
      type: object
      properties:
        transStatus:
          type: string
          enum:
          - Y
          - A
          - N
          - U
          - C
          - D
          - R
          - I
          - S
          description: 'Authentication outcome. Y=Authenticated, A=Attempted, N=Not authenticated,

            U=Authentication unavailable, C=Challenge required, D=Challenge required (decoupled),

            R=Rejected, I=Informational only, S=Challenge using cardholder-facing service.

            '
        authenticationValue:
          type: string
          description: CAVV / AAV / AEVV verification value, base64 encoded.
        acsTransID:
          type: string
        threeDSServerTransID:
          type: string
        eci:
          type: string
        liabilityShifted:
          type: boolean
        acsURL:
          type: string
          format: uri
        cReq:
          type: string
          description: Base64 Challenge Request payload, when transStatus=C.
    AuthenticateRequest:
      type: object
      required:
      - timestamp
      - areqData
      properties:
        timestamp:
          type: integer
          format: int64
        pan:
          type: string
          description: Unencrypted PAN, when not using an encrypted paymentMethod.
        paymentMethod:
          type: object
          description: Encrypted payment method payload.
        areqData:
          type: object
          required:
          - messageCategory
          - deviceChannel
          - threeDSRequestorID
          - threeDSRequestorName
          - threeDSRequestorURL
          properties:
            messageCategory:
              type: string
              enum:
              - '01'
              - '02'
              description: 01 = Payment Authentication, 02 = Non-Payment Authentication.
            deviceChannel:
              type: string
              enum:
              - '01'
              - '02'
              - '03'
              description: 01 = APP, 02 = BRW, 03 = 3RI.
            threeDSRequestorID:
              type: string
            threeDSRequestorName:
              type: string
            threeDSRequestorURL:
              type: string
              format: uri
            purchaseAmount:
              type: string
            purchaseCurrency:
              type: string
            purchaseExponent:
              type: string
            purchaseDate:
              type: string
            acquirerMerchantID:
              type: string
            acquirerBIN:
              type: string
            merchantName:
              type: string
            merchantCountryCode:
              type: string
            mcc:
              type: string
  securitySchemes:
    secretApiKey:
      type: apiKey
      in: header
      name: Authorization
      description: Secret API key prefixed with `token`.