openapi: 3.2.0
info:
title: Silverflow 3DS Authentication API
version: 1.417.0
contact:
name: API Support
email: support@silverflow.com
license:
name: Commercial
description: 'Operations tagged 3DS Authentication across 2 of this provider''s published API definitions: silverflow-openapi.yml, silverflow-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://eu-west-1.api.silverflow.com/v1
description: Production URL for Europe - Equivalent to https://api.silverflow.co/v1
- url: https://us-east-2.api.silverflow.com/v1
description: Production URL for North America
- url: https://eu-west-1.api-sbx.silverflow.com/v1
description: Sandbox URL - Equivalent to https://api-sbx.silverflow.co/v1
security:
- ApiKey: []
- BearerToken: []
tags:
- name: 3DS Authentication
description: 3DS Authentication Endpoints
paths:
/3ds:
post:
operationId: create3dsAuthentication
summary: Create 3DS Authentication
description: 'Create a new 3DS authentication. This endpoint can potentially trigger a 3DS challenge flow.
Requires the `threeDs:Create` permission.
Diners support is EXPERIMENTAL.
Standalone merchant info (`merchantInfo`) is EXPERIMENTAL.
'
tags:
- 3DS Authentication
requestBody:
description: 'Create a 3DS authentication.
'
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PublicCreate3dsRequest'
examples:
threeDsWithMerchantAcceptor:
$ref: '#/components/examples/ThreeDsRequestWithMerchantAcceptorExample'
threeDsWithMerchantInfo:
$ref: '#/components/examples/ThreeDsRequestWithMerchantInfoExample'
responses:
'201':
description: The 3DS authentication entity
headers:
Location:
description: The URL of the newly created 3DS authentication
schema:
type: string
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/ThreeDsFrictionlessAuthenticated'
- $ref: '#/components/schemas/ThreeDsChallenge'
- $ref: '#/components/schemas/ThreeDsNoFlowNoAuth'
- $ref: '#/components/schemas/ThreeDsDataOnly'
examples:
challenge:
$ref: '#/components/examples/ThreeDsFrictionlessResponseWithMerchantAcceptorExample'
frictionless:
$ref: '#/components/examples/ThreeDsChallengeResponseWithMerchantAcceptorExample'
frictionlessWithMerchantInfo:
$ref: '#/components/examples/ThreeDsFrictionlessResponseWithMerchantInfoExample'
challengeWithMerchantInfo:
$ref: '#/components/examples/ThreeDsChallengeResponseWithMerchantInfoExample'
'400':
description: Bad Request
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/InvalidRequestErrorDetails'
- $ref: '#/components/schemas/schemas-InvalidInputErrorDetails'
examples:
InvalidRequestErrorExample:
$ref: '#/components/examples/InvalidRequestExample'
InvalidInputErrorExample:
$ref: '#/components/examples/InvalidInputErrorExample'
'401':
$ref: '#/components/responses/components-responses-UnauthorizedError'
'409':
description: Conflict
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/ReferencedEntityNotFoundErrorDetails'
- $ref: '#/components/schemas/UnsupportedCardNetworkErrorDetails'
- $ref: '#/components/schemas/UnsupportedCardNetworkRegionErrorDetails'
examples:
ReferencedEntityNotFoundErrorExample:
$ref: '#/components/examples/ReferencedEntityNotFoundErrorExample'
UnsupportedCardNetwork:
$ref: '#/components/examples/UnsupportedCardNetwork'
UnsupportedCardNetworkRegion:
$ref: '#/components/examples/UnsupportedCardNetworkRegion'
'422':
description: Unprocessable Content
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/UnsupportedProtocolVersionErrorDetails'
- $ref: '#/components/schemas/UnenrolledAccountNumberErrorDetails'
- $ref: '#/components/schemas/UnenrolledAcquireOrMerchantErrorDetails'
examples:
UnsupportedProtocolVersionCardExample:
$ref: '#/components/examples/UnsupportedProtocolVersionCardExample'
UnenrolledAccountNumberExample:
$ref: '#/components/examples/UnenrolledAccountNumberExample'
UnenrolledAcquireOrMerchantExample:
$ref: '#/components/examples/UnenrolledAcquireOrMerchantExample'
'429':
$ref: '#/components/responses/components-responses-TooManyRequestsError'
'500':
$ref: '#/components/responses/InternalServerError'
get:
operationId: get3dsAuthentications
summary: List 3DS Authentications
description: 'List 3DS transactions. 3DS authentications returned from this endpoint
will never have the `authenticationValue` property in either `ares` or `rreq` properties.
Requires the `threeDs:List` permission.
'
tags:
- 3DS Authentication
parameters:
- $ref: '#/components/parameters/parameters-offsetToken'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/limit'
responses:
'200':
description: A (paged) list of 3DS authentications.
content:
application/json:
schema:
$ref: '#/components/schemas/threeDsPage'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/InvalidOffsetTokenErrorDetails'
examples:
InvalidOffsetToken:
$ref: '#/components/examples/InvalidOffsetTokenExample'
'401':
$ref: '#/components/responses/components-responses-UnauthorizedError'
'429':
$ref: '#/components/responses/components-responses-TooManyRequestsError'
'500':
$ref: '#/components/responses/InternalServerError'
servers:
- url: https://eu-west-1.api.silverflow.com/v1
description: Production URL for Europe - Equivalent to https://api.silverflow.co/v1
- url: https://us-east-2.api.silverflow.com/v1
description: Production URL for North America
- url: https://eu-west-1.api-sbx.silverflow.com/v1
description: Sandbox URL - Equivalent to https://api-sbx.silverflow.co/v1
/3ds/3ri:
post:
operationId: create3riAuthentication
summary: Create 3RI Authentication
description: "Create a new 3RI authentication. Also known as merchant-initiated authentications, allows merchants to authenticate a transaction without the direct involvement of the cardholder.\n\nRequires the `threeDs:Create` permission.\n\nDiners support is EXPERIMENTAL. \n\nStandalone merchant info (`merchantInfo`) is EXPERIMENTAL.\n"
tags:
- 3DS Authentication
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ThreeRiRequest'
examples:
threeRiWithMerchantAcceptor:
$ref: '#/components/examples/RequestWithMerchantAcceptor'
threeRiWithMerchantInfo:
$ref: '#/components/examples/RequestWithMerchantInfo'
responses:
'201':
description: The 3RI authentication entity
headers:
Location:
description: The URL of the newly created 3RI authentication
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/ThreeRiResponse'
examples:
authenticated:
$ref: '#/components/examples/ResponseWithMerchantAcceptor'
authenticatedWithMerchantInfo:
$ref: '#/components/examples/ResponseWithMerchantInfo'
'400':
description: Bad Request
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/InvalidRequestErrorDetails'
- $ref: '#/components/schemas/schemas-InvalidInputErrorDetails'
examples:
InvalidRequestErrorExample:
$ref: '#/components/examples/InvalidRequestExample'
InvalidInputErrorExample:
$ref: '#/components/examples/InvalidInputErrorExample'
'401':
$ref: '#/components/responses/components-responses-UnauthorizedError'
'409':
description: Conflict
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/ReferencedEntityNotFoundErrorDetails'
- $ref: '#/components/schemas/UnsupportedCardNetworkErrorDetails'
- $ref: '#/components/schemas/UnsupportedCardNetworkRegionErrorDetails'
examples:
ReferencedEntityNotFoundErrorExample:
$ref: '#/components/examples/ReferencedEntityNotFoundErrorExample'
UnsupportedCardNetwork:
$ref: '#/components/examples/UnsupportedCardNetwork'
UnsupportedCardNetworkRegion:
$ref: '#/components/examples/UnsupportedCardNetworkRegion'
'422':
description: Unprocessable Content
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/UnsupportedProtocolVersionErrorDetails'
- $ref: '#/components/schemas/UnenrolledAccountNumberErrorDetails'
- $ref: '#/components/schemas/UnenrolledAcquireOrMerchantErrorDetails'
examples:
UnsupportedProtocolVersion3riExample:
$ref: '#/components/examples/UnsupportedProtocolVersion3riExample'
UnsupportedProtocolVersionCardExample:
$ref: '#/components/examples/UnsupportedProtocolVersionCardExample'
UnenrolledAccountNumberExample:
$ref: '#/components/examples/UnenrolledAccountNumberExample'
UnenrolledAcquireOrMerchantExample:
$ref: '#/components/examples/UnenrolledAcquireOrMerchantExample'
'429':
$ref: '#/components/responses/components-responses-TooManyRequestsError'
'500':
$ref: '#/components/responses/InternalServerError'
servers:
- url: https://eu-west-1.api.silverflow.com/v1
description: Production URL for Europe - Equivalent to https://api.silverflow.co/v1
- url: https://us-east-2.api.silverflow.com/v1
description: Production URL for North America
- url: https://eu-west-1.api-sbx.silverflow.com/v1
description: Sandbox URL - Equivalent to https://api-sbx.silverflow.co/v1
/3ds/{threedsKey}:
get:
operationId: get3dsAuthentication
summary: Get 3DS Authentication
description: 'Returns the 3DS authentication indentified by the key.
Requires `threeDs:Get` permission.
'
tags:
- 3DS Authentication
parameters:
- $ref: '#/components/parameters/threedsKey'
responses:
'200':
description: The 3DS authentication
content:
application/json:
schema:
$ref: '#/components/schemas/ThreeDs'
examples:
frictionlessWithMerchantAcceptor:
$ref: '#/components/examples/ThreeDsFrictionlessResponseWithMerchantAcceptorExample'
challengeWithMerchantAcceptor:
$ref: '#/components/examples/ThreeDsChallengeResponseWithMerchantAcceptorExample'
authenticatedChallengeWithMerchantAcceptor:
$ref: '#/components/examples/ThreeDsAuthenticatedChallengeResponseWithMerchantAcceptorExample'
threeRiWithMerchantAcceptor:
$ref: '#/components/examples/ResponseWithMerchantAcceptor'
frictionlessWithMerchantInfo:
$ref: '#/components/examples/ThreeDsFrictionlessResponseWithMerchantInfoExample'
challengeWithMerchantInfo:
$ref: '#/components/examples/ThreeDsChallengeResponseWithMerchantInfoExample'
authenticatedChallengeWithMerchantInfo:
$ref: '#/components/examples/ThreeDsAuthenticatedChallengeResponseWithMerchantInfoExample'
threeRiWithMerchantInfo:
$ref: '#/components/examples/ResponseWithMerchantInfo'
'401':
$ref: '#/components/responses/components-responses-UnauthorizedError'
'404':
description: Entity not found
content:
application/json:
schema:
$ref: '#/components/schemas/EntityNotFoundErrorDetails'
examples:
InternalServerErrorExample:
$ref: '#/components/examples/EntityNotFoundExample'
'429':
$ref: '#/components/responses/components-responses-TooManyRequestsError'
'500':
$ref: '#/components/responses/InternalServerError'
servers:
- url: https://eu-west-1.api.silverflow.com/v1
description: Production URL for Europe - Equivalent to https://api.silverflow.co/v1
- url: https://us-east-2.api.silverflow.com/v1
description: Production URL for North America
- url: https://eu-west-1.api-sbx.silverflow.com/v1
description: Sandbox URL - Equivalent to https://api-sbx.silverflow.co/v1
/3ds/cardRanges:
post:
operationId: 3dsCardRanges
summary: Retrieve Card Ranges
description: 'Obtain information about which 3DS versions and features are supported for the given PAN. In case of co-branded cards information from both brands is retrieved.
Requires `threeDs:Create` permission.
'
tags:
- 3DS Authentication
requestBody:
description: 'Details of the PAN to retrieve information about.
'
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ThreeDsCardRangesRequest'
examples:
withoutNetwork:
$ref: '#/components/examples/Request'
responses:
'200':
description: PAN information.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ThreeDsCardRangesResponse'
examples:
withoutNetwork:
$ref: '#/components/examples/Response'
'400':
description: Bad Request
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/InvalidRequestErrorDetails'
- $ref: '#/components/schemas/schemas-InvalidInputErrorDetails'
examples:
InvalidRequestErrorExample:
$ref: '#/components/examples/InvalidRequestExample'
InvalidInputErrorExample:
$ref: '#/components/examples/InvalidInputErrorExample'
'401':
$ref: '#/components/responses/components-responses-UnauthorizedError'
'409':
description: Conflict
content:
application/json:
schema:
$ref: '#/components/schemas/ReferencedEntityNotFoundErrorDetails'
examples:
ReferencedEntityNotFoundErrorExample:
$ref: '#/components/examples/ReferencedEntityNotFoundErrorExample'
'429':
$ref: '#/components/responses/components-responses-TooManyRequestsError'
'500':
$ref: '#/components/responses/InternalServerError'
servers:
- url: https://eu-west-1.api.silverflow.com/v1
description: Production URL for Europe - Equivalent to https://api.silverflow.co/v1
- url: https://us-east-2.api.silverflow.com/v1
description: Production URL for North America
- url: https://eu-west-1.api-sbx.silverflow.com/v1
description: Sandbox URL - Equivalent to https://api-sbx.silverflow.co/v1
components:
examples:
UnsupportedProtocolVersionCardExample:
summary: The account number does not support the supported 3DS versions
value:
type: /silverflow/problems/3ds/unsupported-protocol-version
title: Unsupported Protocol Version
status: 422
detail: 'Provided account number is not enrolled for any of the supported 3DS protocol versions: ["2.1.0", "2.2.0"]'
instance: /silverflow/e21c1a9d-f66d-4ef7-9f5d-d48064a2bb5e
Response:
summary: Response to simple request to get card number's information.
value:
- network: bancontact
startRange: '4500000000000001'
endRange: '4500000000009999'
acsStartProtocolVersion: 2.2.0
acsEndProtocolVersion: 2.2.0
dsStartProtocolVersion: 2.2.0
dsEndProtocolVersion: 2.2.0
threeDSMethodURL: string
acsInfoIndicator:
- '01'
- '02'
- '10'
- '11'
- network: visa
startRange: '4500000000000001'
endRange: '4500000000009999'
acsStartProtocolVersion: 2.2.0
acsEndProtocolVersion: 2.2.0
dsStartProtocolVersion: 2.2.0
dsEndProtocolVersion: 2.2.0
threeDSMethodURL: threeDsMethodUrl
acsInfoIndicator:
- '01'
- '02'
- 09
- '10'
ThreeDsRequestWithMerchantAcceptorExample:
summary: Initiating a 3DS authentication with merchant acceptor
value:
merchantAcceptorKey: mac-25oJsQ99GBpW23MQidKS
card:
number: '4200350000000801'
expiryYear: 2023
expiryMonth: 12
holderName: Joe Cardholder
type:
intent: purchase
cardEntry: e-commerce
order: checkout
amount:
value: 30000
currency: EUR
cardholderInformation:
email: carlos.somoza@gmail.com
phone:
work:
number: 063012345678
countryCode: '031'
mobile:
number: 063012344579
countryCode: '031'
billingAddress:
countryCode:
alpha3: NLD
stateOrProvince: NH
city: Amsterdam
line1: Langtown Road
line2: '4200'
postalCode: 1234BC
transactionReference: FR1
authenticationContext:
notificationUrl: https://www.merchant-shop.com/notify
browserData:
acceptHeader: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
javascriptEnabled: true
language: nl-NL
userAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36
screenWidth: '1536'
screenHeight: '723'
javaEnabled: true
colorDepth: '24'
timeZoneOffset: '0'
browserIP: 123.123.123.123
RequestWithMerchantAcceptor:
summary: Initiating a 3RI authentication with merchant acceptor
value:
merchantAcceptorResolver:
merchantAcceptorKey: mac-25oJsQ99GBpWjcMQidKS
card:
number: '4200350000000801'
expiryYear: 2023
expiryMonth: 12
holderName: Joe Cardholder
threeRiIndicator: recurring
amount:
value: 30000
currency: EUR
cardholderInformation:
email: carlos.somoza@gmail.com
phone:
work:
number: 063012345678
countryCode: '031'
mobile:
number: 063012344579
countryCode: '031'
billingAddress:
countryCode:
alpha2: NL
stateOrProvince: NH
city: Amsterdam
line1: Langtown Road
line2: '4200'
postalCode: 1234BC
transactionReference: FR1
recurringExpiry: '2024-03-10'
recurringFrequency: 30
threeDsPriorAuthenticationInfo:
authMethod: challenge
dateTime: '2022-06-15T14:30:00.000+00:00'
acsTransId: 2385d219-0f19-4e82-a318-511f249c6c21
dsTransId: 043cff46-f694-432a-863b-0338511dc420
InvalidInputErrorExample:
summary: The request was invalid
value:
type: /silverflow/problems/invalid-input
title: Invalid Input
status: 400
detail: The request does not adhere to the defined API schema.
instance: /silverflow/184b44aa-33a4-4244-9074-5eb49715aa90
validationErrors:
- path: /body/card/number
errorCode: required.openapi.validation
message: must match pattern "^[0-9]+$"
ThreeDsChallengeResponseWithMerchantInfoExample:
summary: The 3DS response in case of a challenge flow with standalone merchant info
value:
key: tds-5pCQR03sTuUcXGE59fLV
merchantInfo:
acquirerBin: '123456'
merchantId: MERCHANT123
mcc: '5411'
merchantName: Example Store Inc
merchantCountryCode:
alpha2: NL
alpha3: NLD
numeric: '528'
websiteUrl: https://example.com
network: visa
amount:
value: 30000
currency: EUR
network: visa
protocolVersion: 2.2.0
deviceChannel: browser
flow: challenge
result: challenge
ares:
messageType: ARes
transStatus: C
acsChallengeMandated: Y
acsURL: https://issuera-acs.com/challenge
threeDSServerTransID: 2b4d6f8a-0c2e-4a6c-8e0b-4f6a8c0e2b4d
messageVersion: 2.2.0
dsTransID: 6d8f0b2d-4e6a-4d0f-9c1b-7f9b1d3f5e7a
acsTransID: 2f4a6c8e-0a2c-4e8a-b0c2-6a8c0a2e4f6c
acsReferenceNumber: 3DS_ACS_REF_NUM
acsOperatorID: AcsOpId-123456
dsReferenceNumber: DS_LOA_12345-1234
authenticationType: '01'
transactionReference: FR1
type:
intent: purchase
order: checkout
created: '2022-06-16T09:50:12.201+00:00'
version: 1
ReferencedEntityNotFoundErrorExample:
summary: A referenced entity was not found
value:
type: /silverflow/problems/referenced-entity-not-found
title: Referenced Entity Not Found
status: 409
detail: The referenced acceptor with key 'mac-1eOdAHhgstYTUhlphPFf' was not found.
instance: /silverflow/b0451a9d-f66d-4ef7-9f5d-d48064a2bb3e
ThreeDsFrictionlessResponseWithMerchantInfoExample:
summary: The 3DS response in case of a frictionless flow with standalone merchant info
value:
key: tds-4nBPQ92rYsTbWFD48eKU
merchantInfo:
acquirerBin: '123456'
merchantId: MERCHANT123
mcc: '5411'
merchantName: Example Store Inc
merchantCountryCode:
alpha2: NL
alpha3: NLD
numeric: '528'
websiteUrl: https://example.com
network: visa
amount:
value: 30000
currency: EUR
network: visa
protocolVersion: 2.2.0
deviceChannel: browser
flow: frictionless
result: authenticated
ares:
messageType: ARes
transStatus: Y
threeDSServerTransID: 9a1b3c5e-7f2d-4e8b-b6a0-2d4f6c8e0a12
messageVersion: 2.2.0
dsTransID: 5c7e9a1b-3d5f-4c2e-8b0a-6e8c0a2b4d6f
acsTransID: 1e3a5c7b-9d1f-4b6e-a2c4-8e0a2c4e6a8c
dsReferenceNumber: DS_LOA_12345-1234
acsReferenceNumber: 3DS_ACS_REF_NUM
acsOperatorID: AcsOpId-123456
authenticationValue: AUTHENTICATION_VALUE
eci: '05'
transactionReference: FR1
type:
intent: purchase
order: checkout
created: '2022-06-16T09:49:42.757+00:00'
version: 1
EntityNotFoundExample:
summary: The entity was not found
value:
status: 404
type: /silverflow/problems/3ds/not-found
title: Not Found
detail: The threeDs with key 'tds-1234abc' was not found.
instance: /silverflow/5a276b24-4c46-4c73-beb4-462a7c08f941
AuthenticationRequiredExample:
summary: Invalid credentials
value:
type: /silverflow/problems/authentication-required
title: Authentication Required
status: 401
detail: Authentication Required
instance: /silverflow/8e445b2e-d745-4b38-a38d-781fc998e442
ThreeDsRequestWithMerchantInfoExample:
summary: Initiating a 3DS authentication with standalone merchant info
value:
merchantInfo:
acquirerBin: '123456'
merchantId: MERCHANT123
mcc: '5411'
merchantName: Example Store Inc
merchantCountryCode:
alpha2: NL
websiteUrl: https://example.com
network: visa
card:
number: '4200350000000801'
expiryYear: 2023
expiryMonth: 12
holderName: Joe Cardholder
type:
intent: purchase
cardEntry: e-commerce
order: checkout
amount:
value: 30000
currency: EUR
cardholderInformation:
email: carlos.somoza@gmail.com
phone:
work:
number: 063012345678
countryCode: '031'
mobile:
number: 063012344579
countryCode: '031'
billingAddress:
countryCode:
alpha3: NLD
stateOrProvince: NH
city: Amsterdam
line1: Langtown Road
line2: '4200'
postalCode: 1234BC
transactionReference: FR1
authenticationContext:
notificationUrl: https://www.merchant-shop.com/notify
browserData:
acceptHeader: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
javascriptEnabled: true
language: nl-NL
userAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36
screenWidth: '1536'
screenHeight: '723'
javaEnabled: true
colorDepth: '24'
timeZoneOffset: '0'
browserIP: 123.123.123.123
UnsupportedProtocolVersion3riExample:
summary: The account number does not support 3RI
value:
type: /silverflow/problems/3ds/unsupported-protocol-version
title: Unsupported Protocol Version
status: 422
detail: 3RI authentication is only possible when the enrolled card number supports version 2.2.0 or higher. Please submit the transaction directly for authorization.
instance: /silverflow/b0451a9d-f66d-4ef7-9f5d-d48064a2bb3e
UnenrolledAccountNumberExample:
summary: The account number is not enrolled for 3DS
value:
type: /silverflow/problems/3ds/unenrolled-account-number
title: Unenrolled Account Number
status: 422
detail: The account number provided in 'card.number' is not enrolled for 3DS authentication.
instance: /silverflow/e21c1a9d-f66d-4ef7-9f5d-d48064a2bb5e
UnenrolledAcquireOrMerchantExample:
summary: The acquirer or merchant is not enrolled for 3DS
value:
type: /silverflow/problems/3ds/unenrolled-acquirer-or-merchant
title: Unenrolled Acquirer or Merchant
status: 422
detail: The acquirer or merchant has not been enrolled for 3D Secure authentication.
instance: /silverflow/e1451a9d-f66d-4ef7-9f5d-d48064a5bb2c
ResponseWithMerchantAcceptor:
summary: The 3DS 3RI authenticated response
value:
key: tds-2lCYA85kxQaWoER37cJS
merchantAcceptorRef:
key: mac-25oJsQ99GBpWjcMQidKS
version: 1
amount:
value: 30000
currency: EUR
network: visa
protocolVersion: 2.2.0
deviceChannel: 3ri
result: authenticated
fraudLiability: issuer
threeRiIndicator: recurring
ares:
messageType: ARes
transStatus: Y
threeDSServerTransID: 54c64c00-eef8-4a8b-af44-fee8cc57e530
messageVersion: 2.2.0
dsTransID: 043cff46-f694-432a-863b-0338511dc420
acsTransID: 2385d219-0f19-4e82-a318-511f249c6c21
dsReferenceNumber: DS_LOA_12345-1234
acsReferenceNumber: 3DS_ACS_REF_NUM
acsOperatorID: AcsOpId-123456
authenticationValue: AUTHENTICATION_VALUE
eci: '05'
transactionReference: FR1
created: '2022-06-16T09:49:42.757+00:00'
version: 1
ThreeDsFrictionlessResponseWithMerchantAcceptorExample:
summary: The 3DS response in case of a frictionless flow
value:
key: tds-2lCYA85kxQaWoER37cJS
merchantAcceptorRef:
key: mac-25oJsQ99GBpWjcMQidKS
version: 1
amount:
value: 30000
currency: EUR
network: visa
protocolVersion: 2.2.0
deviceChannel: browser
flow: frictionless
result: authenticated
ares:
messageType: ARes
transStatus: Y
threeDSServerTransID: 54c64c00-eef8-4a8b-af44-fee8cc57e530
messageVersion: 2.2.0
dsTransID: 043cff46-f694-432a-863b-0338511dc420
acsTransID: 2385d219-0f19-4e82-a318-511f249c6c21
dsReferenceNumber: DS_LOA_12345-1234
acsReferenceNumber: 3DS_ACS_REF_NUM
acsOperatorID: AcsOpId-123456
authenticationValue: AUTHENTICATION_VALUE
eci: '05'
transactionReference: FR1
type:
intent: purchase
order: checkout
created: '2022-06-16T09:49:42.757+00:00'
version: 1
UnsupportedCardNetworkRegion:
summary: Unsupported region for the given card network
value:
type: /silverflow/problems/3ds/unsupported-card-network-region
title: Unsupported Region for this Card Network
status: 409
detail: 'Amex Direct Merchant model not supported for country ''ATA'' (from merchant.registeredAddress.countryCode.alpha3). Supported regions: USA, CAN, MEX, ARG, EMEA, JAPA. Update merchant address or contact support.'
instance: /silverflow/e21c1a9d-f66d-4ef7-9f5d-d48064a2bb5e
InternalServerErrorExample:
summary: Internal server error
value:
status: 500
type: /silverflow/problems/internal-server-error
title: Internal Server Error
detail: The server encountered an unexpected condition.
instance: /silverflow/9cb3486d-4fca-495b-91f2-218b669c3aa6
UnsupportedCardNetwork:
summary: Unsupported card network
value:
type: /silverflow/problems/3ds/unsupported-card-network
title: Unsupported Card Network
status: 409
detail: 'Merchant acceptors with a BIN with network ''discover'' are not supported. Use a merchant acceptor that uses a BIN with a supported card network: ''mastercard'', ''bancontact''.'
instance: /silverflow/e21c1a9d-f66d-4ef7-9f5d-d48064a2bb5e
InvalidRequestExample:
summary: The request was semantically invalid
value:
type: /silverflow/problems/invalid-request
title: Invalid Request
status: 400
detail: When 'type.order' is 'recurring', both 'recurringExpiry' and 'recurringFrequency' need to be set.
instance: /silverflow/8e445b2e-d745-4b38-a38d-781fc998e442
ResponseWithMerchantInfo:
summary: The 3DS 3RI authenticated response with standalone merchant info
value:
key: tds-3mZKB17pRrXnVGC94hLT
merchantInfo:
acquirerBin: '123456'
merchantId: MERCHANT123
mcc: '5411'
merchantName: Example Store Inc
merchantCountryCode:
alpha2: NL
alpha3: NLD
numeric: '528'
websiteUrl: https://example.com
network: visa
amount:
value: 30000
currency: EUR
network: visa
protocolVersion: 2.2.0
deviceChannel: 3ri
result: authenticated
fraudLiability: issuer
threeRiIndicator: recurring
ares:
messageType: ARes
transStatus: Y
threeDSServerTransID: 7f3a9c12-b8e4-4d1f-a562-9e2c10b7f890
messageVersion: 2.2.0
dsTransID: 1b4e6d3c-72a1-4f8b-9c05-3d7e82a4f619
acsTransID: 8d2f1e4a-c930-4b7d-a185-6e3c9d2b0f47
dsReferenceNumber: DS_LOA_12345-1234
acsReferenceNumber: 3DS_ACS_REF_NUM
acsOperatorID: AcsOpId-123456
authenticationValue: AUTHENTICATION_VALUE
eci: '05'
transactionReference: FR1
created: '2022-06-16T09:49:42.757+00:00'
version: 1
ThreeDsAuthenticatedChallengeResponseWithMerchantInfoExample:
summary: The 3DS response after an authenticated challenge flow with standalone merchant info
value:
key: tds-6qDRS14tVvVdYHF60gMW
merchantInfo:
acquirerBin: '123456'
merchantId: MERCHANT123
mcc: '5411'
merchantName: Example Store Inc
merchantCountryCode:
alpha2: NL
alpha3: NLD
numeric: '528'
websiteUrl: https://example.com
network: visa
amount:
value: 30000
currency: EUR
network: visa
flow: challenge
result: authenticated
protocolVersion: 2.2.0
deviceChannel: browser
ares:
messageType: ARes
transStatus: C
acsChallengeMandated: Y
acsURL: https://issuera-acs.com/challenge
threeDSServerTransID: 3b5f7a9c-1d2e-4f8b-a6c0-8e2a4c6e8a0c
messageVersion: 2.2.0
dsTransID: 7a9b1c3e-5d7f-4a2c-8e0b-2c4e6a8c0e2a
acsTransID: 1c3e5a7b-9d1f-4c6e-a2c4-6e8a0c2e4a6c
acsReferenceNumber: 3DS_LOA_ACS_PPFU_020100_00009
acsOperatorID: AcsOpId-4138359541
dsReferenceNumber: DS_LOA_DIS_PPFU_020100_00010
authenticationType: '01'
rreq:
threeDSServerTransID: 3b5f7a9c-1d2e-4f8b-a6c0-8e2a4c6e8a0c
acsTransID: 1c3e5a7b-9d1f-4c6e-a2c4-6e8a0c2e4a6c
dsTransID: 7a9b1c3e-5d7f-4a2c-8e0b-2c4e6a8c0e2a
authenticationMethod: '02'
authenticationType: '02'
authenticationValue: MTIzNDU2Nzg5MDA5ODc2NTQzMjE=
eci: '05'
interactionCounter: '01'
messageCategory: '01'
messageType: RReq
messageVersion: 2.2.0
transStatus: Y
transactionReference: test-reference
type:
intent: purchase
order: checkout
created: '2023-11-08T12:56:06.715Z'
lastModified: '2023-11-08T12:56:09.943Z'
version: 2
Request:
summary: Simple request to get card number's information.
value:
cardNumber: '4500000000005643'
RequestWithMerchantInfo:
summary: Initiating a 3RI authentication with standalone merchant info
value:
merchantInfo:
acquirerBin: '123456'
merchantId: MERCHANT123
mcc: '5411'
merchantName: Example Store Inc
merchantCountryCode:
alpha2: NL
websiteUrl: https://example.com
network: visa
card:
number: '4200350000000801'
expiryYear: 2023
expiryMonth: 12
holderName: Joe Cardholder
threeRiIndicator: recurring
amount:
value: 30000
currency: EUR
cardholderInformation:
email: carlos.somoza@gmail.com
phone:
work:
number: 063012345678
countryCode: '031'
mobile:
number: 063012344579
countryCode: '031'
billingAddress:
countryCode:
alpha2: NL
stateOrProvince: NH
city: Amsterdam
line1: Langtown Road
line2: '4200'
postalCode: 1234BC
transactionReference: FR1
recurringExpiry: '2024-03-10'
recurringFrequency: 30
threeDsPriorAuthenticationInfo:
authMethod: challenge
dateTime: '2022-06-15T14:30:00.000+00:00'
acsTransId: 2385d219-0f19-4e82-a318-511f249c6c21
dsTransId: 043cff46-f694-432a-863b-0338511dc420
ThreeDsChallengeResponseWithMerchantAcceptorExample:
summary: The 3DS response in case of a challenge flow
value:
key: tds-2lCYLHDuRPW9MvQK3sd6
merchantAcceptorRef:
key: mac-25oJsQ99GBpWjcMQidKS
version: 1
amount:
value: 30000
currency: EUR
network: visa
protocolVersion: 2.2.0
deviceChannel: browser
flow: challenge
result: challenge
ares:
messageType: ARes
transStatus: C
acsChallengeMandated: Y
acsURL: https://issuera-acs.com/challenge
threeDSServerTransID: 20354d7a-e4fe-47af-8ff6-187bca92f3f9
messageVersion: 2.2.0
dsTransID: 8e9f9d7c-b263-4182-b9ec-52eff401ee33
acsTransID: 17ce478b-14fd-11a7-9611-33f5ad36e53f
acsReferenceNumber: 3DS_ACS_REF_NUM
acsOperatorID: AcsOpId-123456
dsReferenceNumber: DS_LOA_12345-1234
authenticationType: '01'
transactionReference: FR1
type:
intent: purchase
order: checkout
created: '2022-06-16T09:50:12.201+00:00'
version: 1
TooManyRequestsErrorExample:
value:
type: /silverflow/problems/too-many-requests
title: Too Many Requests
status: 429
detail: You have exceeded the rate limit. Please try again after the specified delay.
instance: /silverflow/b0451a9d-f66d-4ef7-9f5d-d48064a2bb3e
ThreeDsAuthenticatedChallengeResponseWithMerchantAcceptorExample:
summary: The 3DS response after an authenticated challenge flow
value:
key: tds-3wjQy7nDTJG9MvPV22dJ
merchantAcceptorRef:
key: mac-28gKCpqIDKp8jVboUyr2
version: 1
amount:
value: 30000
currency: EUR
network: visa
flow: challenge
result: authenticated
protocolVersion: 2.2.0
deviceChannel: browser
ares:
messageType: ARes
transStatus: C
acsChallengeMandated: Y
acsURL: https://issuera-acs.com/challenge
threeDSServerTransID: e75139e4-ce9f-4d12-84aa-c8916f0087b7
messageVersion: 2.2.0
dsTransID: a9c308fd-ccd1-4e37-86aa-d063adea5ee9
acsTransID: 63e8ee5b-fe5a-411e-8e7b-3ca9d12364c1
acsReferenceNumber: 3DS_LOA_ACS_PPFU_020100_00009
acsOperatorID: AcsOpId-4138359541
dsReferenceNumber: DS_LOA_DIS_PPFU_020100_00010
authenticationType: '01'
rreq:
threeDSServerTransID: e75139e4-ce9f-4d12-84aa-c8916f0087b7
acsTransID: 63e8ee5b-fe5a-411e-8e7b-3ca9d12364c1
dsTransID: a9c308fd-ccd1-4e37-86aa-d063adea5ee9
authenticationMethod: '02'
authenticationType: '02'
authenticationValue: MTIzNDU2Nzg5MDA5ODc2NTQzMjE=
eci: '05'
interactionCounter: '01'
messageCategory: '01'
messageType: RReq
messageVersion: 2.2.0
transStatus: Y
transactionReference: test-reference
type:
intent: purchase
order: checkout
created: '2023-11-08T12:56:06.715Z'
lastModified: '2023-11-08T12:56:09.943Z'
version: 2
InvalidOffsetTokenExample:
summary: The offset token is invalid
value:
status: 400
type: /silverflow/problems/invalid-offset-token
title: Invalid Offset Token
detail: The provided offset token is invalid.
instance: /silverflow/9cb3486d-4fca-495b-af83-218b669c3bb8
schemas:
browserScreenWidth:
type: string
minLength: 1
maxLength: 6
pattern: ^[0-9]+$
description: 'Total width of the cardholder''s screen in pixels. Value is returned from the `screen.width` property from the HTML DOM API.
'
example: '1536'
interactionCounter:
type: string
description: The number of interactions for each transaction tracked by the ACS.
holderName:
type: string
minLength: 2
description: "The name of the cardholder as displayed on the card. It will be truncated if longer than 45 characters. \n\nThe name needs to comply with the following regular expression: `^[\\x20-\\x7E\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF]+$`\n\nMore information here: [Cardholder name restrictions](charges.html#section/Appendix-A-Cardholder-Name-Restrictions)\n"
example: Joe Cardholder
acsUrl:
type: string
description: 'The merchant or PSP needs to send the base64 encoded CReq message as a form to this URL using an HTTP POST, from the cardholder challenge window. The content type needs to be `application/x-www-form-urlencoded`.
'
example: 'https://www.acs.com/challenge
'
order:
description: 'The method used to place the order.
When set to `recurring` or `installment`, you are also required to set `recurringExpiry` and `recurringFrequency`.
'
type: string
enum:
- checkout
- unspecified
- one-click
- recurring
- ucof
- installment
sdkTransID:
type: string
description: Universally unique transaction identifier assigned upon the activation of 3DS SDK.
format: uuid
pattern: ^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$
example: 6357449a-b12b-4e81-b577-fee137273136
components-schemas-stateOrProvince:
type: string
pattern: ^(?!\s*$).+
minLength: 1
maxLength: 3
description: 'The state (US) or province (non-US) of the address.
'
example: NH
ThreeDsCardRangesCardNumberRequest:
type: object
title: Card by Number
required:
- cardNumber
properties:
cardNumber:
$ref: '#/components/schemas/pan'
infoSource:
$ref: '#/components/schemas/network'
schemas-CountryCodeAlpha2:
type: object
title: alpha-2
required:
- alpha2
properties:
alpha2:
type: string
pattern: ^[A-Z]{2}$
description: ISO 3166-1 alpha-2 country code
externalDocs:
description: Find more info here
url: https://www.iso.org/iso-3166-country-codes.html
example: NL
schemas-created:
type: string
description: The date and time this object was created
format: iso-8601-date-time
browserLanguage:
type: string
minLength: 1
maxLength: 35
pattern: ^.+$
description: 'Value representing the browser language as defined in IETF BCP47. Returned from `navigator.language` property from the HTML DOM API.
'
example: nl-NL
ThreeDsChallengeFinished:
type: object
title: 3DS Challenge (Finished)
required:
- key
- amount
- network
- protocolVersion
- deviceChannel
- flow
- result
- ares
- rreq
- created
- lastModified
- version
properties:
key:
$ref: '#/components/schemas/threedsKey'
merchantAcceptorRef:
$ref: '#/components/schemas/schemas-AcceptorRef'
merchantInfo:
$ref: '#/components/schemas/MerchantInfoResponse'
amount:
$ref: '#/components/schemas/ResponseAmount'
network:
$ref: '#/components/schemas/authenticationNetwork'
protocolVersion:
$ref: '#/components/schemas/protocolVersion'
deviceChannel:
$ref: '#/components/schemas/deviceChannel'
flow:
$ref: '#/components/schemas/challengeFlow'
result:
$ref: '#/components/schemas/challengeResult'
ares:
$ref: '#/components/schemas/ARes'
rreq:
$ref: '#/components/schemas/RReq'
transactionReference:
$ref: '#/components/schemas/transactionReference'
fraudLiability:
$ref: '#/components/schemas/fraudLiability'
type:
type: object
description: Transaction type information from the request
properties:
order:
$ref: '#/components/schemas/order'
intent:
$ref: '#/components/schemas/intent'
created:
$ref: '#/components/schemas/schemas-created'
lastModified:
$ref: '#/components/schemas/schemas-lastModified'
version:
$ref: '#/components/schemas/version'
frictionlessFlow:
allOf:
- enum:
- frictionless
- $ref: '#/components/schemas/flow'
ThreeDsPriorAuthenticationInfo:
type: object
description: References the initial 3DS transaction to set up this sequence.
required:
- authMethod
- dateTime
- acsTransId
- dsTransId
properties:
authMethod:
type: string
enum:
- frictionless
- challenge
description: The authentication method used.
dateTime:
type: string
format: iso-8601-date-time
description: The date and time of the authentication.
acsTransId:
type: string
description: The ACS (Access Control Server) transaction ID.
dsTransId:
type: string
description: The DS (Directory Server) transaction ID.
DynamicDescriptor:
type: object
minProperties: 1
additionalProperties: false
description: "Allows customizing the DBA name on a per-transaction basis, \nto help the cardholder recognize the business name on their card or bank statement.\n"
properties:
merchantName:
type: string
pattern: ^[a-zA-Z0-9-\.!\*=_ ]+$
description: Recognizable business name that will appear on the customer's card or bank statement.
example: Acme Inc.
minLength: 1
maxLength: 22
threeDSServerTransID:
type: string
description: Universally unique transaction identifier assigned by the 3DS server to identify a single transaction. This identifier is assigned by Silverflow.
pattern: ^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$
example: 6357449a-b12b-4e81-b577-fee137273231
notificationUrl:
type: string
description: 'URL that receives the challenge response (CRes) or error message from the issuer''s Access Control Server (ACS).
'
pattern: ^https://.{1,248}$
example: https://myserver.com/send/callback/here
ThreeDsCardRangesProcessorTokenRequest:
type: object
title: Processor Token Key [EXPERIMENTAL]
required:
- processorTokenKey
properties:
processorTokenKey:
$ref: '#/components/schemas/processorTokenKey'
schemas-CountryCodeNumeric:
type: object
title: numeric
required:
- numeric
properties:
numeric:
type: string
pattern: ^[0-9]{3}$
description: ISO 3166-1 numeric country code
externalDocs:
description: Find more info here
url: https://www.iso.org/iso-3166-country-codes.html
example: '528'
version:
type: integer
description: The version of this object
format: int64
browserScreenHeight:
type: string
minLength: 1
maxLength: 6
pattern: ^[0-9]+$
description: "Total height of the cardholder's screen in pixels. Value is returned from the `screen.height` \nproperty from the HTML DOM API.\n"
example: '724'
schemas-offsetToken:
type: string
pattern: ^[a-zA-Z0-9%]+$
example: token
ResponseAmount:
description: 'An amount encoded as an object with a `value` in minor units and a `currency` code.
The amount is unknown for entities older than 2023-03-30.
'
oneOf:
- $ref: '#/components/schemas/Amount'
- $ref: '#/components/schemas/UnknownAmount'
schemas-Page:
type: object
properties:
offsetToken:
$ref: '#/components/schemas/schemas-offsetToken'
PublicCreate3dsRequestWithMerchantInfo:
title: With Merchant Info [EXPERIMENTAL]
type: object
additionalProperties: false
required:
- authenticationContext
- card
- amount
- type
- merchantInfo
properties:
merchantInfo:
$ref: '#/components/schemas/MerchantInfoRequest'
card:
$ref: '#/components/schemas/Card'
type:
$ref: '#/components/schemas/ThreeDsType'
amount:
$ref: '#/components/schemas/Amount'
challengeIndicator:
$ref: '#/components/schemas/challengeIndicator'
authenticationContext:
$ref: '#/components/schemas/AuthenticationContext'
transactionReference:
$ref: '#/components/schemas/transactionReference'
localTransactionDateTime:
$ref: '#/components/schemas/localTransactionDateTime'
recurringExpiry:
$ref: '#/components/schemas/recurringExpiry'
recurringFrequency:
$ref: '#/components/schemas/recurringFrequency'
dynamicDescriptor:
$ref: '#/components/schemas/DynamicDescriptor'
cardholderInformation:
$ref: '#/components/schemas/CardholderInformation'
threeDSServerTransID:
allOf:
- type: string
description: 'The `threeDSServerTransID` used to perform a 3DS Method flow.
Include this field in the authentication request if 3DS Method has been used to allow the issuer to capture browser information prior to initiating this authentication request.
'
- $ref: '#/components/schemas/threeDSServerTransID'
billingAddress:
description: The billing address of the cardholder
$ref: '#/components/schemas/AddressInput'
shippingAddress:
$ref: '#/components/schemas/AddressInput'
ThreeDsNoFlowNoAuthWithoutAuthValue:
type: object
title: 3DS Unauthenticated Without Authentication Value
required:
- key
- amount
- network
- protocolVersion
- deviceChannel
- flow
- result
- ares
- created
- version
properties:
key:
$ref: '#/components/schemas/threedsKey'
merchantAcceptorRef:
$ref: '#/components/schemas/schemas-AcceptorRef'
merchantInfo:
$ref: '#/components/schemas/MerchantInfoResponse'
amount:
$ref: '#/components/schemas/ResponseAmount'
network:
$ref: '#/components/schemas/authenticationNetwork'
protocolVersion:
$ref: '#/components/schemas/protocolVersion'
deviceChannel:
$ref: '#/components/schemas/deviceChannel'
flow:
$ref: '#/components/schemas/noAuthFlow'
result:
$ref: '#/components/schemas/noAuthResult'
ares:
$ref: '#/components/schemas/AResWithoutAuthValue'
transactionReference:
$ref: '#/components/schemas/transactionReference'
type:
type: object
description: Transaction type information from the request
properties:
order:
$ref: '#/components/schemas/order'
intent:
$ref: '#/components/schemas/intent'
created:
$ref: '#/components/schemas/schemas-created'
version:
$ref: '#/components/schemas/version'
PublicCreate3dsRequestWithMerchantAcceptor:
title: With Merchant Acceptor
type: object
additionalProperties: false
required:
- authenticationContext
- card
- amount
- type
- merchantAcceptorKey
properties:
merchantAcceptorKey:
$ref: '#/components/schemas/acceptorKeyRef'
card:
$ref: '#/components/schemas/Card'
type:
$ref: '#/components/schemas/ThreeDsType'
amount:
$ref: '#/components/schemas/Amount'
challengeIndicator:
$ref: '#/components/schemas/challengeIndicator'
authenticationContext:
$ref: '#/components/schemas/AuthenticationContext'
transactionReference:
$ref: '#/components/schemas/transactionReference'
localTransactionDateTime:
$ref: '#/components/schemas/localTransactionDateTime'
recurringExpiry:
$ref: '#/components/schemas/recurringExpiry'
recurringFrequency:
$ref: '#/components/schemas/recurringFrequency'
dynamicDescriptor:
$ref: '#/components/schemas/DynamicDescriptor'
cardholderInformation:
$ref: '#/components/schemas/CardholderInformation'
threeDSServerTransID:
allOf:
- type: string
description: 'The `threeDSServerTransID` used to perform a 3DS Method flow.
Include this field in the authentication request if 3DS Method has been used to allow the issuer to capture browser information prior to initiating this authentication request.
'
- $ref: '#/components/schemas/threeDSServerTransID'
billingAddress:
description: The billing address of the cardholder
$ref: '#/components/schemas/AddressInput'
shippingAddress:
$ref: '#/components/schemas/AddressInput'
schemas-currencyCode:
type: string
pattern: ^[A-Z]{3}$
externalDocs:
description: Find more info here
url: https://www.iso.org/iso-4217-currency-codes.html
example: EUR
AResWithoutAuthValue:
type: object
description: The issuer's response to the 3DS request.
allOf:
- $ref: '#/components/schemas/Message'
- type: object
required:
- messageType
- dsTransID
- acsTransID
- transStatus
- dsReferenceNumber
- acsReferenceNumber
properties:
messageType:
type: string
enum:
- ARes
dsTransID:
$ref: '#/components/schemas/dsTransID'
acsTransID:
$ref: '#/components/schemas/acsTransID'
transStatus:
$ref: '#/components/schemas/transStatus'
transStatusReason:
$ref: '#/components/schemas/transStatusReason'
cardholderInfo:
$ref: '#/components/schemas/cardHolderInfo'
acsChallengeMandated:
$ref: '#/components/schemas/acsChallengeMandated'
dsReferenceNumber:
$ref: '#/components/schemas/dsReferenceNumber'
acsReferenceNumber:
$ref: '#/components/schemas/acsReferenceNumber'
acsOperatorID:
$ref: '#/components/schemas/acsOperatorID'
acsDecConInd:
$ref: '#/components/schemas/acsDecConInd'
acsRenderingType:
$ref: '#/components/schemas/acsRenderingType'
acsURL:
$ref: '#/components/schemas/acsUrl'
authenticationType:
$ref: '#/components/schemas/authenticationType'
eci:
$ref: '#/components/schemas/eci'
whiteListStatus:
$ref: '#/components/schemas/whiteListStatus'
whiteListStatusSource:
$ref: '#/components/schemas/whiteListStatusSource'
acsSignedContent:
$ref: '#/components/schemas/acsSignedContent'
components-schemas-line2:
type: string
pattern: ^(?!\s*$).+
minLength: 1
maxLength: 50
description: 'Address line 2
'
example: '4200'
ThreeDsCardRangesResponse:
type: object
required:
- network
- startRange
- endRange
- acsStartProtocolVersion
- acsEndProtocolVersion
- dsStartProtocolVersion
- dsEndProtocolVersion
properties:
network:
$ref: '#/components/schemas/network'
startRange:
type: string
description: Starting range of the PAN.
endRange:
type: string
description: Ending range of the PAN.
acsStartProtocolVersion:
type: string
description: ACS start protocol version.
acsEndProtocolVersion:
type: string
description: ACS end protocol version.
dsStartProtocolVersion:
type: string
description: DS start protocol version.
dsEndProtocolVersion:
type: string
description: DS end protocol version.
threeDSMethodURL:
type: string
description: 'URL to call from the iFrame to gather browser''s information.
'
threeDSServerTransID:
type: string
description: 'The `threeDSServerTransID` to use when executing the 3DS Method flow. Include this field in the 3DS authentication request if the 3DS Method has been executed.
'
acsInfoIndicator:
type: array
items:
type: string
enum:
- '01'
- '02'
- '03'
- '04'
- '05'
- '06'
- '07'
- 08
- 09
- '10'
- '11'
description: "An array of ACS indicators that consist of the following values:\n - 01 = Authentication Available at ACS\n - 02 = Attempts Supported by ACS or DS\n - 03 = Decoupled Authentication Supported\n - 04 = Trust List Supported\n - 05 = Device Binding Supported\n - 06 = WebAuthn Authentication Supported\n - 07 = SPC Authentication Supported\n - 08 = Transaction Risk Analysis Exemption Supported\n - 09 = Trust List Exemption Supported\n - 10 = Low Value Exemption Supported\n - 11 = Secure Corporate Payments Exemption Supported\n - 12–79 = Reserved for EMVCo future use (values invalid until defined by EMVCo)\n - 80–99 = Reserved for DS use\n"
dataOnlyResult:
allOf:
- description: 'Indicates that this 3DS transaction was for data sharing purposes only. `informational` will be returned if the `challengeIndicator` field was set to `data-only`.
'
enum:
- informational
- $ref: '#/components/schemas/result'
components-schemas-line1:
type: string
pattern: ^(?!\s*$).+
minLength: 1
maxLength: 50
description: 'Address line 1
'
example: Langtown Road
ThreeRiIndicator:
type: string
description: Indicates the type of 3RI request. This property provides additional information to the ACS to determine the best approach for handling a 3RI request.
enum:
- recurring
- ucof
- installment
- standing-order
ReferencedEntityNotFoundErrorDetails:
type: object
required:
- type
- title
- status
- detail
- instance
properties:
type:
allOf:
- $ref: '#/components/schemas/errorType'
- enum:
- /silverflow/problems/referenced-entity-not-found
title:
allOf:
- $ref: '#/components/schemas/errorTitle'
- enum:
- Referenced Entity Not Found
status:
allOf:
- $ref: '#/components/schemas/errorStatus'
- enum:
- 409
detail:
$ref: '#/components/schemas/errorDetail'
instance:
$ref: '#/components/schemas/errorInstance'
ThreeDsChallenge:
type: object
title: 3DS Challenge
required:
- key
- amount
- network
- protocolVersion
- deviceChannel
- flow
- result
- ares
- created
- version
properties:
key:
$ref: '#/components/schemas/threedsKey'
merchantAcceptorRef:
$ref: '#/components/schemas/schemas-AcceptorRef'
merchantInfo:
$ref: '#/components/schemas/MerchantInfoResponse'
amount:
$ref: '#/components/schemas/ResponseAmount'
network:
$ref: '#/components/schemas/authenticationNetwork'
protocolVersion:
$ref: '#/components/schemas/protocolVersion'
deviceChannel:
$ref: '#/components/schemas/deviceChannel'
flow:
allOf:
- enum:
- challenge
- $ref: '#/components/schemas/flow'
result:
allOf:
- description: 'Indicates that the cardholder has to complete the challenge flow.
'
enum:
- challenge
- $ref: '#/components/schemas/result'
ares:
$ref: '#/components/schemas/ARes'
transactionReference:
$ref: '#/components/schemas/transactionReference'
type:
type: object
description: Transaction type information from the request
properties:
order:
$ref: '#/components/schemas/order'
intent:
$ref: '#/components/schemas/intent'
created:
$ref: '#/components/schemas/schemas-created'
version:
$ref: '#/components/schemas/version'
ThreeDsFrictionlessAuthenticated:
type: object
title: 3DS Frictionless Authenticated
required:
- key
- amount
- network
- protocolVersion
- deviceChannel
- flow
- result
- ares
- created
- version
properties:
key:
$ref: '#/components/schemas/threedsKey'
merchantAcceptorRef:
$ref: '#/components/schemas/schemas-AcceptorRef'
merchantInfo:
$ref: '#/components/schemas/MerchantInfoResponse'
amount:
$ref: '#/components/schemas/ResponseAmount'
network:
$ref: '#/components/schemas/authenticationNetwork'
protocolVersion:
$ref: '#/components/schemas/protocolVersion'
deviceChannel:
$ref: '#/components/schemas/deviceChannel'
flow:
$ref: '#/components/schemas/frictionlessFlow'
result:
$ref: '#/components/schemas/frictionlessResult'
ares:
$ref: '#/components/schemas/ARes'
transactionReference:
$ref: '#/components/schemas/transactionReference'
fraudLiability:
$ref: '#/components/schemas/fraudLiability'
type:
type: object
description: Transaction type information from the request
properties:
order:
$ref: '#/components/schemas/order'
intent:
$ref: '#/components/schemas/intent'
created:
$ref: '#/components/schemas/schemas-created'
version:
$ref: '#/components/schemas/version'
BrowserDataJavascriptEnabledFalse:
allOf:
- $ref: '#/components/schemas/BrowserData'
- type: object
required:
- javascriptEnabled
properties:
javascriptEnabled:
type: boolean
description: The ability of the cardholder browser to execute JavaScript.
enum:
- false
screenWidth:
$ref: '#/components/schemas/browserScreenWidth'
screenHeight:
$ref: '#/components/schemas/browserScreenHeight'
timeZoneOffset:
$ref: '#/components/schemas/browserTimeZoneOffset'
javaEnabled:
$ref: '#/components/schemas/browserJavaEnabled'
colorDepth:
$ref: '#/components/schemas/browserColorDepth'
InstallmentTerms:
type: integer
description: 'Maximum number of authorizations for an installment payment.
Required for and only allowed when `threeRiIndicator = "installment"`. Must be greater than 1 and at most 3 digits (max value 999).
'
minimum: 2
maximum: 999
AddressInput:
allOf:
- type: object
required:
- countryCode
properties:
countryCode:
description: ISO 3166-1 country code
externalDocs:
description: Find more info here
url: https://www.iso.org/iso-3166-country-codes.html
oneOf:
- $ref: '#/components/schemas/schemas-CountryCodeAlpha3'
- $ref: '#/components/schemas/schemas-CountryCodeAlpha2'
- $ref: '#/components/schemas/schemas-CountryCodeNumeric'
- $ref: '#/components/schemas/addressInputBase'
MessageExtension:
type: object
required:
- name
- id
- criticalityIndicator
- data
properties:
name:
type: string
example: msgextname
pattern: ^[a-zA-Z0-9_\-\s]+$
minLength: 1
maxLength: 64
id:
type: string
example: 501341592B_0001_4568
pattern: ^[a-zA-Z0-9_\-]+$
minLength: 1
maxLength: 64
criticalityIndicator:
type: boolean
example: false
data: {}
result:
description: Authentication result.
type: string
ThreeDsCardRangesRequest:
oneOf:
- $ref: '#/components/schemas/ThreeDsCardRangesCardNumberRequest'
- $ref: '#/components/schemas/ThreeDsCardRangesProcessorTokenRequest'
browserUserAgent:
type: string
minLength: 1
maxLength: 2048
pattern: ^.+$
description: 'Exact content of the HTTP user-agent header.
'
example: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36
browserTimeZoneOffset:
type: string
minLength: 1
maxLength: 5
pattern: ^.+$
description: "Time-zone offset in minutes between UTC and the cardholder browser local time.\nValue is returned from the `getTimezoneOffset()` method. Note that the offset is positive if the local\ntime zone is behind UTC and negative if it is ahead. \n\nExample: If UTC -5 hours: 300 -> +300, if UTC +5 hours: -> -300\n"
example: '0'
pan:
type: string
description: Full digits of the card.
pattern: ^[0-9]+$
minLength: 13
maxLength: 19
format: password
example: 1234123412341234
acsRenderingType:
type: object
required:
- acsInterface
- acsUiTemplate
description: The ACS rendering type contains information about the rendering type that the ACS is sending for the cardholder authentication.
properties:
acsInterface:
description: This is the ACS interface that the challenge will present to the cardholder.
type: string
acsUiTemplate:
description: Identifies the UI template format that the ACS first presents to the consumer.
type: string
whiteListStatus:
type: string
description: Enables the communication of trusted beneficiary/whitelist status between the ACS, the DS and the 3DS requestor.
noAuthResult:
allOf:
- description: 'Indicates a negative 3DS result, indicating that the cardholder was not
authenticated.
'
enum:
- attempt
- non-authenticated
- $ref: '#/components/schemas/result'
Result:
type: string
description: Authentication result.
enum:
- authenticated
- non-authenticated
challengeCancel:
type: string
description: Indicator informing the ACS and the DS that the authentication has been canceled.
ThreeDsFrictionlessAuthenticatedWithoutAuthValue:
type: object
title: 3DS Frictionless Authenticated Without Authentication Value
required:
- key
- amount
- network
- protocolVersion
- deviceChannel
- flow
- result
- ares
- created
- version
properties:
key:
$ref: '#/components/schemas/threedsKey'
merchantAcceptorRef:
$ref: '#/components/schemas/schemas-AcceptorRef'
merchantInfo:
$ref: '#/components/schemas/MerchantInfoResponse'
amount:
$ref: '#/components/schemas/ResponseAmount'
network:
$ref: '#/components/schemas/authenticationNetwork'
protocolVersion:
$ref: '#/components/schemas/protocolVersion'
deviceChannel:
$ref: '#/components/schemas/deviceChannel'
flow:
$ref: '#/components/schemas/frictionlessFlow'
result:
$ref: '#/components/schemas/frictionlessResult'
ares:
$ref: '#/components/schemas/AResWithoutAuthValue'
transactionReference:
$ref: '#/components/schemas/transactionReference'
type:
type: object
description: Transaction type information from the request
properties:
order:
$ref: '#/components/schemas/order'
intent:
$ref: '#/components/schemas/intent'
created:
$ref: '#/components/schemas/schemas-created'
version:
$ref: '#/components/schemas/version'
authenticationMethod:
type: string
description: Authentication approach that the ACS used to authenticate the cardholder for this specific transaction.
schemas-CountryCodeAlpha3:
type: object
title: alpha-3
required:
- alpha3
properties:
alpha3:
type: string
pattern: ^[A-Z]{3}$
description: ISO 3166-1 alpha-3 country code
externalDocs:
description: Find more info here
url: https://www.iso.org/iso-3166-country-codes.html
example: NLD
RReq:
type: object
description: 'This property is only present after the cardholder finished the challenge flow.
The RReq message communicates the results of the authentication or verification.
This message is received by Silverflow from the issuer (through the scheme) and contains the result of a challenge flow.
Once Silverflow received the CReq, it will be appended to the 3DS entity it belongs to and the result can be interpreted by the requester.'
allOf:
- $ref: '#/components/schemas/Message'
- type: object
required:
- messageType
- acsTransID
- dsTransID
- interactionCounter
- messageCategory
- transStatus
properties:
messageType:
type: string
enum:
- RReq
acsTransID:
$ref: '#/components/schemas/acsTransID'
acsRenderingType:
$ref: '#/components/schemas/acsRenderingType'
authenticationMethod:
$ref: '#/components/schemas/authenticationMethod'
authenticationType:
$ref: '#/components/schemas/authenticationType'
challengeCancel:
$ref: '#/components/schemas/challengeCancel'
dsTransID:
$ref: '#/components/schemas/dsTransID'
eci:
$ref: '#/components/schemas/eci'
interactionCounter:
$ref: '#/components/schemas/interactionCounter'
messageCategory:
$ref: '#/components/schemas/messageCategory'
transStatus:
$ref: '#/components/schemas/transStatus'
transStatusReason:
$ref: '#/components/schemas/transStatusReason'
whiteListStatus:
$ref: '#/components/schemas/whiteListStatus'
whiteListStatusSource:
$ref: '#/components/schemas/whiteListStatusSource'
authenticationValue:
$ref: '#/components/schemas/authenticationValue'
errorTitle:
type: string
description: 'A short, human-readable summary of the problem type. It does not change from occurrence to occurrence of the error.
'
ThreeDsChallengeFinishedWithoutAuthValue:
type: object
title: 3DS Challenge (Finished) Without Authentication Value
required:
- key
- amount
- network
- protocolVersion
- deviceChannel
- flow
- result
- ares
- rreq
- created
- lastModified
- version
properties:
key:
$ref: '#/components/schemas/threedsKey'
merchantAcceptorRef:
$ref: '#/components/schemas/schemas-AcceptorRef'
merchantInfo:
$ref: '#/components/schemas/MerchantInfoResponse'
amount:
$ref: '#/components/schemas/ResponseAmount'
network:
$ref: '#/components/schemas/authenticationNetwork'
protocolVersion:
$ref: '#/components/schemas/protocolVersion'
deviceChannel:
$ref: '#/components/schemas/deviceChannel'
flow:
$ref: '#/components/schemas/challengeFlow'
result:
$ref: '#/components/schemas/challengeResult'
ares:
$ref: '#/components/schemas/AResWithoutAuthValue'
rreq:
$ref: '#/components/schemas/RReqWithoutAuthValue'
transactionReference:
$ref: '#/components/schemas/transactionReference'
fraudLiability:
$ref: '#/components/schemas/fraudLiability'
type:
type: object
description: Transaction type information from the request
properties:
order:
$ref: '#/components/schemas/order'
intent:
$ref: '#/components/schemas/intent'
created:
$ref: '#/components/schemas/schemas-created'
lastModified:
$ref: '#/components/schemas/schemas-lastModified'
version:
$ref: '#/components/schemas/version'
components-schemas-postalCode:
type: string
pattern: ^[a-zA-Z0-9- ]+$
minLength: 1
maxLength: 16
description: 'The postal code of the address, allowing spaces and dashes
'
example: 1234BC
flow:
description: Indicates the flow that was used for the 3DS authentication.
type: string
ThreeDsDataOnly:
type: object
title: 3DS Data Only
required:
- key
- amount
- network
- protocolVersion
- deviceChannel
- flow
- result
- ares
- created
- version
properties:
key:
$ref: '#/components/schemas/threedsKey'
merchantAcceptorRef:
$ref: '#/components/schemas/schemas-AcceptorRef'
merchantInfo:
$ref: '#/components/schemas/MerchantInfoResponse'
amount:
$ref: '#/components/schemas/ResponseAmount'
network:
$ref: '#/components/schemas/authenticationNetwork'
protocolVersion:
$ref: '#/components/schemas/protocolVersion'
deviceChannel:
$ref: '#/components/schemas/deviceChannel'
flow:
allOf:
- enum:
- none
- $ref: '#/components/schemas/flow'
result:
$ref: '#/components/schemas/dataOnlyResult'
ares:
$ref: '#/components/schemas/ARes'
transactionReference:
$ref: '#/components/schemas/transactionReference'
fraudLiability:
$ref: '#/components/schemas/fraudLiability'
type:
type: object
description: Transaction type information from the request
properties:
order:
$ref: '#/components/schemas/order'
intent:
$ref: '#/components/schemas/intent'
created:
$ref: '#/components/schemas/schemas-created'
version:
$ref: '#/components/schemas/version'
cvc:
type: string
description: 'The CVC of the card
'
pattern: ^\d+$
minLength: 3
maxLength: 4
example: '132'
browserColorDepth:
type: string
pattern: ^([0-9][1-9]|[1-9][0-9]?)$
description: "Value representing the bit depth of the colour palette for displaying images, in bits per pixel.\nObtained from cardholder browser using the `screen.colorDepth` property. \n\nValues defined by the EMVCo specification: 1, 4, 8, 15, 16, 24, 32, 48\n"
example: '24'
browserIP:
type: string
pattern: (^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$)|(^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$)
description: 'IP address of the browser as returned by the HTTP headers. Shall be included where regionally acceptable. Example IPv6 address: 2011:0db8:85a3:0101:0101:8a2e:0370:7334.
'
example: 1.12.123.255
PhoneNumber:
type: object
additionalProperties: false
required:
- countryCode
- number
properties:
countryCode:
description: Country code should be between 1 to 3 digits, more information [here](https://en.wikipedia.org/wiki/E.164).
type: string
minLength: 1
maxLength: 3
pattern: ^[0-9]+$
example: 31
number:
description: Phone number should be between 1 and 15 digits, more information [here](https://en.wikipedia.org/wiki/E.164).
type: string
minLength: 1
maxLength: 15
pattern: ^[0-9]+$
example: 63012345678
MerchantInfoResponse:
type: object
description: 'Merchant details as stored and returned in the response. The `merchantCountryCode` is returned
as a complete ISO 3166-1 country code object containing all representations.
'
additionalProperties: false
required:
- merchantId
- mcc
- merchantName
- merchantCountryCode
- websiteUrl
- network
properties:
acquirerBin:
type: string
description: '6-11 digit Bank Identification Number assigned by the card network. Required for all card networks except AMEX.
For AMEX populate this with the SE Number or leave blank depending on the model, see 3DS Guide.
'
pattern: ^[0-9]+$
minLength: 6
maxLength: 11
merchantId:
type: string
description: 'Merchant identifier (MID) assigned by the acquirer.
For AMEX populate this with the Seller ID or SE Number depending on the model, see 3DS Guide.
'
minLength: 1
maxLength: 20
mcc:
type: string
description: 4-digit ISO 18245 merchant category code
pattern: ^[0-9]+$
minLength: 4
maxLength: 4
merchantName:
type: string
description: Merchant's doing-business-as name
merchantCountryCode:
allOf:
- $ref: '#/components/schemas/schemas-CountryCodeAlpha3'
- $ref: '#/components/schemas/schemas-CountryCodeAlpha2'
- $ref: '#/components/schemas/schemas-CountryCodeNumeric'
websiteUrl:
type: string
description: Merchant's website URL
maxLength: 2048
network:
allOf:
- description: The card network that will process the transaction and handle authentication.
- $ref: '#/components/schemas/network'
CardholderInformation:
description: Extra information about the cardholder.
type: object
additionalProperties: false
properties:
email:
type: string
description: The email address associated with the cardholder account. This address is either entered by the cardholder or is on file with the 3DS Requester.
pattern: ^[^\s]+$
minLength: 1
maxLength: 254
example: carlos.somoza@gmail.com
phone:
description: Phone numbers associated with the account. They follow the [ITU-E.164 standard](https://en.wikipedia.org/wiki/E.164).
type: object
additionalProperties: false
properties:
work:
$ref: '#/components/schemas/PhoneNumber'
mobile:
$ref: '#/components/schemas/PhoneNumber'
home:
$ref: '#/components/schemas/PhoneNumber'
acsDecConInd:
type: string
description: Indicates whether the ACS confirms utilisation of decoupled authentication and agrees to utilize decoupled authentication to authenticate the cardholder.
addressInputBase:
type: object
required:
- city
- line1
- postalCode
description: 'A physical postal address
'
properties:
stateOrProvince:
$ref: '#/components/schemas/components-schemas-stateOrProvince'
city:
$ref: '#/components/schemas/components-schemas-city'
line1:
$ref: '#/components/schemas/components-schemas-line1'
line2:
$ref: '#/components/schemas/components-schemas-line2'
postalCode:
$ref: '#/components/schemas/components-schemas-postalCode'
schemas-AcceptorRef:
type: object
description: Reference key and status of the acceptor
required:
- key
- version
properties:
key:
$ref: '#/components/schemas/schemas-acceptorKey'
version:
$ref: '#/components/schemas/version'
protocolVersion:
type: string
description: "The 3DS protocol version which has been used to perform 3DS.\n\n **Protocol version 2.1.0 is no longer supported by the card networks. The value 2.1.0 can be retrieved for older authentications.**\n"
enum:
- 2.1.0
- 2.2.0
UnenrolledAccountNumberErrorDetails:
type: object
required:
- type
- title
- status
- detail
- instance
properties:
type:
allOf:
- $ref: '#/components/schemas/errorType'
- enum:
- /silverflow/problems/3ds/unenrolled-account-number
title:
allOf:
- $ref: '#/components/schemas/errorTitle'
- enum:
- Unenrolled Account Number
status:
allOf:
- $ref: '#/components/schemas/errorStatus'
- enum:
- 422
detail:
$ref: '#/components/schemas/errorDetail'
instance:
$ref: '#/components/schemas/errorInstance'
processorTokenKey:
type: string
description: The key to a card stored using [Processor Tokenization](#tag/Processor-Tokenization).
pattern: ^ptk-[a-zA-Z0-9]+$
minLength: 5
maxLength: 120
ThreeDsPageEntity:
title: 3DS Page Entity Without Authentication Value
oneOf:
- $ref: '#/components/schemas/ThreeDsFrictionlessAuthenticatedWithoutAuthValue'
- $ref: '#/components/schemas/ThreeDsChallenge'
- $ref: '#/components/schemas/ThreeDsChallengeFinishedWithoutAuthValue'
- $ref: '#/components/schemas/ThreeDsNoFlowNoAuthWithoutAuthValue'
- $ref: '#/components/schemas/ThreeRiResponseWithoutAuthenticationValue'
- $ref: '#/components/schemas/ThreeDsDataOnly'
recurringFrequency:
type: integer
description: 'Number of days between recurring authorizations.
Required when `type.order` is `recurring` or `installment`.
'
MessageExtensionList:
description: Carries additional data that is not defined within the 3DS protocol. This field is usually used for card network specific data.
type: array
items:
$ref: '#/components/schemas/MessageExtension'
browserAcceptHeader:
type: string
minLength: 1
maxLength: 2048
pattern: ^.+$
description: 'Exact content of the HTTP accept headers as sent to the 3DS Requestor from the cardholder''s browser.
'
example: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Amount:
type: object
required:
- value
- currency
additionalProperties: false
description: 'An amount encoded as an object with a `value` in minor units and a `currency` code.
'
properties:
value:
$ref: '#/components/schemas/amountValue'
currency:
$ref: '#/components/schemas/schemas-currencyCode'
schemas-acceptorKey:
description: Uniquely identifies a merchant acceptor.
type: string
pattern: ^mac-[a-zA-Z0-9]+$
minLength: 5
maxLength: 120
example: '{{acceptorKeyMastercard}}'
acsReferenceNumber:
type: string
description: Unique identifier assigned by the EMVCo secretariat upon testing and approval.
Message:
type: object
description: 'A 3DS protocol message as it is received by the card network.
'
required:
- messageVersion
- threeDSServerTransID
properties:
messageVersion:
$ref: '#/components/schemas/activeProtocolVersion'
threeDSServerTransID:
$ref: '#/components/schemas/threeDSServerTransID'
sdkTransID:
$ref: '#/components/schemas/sdkTransID'
messageExtension:
$ref: '#/components/schemas/MessageExtensionList'
UnsupportedProtocolVersionErrorDetails:
type: object
required:
- type
- title
- status
- detail
- instance
properties:
type:
allOf:
- $ref: '#/components/schemas/errorType'
- enum:
- /silverflow/problems/3ds/unsupported-protocol-version
title:
allOf:
- $ref: '#/components/schemas/errorTitle'
- enum:
- Unsupported Protocol Version
status:
allOf:
- $ref: '#/components/schemas/errorStatus'
- enum:
- 422
detail:
$ref: '#/components/schemas/errorDetail'
instance:
$ref: '#/components/schemas/errorInstance'
CardByProcessorTokenKey:
type: object
title: Processor Token Key (EXPERIMENTAL)
required:
- processorTokenKey
properties:
processorTokenKey:
$ref: '#/components/schemas/processorTokenKey'
cvc:
allOf:
- description: 'The three digit CVC code of the card.
If a CVC is provided here, it takes precedence over the one stored in the processor token.
'
- $ref: '#/components/schemas/cvc'
BrowserData:
type: object
required:
- acceptHeader
- language
- userAgent
properties:
acceptHeader:
$ref: '#/components/schemas/browserAcceptHeader'
language:
$ref: '#/components/schemas/browserLanguage'
userAgent:
$ref: '#/components/schemas/browserUserAgent'
browserIP:
$ref: '#/components/schemas/browserIP'
acsSignedContent:
type: string
description: Contains the JWS object (represented as a string) created by the ACS for the ARes message.
example: eyJhbGciOiJQUzI1NiIsIng1YyI6Ik1JSURlVENDQW1HZ0F3SUJ
pattern: ^[a-zA-Z0-9()+,\-.:=@;$_!*\/?#|]*$
minLength: 1
maxLength: 2560
ThreeRiRecurringFrequency:
type: integer
description: 'Number of days between recurring authorizations.
This property is required for `threeRiIndicator = "recurring"`, `"installment"`, or `"standing-order"`.
For other cases, it will default to `1`, indicating that the frequency of payments is not specified.
'
cardHolderInfo:
type: string
description: Text provided by the ACS/issuer to cardholder during a frictionless or decoupled transaction.
EntityNotFoundErrorDetails:
type: object
required:
- type
- title
- status
- detail
- instance
properties:
type:
allOf:
- $ref: '#/components/schemas/errorType'
- enum:
- /silverflow/problems/3ds/not-found
title:
allOf:
- $ref: '#/components/schemas/errorTitle'
- enum:
- Not Found
status:
allOf:
- $ref: '#/components/schemas/errorStatus'
- enum:
- 404
detail:
$ref: '#/components/schemas/errorDetail'
instance:
$ref: '#/components/schemas/errorInstance'
acsTransID:
type: string
description: 'Universally unique transaction identifier assigned by the ACS to identify a single transaction. Each DS can provide a unique ID to each ACS on an individual basis.
'
example: d7c1ee99-9478-44a6-b1f2-391e29c6b340
format: uuid
pattern: ^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$
PublicCreate3dsRequest:
oneOf:
- $ref: '#/components/schemas/PublicCreate3dsRequestWithMerchantAcceptor'
- $ref: '#/components/schemas/PublicCreate3dsRequestWithMerchantInfo'
expiryMonth:
type: integer
description: 'The month the card expires. January is 1
'
minimum: 1
maximum: 12
MerchantInfoRequest:
type: object
description: 'Merchant details provided directly in the request, as an alternative to
providing a `merchantAcceptorKey`.
'
additionalProperties: false
required:
- merchantId
- mcc
- merchantName
- merchantCountryCode
- websiteUrl
- network
properties:
acquirerBin:
type: string
description: '6-11 digit Bank Identification Number assigned by the card network. Required for all card networks except AMEX.
For AMEX populate this with the SE Number or leave blank depending on the model, see 3DS Guide.
'
pattern: ^[0-9]+$
minLength: 6
maxLength: 11
merchantId:
type: string
description: 'Merchant identifier (MID) assigned by the acquirer.
For AMEX populate this with the Seller ID or SE Number depending on the model, see 3DS Guide.
'
minLength: 1
maxLength: 20
mcc:
type: string
description: 4-digit ISO 18245 merchant category code
pattern: ^[0-9]+$
minLength: 4
maxLength: 4
merchantName:
type: string
description: Merchant's doing-business-as name
minLength: 1
maxLength: 40
merchantCountryCode:
description: ISO 3166-1 country code. Can be provided in alpha-2, alpha-3, or numeric format
oneOf:
- $ref: '#/components/schemas/schemas-CountryCodeAlpha3'
- $ref: '#/components/schemas/schemas-CountryCodeAlpha2'
- $ref: '#/components/schemas/schemas-CountryCodeNumeric'
websiteUrl:
type: string
description: Merchant's website URL
maxLength: 2048
network:
allOf:
- description: The card network that will process the transaction and handle authentication.
- $ref: '#/components/schemas/network'
components-schemas-city:
type: string
pattern: ^(?!\s*$).+
minLength: 1
maxLength: 50
description: 'The city of the address.
'
example: Amsterdam
network:
type: string
description: 'The card network to query for PAN information.
Diners support is EXPERIMENTAL.
'
enum:
- american-express
- bancontact
- diners
- mastercard
- visa
expiryYear:
type: integer
description: 'The year the card expires including the century
'
minimum: 2020
maximum: 2050
ThreeRiAResWithoutAuthenticationValue:
type: object
description: The issuer's response to the 3DS request.
allOf:
- type: object
required:
- messageVersion
- threeDSServerTransID
- messageType
- dsTransID
- acsTransID
- transStatus
- dsReferenceNumber
- acsReferenceNumber
properties:
threeDSServerTransID:
$ref: '#/components/schemas/threeDSServerTransID'
messageExtension:
$ref: '#/components/schemas/MessageExtensionList'
messageType:
type: string
enum:
- ARes
dsTransID:
$ref: '#/components/schemas/dsTransID'
acsTransID:
$ref: '#/components/schemas/acsTransID'
transStatus:
$ref: '#/components/schemas/ThreeRiTransStatus'
messageVersion:
type: string
description: The 3DS protocol version which has been used to perform 3DS. For 3RI it's always 2.2.0.
enum:
- 2.2.0
transStatusReason:
$ref: '#/components/schemas/transStatusReason'
cardholderInfo:
$ref: '#/components/schemas/cardHolderInfo'
acsChallengeMandated:
$ref: '#/components/schemas/acsChallengeMandated'
dsReferenceNumber:
$ref: '#/components/schemas/dsReferenceNumber'
acsReferenceNumber:
$ref: '#/components/schemas/acsReferenceNumber'
acsOperatorID:
$ref: '#/components/schemas/acsOperatorID'
acsDecConInd:
$ref: '#/components/schemas/acsDecConInd'
authenticationType:
$ref: '#/components/schemas/authenticationType'
eci:
$ref: '#/components/schemas/eci'
whiteListStatus:
$ref: '#/components/schemas/whiteListStatus'
whiteListStatusSource:
$ref: '#/components/schemas/whiteListStatusSource'
ThreeDsNoFlowNoAuth:
type: object
title: 3DS Unauthenticated
required:
- key
- amount
- network
- protocolVersion
- deviceChannel
- flow
- result
- ares
- created
- version
properties:
key:
$ref: '#/components/schemas/threedsKey'
merchantAcceptorRef:
$ref: '#/components/schemas/schemas-AcceptorRef'
merchantInfo:
$ref: '#/components/schemas/MerchantInfoResponse'
amount:
$ref: '#/components/schemas/ResponseAmount'
network:
$ref: '#/components/schemas/authenticationNetwork'
protocolVersion:
$ref: '#/components/schemas/protocolVersion'
deviceChannel:
$ref: '#/components/schemas/deviceChannel'
flow:
$ref: '#/components/schemas/noAuthFlow'
result:
$ref: '#/components/schemas/noAuthResult'
ares:
$ref: '#/components/schemas/ARes'
transactionReference:
$ref: '#/components/schemas/transactionReference'
fraudLiability:
$ref: '#/components/schemas/fraudLiability'
type:
type: object
description: Transaction type information from the request
properties:
order:
$ref: '#/components/schemas/order'
intent:
$ref: '#/components/schemas/intent'
created:
$ref: '#/components/schemas/schemas-created'
version:
$ref: '#/components/schemas/version'
UnsupportedCardNetworkRegionErrorDetails:
type: object
required:
- type
- title
- status
- detail
- instance
properties:
type:
allOf:
- $ref: '#/components/schemas/errorType'
- enum:
- /silverflow/problems/3ds/unsupported-card-network-region
title:
allOf:
- $ref: '#/components/schemas/errorTitle'
- enum:
- Unsupported Region for this Card Network
status:
allOf:
- $ref: '#/components/schemas/errorStatus'
- enum:
- 409
detail:
$ref: '#/components/schemas/errorDetail'
instance:
$ref: '#/components/schemas/errorInstance'
challengeIndicator:
type: string
description: "When set, indicates the preferred 3DS challenge flow as follows: \n - `no-preference`: No preference related to the challenge flow.\n - `no-challenge`: No challenge flow requested.\n - `challenge-preferred`: Preferably a challenge flow takes place.\n - `challenge-mandated`: The challenge flow must take place.\n - `no-challenge-tra`: No challenge requested as transaction risk analysis is already performed.\n - `no-challenge-low-value`: No challenge requested as low value exemption is applied. This exemption is only applicable for Mastercard.\n - `no-challenge-scp`: No challenge requested as the secure corporate payment exemption is applied. This exemption is only applicable for Mastercard and Visa.\n - `data-only`: For data sharing purposes only and therefore will never trigger a challenge flow.\n"
enum:
- no-preference
- no-challenge
- challenge-preferred
- challenge-mandated
- no-challenge-tra
- no-challenge-low-value
- no-challenge-scp
- data-only
ThreeRiRequestWithMerchantInfo:
title: With Merchant Info [EXPERIMENTAL]
description: 'Initiate a 3RI authentication by providing merchant information directly.
This allows performing 3RI without requiring merchant acceptor onboarding.
'
type: object
additionalProperties: false
required:
- card
- threeRiIndicator
- amount
- threeDsPriorAuthenticationInfo
- merchantInfo
properties:
merchantInfo:
$ref: '#/components/schemas/MerchantInfoRequest'
card:
$ref: '#/components/schemas/Card'
threeRiIndicator:
$ref: '#/components/schemas/ThreeRiIndicator'
amount:
$ref: '#/components/schemas/Amount'
cardholderInformation:
$ref: '#/components/schemas/CardholderInformation'
billingAddress:
description: The billing address of the cardholder
$ref: '#/components/schemas/AddressInput'
transactionReference:
$ref: '#/components/schemas/transactionReference'
threeDsPriorAuthenticationInfo:
$ref: '#/components/schemas/ThreeDsPriorAuthenticationInfo'
recurringExpiry:
$ref: '#/components/schemas/ThreeRiRecurringExpiry'
recurringFrequency:
$ref: '#/components/schemas/ThreeRiRecurringFrequency'
installmentTerms:
$ref: '#/components/schemas/InstallmentTerms'
intent:
description: 'The intention of the cardholder.
'
type: string
enum:
- purchase
- reservation
- account-status
- payout
- payout-status
- funding
- advice
- refund
noAuthFlow:
allOf:
- enum:
- none
- $ref: '#/components/schemas/flow'
messageCategory:
type: string
description: Indicates the category of the EMV 3-D Secure message.
ThreeRiARes:
type: object
description: The issuer's response to the 3DS request.
allOf:
- type: object
required:
- messageVersion
- threeDSServerTransID
- messageType
- dsTransID
- acsTransID
- transStatus
- dsReferenceNumber
- acsReferenceNumber
properties:
threeDSServerTransID:
$ref: '#/components/schemas/threeDSServerTransID'
messageExtension:
$ref: '#/components/schemas/MessageExtensionList'
messageType:
type: string
enum:
- ARes
dsTransID:
$ref: '#/components/schemas/dsTransID'
acsTransID:
$ref: '#/components/schemas/acsTransID'
transStatus:
$ref: '#/components/schemas/ThreeRiTransStatus'
messageVersion:
type: string
description: The 3DS protocol version which has been used to perform 3DS. For 3RI it's always 2.2.0.
enum:
- 2.2.0
transStatusReason:
$ref: '#/components/schemas/transStatusReason'
cardholderInfo:
$ref: '#/components/schemas/cardHolderInfo'
acsChallengeMandated:
$ref: '#/components/schemas/acsChallengeMandated'
dsReferenceNumber:
$ref: '#/components/schemas/dsReferenceNumber'
acsReferenceNumber:
$ref: '#/components/schemas/acsReferenceNumber'
acsOperatorID:
$ref: '#/components/schemas/acsOperatorID'
acsDecConInd:
$ref: '#/components/schemas/acsDecConInd'
authenticationType:
$ref: '#/components/schemas/authenticationType'
eci:
$ref: '#/components/schemas/eci'
whiteListStatus:
$ref: '#/components/schemas/whiteListStatus'
whiteListStatusSource:
$ref: '#/components/schemas/whiteListStatusSource'
authenticationValue:
$ref: '#/components/schemas/authenticationValue'
frictionlessResult:
allOf:
- description: 'Indicates that the cardholder was successfully authenticated.
'
enum:
- authenticated
- $ref: '#/components/schemas/result'
ThreeRiRecurringExpiry:
type: string
format: date
description: 'The date at which the recurring authorization expires.
This property is required for `threeRiIndicator = "recurring"`, `"installment"`, or `"standing-order"`.
For other cases, it will default to `2050-12-31`, indicating no expiry date is specified.
Format: YYYY-MM-DD.
'
AuthenticationContext:
type: object
description: 'Contains data that the issuer needs to perform the fingerprinting, but also optional configuration settings.
'
required:
- notificationUrl
- browserData
properties:
notificationUrl:
$ref: '#/components/schemas/notificationUrl'
browserData:
type: object
description: 'Information about the browser that is performing the transaction. This data is used by the issuer to perform fingerprinting.
'
oneOf:
- $ref: '#/components/schemas/BrowserDataJavascriptEnabledTrue'
- $ref: '#/components/schemas/BrowserDataJavascriptEnabledFalse'
ThreeRiRequestWithMerchantAcceptor:
title: With Merchant Acceptor
description: 'Initiate a 3RI authentication using an existing merchant acceptor.
This requires prior onboarding of the merchant acceptor in the Silverflow system.
'
type: object
additionalProperties: false
required:
- card
- threeRiIndicator
- amount
- threeDsPriorAuthenticationInfo
- merchantAcceptorResolver
properties:
merchantAcceptorResolver:
$ref: '#/components/schemas/merchantAcceptorResolver'
card:
$ref: '#/components/schemas/Card'
threeRiIndicator:
$ref: '#/components/schemas/ThreeRiIndicator'
amount:
$ref: '#/components/schemas/Amount'
cardholderInformation:
$ref: '#/components/schemas/CardholderInformation'
billingAddress:
description: The billing address of the cardholder
$ref: '#/components/schemas/AddressInput'
transactionReference:
$ref: '#/components/schemas/transactionReference'
threeDsPriorAuthenticationInfo:
$ref: '#/components/schemas/ThreeDsPriorAuthenticationInfo'
recurringExpiry:
$ref: '#/components/schemas/ThreeRiRecurringExpiry'
recurringFrequency:
$ref: '#/components/schemas/ThreeRiRecurringFrequency'
installmentTerms:
$ref: '#/components/schemas/InstallmentTerms'
ThreeRiResponseWithoutAuthenticationValue:
type: object
title: 3RI Authentication Without Authentication Value
required:
- key
- amount
- network
- protocolVersion
- deviceChannel
- result
- ares
- fraudLiability
- created
- version
properties:
key:
$ref: '#/components/schemas/threedsKey'
merchantAcceptorRef:
$ref: '#/components/schemas/schemas-AcceptorRef'
merchantInfo:
$ref: '#/components/schemas/MerchantInfoResponse'
amount:
$ref: '#/components/schemas/ResponseAmount'
network:
$ref: '#/components/schemas/authenticationNetwork'
protocolVersion:
type: string
description: The 3DS protocol version which has been used to perform 3DS. For 3RI it's always 2.2.0
enum:
- 2.2.0
deviceChannel:
type: string
description: Indicates the type of the interface used to initiate the transaction.
enum:
- 3ri
result:
$ref: '#/components/schemas/Result'
ares:
$ref: '#/components/schemas/ThreeRiAResWithoutAuthenticationValue'
transactionReference:
$ref: '#/components/schemas/transactionReference'
fraudLiability:
$ref: '#/components/schemas/fraudLiability'
created:
$ref: '#/components/schemas/schemas-created'
version:
$ref: '#/components/schemas/version'
acsChallengeMandated:
type: string
description: Indication of whether a challenge is required for the transaction to be authorized due to local/regional mandates or other variable.
ARes:
type: object
description: The issuer's response to the 3DS request.
allOf:
- $ref: '#/components/schemas/Message'
- type: object
required:
- messageType
- dsTransID
- acsTransID
- transStatus
- dsReferenceNumber
- acsReferenceNumber
properties:
messageType:
type: string
enum:
- ARes
dsTransID:
$ref: '#/components/schemas/dsTransID'
acsTransID:
$ref: '#/components/schemas/acsTransID'
transStatus:
$ref: '#/components/schemas/transStatus'
transStatusReason:
$ref: '#/components/schemas/transStatusReason'
cardholderInfo:
$ref: '#/components/schemas/cardHolderInfo'
acsChallengeMandated:
$ref: '#/components/schemas/acsChallengeMandated'
dsReferenceNumber:
$ref: '#/components/schemas/dsReferenceNumber'
acsReferenceNumber:
$ref: '#/components/schemas/acsReferenceNumber'
acsOperatorID:
$ref: '#/components/schemas/acsOperatorID'
acsDecConInd:
$ref: '#/components/schemas/acsDecConInd'
acsRenderingType:
$ref: '#/components/schemas/acsRenderingType'
acsURL:
$ref: '#/components/schemas/acsUrl'
authenticationType:
$ref: '#/components/schemas/authenticationType'
eci:
$ref: '#/components/schemas/eci'
whiteListStatus:
$ref: '#/components/schemas/whiteListStatus'
whiteListStatusSource:
$ref: '#/components/schemas/whiteListStatusSource'
acsSignedContent:
$ref: '#/components/schemas/acsSignedContent'
authenticationValue:
$ref: '#/components/schemas/authenticationValue'
ThreeRiTransStatus:
type: string
description: "Indicates whether a transaction is authenticated or not.\n - `Y` indicates authenticated\n - `N` indicates not authenticated\n - `R` indicates rejected\n"
enum:
- Y
- N
- R
recurringExpiry:
type: string
format: date
description: 'The date at which the recurring authorization expires. Format: YYYY-MM-DD.
Required when `type.order` is `recurring` or `installment`.
'
transStatusReason:
type: string
pattern: ^(0[1-9])$|^(1[0-9])$|^(2[0-6])$|^([8-9][0-9])$
description: Provides information on why the `transStatus` field has the specified value.
authenticationValue:
type: string
description: 'The result value from the 3DS transaction received from the ACS. This value is no longer present on responses after 45 days have passed after the authentication.
Note that Mastercard and Visa use a different underlying format.
This property will only be present in the ARes if `transStatus` is `Y`, `A` and conditionally (by DS rules) `I`.
'
acceptorKeyRef:
description: Uniquely identifies a merchant acceptor.
type: string
pattern: ^mac-[a-zA-Z0-9]+$
example: mac-25oJsQ99GBpW23MQidKS
activeProtocolVersion:
allOf:
- type: string
enum:
- 2.2.0
- $ref: '#/components/schemas/protocolVersion'
whiteListStatusSource:
type: string
description: This data element will be populated by the system setting Whitelist Status. Required if Whitelist Status is present.
acsOperatorID:
type: string
description: DS assigned ACS identifier.
ThreeDs:
title: 3DS Entity
oneOf:
- $ref: '#/components/schemas/ThreeDsFrictionlessAuthenticated'
- $ref: '#/components/schemas/ThreeDsChallenge'
- $ref: '#/components/schemas/ThreeDsChallengeFinished'
- $ref: '#/components/schemas/ThreeDsNoFlowNoAuth'
- $ref: '#/components/schemas/ThreeRiResponse'
- $ref: '#/components/schemas/ThreeDsDataOnly'
transactionReference:
type: string
description: 'Unique ID assigned by the merchant or payment service provider for the transaction. Used to identify the transaction.
'
pattern: ^[a-zA-Z0-9()+,\-.:=@;$_!*\/?|]+$
minLength: 1
maxLength: 120
example: Dz3dIzE74EfH1HeTInyE
browserJavaEnabled:
type: boolean
description: "The ability of the cardholder browser to execute Java. Value is returned from the \n`navigator.javaEnabled` property from the HTML DOM API.\n"
example: true
UnknownAmount:
type: object
title: Unknown Amount
required:
- value
- currency
additionalProperties: false
properties:
value:
type: integer
format: int64
description: The value of the amount is unknown.
enum:
- -1
currency:
type: string
description: The currency code is unknown.
enum:
- unknown
Card:
description: 'This field represents the card.
The card credentials can either be passed directly in the request or be referenced using a `key`.
'
oneOf:
- $ref: '#/components/schemas/InputCard'
- $ref: '#/components/schemas/CardByProcessorTokenKey'
challengeResult:
allOf:
- description: "Indicates that the cardholder has finished the challenge flow and whether the \ncardholder is either authenticated or non-authenticated.\n"
enum:
- authenticated
- non-authenticated
- $ref: '#/components/schemas/result'
BrowserDataJavascriptEnabledTrue:
allOf:
- $ref: '#/components/schemas/BrowserData'
- type: object
required:
- javascriptEnabled
- screenWidth
- screenHeight
- timeZoneOffset
- javaEnabled
- colorDepth
properties:
javascriptEnabled:
type: boolean
description: The ability of the cardholder browser to execute JavaScript.
enum:
- true
screenWidth:
$ref: '#/components/schemas/browserScreenWidth'
screenHeight:
$ref: '#/components/schemas/browserScreenHeight'
timeZoneOffset:
$ref: '#/components/schemas/browserTimeZoneOffset'
javaEnabled:
$ref: '#/components/schemas/browserJavaEnabled'
colorDepth:
$ref: '#/components/schemas/browserColorDepth'
merchantAcceptorResolver:
description: 'The resolver is used to select the appropriate merchant acceptor for doing the authentication.
'
type: object
additionalProperties: false
required:
- merchantAcceptorKey
properties:
merchantAcceptorKey:
$ref: '#/components/schemas/schemas-acceptorKey'
transStatus:
type: string
enum:
- Y
- N
- U
- A
- C
- D
- R
- I
description: Indicates whether a transaction qualifies as an authenticated transaction or account verification.
InternalServerErrorDetails:
type: object
required:
- type
- title
- status
- detail
- instance
properties:
type:
allOf:
- $ref: '#/components/schemas/errorType'
- enum:
- /silverflow/problems/internal-server-error
title:
allOf:
- $ref: '#/components/schemas/errorTitle'
- enum:
- Internal Server Error
status:
allOf:
- $ref: '#/components/schemas/errorStatus'
- enum:
- 500
detail:
$ref: '#/components/schemas/errorDetail'
instance:
$ref: '#/components/schemas/errorInstance'
cardEntry:
description: 'The method used to capture the card details.
'
type: string
enum:
- e-commerce
- card-on-file
- token
- token-on-file
schemas-InvalidInputErrorDetails:
type: object
required:
- type
- title
- status
- detail
- instance
- validationErrors
properties:
type:
allOf:
- $ref: '#/components/schemas/errorType'
- enum:
- /silverflow/problems/invalid-input
title:
allOf:
- $ref: '#/components/schemas/errorTitle'
- enum:
- Invalid Input
status:
allOf:
- $ref: '#/components/schemas/errorStatus'
- enum:
- 400
detail:
$ref: '#/components/schemas/errorDetail'
instance:
$ref: '#/components/schemas/errorInstance'
validationErrors:
type: array
items:
type: object
required:
- path
- message
properties:
path:
type: string
description: A relative path to the error location within the request body.
errorCode:
type: string
description: A code that identifies the error.
message:
type: string
description: A brief description of the validation error
description: A list of validation errors.
dsTransID:
type: string
description: Universally unique transaction identifier assigned by the DS to identify a single transaction.
format: uuid
pattern: ^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$
example: c73bcdcc-2669-4bf6-81d3-e4ae73fb11fd
fraudLiability:
description: Which party is liable in case of fraud.
type: string
enum:
- acquirer
- issuer
ThreeRiRequest:
oneOf:
- $ref: '#/components/schemas/ThreeRiRequestWithMerchantAcceptor'
- $ref: '#/components/schemas/ThreeRiRequestWithMerchantInfo'
RReqWithoutAuthValue:
type: object
description: 'This property is only present after the cardholder finished the challenge flow.
The RReq message communicates the results of the authentication or verification.
This message is received by Silverflow from the issuer (through the scheme) and contains the result of a challenge flow.
Once Silverflow received the CReq, it will be appended to the 3DS entity it belongs to and the result can be interpreted by the requester.'
allOf:
- $ref: '#/components/schemas/Message'
- type: object
required:
- messageType
- acsTransID
- dsTransID
- interactionCounter
- messageCategory
- transStatus
properties:
messageType:
type: string
enum:
- RReq
acsTransID:
$ref: '#/components/schemas/acsTransID'
acsRenderingType:
$ref: '#/components/schemas/acsRenderingType'
authenticationMethod:
$ref: '#/components/schemas/authenticationMethod'
authenticationType:
$ref: '#/components/schemas/authenticationType'
challengeCancel:
$ref: '#/components/schemas/challengeCancel'
dsTransID:
$ref: '#/components/schemas/dsTransID'
eci:
$ref: '#/components/schemas/eci'
interactionCounter:
$ref: '#/components/schemas/interactionCounter'
messageCategory:
$ref: '#/components/schemas/messageCategory'
transStatus:
$ref: '#/components/schemas/transStatus'
transStatusReason:
$ref: '#/components/schemas/transStatusReason'
whiteListStatus:
$ref: '#/components/schemas/whiteListStatus'
whiteListStatusSource:
$ref: '#/components/schemas/whiteListStatusSource'
dsReferenceNumber:
type: string
description: EMVCo-assigned unique identifier to track approved DS.
errorInstance:
type: string
description: 'A reference that identifies the specific occurrence of the error. The instance is unique for every error.
'
localTransactionDateTime:
type: string
format: iso-8601-date-time
description: Date and time of the transaction in the local timezone.
errorStatus:
type: integer
format: int32
description: 'The HTTP status code generated by the origin server for this occurrence
of the problem.
'
InvalidRequestErrorDetails:
type: object
required:
- type
- title
- status
- detail
- instance
properties:
type:
allOf:
- $ref: '#/components/schemas/errorType'
- enum:
- /silverflow/problems/invalid-request
title:
allOf:
- $ref: '#/components/schemas/errorTitle'
- enum:
- Invalid Request
status:
allOf:
- $ref: '#/components/schemas/errorStatus'
- enum:
- 400
detail:
$ref: '#/components/schemas/errorDetail'
instance:
$ref: '#/components/schemas/errorInstance'
threedsKey:
description: Uniquely identifies a 3DS authentication.
type: string
pattern: ^tds-[a-zA-Z0-9]+$
example: tds-2lCYLHDuRPW9MvQK3sd6
InvalidOffsetTokenErrorDetails:
type: object
required:
- type
- title
- status
- detail
- instance
properties:
type:
allOf:
- $ref: '#/components/schemas/errorType'
- enum:
- /silverflow/problems/invalid-offset-token
title:
allOf:
- $ref: '#/components/schemas/errorTitle'
- enum:
- Invalid Offset Token
status:
allOf:
- $ref: '#/components/schemas/errorStatus'
- enum:
- 400
detail:
$ref: '#/components/schemas/errorDetail'
instance:
$ref: '#/components/schemas/errorInstance'
authenticationType:
type: string
description: 'Indicates the type of authentication method the issuer will use to challenge the cardholder,
whether in the ARes message or what was used by the ACS when in the RReq message.
'
TooManyRequestsErrorDetails:
type: object
required:
- type
- title
- status
- detail
- instance
properties:
type:
allOf:
- $ref: '#/components/schemas/errorType'
- enum:
- /silverflow/problems/too-many-requests
title:
allOf:
- $ref: '#/components/schemas/errorTitle'
- enum:
- Too Many Requests
status:
allOf:
- $ref: '#/components/schemas/errorStatus'
- enum:
- 429
detail:
$ref: '#/components/schemas/errorDetail'
instance:
$ref: '#/components/schemas/errorInstance'
UnenrolledAcquireOrMerchantErrorDetails:
type: object
required:
- type
- title
- status
- detail
- instance
properties:
type:
allOf:
- $ref: '#/components/schemas/errorType'
- enum:
- /silverflow/problems/3ds/unenrolled-acquirer-or-merchant
title:
allOf:
- $ref: '#/components/schemas/errorTitle'
- enum:
- Unenrolled Acquirer or Merchant
status:
allOf:
- $ref: '#/components/schemas/errorStatus'
- enum:
- 422
detail:
$ref: '#/components/schemas/errorDetail'
instance:
$ref: '#/components/schemas/errorInstance'
AuthenticationRequiredErrorDetails:
type: object
required:
- type
- title
- status
- detail
- instance
properties:
type:
allOf:
- $ref: '#/components/schemas/errorType'
- enum:
- /silverflow/problems/authentication-required
title:
$ref: '#/components/schemas/errorTitle'
status:
allOf:
- $ref: '#/components/schemas/errorStatus'
- enum:
- 401
detail:
$ref: '#/components/schemas/errorDetail'
instance:
$ref: '#/components/schemas/errorInstance'
errorDetail:
type: string
description: 'A human readable explanation specific to this occurrence of the problem.
'
ThreeDsType:
description: 'Describes the kind of transaction the merchant wants to submit.
'
type: object
required:
- intent
- cardEntry
- order
properties:
intent:
$ref: '#/components/schemas/intent'
cardEntry:
$ref: '#/components/schemas/cardEntry'
order:
$ref: '#/components/schemas/order'
authenticationNetwork:
type: string
description: 'The card network that was used for the authentication.
It is `unknown` for entities older than 2024-04-11.
'
enum:
- american-express
- bancontact
- diners
- mastercard
- visa
- unknown
deviceChannel:
type: string
description: Indicates the type of the interface used to initiate the transaction.
enum:
- browser
- app
- 3ri
eci:
type: string
description: Payment system-specific value provided by the ACS or DS to indicate the results of the attempt to authenticate the Cardholder.
schemas-lastModified:
type: string
description: The date and time this object was last modified.
format: iso-8601-date-time
errorType:
type: string
description: 'A relative URI reference, this property can be used to perform automated error handling.
'
threeDsPage:
allOf:
- $ref: '#/components/schemas/schemas-Page'
- type: object
required:
- threeDss
properties:
threeDss:
type: array
items:
$ref: '#/components/schemas/ThreeDsPageEntity'
ThreeRiResponse:
type: object
title: 3RI Authentication
required:
- key
- protocolVersion
- amount
- network
- deviceChannel
- result
- ares
- fraudLiability
- threeRiIndicator
- created
- version
properties:
key:
$ref: '#/components/schemas/threedsKey'
merchantAcceptorRef:
$ref: '#/components/schemas/schemas-AcceptorRef'
merchantInfo:
$ref: '#/components/schemas/MerchantInfoResponse'
amount:
$ref: '#/components/schemas/ResponseAmount'
network:
$ref: '#/components/schemas/authenticationNetwork'
protocolVersion:
type: string
description: The 3DS protocol version which has been used to perform 3DS. For 3RI it's always 2.2.0
enum:
- 2.2.0
deviceChannel:
type: string
description: Indicates the type of the interface used to initiate the transaction.
enum:
- 3ri
result:
$ref: '#/components/schemas/Result'
ares:
$ref: '#/components/schemas/ThreeRiARes'
transactionReference:
$ref: '#/components/schemas/transactionReference'
fraudLiability:
$ref: '#/components/schemas/fraudLiability'
threeRiIndicator:
$ref: '#/components/schemas/ThreeRiIndicator'
created:
$ref: '#/components/schemas/schemas-created'
version:
$ref: '#/components/schemas/version'
InputCard:
type: object
required:
- number
- expiryMonth
- expiryYear
additionalProperties: false
description: 'Card data
'
properties:
number:
$ref: '#/components/schemas/pan'
expiryMonth:
$ref: '#/components/schemas/expiryMonth'
expiryYear:
$ref: '#/components/schemas/expiryYear'
cvc:
$ref: '#/components/schemas/cvc'
holderName:
$ref: '#/components/schemas/holderName'
challengeFlow:
allOf:
- enum:
- challenge
- $ref: '#/components/schemas/flow'
amountValue:
type: integer
format: int64
minimum: 0
maximum: 999999999999
description: 'The amount in minor units. For example `$12.34` should be encoded as `1234`. Note that not all
currencies have 2 minor units. Some have three or zero.
'
example: 1234
UnsupportedCardNetworkErrorDetails:
type: object
required:
- type
- title
- status
- detail
- instance
properties:
type:
allOf:
- $ref: '#/components/schemas/errorType'
- enum:
- /silverflow/problems/3ds/unsupported-card-network
title:
allOf:
- $ref: '#/components/schemas/errorTitle'
- enum:
- Unsupported Card Network
status:
allOf:
- $ref: '#/components/schemas/errorStatus'
- enum:
- 409
detail:
$ref: '#/components/schemas/errorDetail'
instance:
$ref: '#/components/schemas/errorInstance'
responses:
InternalServerError:
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerErrorDetails'
examples:
InternalServerErrorExample:
$ref: '#/components/examples/InternalServerErrorExample'
components-responses-TooManyRequestsError:
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/TooManyRequestsErrorDetails'
examples:
TooManyRequestsErrorExample:
$ref: '#/components/examples/TooManyRequestsErrorExample'
components-responses-UnauthorizedError:
description: Authentication Required
headers:
WWW_Authenticate:
schema:
type: string
content:
application/json:
schema:
$ref: '#/components/schemas/AuthenticationRequiredErrorDetails'
examples:
AuthenticationRequiredExample:
$ref: '#/components/examples/AuthenticationRequiredExample'
parameters:
threedsKey:
name: threedsKey
in: path
required: true
description: The key of the 3DS authentication to get.
schema:
$ref: '#/components/schemas/threedsKey'
parameters-offsetToken:
name: offsetToken
description: The offset token. This token is returned in the response of previous request.
in: query
required: false
schema:
$ref: '#/components/schemas/schemas-offsetToken'
sortOrder:
name: sortOrder
description: The sort order, __asc__ending or __desc__ending
in: query
required: false
schema:
type: string
enum:
- asc
- desc
example: desc
limit:
name: limit
description: The number of items to return
in: query
required: false
schema:
type: integer
format: int32
minimum: 1
maximum: 100
default: 10
example: 1
securitySchemes:
ApiKey:
description: "The primary method of authenticating to the Silverflow API is through API keys.\n\nAPI keys can be created by calling the [createApiKey](#operation/createApiKey) endpoint. You can create up to 40 API keys and also update and delete them, allowing for _credential rotation_.\n\nThe _Agent Activation_ process will generate an initial API Key for you. See [Activate Agent](#section/Getting-Started).\n\nA call to the [createApiKey](#operation/createApiKey) endpoint will return the following structure:\n\n```json\n{\n \"key\": \"apk-1wtRxni5IsPsSpBLWpwr\",\n \"status\": \"active\",\n \"agentKey\": \"cgt-1wtRvFLIjDOyyUR5Q2LB\",\n \"description\": \"Data lake API key\",\n \"permissions\": [\n \"charges:List\",\n \"reports:All\"\n ],\n \"created\": \"2021-06-22T11:21:45.115Z\",\n \"secret\": \"FWtnOOHAjbD6rNxWWEeVOCj7JXSEPGJQ\",\n \"version\": 1\n}\n```\n\n> **Important:** The `secret` is only returned once in the response to the `createApiKey` call.\n\nOnce created, the `key` and `secret` fields from the API key must be used in the HTTP `Authorization` header using the `Basic` scheme.\nThe Basic scheme requires a **username** and **password** to be specified, separated by a `:` (colon) and Base64 encoded.\n\nUse the following values from the API key to construct a Basic authentication header:\n\n| Basic field | API key field | Example |\n| ----------- | ------------- | ------- |\n| username | `key` | `apk-1wtRxni5IsPsSpBLWpwr` |\n| password | `secret` | `FWtnOOHAjbD6rNxWWEeVOCj7JXSEPGJQ` |\n\nIn pseudo-code a valid HTTP Basic Authentication header would be constructed as follows:\n\n```ts\nconst apiKeyId = \"apk-1wtRxni5IsPsSpBLWpwr\";\nconst apiKeySecret = \"FWtnOOHAjbD6rNxWWEeVOCj7JXSEPGJQ\";\nconst authnValue = \"Basic \" + base64Encode(apiKeyId + \":\" + apiKeySecret);\nrequest.setHeader(\"Authorization\", authnValue);\n```\n\nUsing the values from the example a valid HTTP request would look like the following:\n\n```http\nGET /v1/agents/current HTTP/1.1\nAccept: application/json\nAuthorization: Basic YXBrLTF3dFJ4bmk1SXNQc1NwQkxXcHdyOkZXdG5PT0hBamJENnJOeFdXRWVWT0NqN0pYU0VQR0pR\n```\n\nMore information on the Basic scheme can be found in [RFC-7617 - The 'Basic' HTTP Authentication Scheme](https://datatracker.ietf.org/doc/html/rfc7617)."
type: http
scheme: basic
BearerToken:
description: 'Bearer tokens are temporary security credentials that can be used to authorize ''third parties'' (bearers) access to the Silverflow API on behalf of the agent.
These tokens are created by calling the [createAgentBearerToken](#operation/createAgentBearerToken) endpoint.
Once created the `token` field must be used in the HTTP `Authorization` header using the `Bearer` scheme.
Here''s an example of an HTTP request with a bearer token:
```http
GET /v1/merchants/mct-1hPdFhmgaBzMS191nIbJ HTTP/1.1
Accept: application/json
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...40EFOgxf_3I6mPZ16bXqHd5tUyApgl0mNOAXPm5AhnA
```
More information on the Bearer scheme can be found in [RFC-6750 - The OAuth 2.0 Authorization Framework: Bearer Token Usage](https://datatracker.ietf.org/doc/html/rfc6750).'
type: http
scheme: bearer
bearerFormat: JWT
MutualTLS:
type: apiKey
in: header
name: '-'
description: 'The client must set up mTLS connection with a valid X.509 client certificate signed by a customer-provided CA (certificate authority) that is registered to a specific agent. The customer-provided CA certificate must be shared and added to Silverflow''s trust store prior to calling endpoints.
Certificate validation happens at the transport layer during TLS handshake. Tenant verification is performed by matching the agent key embedded in the client certificate against the agent key embedded in the trusted CA.
'
x-refined-from:
- silverflow-openapi.yml
- silverflow-openapi.yml
x-tagGroups:
- name: ''
tags:
- Introduction
- Release Notes
- name: Accounts
tags:
- Agents
- API Keys
- Bins
- Merchants
- Merchant Acceptors
- Enrollments
- Screenings
- name: Event Notifications
tags:
- Event Subscriptions
- Charges Events
- Disputes Events
- Fraud Notification Events
- Processor Tokens Events
- Network Tokens Events
- Report Events
- Distribution Events
- AMMF Submission Events
- Reconciliation Events
- Clearing Events
- name: 3DS Authentication
tags:
- 3DS Authentication
- name: BEP Authentication
tags:
- BEP Authentication
- name: Tokenization
tags:
- Processor Tokenization
- Network Tokenization
- name: Charges
tags:
- Create Charges
- Create Recurring
- Retrieve Charges
- Charge Actions
- name: Terminal-To-Cloud
tags:
- Create POS Charges
- Retrieve POS Charges
- POS Charge Actions
- name: Card Management
tags:
- Card Management
- name: Disputes
tags:
- Disputes
- Documents
- name: Fraud Notifications
tags:
- Fraud Notifications
- name: Card Info
tags:
- Card Info
- name: Currency Conversion Rates
tags:
- Currency Conversion Rates
- name: Fees
tags:
- Fees
- name: Reconciliation
tags:
- Reconciliation Details
- Network Funds Transfers
- name: Reports
tags:
- Reconciliation Reports
- Settlement Reports
- Card Network Reports
- Dispute Reports
- Fraud Notifications Reports
- Charges Reports
- Scheme Fee Reports
- Retrieve Reports
- Report Scheduling
- Distributions
- name: Transaction Risk Assessment
tags:
- Transaction Risk Assessment
- name: File Subscriptions
tags:
- File Subscriptions