openapi: 3.2.0 info: title: Spreedly API V1 Sca Authentication API version: v1 description: An OpenAPI specification file for V1 of the Spreedly Core Transactional API servers: - url: https://core.spreedly.com/v1 tags: - name: sca_authentication paths: /sca/providers/{sca_provider_key}/authenticate: parameters: - name: sca_provider_key in: path description: The token returned by the sca providers [endpoint](https://developer.spreedly.com/docs/3ds-solutions#creating-an-sca-provider) required: true schema: type: string post: summary: Authenticate a given payment method tags: - sca_authentication security: - basic_auth: [] operationId: authenticate description: 'Authenticate a given payment method and amount against provided SCA Provider Key (specified in the request URL) Notable response elements can be found in the table below. All other response elements are used by our `Spreedly.ThreeDS.Lifecycle` helpers and exposed for debugging purposes. We recommend that our merchants not use any fields that are not listed in the table below. ' parameters: [] responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/authenticate_response' application/xml: schema: $ref: '#/components/schemas/authenticate_response' '401': description: Unauthorized content: Not authorized request: examples: application/json: value: - key: errors.access_denied message: Unable to authenticate using the given environment_key and access_token. Please check your credentials. application/xml: value: " \n Unable to authenticate using the given environment_key and access_token. Please check your credentials.\n \n" '404': description: Not Found content: Token Not Found: examples: application/json: value: - key: errors.sca_provider_not_found message: Unable to find the sca_provider given. application/xml: value: " \n Unable to find the sca_provider given.\n \n" '422': description: Unprocessable Entity content: Unprocessable Entity: examples: application/json: value: - key: errors.payment_method_or_payment_method_token_required message: You must specify a valid 'payment_method' or valid 'payment_method_token' parameter. application/xml: value: " \n You must specify a valid 'payment_method' or valid 'payment_method_token' parameter.\n \n" requestBody: content: application/json: schema: $ref: '#/components/schemas/authenticate' application/xml: schema: $ref: '#/components/schemas/authenticate' components: schemas: authenticate_response: type: object properties: transaction: $ref: '#/components/schemas/authenticate_properties' authenticate: type: object properties: transaction: type: object properties: payment_method_token: type: string description: The token of the payment method to use currency_code: type: string description: The currency of the funds, as [ISO 4217 alpha currency codes](https://en.wikipedia.org/wiki/ISO_4217#Active_codes), e.g., `USD` for US dollars. amount: type: integer description: The amount to request, as an integer. E.g., `1000` for $10.00. test_scenario: type: object properties: scenario: type: string description: The tested scenario. description: Additional fields to indicate valid 3DS2 test flow options. Please refer to our [3DS2 Global Testing Guide](https://developer.spreedly.com/docs/testing-your-3ds2-global-integration) to learn more about testing your 3DS2 Global integration with out Test SCA Provider. browser_info: type: string description: Please refer to our [Spreedly 3DS2 Global Integration Guide for Web](https://developer.spreedly.com/docs/3ds-solutions), to learn how to include our `Lifecycle.js` library and gather the browser info data using `Spreedly.ThreeDS.serialize` method. force_daf: type: boolean description: Boolean field that can be used to indicate if a transaction should use Visa’s DAF. For more information please refer to our [3DS2 Global DAF guide](https://developer.spreedly.com/docs/spreedly-3ds2-global-guide#visa-daf) exemption_type: type: string description: Type of exemption request to reduce likelihood of a transaction being challenged. The two exemptions currently supported are `low_value` and `transaction_risk_analysis_exemption`. See our [exemption guide](https://developer.spreedly.com/docs/spreedly-3ds2-global-guide#requesting-exemptions) to learn more acquiring_bank_fraud_rate: type: string description: Additional field required if requesting a `transaction_risk_analysis_exemption` that details threshold for bank fraud rate. See our [exemption guide](https://developer.spreedly.com/docs/spreedly-3ds2-global-guide#requesting-exemptions) to learn more three_ds_requestor_challenge_ind: type: string description: Indicates whether a challenge is being requested for a 3DS2 Global transaction. required: - payment_method_token - browser_info authenticate_properties: type: object properties: token: type: string description: The token uniquely identifying the transaction at Spreedly. This token can be passed into an `authorize` or `purchase` transaction via the `sca_authentication_token` field to automatically fill its `payment_method_token` and Third Party 3DS2 fields. succeeded: type: boolean description: '`true` if the transaction request was successfully executed, `false` otherwise' state: type: string description: The current state of the authentication. Valid values are `succeeded`, `failed`, and `pending` message: type: string description: A human-readable string indicating the result of the transaction transaction_type: type: string description: The type of transaction; contains “Sca::Authentication” for a Spreedly 3DS Global authentication gateway_transaction_key: type: string description: The Spreedly transaction token of the parent gateway transaction sca_provider_key: type: string description: The SCA Provider that was used to create the authentication acs_transaction_id: type: string description: The unique ID of the transaction given by the ACS server (3DS2 only) three_ds_server_trans_id: type: string description: The unique ID of the transaction given by the 3DS Server (3DS2 only) directory_server_transaction_id: type: string description: The unique ID of the transaction given by the directory server (3DS2 only) xid: type: string description: The transaction identifier given by the 3DS Server three_ds_version: type: string description: The version of 3DS that was used to authenticate the transaction flow_performed: type: string description: An enumerated field that denotes what flow was most recently performed. Valid values are `frictionless`, `device_fingerprint`, `challenge`, `app_challenge`, and `not_authenticated`. ecommerce_indicator: type: string description: Contains the ecommerce indicator (ECI) returned by the 3DS Server directory_response_status: type: string description: The transaction status given by the directory server in the initial response. This field’s value corresponds to the `transStatus` enumeration in the EMV 3-D Secure Protocol. Valid values can be `Y`, `N`, `U`, `A`, `C`, or `R`. Please see the EMV 3-D Secure Protocol spec for more information. authentication_response_status: type: string description: The most recent transaction status given received by the 3DS Server. This field’s value corresponds to the `transStatus` enumeration in the EMV 3-D Secure Protocol. Valid values can be `Y`, `N`, `U`, `A`, `C`, or `R`. Please see the EMV 3-D Secure Protocol spec for more information. authentication_value: type: string description: The authentication value returned by the 3DS Server for successful authentications trans_status_reason: type: string description: Provides information on why the `authentication_response_status` field has the specific value. This field’s value corresponds to the `transStatusReason` enumeration in the EMV 3-D Secure Protocol. Please see EMV 3-D Secure Protocol spec for more information. daf: type: boolean description: Boolean field to indicate if the authentication request utilized Visa’s Digital Authentication Framework. managed_order_token: type: string description: The token value provided by the protection provider running the authentication. payment_method_key: type: string description: The token of the payment method being authenticated. This is the same as the `payment_method_token` field in the `sca_authentication` transaction request. securitySchemes: basic_auth: type: http scheme: basic description: "Unless otherwise noted, all calls to the Spreedly API use [HTTP basic authentication](https://en.wikipedia.org/wiki/Basic_access_authentication) over HTTPS.\n Use the [environment key](https://developer.spreedly.com/docs/the-spreedly-app#environment-key) of the Spreedly environment you wish to execute against as the HTTP basic user, and one of your organization's [access secrets](https://developer.spreedly.com/docs/the-spreedly-app#access-secrets) as the HTTP basic password." x-explorer-enabled: false