mirror of
https://github.com/gcatanese/adyen-openapi.git
synced 2026-03-10 08:01:24 +00:00
565 lines
24 KiB
JSON
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"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |