Files
adyen-openapi/json/BalancePlatformAcsNotification-v1.json
Adyen Automation bdd244aaf4 spec release
2024-03-04 17:11:34 +01:00

565 lines
24 KiB
JSON

{
"openapi" : "3.1.0",
"info" : {
"version" : "1",
"x-publicVersion" : true,
"title" : "Authentication webhooks",
"description" : "Adyen sends webhooks to inform your system about events related to cardholder authentication.",
"termsOfService" : "https://www.adyen.com/legal/terms-and-conditions",
"contact" : {
"name" : "Adyen Developer Experience team",
"url" : "https://github.com/Adyen/adyen-openapi"
}
},
"tags" : [
{
"name" : "General"
}
],
"webhooks" : {
"balancePlatform.authentication.created" : {
"post" : {
"tags" : [
"General"
],
"summary" : "Cardholder authenticated",
"description" : "Adyen sends this webhook when the process of cardholder authentication is finalized, whether it is completed successfully, fails, or expires.",
"x-addedInVersion" : "1",
"operationId" : "post-balancePlatform.authentication.created",
"x-sortIndex" : 1,
"x-methodName" : "cardholderAuthenticated",
"security" : [
{
"BasicAuth" : [
]
}
],
"requestBody" : {
"content" : {
"application/json" : {
"examples" : {
"balancePlatform-authentication-created-authenticated-challenge" : {
"$ref" : "#/components/examples/post-balancePlatform.authentication.created-balancePlatform-authentication-created-authenticated-challenge"
},
"balancePlatform-authentication-created-authenticated-frictionless" : {
"$ref" : "#/components/examples/post-balancePlatform.authentication.created-balancePlatform-authentication-created-authenticated-frictionless"
},
"balancePlatform-authentication-created-rejected" : {
"$ref" : "#/components/examples/post-balancePlatform.authentication.created-balancePlatform-authentication-created-rejected"
}
},
"schema" : {
"$ref" : "#/components/schemas/AuthenticationNotificationRequest"
}
}
}
},
"responses" : {
"200" : {
"content" : {
"application/json" : {
"examples" : {
"balancePlatform-authentication-created-authenticated-challenge" : {
"$ref" : "#/components/examples/WebhookAck"
},
"balancePlatform-authentication-created-authenticated-frictionless" : {
"$ref" : "#/components/examples/WebhookAck"
},
"balancePlatform-authentication-created-rejected" : {
"$ref" : "#/components/examples/WebhookAck"
}
},
"schema" : {
"$ref" : "#/components/schemas/BalancePlatformNotificationResponse"
}
}
},
"description" : "OK - the request has succeeded."
}
}
}
}
},
"components" : {
"schemas" : {
"Amount" : {
"properties" : {
"currency" : {
"description" : "The three-character [ISO currency code](https://docs.adyen.com/development-resources/currency-codes).",
"maxLength" : 3,
"minLength" : 3,
"type" : "string"
},
"value" : {
"description" : "The amount of the transaction, in [minor units](https://docs.adyen.com/development-resources/currency-codes).",
"format" : "int64",
"type" : "integer"
}
},
"required" : [
"value",
"currency"
],
"type" : "object"
},
"AuthenticationInfo" : {
"properties" : {
"acsTransId" : {
"description" : "Universally unique transaction identifier assigned by the Access Control Server (ACS) to identify a single transaction.",
"type" : "string"
},
"challenge" : {
"description" : "Information about Strong Customer Authentication (SCA). Returned when `type` is **challenge**.",
"$ref" : "#/components/schemas/ChallengeInfo"
},
"challengeIndicator" : {
"description" : "Specifies a preference for receiving a challenge. Possible values:\n\n* **01**: No preference\n* **02**: No challenge requested\n* **03**: Challenge requested (preference)\n* **04**: Challenge requested (mandate)\n* **05**: No challenge requested (transactional risk analysis is already performed)\n* **07**: No challenge requested (SCA is already performed)\n* **08**: No challenge requested (trusted beneficiaries exemption of no challenge required)\n* **09**: Challenge requested (trusted beneficiaries prompt requested if challenge required)\n* **80**: No challenge requested (secure corporate payment with Mastercard)\n* **82**: No challenge requested (secure corporate payment with Visa)\n",
"enum" : [
"01",
"02",
"03",
"04",
"05",
"07",
"08",
"09",
"80",
"82"
],
"type" : "string"
},
"createdAt" : {
"description" : "Date and time in UTC of the cardholder authentication. \n\n[ISO 8601](https://www.w3.org/TR/NOTE-datetime) format: YYYY-MM-DDThh:mm:ss+TZD, for example, **2020-12-18T10:15:30+01:00**.",
"format" : "date-time",
"type" : "string"
},
"deviceChannel" : {
"description" : "Indicates the type of channel interface being used to initiate the transaction. Possible values:\n\n* **app**\n* **browser**\n* **3DSRequestorInitiated** (initiated by a merchant when the cardholder is not available)",
"enum" : [
"app",
"browser",
"ThreeDSRequestorInitiated"
],
"type" : "string"
},
"dsTransID" : {
"description" : "Universally unique transaction identifier assigned by the DS (card scheme) to identify a single transaction.",
"type" : "string"
},
"exemptionIndicator" : {
"description" : "Indicates the exemption type that was applied to the authentication by the issuer, if exemption applied. Possible values:\n\n* **lowValue**\n* **secureCorporate**\n* **trustedBeneficiary**\n* **transactionRiskAnalysis**\n* **acquirerExemption**\n* **noExemptionApplied**\n* **visaDAFExemption**\n",
"enum" : [
"lowValue",
"secureCorporate",
"trustedBeneficiary",
"transactionRiskAnalysis",
"acquirerExemption",
"noExemptionApplied",
"visaDAFExemption"
],
"type" : "string"
},
"inPSD2Scope" : {
"description" : "Indicates if the purchase was in the PSD2 scope.",
"type" : "boolean"
},
"messageCategory" : {
"description" : "Identifies the category of the message for a specific use case. Possible values:\n\n* **payment**\n* **nonPayment**",
"enum" : [
"payment",
"nonPayment"
],
"type" : "string"
},
"messageVersion" : {
"description" : "The `messageVersion` value as defined in the 3D Secure 2 specification.",
"type" : "string"
},
"riskScore" : {
"description" : "Risk score calculated from the transaction rules.",
"format" : "int32",
"type" : "integer"
},
"threeDSServerTransID" : {
"description" : "The `threeDSServerTransID` value as defined in the 3D Secure 2 specification.",
"type" : "string"
},
"transStatus" : {
"description" : "The `transStatus` value as defined in the 3D Secure 2 specification. Possible values:\n\n* **Y**: Authentication / Account verification successful.\n* **N**: Not Authenticated / Account not verified. Transaction denied.\n* **U**: Authentication / Account verification could not be performed.\n* **I**: Informational Only / 3D Secure Requestor challenge preference acknowledged.\n* **R**: Authentication / Account verification rejected by the Issuer.\n",
"enum" : [
"Y",
"N",
"R",
"I",
"U"
],
"type" : "string"
},
"transStatusReason" : {
"description" : "Provides information on why the `transStatus` field has the specified value. For possible values, refer to [our docs](https://docs.adyen.com/online-payments/3d-secure/api-reference#possible-transstatusreason-values).",
"enum" : [
"01",
"02",
"03",
"04",
"05",
"06",
"07",
"08",
"09",
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
"18",
"19",
"20",
"21",
"22",
"23",
"24",
"25",
"26",
"80",
"81",
"82",
"83",
"84",
"85",
"86",
"87",
"88"
],
"type" : "string"
},
"type" : {
"description" : "The type of authentication performed. Possible values:\n\n* **frictionless**\n* **challenge**",
"enum" : [
"frictionless",
"challenge"
],
"type" : "string"
}
},
"required" : [
"challengeIndicator",
"dsTransID",
"messageVersion",
"threeDSServerTransID",
"transStatus",
"createdAt",
"type",
"inPSD2Scope",
"deviceChannel",
"messageCategory",
"acsTransId"
],
"type" : "object"
},
"AuthenticationNotificationData" : {
"properties" : {
"authentication" : {
"description" : "Information about the authentication.",
"$ref" : "#/components/schemas/AuthenticationInfo"
},
"balancePlatform" : {
"description" : "The unique identifier of the balance platform.",
"type" : "string"
},
"id" : {
"description" : "Unique identifier of the authentication.",
"type" : "string"
},
"paymentInstrumentId" : {
"description" : "Unique identifier of the payment instrument that was used for the authentication.",
"type" : "string"
},
"purchase" : {
"description" : "Information about the purchase.",
"$ref" : "#/components/schemas/PurchaseInfo"
},
"status" : {
"description" : "Outcome of the authentication.\nAllowed values:\n* authenticated\n* rejected\n* error",
"enum" : [
"authenticated",
"rejected",
"error"
],
"type" : "string"
}
},
"required" : [
"id",
"paymentInstrumentId",
"status",
"authentication",
"purchase"
],
"type" : "object"
},
"AuthenticationNotificationRequest" : {
"properties" : {
"data" : {
"description" : "Contains event details.",
"$ref" : "#/components/schemas/AuthenticationNotificationData"
},
"environment" : {
"description" : "The environment from which the webhook originated.\n\nPossible values: **test**, **live**.",
"type" : "string"
},
"type" : {
"description" : "Type of notification.",
"enum" : [
"balancePlatform.authentication.created"
],
"type" : "string"
}
},
"required" : [
"environment",
"type",
"data"
],
"type" : "object"
},
"BalancePlatformNotificationResponse" : {
"properties" : {
"notificationResponse" : {
"description" : "Respond with **HTTP 200 OK** and `[accepted]` in the response body to [accept the webhook](https://docs.adyen.com/development-resources/webhooks#accept-notifications).",
"type" : "string"
}
},
"type" : "object"
},
"ChallengeInfo" : {
"properties" : {
"challengeCancel" : {
"description" : "Indicator informing the Access Control Server (ACS) and the Directory Server (DS) that the authentication has been cancelled. For possible values, refer to [3D Secure API reference](https://docs.adyen.com/online-payments/3d-secure/api-reference#mpidata).",
"enum" : [
"01",
"02",
"03",
"04",
"05",
"06",
"07"
],
"type" : "string"
},
"flow" : {
"description" : "The flow used in the challenge. Possible values:\n\n* **OTP_SMS**: one-time password (OTP) flow\n* **OOB**: out-of-band (OOB) flow",
"enum" : [
"OTP_SMS",
"OOB"
],
"type" : "string"
},
"lastInteraction" : {
"description" : "The last time of interaction with the challenge.",
"format" : "date-time",
"type" : "string"
},
"phoneNumber" : {
"description" : "The last four digits of the phone number used in the challenge.",
"type" : "string"
},
"resends" : {
"description" : "The number of times the one-time password (OTP) was resent during the challenge.",
"format" : "int32",
"type" : "integer"
},
"retries" : {
"description" : "The number of retries used in the challenge.",
"format" : "int32",
"type" : "integer"
}
},
"required" : [
"flow",
"lastInteraction"
],
"type" : "object"
},
"PurchaseInfo" : {
"properties" : {
"date" : {
"description" : "Date of the purchase.",
"type" : "string"
},
"merchantName" : {
"description" : "Name of the merchant.",
"type" : "string"
},
"originalAmount" : {
"description" : "Amount of the purchase.",
"$ref" : "#/components/schemas/Amount"
}
},
"required" : [
"merchantName",
"date",
"originalAmount"
],
"type" : "object"
},
"Resource" : {
"properties" : {
"balancePlatform" : {
"description" : "The unique identifier of the balance platform.",
"type" : "string"
},
"creationDate" : {
"description" : "The date and time when the event was triggered, in ISO 8601 extended format. For example, **2020-12-18T10:15:30+01:00**.",
"format" : "date-time",
"type" : "string"
},
"id" : {
"description" : "The ID of the resource.",
"type" : "string"
}
},
"type" : "object"
}
},
"securitySchemes" : {
"BasicAuth" : {
"scheme" : "basic",
"type" : "http"
}
},
"examples" : {
"WebhookAck" : {
"summary" : "Acknowledge Webhook",
"value" : {
"notificationResponse" : "[accepted]"
}
},
"post-balancePlatform.authentication.created-balancePlatform-authentication-created-authenticated-challenge" : {
"summary" : "Authentication successful (challenge flow)",
"description" : "Example webhook for a successful authentication (challenge flow)",
"value" : {
"data" : {
"authentication" : {
"acsTransId" : "6a4c1709-a42e-4c7f-96c7-1043adacfc97",
"challenge" : {
"flow" : "OOB",
"lastInteraction" : "2022-12-22T15:49:03+01:00"
},
"challengeIndicator" : "01",
"createdAt" : "2022-12-22T15:45:03+01:00",
"deviceChannel" : "app",
"dsTransID" : "a3b86754-444d-46ca-95a2-ada351d3f42c",
"exemptionIndicator" : "lowValue",
"inPSD2Scope" : true,
"messageCategory" : "payment",
"messageVersion" : "2.2.0",
"riskScore" : 0,
"threeDSServerTransID" : "6edcc246-23ee-4e94-ac5d-8ae620bea7d9",
"transStatus" : "Y",
"type" : "challenge"
},
"balancePlatform" : "YOUR_BALANCE_PLATFORM",
"id" : "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"paymentInstrumentId" : "PI3227C223222B5BPCMFXD2XG",
"purchase" : {
"date" : "2022-12-22T15:49:03+01:00",
"merchantName" : "TeaShop_NL",
"originalAmount" : {
"currency" : "EUR",
"value" : 1000
}
},
"status" : "authenticated"
},
"environment" : "test",
"type" : "balancePlatform.authentication.created"
}
},
"post-balancePlatform.authentication.created-balancePlatform-authentication-created-authenticated-frictionless" : {
"summary" : "Authentication successful (frictionless flow)",
"description" : "Example webhook for a successful authentication (frictionless flow)",
"value" : {
"data" : {
"authentication" : {
"acsTransId" : "6a4c1709-a42e-4c7f-96c7-1043adacfc97",
"challengeIndicator" : "01",
"createdAt" : "2022-12-22T15:45:03+01:00",
"deviceChannel" : "app",
"dsTransID" : "a3b86754-444d-46ca-95a2-ada351d3f42c",
"exemptionIndicator" : "lowValue",
"inPSD2Scope" : true,
"messageCategory" : "payment",
"messageVersion" : "2.2.0",
"riskScore" : 0,
"threeDSServerTransID" : "6edcc246-23ee-4e94-ac5d-8ae620bea7d9",
"transStatus" : "Y",
"type" : "frictionless"
},
"balancePlatform" : "YOUR_BALANCE_PLATFORM",
"id" : "497f6eca-6276-4993-bfeb-53cbbbba6f08",
"paymentInstrumentId" : "PI3227C223222B5BPCMFXD2XG",
"purchase" : {
"date" : "2022-12-22T15:49:03+01:00",
"merchantName" : "TeaShop_NL",
"originalAmount" : {
"currency" : "EUR",
"value" : 1000
}
},
"status" : "authenticated"
},
"environment" : "test",
"type" : "balancePlatform.authentication.created"
}
},
"post-balancePlatform.authentication.created-balancePlatform-authentication-created-rejected" : {
"summary" : "Authentication rejected",
"description" : "Example webhook for a rejected authentication due to exceeded number of retries",
"value" : {
"data" : {
"balancePlatform" : "YOUR_BALANCE_PLATFORM",
"id" : "a8fc7a40-6e48-498a-bdc2-494daf0f490a",
"authentication" : {
"acsTransId" : "a8fc7a40-6e48-498a-bdc2-494daf0f490a",
"challenge" : {
"flow" : "OTP_SMS",
"lastInteraction" : "2023-01-19T17:37:13+01:00",
"phoneNumber" : "******6789",
"resends" : 0,
"retries" : 2
},
"challengeIndicator" : "01",
"createdAt" : "2023-01-19T17:07:17+01:00",
"deviceChannel" : "app",
"dsTransID" : "59de4e30-7f84-4a77-aaf8-1ca493092ef9",
"exemptionIndicator" : "noExemptionApplied",
"inPSD2Scope" : false,
"messageCategory" : "payment",
"messageVersion" : "2.2.0",
"threeDSServerTransID" : "8bc0fdbd-5c8a-4bed-a171-9d10347e7798",
"transStatus" : "N",
"transStatusReason" : "19",
"type" : "challenge"
},
"paymentInstrumentId" : "PI3227C223222B5BPCMFXD2XG",
"purchase" : {
"date" : "2022-12-22T15:49:03+01:00",
"merchantName" : "TeaShop_NL",
"originalAmount" : {
"currency" : "EUR",
"value" : 1000
}
},
"status" : "rejected"
},
"environment" : "test",
"type" : "balancePlatform.authentication.created"
}
}
}
}
}