diff --git a/specs/2.0/CheckoutService-V30.json b/specs/2.0/CheckoutService-V30.json
new file mode 100644
index 0000000..d5aaaf4
--- /dev/null
+++ b/specs/2.0/CheckoutService-V30.json
@@ -0,0 +1,1091 @@
+{
+ "swagger" : "2.0",
+ "info" : {
+ "version" : "30",
+ "title" : "Adyen Checkout Service",
+ "description" : "A web service to initiate and authorise payments with Adyen Checkout. You can use the same integration for payments made with cards (including One-Click and 3D Secure), mobile wallets, and local payment methods (e.g. iDEAL and Sofort). For more information, refer to [Checkout documentation](https://docs.adyen.com/developers/checkout)."
+ },
+ "host" : "checkout-test.adyen.com",
+ "basePath" : "/v30",
+ "schemes" : [
+ "https"
+ ],
+ "produces" : [
+ "application/json"
+ ],
+ "consumes" : [
+ "application/json"
+ ],
+ "x-groups" : [
+ "General"
+ ],
+ "paths" : {
+ "/setup" : {
+ "post" : {
+ "summary" : "Creates a payment setup",
+ "description" : "Creates a payment with a unique reference (pspReference) and attempts to obtain an authorisation hold, which can be \"captured\" or \"cancelled\" later. While for cards an authorised payment can be captured later, non-card methods typically don't support this and will automatically capture as part of the authorisation.",
+ "x-groupName" : "General",
+ "x-sortIndex" : 1,
+ "parameters" : [
+ {
+ "name" : "request",
+ "in" : "body",
+ "schema" : {
+ "$ref" : "#/definitions/PaymentSetupRequest"
+ }
+ }
+ ],
+ "responses" : {
+ "200" : {
+ "description" : "OK - the request has succeeded.",
+ "schema" : {
+ "$ref" : "#/definitions/PaymentSetupResponse"
+ }
+ },
+ "400" : {
+ "description" : "Bad Request - a problem reading or understanding the request."
+ },
+ "422" : {
+ "description" : "Unprocessable Entity - a request validation error."
+ },
+ "401" : {
+ "description" : "Unauthorized - authentication required."
+ },
+ "500" : {
+ "description" : "Internal Server Error - the server could not process the request."
+ },
+ "403" : {
+ "description" : "Forbidden - insufficient permissions to process the request."
+ }
+ }
+ }
+ },
+ "/verify" : {
+ "post" : {
+ "summary" : "Creates a payment authorisation",
+ "description" : "Creates a payment with a unique reference (pspReference) and attempts to obtain an authorisation hold, which can be \"captured\" or \"cancelled\" later. While for cards an authorised payment can be captured later, non-card methods typically don't support this and will automatically capture as part of the authorisation.",
+ "x-groupName" : "General",
+ "x-sortIndex" : 2,
+ "parameters" : [
+ {
+ "name" : "request",
+ "in" : "body",
+ "schema" : {
+ "$ref" : "#/definitions/PaymentVerificationRequest"
+ }
+ }
+ ],
+ "responses" : {
+ "200" : {
+ "description" : "OK - the request has succeeded.",
+ "schema" : {
+ "$ref" : "#/definitions/PaymentVerificationResponse"
+ }
+ },
+ "400" : {
+ "description" : "Bad Request - a problem reading or understanding the request."
+ },
+ "422" : {
+ "description" : "Unprocessable Entity - a request validation error."
+ },
+ "401" : {
+ "description" : "Unauthorized - authentication required."
+ },
+ "500" : {
+ "description" : "Internal Server Error - the server could not process the request."
+ },
+ "403" : {
+ "description" : "Forbidden - insufficient permissions to process the request."
+ }
+ }
+ }
+ }
+ },
+ "definitions" : {
+ "Address" : {
+ "properties" : {
+ "city" : {
+ "description" : "The city name.",
+ "type" : "string"
+ },
+ "country" : {
+ "description" : "A valid value is an ISO two-character country code (e.g. 'NL').",
+ "type" : "string"
+ },
+ "houseNumberOrName" : {
+ "description" : "The house number or name.",
+ "type" : "string"
+ },
+ "postalCode" : {
+ "description" : "The postal code with a maximum of 5 characters for USA and maximum of 10 characters for any other country.",
+ "type" : "string"
+ },
+ "stateOrProvince" : {
+ "description" : "For USA or Canada, a valid 2-character abbreviation for the state or province respectively. For other countries any abbreviation with maximum 3 characters for the state or province.",
+ "type" : "string"
+ },
+ "street" : {
+ "description" : "The street name.\n> Don't append the house number to this field. Instead, pass the house number separately as `houseNumberOrName`.\n",
+ "type" : "string"
+ }
+ },
+ "required" : [
+ "street",
+ "houseNumberOrName",
+ "city",
+ "country"
+ ]
+ },
+ "Amount" : {
+ "properties" : {
+ "currency" : {
+ "description" : "The three-character [ISO currency code](https://en.wikipedia.org/wiki/ISO_4217).",
+ "maxLength" : 3,
+ "minLength" : 3,
+ "type" : "string"
+ },
+ "value" : {
+ "description" : "The payable amount that can be charged for the transaction.\n\nThe transaction amount needs to be represented in minor units according to the [following table](https://docs.adyen.com/developers/currency-codes).",
+ "format" : "int64",
+ "type" : "integer"
+ }
+ },
+ "required" : [
+ "value",
+ "currency"
+ ]
+ },
+ "Avs" : {
+ "properties" : {
+ "addressEditable" : {
+ "type" : "boolean"
+ },
+ "enabled" : {
+ "type" : "string"
+ }
+ }
+ },
+ "BankAccount" : {
+ "properties" : {
+ "bankAccountNumber" : {
+ "description" : "The bank account number (without separators).",
+ "type" : "string"
+ },
+ "bankCity" : {
+ "description" : "The bank city.",
+ "type" : "string"
+ },
+ "bankLocationId" : {
+ "description" : "The location id of the bank. The field value is `nil` in most cases.",
+ "type" : "string"
+ },
+ "bankName" : {
+ "description" : "The name of the bank.",
+ "type" : "string"
+ },
+ "bic" : {
+ "description" : "The [Business Identifier Code](https://en.wikipedia.org/wiki/ISO_9362) (BIC) is the SWIFT address assigned to a bank. The field value is `nil` in most cases.",
+ "type" : "string"
+ },
+ "countryCode" : {
+ "description" : "Country code where the bank is located.\n\nA valid value is an ISO two-character country code (e.g. 'NL').",
+ "type" : "string"
+ },
+ "iban" : {
+ "description" : "The [International Bank Account Number](https://en.wikipedia.org/wiki/International_Bank_Account_Number) (IBAN).",
+ "type" : "string"
+ },
+ "ownerName" : {
+ "description" : "The name of the bank account holder.\nIf you submit a name with non-Latin characters, we automatically replace some of them with corresponding Latin characters to meet the FATF recommendations. For example:\n* χ12 is converted to ch12.\n* üA is converted to euA.\n* Peter Møller is converted to Peter Mller, because banks don't accept 'ø'.\nAfter replacement, the ownerName must have at least three alphanumeric characters (A-Z, a-z, 0-9), and at least one of them must be a valid Latin character (A-Z, a-z). For example:\n* John17 - allowed.\n* J17 - allowed.\n* 171 - not allowed.\n* John-7 - allowed.\n> If provided details don't match the required format, the response returns the error message: 203 'Invalid bank account holder name'.",
+ "type" : "string"
+ },
+ "taxId" : {
+ "description" : "The bank account holder's tax ID.",
+ "type" : "string"
+ }
+ }
+ },
+ "BrowserInfo" : {
+ "properties" : {
+ "acceptHeader" : {
+ "description" : "The accept header value of the shopper's browser.",
+ "maxLength" : 50,
+ "minLength" : 10,
+ "type" : "string"
+ },
+ "userAgent" : {
+ "description" : "The user agent value of the shopper's browser.",
+ "maxLength" : 50,
+ "minLength" : 10,
+ "type" : "string"
+ }
+ },
+ "required" : [
+ "userAgent",
+ "acceptHeader"
+ ]
+ },
+ "Card" : {
+ "properties" : {
+ "cvc" : {
+ "description" : "The [card verification code](https://docs.adyen.com/developers/payment-glossary#cardsecuritycodecvccvvcid) (1-20 characters). Depending on the card brand, it is known also as:\n* CVV2/CVC2 – length: 3 digits\n* CID – length: 4 digits\n> If you are using [Client-Side Encryption](https://docs.adyen.com/developers/ecommerce-integration), the CVC code is present in the encrypted data. You must never post the card details to the server.\n> This field must be always present in a [one-click payment request](https://docs.adyen.com/developers/features/recurring-payments).\n> When this value is returned in a response, it is always empty because it is not stored.",
+ "maxLength" : 20,
+ "minLength" : 1,
+ "type" : "string"
+ },
+ "expiryMonth" : {
+ "description" : "The card expiry month.\nFormat: 2 digits, zero-padded for single digits. For example:\n* 03 = March\n* 11 = November",
+ "maxLength" : 2,
+ "minLength" : 1,
+ "type" : "string"
+ },
+ "expiryYear" : {
+ "description" : "The card expiry year.\nFormat: 4 digits. For example: 2018",
+ "maxLength" : 4,
+ "minLength" : 4,
+ "type" : "string"
+ },
+ "holderName" : {
+ "description" : "The name of the cardholder, as printed on the card.",
+ "maxLength" : 50,
+ "minLength" : 1,
+ "type" : "string"
+ },
+ "issueNumber" : {
+ "description" : "The issue number of the card (for some UK debit cards only).",
+ "maxLength" : 2,
+ "minLength" : 1,
+ "type" : "string"
+ },
+ "number" : {
+ "description" : "The card number (4-19 characters). Do not use any separators.\nWhen this value is returned in a response, only the last 4 digits of the card number are returned.",
+ "maxLength" : 19,
+ "minLength" : 4,
+ "type" : "string"
+ },
+ "startMonth" : {
+ "description" : "The month component of the start date (for some UK debit cards only).",
+ "maxLength" : 2,
+ "minLength" : 1,
+ "type" : "string"
+ },
+ "startYear" : {
+ "description" : "The year component of the start date (for some UK debit cards only).",
+ "maxLength" : 4,
+ "minLength" : 4,
+ "type" : "string"
+ }
+ },
+ "required" : [
+ "number",
+ "expiryMonth",
+ "expiryYear",
+ "holderName"
+ ]
+ },
+ "Collection" : {
+
+ },
+ "Configuration" : {
+ "properties" : {
+ "avs" : {
+ "$ref" : "#/definitions/Avs"
+ },
+ "cardHolderNameRequired" : {
+ "type" : "boolean"
+ },
+ "installments" : {
+ "$ref" : "#/definitions/Installments"
+ }
+ }
+ },
+ "Detail" : {
+ "properties" : {
+ "items" : {
+ "description" : "in case of a select, the items to choose from",
+ "items" : {
+ "$ref" : "#/definitions/Item"
+ },
+ "type" : "array"
+ },
+ "key" : {
+ "description" : "value to provide in the result",
+ "type" : "string"
+ },
+ "optional" : {
+ "description" : "true iff this input is optional to provide",
+ "type" : "boolean"
+ },
+ "type" : {
+ "description" : "the type of the required input",
+ "type" : "string"
+ }
+ }
+ },
+ "ForexQuote" : {
+ "properties" : {
+ "account" : {
+ "description" : "The account name.",
+ "type" : "string"
+ },
+ "accountType" : {
+ "description" : "The account type.",
+ "type" : "string"
+ },
+ "baseAmount" : {
+ "description" : "The base amount.",
+ "$ref" : "#/definitions/Amount"
+ },
+ "basePoints" : {
+ "description" : "The base points.",
+ "format" : "int32",
+ "type" : "integer"
+ },
+ "buy" : {
+ "description" : "The buy rate.",
+ "$ref" : "#/definitions/Amount"
+ },
+ "interbank" : {
+ "description" : "The interbank amount.",
+ "$ref" : "#/definitions/Amount"
+ },
+ "reference" : {
+ "description" : "The reference assigned to the forex quote request.",
+ "type" : "string"
+ },
+ "sell" : {
+ "description" : "The sell rate.",
+ "$ref" : "#/definitions/Amount"
+ },
+ "signature" : {
+ "description" : "The signature to validate the integrity.",
+ "type" : "string"
+ },
+ "source" : {
+ "description" : "The source of the forex quote.",
+ "type" : "string"
+ },
+ "type" : {
+ "description" : "The type of forex.",
+ "type" : "string"
+ },
+ "validTill" : {
+ "description" : "The date until which the forex quote is valid.",
+ "format" : "date-time",
+ "type" : "string"
+ }
+ },
+ "required" : [
+ "validTill",
+ "basePoints"
+ ]
+ },
+ "FraudResult" : {
+ "properties" : {
+ "accountScore" : {
+ "description" : "The total fraud score generated by the risk checks.",
+ "format" : "int32",
+ "type" : "integer"
+ },
+ "results" : {
+ "description" : "The result of the individual risk checks.",
+ "$ref" : "#/definitions/Collection"
+ }
+ },
+ "required" : [
+ "accountScore"
+ ]
+ },
+ "InputDetail" : {
+ "properties" : {
+ "configuration" : {
+ "additionalProperties" : {
+ "type" : "string"
+ },
+ "description" : "configuration parameters for the required input",
+ "type" : "object"
+ },
+ "inputDetails" : {
+ "description" : "in case of address data, inputdetails can be set recursively",
+ "items" : {
+ "$ref" : "#/definitions/SubInputDetail"
+ },
+ "type" : "array"
+ },
+ "itemSearchUrl" : {
+ "description" : "in case of a select, the URL where to query the items from",
+ "type" : "string"
+ },
+ "items" : {
+ "description" : "in case of a select, the items to choose from",
+ "items" : {
+ "$ref" : "#/definitions/Item"
+ },
+ "type" : "array"
+ },
+ "key" : {
+ "description" : "value to provide in the result",
+ "type" : "string"
+ },
+ "optional" : {
+ "description" : "true iff this input is optional to provide",
+ "type" : "boolean"
+ },
+ "type" : {
+ "description" : "the type of the required input",
+ "type" : "string"
+ },
+ "value" : {
+ "description" : "value can be pre-filled, if available",
+ "type" : "string"
+ }
+ }
+ },
+ "Installments" : {
+ "properties" : {
+ "value" : {
+ "description" : "Defines the number of installments. Its value needs to be greater than zero.\n\nUsually, the maximum allowed number of installments is capped. For example, it may not be possible to split a payment in more than 24 installments. The acquirer sets this upper limit, so its value may vary.",
+ "format" : "int32",
+ "type" : "integer"
+ }
+ },
+ "required" : [
+ "value"
+ ]
+ },
+ "Item" : {
+ "properties" : {
+ "id" : {
+ "description" : "value to provide in the result",
+ "type" : "string"
+ },
+ "imageUrl" : {
+ "description" : "optional image URL",
+ "type" : "string"
+ },
+ "name" : {
+ "description" : "display name",
+ "type" : "string"
+ }
+ }
+ },
+ "Name" : {
+ "properties" : {
+ "firstName" : {
+ "description" : "A person's first name.",
+ "type" : "string"
+ },
+ "gender" : {
+ "description" : "A person's gender (can be unknown).",
+ "enum" : [
+ "MALE",
+ "FEMALE",
+ "UNKNOWN"
+ ],
+ "maxLength" : 1,
+ "minLength" : 1,
+ "type" : "string"
+ },
+ "infix" : {
+ "description" : "A person name's infix, if applicable. Maximum length: 20 characters.",
+ "type" : "string"
+ },
+ "lastName" : {
+ "description" : "A person's last name.",
+ "type" : "string"
+ }
+ },
+ "required" : [
+ "firstName",
+ "lastName",
+ "gender"
+ ]
+ },
+ "PaymentDetails" : {
+ "properties" : {
+ "additionalAmount" : {
+ "description" : "the portion of the \"amount\" which is additional/surcharged. Required to be in the same currency as the amount.",
+ "$ref" : "#/definitions/Amount"
+ },
+ "amount" : {
+ "description" : "the amount to charge",
+ "$ref" : "#/definitions/Amount"
+ },
+ "countryCode" : {
+ "description" : "the shopper's country code",
+ "type" : "string"
+ },
+ "reference" : {
+ "description" : "the reference assigned to the payment",
+ "type" : "string"
+ },
+ "sessionValidity" : {
+ "description" : "the maximum validatiy of the session",
+ "type" : "string"
+ },
+ "shopperLocale" : {
+ "description" : "the shopper's locale",
+ "type" : "string"
+ },
+ "shopperReference" : {
+ "description" : "a reference used to uniquely identify the shopper (e.g. user ID or account ID)",
+ "type" : "string"
+ }
+ }
+ },
+ "PaymentMethod" : {
+ "properties" : {
+ "configuration" : {
+ "additionalProperties" : {
+ "type" : "string"
+ },
+ "description" : "the configuration",
+ "type" : "object"
+ },
+ "details" : {
+ "description" : "all input to be provided to complete the payment with this payment method",
+ "items" : {
+ "$ref" : "#/definitions/Detail"
+ },
+ "type" : "array"
+ },
+ "group" : {
+ "description" : "the group where this payment method belongs to",
+ "$ref" : "#/definitions/PaymentMethodGroup"
+ },
+ "inputDetails" : {
+ "description" : "all input to be provided to complete the payment with this payment method",
+ "items" : {
+ "$ref" : "#/definitions/InputDetail"
+ },
+ "type" : "array"
+ },
+ "name" : {
+ "description" : "the displayable name of this payment method",
+ "type" : "string"
+ },
+ "paymentMethodData" : {
+ "description" : "echo data required to send in next calls",
+ "type" : "string"
+ },
+ "type" : {
+ "description" : "the unique payment method code",
+ "type" : "string"
+ }
+ }
+ },
+ "PaymentMethodGroup" : {
+ "properties" : {
+ "name" : {
+ "description" : "the name of the group",
+ "type" : "string"
+ },
+ "paymentMethodData" : {
+ "description" : "echo data to be used if the payment method is displayed as part of this group",
+ "type" : "string"
+ },
+ "type" : {
+ "description" : "the unique code of the group",
+ "type" : "string"
+ }
+ }
+ },
+ "PaymentSetupRequest" : {
+ "properties" : {
+ "additionalAmount" : {
+ "description" : "If you want a [BIN or card verification](https://docs.adyen.com/developers/ecommerce-integration/cards/bin-data-and-card-verification) request to use a non-zero value, assign this value to `additionalAmount` (while the amount must be still set to 0 to trigger BIN or card verification).\nRequired to be in the same currency as the `amount`. ",
+ "$ref" : "#/definitions/Amount"
+ },
+ "additionalData" : {
+ "additionalProperties" : {
+ "type" : "string"
+ },
+ "description" : "This field contains additional data, which may be required for a particular payment request.\n\nThe `additionalData` object consists of entries, each of which includes the key and value. For more information on possible key-value pairs, refer to the [additionalData section](https://docs.adyen.com/developers/api-reference/payments-api#paymentrequestadditionaldata).",
+ "type" : "object"
+ },
+ "amount" : {
+ "description" : "The amount information for the transaction. For [BIN or card verification](https://docs.adyen.com/developers/ecommerce-integration/cards/bin-data-and-card-verification) requests, set amount to 0 (zero).",
+ "$ref" : "#/definitions/Amount"
+ },
+ "bankAccount" : {
+ "description" : "The details of the bank account, from which the payment should be made from.\nEither `bankAccount` or `card` field must be provided in a payment request.",
+ "$ref" : "#/definitions/BankAccount"
+ },
+ "billingAddress" : {
+ "description" : "The address where to send the invoice.",
+ "$ref" : "#/definitions/Address"
+ },
+ "browserInfo" : {
+ "description" : "The shopper's browser information.",
+ "$ref" : "#/definitions/BrowserInfo"
+ },
+ "captureDelayHours" : {
+ "description" : "The delay between the authorisation and scheduled auto-capture, specified in hours.",
+ "format" : "int32",
+ "type" : "integer"
+ },
+ "card" : {
+ "description" : "A container for card data.\n> Either `bankAccount` or `card` field must be provided in a payment request.",
+ "$ref" : "#/definitions/Card"
+ },
+ "channel" : {
+ "description" : "the SDK that will be used, either iOS, Android or Web",
+ "enum" : [
+ "iOS",
+ "Android",
+ "Web"
+ ],
+ "type" : "string"
+ },
+ "configuration" : {
+ "description" : "configuration for specific use cases",
+ "$ref" : "#/definitions/Configuration"
+ },
+ "countryCode" : {
+ "description" : "the shopper's country code",
+ "type" : "string"
+ },
+ "dateOfBirth" : {
+ "description" : "The shopper's date of birth.\n\nFormat: [ISO-8601](https://www.w3.org/TR/NOTE-datetime); example: YYYY-MM-DD",
+ "format" : "date-time",
+ "type" : "string"
+ },
+ "dccQuote" : {
+ "description" : "The forex quote as returned in the response of the forex service.",
+ "$ref" : "#/definitions/ForexQuote"
+ },
+ "deliveryAddress" : {
+ "description" : "The address where the purchased goods should be delivered to.",
+ "$ref" : "#/definitions/Address"
+ },
+ "deliveryDate" : {
+ "description" : "The date and time the purchased goods should be delivered.\n\nFormat: [ISO 8601](https://www.w3.org/TR/NOTE-datetime); YYYY-MM-DDThh:mm:ss.sssTZD\nExample: 2017-07-17T13:42:40.428+01:00",
+ "format" : "date-time",
+ "type" : "string"
+ },
+ "deviceFingerprint" : {
+ "description" : "A string containing the shopper's device fingerprint. For more information, refer to [Device fingerprinting](https://docs.adyen.com/developers/risk-management/device-fingerprinting).",
+ "type" : "string"
+ },
+ "entityType" : {
+ "description" : "The type of the entity the payment is processed for.",
+ "enum" : [
+ "NaturalPerson",
+ "CompanyName"
+ ],
+ "type" : "string"
+ },
+ "fraudOffset" : {
+ "description" : "An integer value that is added to the normal fraud score. The value can be either positive or negative.",
+ "format" : "int32",
+ "type" : "integer"
+ },
+ "html" : {
+ "description" : "true iff html should be provided as part of the response",
+ "type" : "boolean"
+ },
+ "installments" : {
+ "description" : "Contains installment settings. For more information, refer to [Installments](https://docs.adyen.com/developers/payment-methods/installment-payments).",
+ "$ref" : "#/definitions/Installments"
+ },
+ "mcc" : {
+ "description" : "The [merchant category code](https://en.wikipedia.org/wiki/Merchant_category_code) (MCC) is a four-digit number which relates to a particular market segment. This code reflects the predominant activity that is conducted by the merchant.",
+ "type" : "string"
+ },
+ "merchantAccount" : {
+ "description" : "The merchant account identifier, with which you want to process the transaction.",
+ "type" : "string"
+ },
+ "merchantOrderReference" : {
+ "description" : "This reference allows linking multiple transactions to each other.\n> When providing the `merchantOrderReference` value, we also recommend you submit `retry.orderAttemptNumber`, `retry.chainAttemptNumber`, and `retry.skipRetry` values. ",
+ "type" : "string"
+ },
+ "metadata" : {
+ "additionalProperties" : {
+ "type" : "string"
+ },
+ "description" : "Metadata consists of entries, each of which includes a key and a value.\nLimitations: Error \"177\", \"Metadata size exceeds limit\"",
+ "type" : "object"
+ },
+ "mpiData" : {
+ "description" : "Authentication data produced by an MPI (Mastercard SecureCode or Verified By Visa).",
+ "$ref" : "#/definitions/ThreeDSecureData"
+ },
+ "nationality" : {
+ "description" : "The two-character country code of the shopper's nationality.",
+ "maxLength" : 2,
+ "type" : "string"
+ },
+ "oneClick" : {
+ "description" : "true iff one click functionality should be offered",
+ "type" : "boolean"
+ },
+ "orderReference" : {
+ "description" : "The order reference to link multiple partial payments.",
+ "type" : "string"
+ },
+ "origin" : {
+ "type" : "string"
+ },
+ "recurring" : {
+ "description" : "The recurring settings for the payment. Use this property when you want to enable [recurring payments](https://docs.adyen.com/developers/features/recurring-payments).",
+ "$ref" : "#/definitions/Recurring"
+ },
+ "recurringProcessingModel" : {
+ "description" : "Defines a recurring payment type.\nAllowed values:\n* `Subscription` – A transaction for a fixed or variable amount, which follows a fixed schedule.\n* `CardOnFile` – Card details are stored to enable one-click or omnichannel journeys, or simply to streamline the checkout process. Any subscription not following a fixed schedule is also considered a card-on-file transaction.",
+ "enum" : [
+ "CardOnFile",
+ "Subscription"
+ ],
+ "type" : "string"
+ },
+ "reference" : {
+ "description" : "The reference to uniquely identify a payment. This reference is used in all communication with you about the payment status. We recommend using a unique value per payment; however, it is not a requirement.\nIf you need to provide multiple references for a transaction, separate them with hyphens (\"-\").\nMaximum length: 80 characters.",
+ "type" : "string"
+ },
+ "returnUrl" : {
+ "description" : "the url to return back to",
+ "type" : "string"
+ },
+ "selectedBrand" : {
+ "description" : "Some payment methods require defining a value for this field to specify how to process the transaction.\n\nFor the MisterCash payment method, it can be set to:\n* `maestro` (default), to be processed like a Maestro card, or\n* `bcmc`, to be processed like a MisterCash card.",
+ "type" : "string"
+ },
+ "selectedRecurringDetailReference" : {
+ "description" : "The `recurringDetailReference` you want to use for this payment. The value `LATEST` can be used to select the most recently stored recurring detail.",
+ "type" : "string"
+ },
+ "sessionId" : {
+ "description" : "A session ID used to identify a payment session.",
+ "type" : "string"
+ },
+ "sessionValidity" : {
+ "description" : "the maximum validatiy of the session",
+ "type" : "string"
+ },
+ "shopperEmail" : {
+ "description" : "The shopper's email address. We recommend that you provide this data, as it is used in velocity fraud checks.",
+ "type" : "string"
+ },
+ "shopperIP" : {
+ "description" : "The shopper's IP address. We recommend that you provide this data, as it is used in a number of risk checks (for instance, number of payment attempts or location-based checks).\n> This field is mandatory for some merchants depending on your business model. Contact Adyen Support for more information.",
+ "type" : "string"
+ },
+ "shopperInteraction" : {
+ "description" : "Specifies the sales channel, through which the shopper gives their card details, and whether the shopper is a returning customer.\nFor the web service API, Adyen assumes Ecommerce shopper interaction by default.\n\nThis field has the following possible values:\n* `Ecommerce` - Online transactions where the cardholder is present (online). For better authorisation rates, we recommend sending the card security code (CSC) along with the request.\n* `ContAuth` - Card on file and/or subscription transactions, where the card holder is known to the merchant (returning customer). If the shopper is present (online), you can supply also the CSC to improve authorisation (one-click payment).\n* `Moto` - Mail-order and telephone-order transactions where the shopper is in contact with the merchant via email or telephone.\n* `POS` - Point-of-sale transactions where the shopper is physically present to make a payment using a secure payment terminal.",
+ "enum" : [
+ "Ecommerce",
+ "ContAuth",
+ "Moto",
+ "POS"
+ ],
+ "type" : "string"
+ },
+ "shopperLocale" : {
+ "description" : "The combination of a language code and a country code to specify the language to be used in the payment.",
+ "type" : "string"
+ },
+ "shopperName" : {
+ "description" : "The shopper's full name and gender (if specified).",
+ "$ref" : "#/definitions/Name"
+ },
+ "shopperReference" : {
+ "description" : "The shopper's reference to uniquely identify this shopper (e.g. user ID or account ID).\n> This field is required for recurring payments.",
+ "type" : "string"
+ },
+ "shopperStatement" : {
+ "description" : "The text to appear on the shopper's bank statement.",
+ "type" : "string"
+ },
+ "socialSecurityNumber" : {
+ "description" : "The shopper's social security number.",
+ "type" : "string"
+ },
+ "store" : {
+ "description" : "The physical store, for which this payment is processed.",
+ "maxLength" : 16,
+ "minLength" : 1,
+ "type" : "string"
+ },
+ "telephoneNumber" : {
+ "description" : "The shopper's telephone number.",
+ "type" : "string"
+ },
+ "token" : {
+ "description" : "the token generated by the SDK",
+ "type" : "string"
+ },
+ "totalsGroup" : {
+ "description" : "The reference value to aggregate sales totals in reporting. When not specified, the store field is used (if available).",
+ "maxLength" : 16,
+ "minLength" : 1,
+ "type" : "string"
+ },
+ "ui" : {
+ "additionalProperties" : {
+ "type" : "string"
+ },
+ "description" : "the configuration for UI rendering",
+ "type" : "object"
+ }
+ }
+ },
+ "PaymentSetupResponse" : {
+ "properties" : {
+ "authoriseFromSDK" : {
+ "description" : "True if the authorisation needs to happen from the SDK.",
+ "type" : "boolean"
+ },
+ "disableRecurringDetailUrl" : {
+ "description" : "The URL to disable recurring details.",
+ "type" : "string"
+ },
+ "generationtime" : {
+ "description" : "The generationtime of this request, required for CSE.",
+ "type" : "string"
+ },
+ "html" : {
+ "description" : "The stream with html logic, if the html flag was set in the request.",
+ "type" : "string"
+ },
+ "initiationUrl" : {
+ "description" : "The URL for the initiation call.",
+ "type" : "string"
+ },
+ "logoBaseUrl" : {
+ "description" : "The base URL for payment method logos.",
+ "type" : "string"
+ },
+ "origin" : {
+ "description" : "The user origin.",
+ "type" : "string"
+ },
+ "originKey" : {
+ "description" : "The encrypted user origin.",
+ "type" : "string"
+ },
+ "payment" : {
+ "description" : "The summary of the payment setup request.",
+ "$ref" : "#/definitions/PaymentDetails"
+ },
+ "paymentData" : {
+ "description" : "The data blob required to be sent in every future session call.",
+ "type" : "string"
+ },
+ "paymentMethods" : {
+ "description" : "The detailed list of payment methods required to generate payment forms.",
+ "items" : {
+ "$ref" : "#/definitions/PaymentMethod"
+ },
+ "type" : "array"
+ },
+ "publicKey" : {
+ "description" : "The public key required to encrypt sensitive data.",
+ "type" : "string"
+ },
+ "publicKeyToken" : {
+ "description" : "The CSE public key token.",
+ "type" : "string"
+ },
+ "recurringDetails" : {
+ "description" : "The detailed list of stored payment details required to generate payment forms. Will be empty if oneClick is set to false in the request.",
+ "items" : {
+ "$ref" : "#/definitions/RecurringDetail"
+ },
+ "type" : "array"
+ },
+ "token" : {
+ "type" : "string"
+ }
+ }
+ },
+ "PaymentVerificationRequest" : {
+ "properties" : {
+ "payload" : {
+ "type" : "string"
+ }
+ }
+ },
+ "PaymentVerificationResponse" : {
+ "properties" : {
+ "additionalData" : {
+ "additionalProperties" : {
+ "type" : "string"
+ },
+ "description" : "This field contains additional data, which may be required to return in a particular payment response. To choose data fields to be returned, go to Customer Area -> Settings -> API and Response.",
+ "type" : "object"
+ },
+ "authResponse" : {
+ "type" : "string"
+ },
+ "errorMessage" : {
+ "type" : "string"
+ },
+ "fraudResult" : {
+ "description" : "The fraud result properties of the payment.",
+ "$ref" : "#/definitions/FraudResult"
+ },
+ "merchantReference" : {
+ "type" : "string"
+ },
+ "pspReference" : {
+ "description" : "Adyen's 16-digit unique reference associated with the transaction/the request. This value is globally unique; quote it when communicating with us about this request.",
+ "type" : "string"
+ },
+ "refusalReason" : {
+ "description" : "If the payment's authorisation is refused or an error occurrs during authorisation, this field holds Adyen's mapped reason for the refusal or a description of the error.\n\nWhen a transaction fails, the authorisation response includes `resultCode` and `refusalReason` values.",
+ "type" : "string"
+ },
+ "resultCode" : {
+ "description" : "The result of the payment.",
+ "enum" : [
+ "Authorised",
+ "PartiallyAuthorised",
+ "Refused",
+ "Error",
+ "Cancelled",
+ "Received",
+ "RedirectShopper"
+ ],
+ "type" : "string"
+ }
+ }
+ },
+ "Recurring" : {
+ "properties" : {
+ "contract" : {
+ "description" : "The type of recurring contract to be used.\nPossible values:\n* `ONECLICK` – The shopper opts to store their card details for future use. The shopper is present for the subsequent transaction, for cards the security code (CVC/CVV) is required.\n* `RECURRING` – Payment details are stored for future use. For cards, the security code (CVC/CVV) is not required for subsequent payments. This is used for shopper not present transactions.\n* `ONECLICK,RECURRING` – Payment details are stored for future use. This allows the use of the stored payment details regardless of whether the shopper is on your site or not.",
+ "enum" : [
+ "ONECLICK",
+ "RECURRING",
+ "PAYOUT"
+ ],
+ "type" : "string"
+ },
+ "recurringDetailName" : {
+ "description" : "A descriptive name for this detail.",
+ "type" : "string"
+ },
+ "tokenService" : {
+ "description" : "The name of the token service.",
+ "enum" : [
+ "VISATOKENSERVICE"
+ ],
+ "type" : "string"
+ }
+ }
+ },
+ "RecurringDetail" : {
+ "properties" : {
+ "bank" : {
+ "$ref" : "#/definitions/BankAccount"
+ },
+ "card" : {
+ "$ref" : "#/definitions/Card"
+ },
+ "configuration" : {
+ "additionalProperties" : {
+ "type" : "string"
+ },
+ "description" : "the configuration",
+ "type" : "object"
+ },
+ "details" : {
+ "description" : "all input to be provided to complete the payment with this payment method",
+ "items" : {
+ "$ref" : "#/definitions/Detail"
+ },
+ "type" : "array"
+ },
+ "emailAddress" : {
+ "type" : "string"
+ },
+ "group" : {
+ "description" : "the group where this payment method belongs to",
+ "$ref" : "#/definitions/PaymentMethodGroup"
+ },
+ "inputDetails" : {
+ "description" : "all input to be provided to complete the payment with this payment method",
+ "items" : {
+ "$ref" : "#/definitions/InputDetail"
+ },
+ "type" : "array"
+ },
+ "name" : {
+ "description" : "the displayable name of this payment method",
+ "type" : "string"
+ },
+ "paymentMethodData" : {
+ "description" : "echo data required to send in next calls",
+ "type" : "string"
+ },
+ "type" : {
+ "description" : "the unique payment method code",
+ "type" : "string"
+ }
+ }
+ },
+ "SubInputDetail" : {
+ "properties" : {
+ "key" : {
+ "description" : "value to provide in the result",
+ "type" : "string"
+ },
+ "optional" : {
+ "description" : "true iff this input is optional to provide",
+ "type" : "boolean"
+ },
+ "type" : {
+ "description" : "the type of the required input",
+ "type" : "string"
+ },
+ "value" : {
+ "description" : "value can be pre-filled, if available",
+ "type" : "string"
+ }
+ }
+ },
+ "ThreeDSecureData" : {
+ "properties" : {
+ "authenticationResponse" : {
+ "description" : "The authentication response if the shopper was redirected.",
+ "enum" : [
+ "Y",
+ "N",
+ "U",
+ "A"
+ ],
+ "type" : "string"
+ },
+ "cavv" : {
+ "description" : "The cardholder authentication value (base64 encoded, 20 bytes in a decoded form).",
+ "format" : "byte",
+ "type" : "string"
+ },
+ "cavvAlgorithm" : {
+ "description" : "The CAVV algorithm used.",
+ "type" : "string"
+ },
+ "directoryResponse" : {
+ "description" : "The enrollment response from the 3D directory server.",
+ "enum" : [
+ "Y",
+ "N",
+ "U",
+ "E"
+ ],
+ "type" : "string"
+ },
+ "eci" : {
+ "description" : "The electronic commerce indicator.",
+ "type" : "string"
+ },
+ "xid" : {
+ "description" : "The transaction identifier (base64 encoded, 20 bytes in a decoded form).",
+ "format" : "byte",
+ "type" : "string"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/specs/2.0/CheckoutService-V31.json b/specs/2.0/CheckoutService-V31.json
new file mode 100644
index 0000000..5fdca28
--- /dev/null
+++ b/specs/2.0/CheckoutService-V31.json
@@ -0,0 +1,1091 @@
+{
+ "swagger" : "2.0",
+ "info" : {
+ "version" : "31",
+ "title" : "Adyen Checkout Service",
+ "description" : "A web service to initiate and authorise payments with Adyen Checkout. You can use the same integration for payments made with cards (including One-Click and 3D Secure), mobile wallets, and local payment methods (e.g. iDEAL and Sofort). For more information, refer to [Checkout documentation](https://docs.adyen.com/developers/checkout)."
+ },
+ "host" : "checkout-test.adyen.com",
+ "basePath" : "/v31",
+ "schemes" : [
+ "https"
+ ],
+ "produces" : [
+ "application/json"
+ ],
+ "consumes" : [
+ "application/json"
+ ],
+ "x-groups" : [
+ "General"
+ ],
+ "paths" : {
+ "/setup" : {
+ "post" : {
+ "summary" : "Creates a payment setup",
+ "description" : "Creates a payment with a unique reference (pspReference) and attempts to obtain an authorisation hold, which can be \"captured\" or \"cancelled\" later. While for cards an authorised payment can be captured later, non-card methods typically don't support this and will automatically capture as part of the authorisation.",
+ "x-groupName" : "General",
+ "x-sortIndex" : 1,
+ "parameters" : [
+ {
+ "name" : "request",
+ "in" : "body",
+ "schema" : {
+ "$ref" : "#/definitions/PaymentSetupRequest"
+ }
+ }
+ ],
+ "responses" : {
+ "200" : {
+ "description" : "OK - the request has succeeded.",
+ "schema" : {
+ "$ref" : "#/definitions/PaymentSetupResponse"
+ }
+ },
+ "400" : {
+ "description" : "Bad Request - a problem reading or understanding the request."
+ },
+ "422" : {
+ "description" : "Unprocessable Entity - a request validation error."
+ },
+ "401" : {
+ "description" : "Unauthorized - authentication required."
+ },
+ "500" : {
+ "description" : "Internal Server Error - the server could not process the request."
+ },
+ "403" : {
+ "description" : "Forbidden - insufficient permissions to process the request."
+ }
+ }
+ }
+ },
+ "/verify" : {
+ "post" : {
+ "summary" : "Creates a payment authorisation",
+ "description" : "Creates a payment with a unique reference (pspReference) and attempts to obtain an authorisation hold, which can be \"captured\" or \"cancelled\" later. While for cards an authorised payment can be captured later, non-card methods typically don't support this and will automatically capture as part of the authorisation.",
+ "x-groupName" : "General",
+ "x-sortIndex" : 2,
+ "parameters" : [
+ {
+ "name" : "request",
+ "in" : "body",
+ "schema" : {
+ "$ref" : "#/definitions/PaymentVerificationRequest"
+ }
+ }
+ ],
+ "responses" : {
+ "200" : {
+ "description" : "OK - the request has succeeded.",
+ "schema" : {
+ "$ref" : "#/definitions/PaymentVerificationResponse"
+ }
+ },
+ "400" : {
+ "description" : "Bad Request - a problem reading or understanding the request."
+ },
+ "422" : {
+ "description" : "Unprocessable Entity - a request validation error."
+ },
+ "401" : {
+ "description" : "Unauthorized - authentication required."
+ },
+ "500" : {
+ "description" : "Internal Server Error - the server could not process the request."
+ },
+ "403" : {
+ "description" : "Forbidden - insufficient permissions to process the request."
+ }
+ }
+ }
+ }
+ },
+ "definitions" : {
+ "Address" : {
+ "properties" : {
+ "city" : {
+ "description" : "The city name.",
+ "type" : "string"
+ },
+ "country" : {
+ "description" : "A valid value is an ISO two-character country code (e.g. 'NL').",
+ "type" : "string"
+ },
+ "houseNumberOrName" : {
+ "description" : "The house number or name.",
+ "type" : "string"
+ },
+ "postalCode" : {
+ "description" : "The postal code with a maximum of 5 characters for USA and maximum of 10 characters for any other country.",
+ "type" : "string"
+ },
+ "stateOrProvince" : {
+ "description" : "For USA or Canada, a valid 2-character abbreviation for the state or province respectively. For other countries any abbreviation with maximum 3 characters for the state or province.",
+ "type" : "string"
+ },
+ "street" : {
+ "description" : "The street name.\n> Don't append the house number to this field. Instead, pass the house number separately as `houseNumberOrName`.\n",
+ "type" : "string"
+ }
+ },
+ "required" : [
+ "street",
+ "houseNumberOrName",
+ "city",
+ "country"
+ ]
+ },
+ "Amount" : {
+ "properties" : {
+ "currency" : {
+ "description" : "The three-character [ISO currency code](https://en.wikipedia.org/wiki/ISO_4217).",
+ "maxLength" : 3,
+ "minLength" : 3,
+ "type" : "string"
+ },
+ "value" : {
+ "description" : "The payable amount that can be charged for the transaction.\n\nThe transaction amount needs to be represented in minor units according to the [following table](https://docs.adyen.com/developers/currency-codes).",
+ "format" : "int64",
+ "type" : "integer"
+ }
+ },
+ "required" : [
+ "value",
+ "currency"
+ ]
+ },
+ "Avs" : {
+ "properties" : {
+ "addressEditable" : {
+ "type" : "boolean"
+ },
+ "enabled" : {
+ "type" : "string"
+ }
+ }
+ },
+ "BankAccount" : {
+ "properties" : {
+ "bankAccountNumber" : {
+ "description" : "The bank account number (without separators).",
+ "type" : "string"
+ },
+ "bankCity" : {
+ "description" : "The bank city.",
+ "type" : "string"
+ },
+ "bankLocationId" : {
+ "description" : "The location id of the bank. The field value is `nil` in most cases.",
+ "type" : "string"
+ },
+ "bankName" : {
+ "description" : "The name of the bank.",
+ "type" : "string"
+ },
+ "bic" : {
+ "description" : "The [Business Identifier Code](https://en.wikipedia.org/wiki/ISO_9362) (BIC) is the SWIFT address assigned to a bank. The field value is `nil` in most cases.",
+ "type" : "string"
+ },
+ "countryCode" : {
+ "description" : "Country code where the bank is located.\n\nA valid value is an ISO two-character country code (e.g. 'NL').",
+ "type" : "string"
+ },
+ "iban" : {
+ "description" : "The [International Bank Account Number](https://en.wikipedia.org/wiki/International_Bank_Account_Number) (IBAN).",
+ "type" : "string"
+ },
+ "ownerName" : {
+ "description" : "The name of the bank account holder.\nIf you submit a name with non-Latin characters, we automatically replace some of them with corresponding Latin characters to meet the FATF recommendations. For example:\n* χ12 is converted to ch12.\n* üA is converted to euA.\n* Peter Møller is converted to Peter Mller, because banks don't accept 'ø'.\nAfter replacement, the ownerName must have at least three alphanumeric characters (A-Z, a-z, 0-9), and at least one of them must be a valid Latin character (A-Z, a-z). For example:\n* John17 - allowed.\n* J17 - allowed.\n* 171 - not allowed.\n* John-7 - allowed.\n> If provided details don't match the required format, the response returns the error message: 203 'Invalid bank account holder name'.",
+ "type" : "string"
+ },
+ "taxId" : {
+ "description" : "The bank account holder's tax ID.",
+ "type" : "string"
+ }
+ }
+ },
+ "BrowserInfo" : {
+ "properties" : {
+ "acceptHeader" : {
+ "description" : "The accept header value of the shopper's browser.",
+ "maxLength" : 50,
+ "minLength" : 10,
+ "type" : "string"
+ },
+ "userAgent" : {
+ "description" : "The user agent value of the shopper's browser.",
+ "maxLength" : 50,
+ "minLength" : 10,
+ "type" : "string"
+ }
+ },
+ "required" : [
+ "userAgent",
+ "acceptHeader"
+ ]
+ },
+ "Card" : {
+ "properties" : {
+ "cvc" : {
+ "description" : "The [card verification code](https://docs.adyen.com/developers/payment-glossary#cardsecuritycodecvccvvcid) (1-20 characters). Depending on the card brand, it is known also as:\n* CVV2/CVC2 – length: 3 digits\n* CID – length: 4 digits\n> If you are using [Client-Side Encryption](https://docs.adyen.com/developers/ecommerce-integration), the CVC code is present in the encrypted data. You must never post the card details to the server.\n> This field must be always present in a [one-click payment request](https://docs.adyen.com/developers/features/recurring-payments).\n> When this value is returned in a response, it is always empty because it is not stored.",
+ "maxLength" : 20,
+ "minLength" : 1,
+ "type" : "string"
+ },
+ "expiryMonth" : {
+ "description" : "The card expiry month.\nFormat: 2 digits, zero-padded for single digits. For example:\n* 03 = March\n* 11 = November",
+ "maxLength" : 2,
+ "minLength" : 1,
+ "type" : "string"
+ },
+ "expiryYear" : {
+ "description" : "The card expiry year.\nFormat: 4 digits. For example: 2018",
+ "maxLength" : 4,
+ "minLength" : 4,
+ "type" : "string"
+ },
+ "holderName" : {
+ "description" : "The name of the cardholder, as printed on the card.",
+ "maxLength" : 50,
+ "minLength" : 1,
+ "type" : "string"
+ },
+ "issueNumber" : {
+ "description" : "The issue number of the card (for some UK debit cards only).",
+ "maxLength" : 2,
+ "minLength" : 1,
+ "type" : "string"
+ },
+ "number" : {
+ "description" : "The card number (4-19 characters). Do not use any separators.\nWhen this value is returned in a response, only the last 4 digits of the card number are returned.",
+ "maxLength" : 19,
+ "minLength" : 4,
+ "type" : "string"
+ },
+ "startMonth" : {
+ "description" : "The month component of the start date (for some UK debit cards only).",
+ "maxLength" : 2,
+ "minLength" : 1,
+ "type" : "string"
+ },
+ "startYear" : {
+ "description" : "The year component of the start date (for some UK debit cards only).",
+ "maxLength" : 4,
+ "minLength" : 4,
+ "type" : "string"
+ }
+ },
+ "required" : [
+ "number",
+ "expiryMonth",
+ "expiryYear",
+ "holderName"
+ ]
+ },
+ "Collection" : {
+
+ },
+ "Configuration" : {
+ "properties" : {
+ "avs" : {
+ "$ref" : "#/definitions/Avs"
+ },
+ "cardHolderNameRequired" : {
+ "type" : "boolean"
+ },
+ "installments" : {
+ "$ref" : "#/definitions/Installments"
+ }
+ }
+ },
+ "Detail" : {
+ "properties" : {
+ "items" : {
+ "description" : "in case of a select, the items to choose from",
+ "items" : {
+ "$ref" : "#/definitions/Item"
+ },
+ "type" : "array"
+ },
+ "key" : {
+ "description" : "value to provide in the result",
+ "type" : "string"
+ },
+ "optional" : {
+ "description" : "true iff this input is optional to provide",
+ "type" : "boolean"
+ },
+ "type" : {
+ "description" : "the type of the required input",
+ "type" : "string"
+ }
+ }
+ },
+ "ForexQuote" : {
+ "properties" : {
+ "account" : {
+ "description" : "The account name.",
+ "type" : "string"
+ },
+ "accountType" : {
+ "description" : "The account type.",
+ "type" : "string"
+ },
+ "baseAmount" : {
+ "description" : "The base amount.",
+ "$ref" : "#/definitions/Amount"
+ },
+ "basePoints" : {
+ "description" : "The base points.",
+ "format" : "int32",
+ "type" : "integer"
+ },
+ "buy" : {
+ "description" : "The buy rate.",
+ "$ref" : "#/definitions/Amount"
+ },
+ "interbank" : {
+ "description" : "The interbank amount.",
+ "$ref" : "#/definitions/Amount"
+ },
+ "reference" : {
+ "description" : "The reference assigned to the forex quote request.",
+ "type" : "string"
+ },
+ "sell" : {
+ "description" : "The sell rate.",
+ "$ref" : "#/definitions/Amount"
+ },
+ "signature" : {
+ "description" : "The signature to validate the integrity.",
+ "type" : "string"
+ },
+ "source" : {
+ "description" : "The source of the forex quote.",
+ "type" : "string"
+ },
+ "type" : {
+ "description" : "The type of forex.",
+ "type" : "string"
+ },
+ "validTill" : {
+ "description" : "The date until which the forex quote is valid.",
+ "format" : "date-time",
+ "type" : "string"
+ }
+ },
+ "required" : [
+ "validTill",
+ "basePoints"
+ ]
+ },
+ "FraudResult" : {
+ "properties" : {
+ "accountScore" : {
+ "description" : "The total fraud score generated by the risk checks.",
+ "format" : "int32",
+ "type" : "integer"
+ },
+ "results" : {
+ "description" : "The result of the individual risk checks.",
+ "$ref" : "#/definitions/Collection"
+ }
+ },
+ "required" : [
+ "accountScore"
+ ]
+ },
+ "InputDetail" : {
+ "properties" : {
+ "configuration" : {
+ "additionalProperties" : {
+ "type" : "string"
+ },
+ "description" : "configuration parameters for the required input",
+ "type" : "object"
+ },
+ "inputDetails" : {
+ "description" : "in case of address data, inputdetails can be set recursively",
+ "items" : {
+ "$ref" : "#/definitions/SubInputDetail"
+ },
+ "type" : "array"
+ },
+ "itemSearchUrl" : {
+ "description" : "in case of a select, the URL where to query the items from",
+ "type" : "string"
+ },
+ "items" : {
+ "description" : "in case of a select, the items to choose from",
+ "items" : {
+ "$ref" : "#/definitions/Item"
+ },
+ "type" : "array"
+ },
+ "key" : {
+ "description" : "value to provide in the result",
+ "type" : "string"
+ },
+ "optional" : {
+ "description" : "true iff this input is optional to provide",
+ "type" : "boolean"
+ },
+ "type" : {
+ "description" : "the type of the required input",
+ "type" : "string"
+ },
+ "value" : {
+ "description" : "value can be pre-filled, if available",
+ "type" : "string"
+ }
+ }
+ },
+ "Installments" : {
+ "properties" : {
+ "value" : {
+ "description" : "Defines the number of installments. Its value needs to be greater than zero.\n\nUsually, the maximum allowed number of installments is capped. For example, it may not be possible to split a payment in more than 24 installments. The acquirer sets this upper limit, so its value may vary.",
+ "format" : "int32",
+ "type" : "integer"
+ }
+ },
+ "required" : [
+ "value"
+ ]
+ },
+ "Item" : {
+ "properties" : {
+ "id" : {
+ "description" : "value to provide in the result",
+ "type" : "string"
+ },
+ "imageUrl" : {
+ "description" : "optional image URL",
+ "type" : "string"
+ },
+ "name" : {
+ "description" : "display name",
+ "type" : "string"
+ }
+ }
+ },
+ "Name" : {
+ "properties" : {
+ "firstName" : {
+ "description" : "A person's first name.",
+ "type" : "string"
+ },
+ "gender" : {
+ "description" : "A person's gender (can be unknown).",
+ "enum" : [
+ "MALE",
+ "FEMALE",
+ "UNKNOWN"
+ ],
+ "maxLength" : 1,
+ "minLength" : 1,
+ "type" : "string"
+ },
+ "infix" : {
+ "description" : "A person name's infix, if applicable. Maximum length: 20 characters.",
+ "type" : "string"
+ },
+ "lastName" : {
+ "description" : "A person's last name.",
+ "type" : "string"
+ }
+ },
+ "required" : [
+ "firstName",
+ "lastName",
+ "gender"
+ ]
+ },
+ "PaymentDetails" : {
+ "properties" : {
+ "additionalAmount" : {
+ "description" : "the portion of the \"amount\" which is additional/surcharged. Required to be in the same currency as the amount.",
+ "$ref" : "#/definitions/Amount"
+ },
+ "amount" : {
+ "description" : "the amount to charge",
+ "$ref" : "#/definitions/Amount"
+ },
+ "countryCode" : {
+ "description" : "the shopper's country code",
+ "type" : "string"
+ },
+ "reference" : {
+ "description" : "the reference assigned to the payment",
+ "type" : "string"
+ },
+ "sessionValidity" : {
+ "description" : "the maximum validatiy of the session",
+ "type" : "string"
+ },
+ "shopperLocale" : {
+ "description" : "the shopper's locale",
+ "type" : "string"
+ },
+ "shopperReference" : {
+ "description" : "a reference used to uniquely identify the shopper (e.g. user ID or account ID)",
+ "type" : "string"
+ }
+ }
+ },
+ "PaymentMethod" : {
+ "properties" : {
+ "configuration" : {
+ "additionalProperties" : {
+ "type" : "string"
+ },
+ "description" : "the configuration",
+ "type" : "object"
+ },
+ "details" : {
+ "description" : "all input to be provided to complete the payment with this payment method",
+ "items" : {
+ "$ref" : "#/definitions/Detail"
+ },
+ "type" : "array"
+ },
+ "group" : {
+ "description" : "the group where this payment method belongs to",
+ "$ref" : "#/definitions/PaymentMethodGroup"
+ },
+ "inputDetails" : {
+ "description" : "all input to be provided to complete the payment with this payment method",
+ "items" : {
+ "$ref" : "#/definitions/InputDetail"
+ },
+ "type" : "array"
+ },
+ "name" : {
+ "description" : "the displayable name of this payment method",
+ "type" : "string"
+ },
+ "paymentMethodData" : {
+ "description" : "echo data required to send in next calls",
+ "type" : "string"
+ },
+ "type" : {
+ "description" : "the unique payment method code",
+ "type" : "string"
+ }
+ }
+ },
+ "PaymentMethodGroup" : {
+ "properties" : {
+ "name" : {
+ "description" : "the name of the group",
+ "type" : "string"
+ },
+ "paymentMethodData" : {
+ "description" : "echo data to be used if the payment method is displayed as part of this group",
+ "type" : "string"
+ },
+ "type" : {
+ "description" : "the unique code of the group",
+ "type" : "string"
+ }
+ }
+ },
+ "PaymentSetupRequest" : {
+ "properties" : {
+ "additionalAmount" : {
+ "description" : "If you want a [BIN or card verification](https://docs.adyen.com/developers/ecommerce-integration/cards/bin-data-and-card-verification) request to use a non-zero value, assign this value to `additionalAmount` (while the amount must be still set to 0 to trigger BIN or card verification).\nRequired to be in the same currency as the `amount`. ",
+ "$ref" : "#/definitions/Amount"
+ },
+ "additionalData" : {
+ "additionalProperties" : {
+ "type" : "string"
+ },
+ "description" : "This field contains additional data, which may be required for a particular payment request.\n\nThe `additionalData` object consists of entries, each of which includes the key and value. For more information on possible key-value pairs, refer to the [additionalData section](https://docs.adyen.com/developers/api-reference/payments-api#paymentrequestadditionaldata).",
+ "type" : "object"
+ },
+ "amount" : {
+ "description" : "The amount information for the transaction. For [BIN or card verification](https://docs.adyen.com/developers/ecommerce-integration/cards/bin-data-and-card-verification) requests, set amount to 0 (zero).",
+ "$ref" : "#/definitions/Amount"
+ },
+ "bankAccount" : {
+ "description" : "The details of the bank account, from which the payment should be made from.\nEither `bankAccount` or `card` field must be provided in a payment request.",
+ "$ref" : "#/definitions/BankAccount"
+ },
+ "billingAddress" : {
+ "description" : "The address where to send the invoice.",
+ "$ref" : "#/definitions/Address"
+ },
+ "browserInfo" : {
+ "description" : "The shopper's browser information.",
+ "$ref" : "#/definitions/BrowserInfo"
+ },
+ "captureDelayHours" : {
+ "description" : "The delay between the authorisation and scheduled auto-capture, specified in hours.",
+ "format" : "int32",
+ "type" : "integer"
+ },
+ "card" : {
+ "description" : "A container for card data.\n> Either `bankAccount` or `card` field must be provided in a payment request.",
+ "$ref" : "#/definitions/Card"
+ },
+ "channel" : {
+ "description" : "the SDK that will be used, either iOS, Android or Web",
+ "enum" : [
+ "iOS",
+ "Android",
+ "Web"
+ ],
+ "type" : "string"
+ },
+ "configuration" : {
+ "description" : "configuration for specific use cases",
+ "$ref" : "#/definitions/Configuration"
+ },
+ "countryCode" : {
+ "description" : "the shopper's country code",
+ "type" : "string"
+ },
+ "dateOfBirth" : {
+ "description" : "The shopper's date of birth.\n\nFormat: [ISO-8601](https://www.w3.org/TR/NOTE-datetime); example: YYYY-MM-DD",
+ "format" : "date-time",
+ "type" : "string"
+ },
+ "dccQuote" : {
+ "description" : "The forex quote as returned in the response of the forex service.",
+ "$ref" : "#/definitions/ForexQuote"
+ },
+ "deliveryAddress" : {
+ "description" : "The address where the purchased goods should be delivered to.",
+ "$ref" : "#/definitions/Address"
+ },
+ "deliveryDate" : {
+ "description" : "The date and time the purchased goods should be delivered.\n\nFormat: [ISO 8601](https://www.w3.org/TR/NOTE-datetime); YYYY-MM-DDThh:mm:ss.sssTZD\nExample: 2017-07-17T13:42:40.428+01:00",
+ "format" : "date-time",
+ "type" : "string"
+ },
+ "deviceFingerprint" : {
+ "description" : "A string containing the shopper's device fingerprint. For more information, refer to [Device fingerprinting](https://docs.adyen.com/developers/risk-management/device-fingerprinting).",
+ "type" : "string"
+ },
+ "entityType" : {
+ "description" : "The type of the entity the payment is processed for.",
+ "enum" : [
+ "NaturalPerson",
+ "CompanyName"
+ ],
+ "type" : "string"
+ },
+ "fraudOffset" : {
+ "description" : "An integer value that is added to the normal fraud score. The value can be either positive or negative.",
+ "format" : "int32",
+ "type" : "integer"
+ },
+ "html" : {
+ "description" : "true iff html should be provided as part of the response",
+ "type" : "boolean"
+ },
+ "installments" : {
+ "description" : "Contains installment settings. For more information, refer to [Installments](https://docs.adyen.com/developers/payment-methods/installment-payments).",
+ "$ref" : "#/definitions/Installments"
+ },
+ "mcc" : {
+ "description" : "The [merchant category code](https://en.wikipedia.org/wiki/Merchant_category_code) (MCC) is a four-digit number which relates to a particular market segment. This code reflects the predominant activity that is conducted by the merchant.",
+ "type" : "string"
+ },
+ "merchantAccount" : {
+ "description" : "The merchant account identifier, with which you want to process the transaction.",
+ "type" : "string"
+ },
+ "merchantOrderReference" : {
+ "description" : "This reference allows linking multiple transactions to each other.\n> When providing the `merchantOrderReference` value, we also recommend you submit `retry.orderAttemptNumber`, `retry.chainAttemptNumber`, and `retry.skipRetry` values. ",
+ "type" : "string"
+ },
+ "metadata" : {
+ "additionalProperties" : {
+ "type" : "string"
+ },
+ "description" : "Metadata consists of entries, each of which includes a key and a value.\nLimitations: Error \"177\", \"Metadata size exceeds limit\"",
+ "type" : "object"
+ },
+ "mpiData" : {
+ "description" : "Authentication data produced by an MPI (Mastercard SecureCode or Verified By Visa).",
+ "$ref" : "#/definitions/ThreeDSecureData"
+ },
+ "nationality" : {
+ "description" : "The two-character country code of the shopper's nationality.",
+ "maxLength" : 2,
+ "type" : "string"
+ },
+ "oneClick" : {
+ "description" : "true iff one click functionality should be offered",
+ "type" : "boolean"
+ },
+ "orderReference" : {
+ "description" : "The order reference to link multiple partial payments.",
+ "type" : "string"
+ },
+ "origin" : {
+ "type" : "string"
+ },
+ "recurring" : {
+ "description" : "The recurring settings for the payment. Use this property when you want to enable [recurring payments](https://docs.adyen.com/developers/features/recurring-payments).",
+ "$ref" : "#/definitions/Recurring"
+ },
+ "recurringProcessingModel" : {
+ "description" : "Defines a recurring payment type.\nAllowed values:\n* `Subscription` – A transaction for a fixed or variable amount, which follows a fixed schedule.\n* `CardOnFile` – Card details are stored to enable one-click or omnichannel journeys, or simply to streamline the checkout process. Any subscription not following a fixed schedule is also considered a card-on-file transaction.",
+ "enum" : [
+ "CardOnFile",
+ "Subscription"
+ ],
+ "type" : "string"
+ },
+ "reference" : {
+ "description" : "The reference to uniquely identify a payment. This reference is used in all communication with you about the payment status. We recommend using a unique value per payment; however, it is not a requirement.\nIf you need to provide multiple references for a transaction, separate them with hyphens (\"-\").\nMaximum length: 80 characters.",
+ "type" : "string"
+ },
+ "returnUrl" : {
+ "description" : "the url to return back to",
+ "type" : "string"
+ },
+ "selectedBrand" : {
+ "description" : "Some payment methods require defining a value for this field to specify how to process the transaction.\n\nFor the MisterCash payment method, it can be set to:\n* `maestro` (default), to be processed like a Maestro card, or\n* `bcmc`, to be processed like a MisterCash card.",
+ "type" : "string"
+ },
+ "selectedRecurringDetailReference" : {
+ "description" : "The `recurringDetailReference` you want to use for this payment. The value `LATEST` can be used to select the most recently stored recurring detail.",
+ "type" : "string"
+ },
+ "sessionId" : {
+ "description" : "A session ID used to identify a payment session.",
+ "type" : "string"
+ },
+ "sessionValidity" : {
+ "description" : "the maximum validatiy of the session",
+ "type" : "string"
+ },
+ "shopperEmail" : {
+ "description" : "The shopper's email address. We recommend that you provide this data, as it is used in velocity fraud checks.",
+ "type" : "string"
+ },
+ "shopperIP" : {
+ "description" : "The shopper's IP address. We recommend that you provide this data, as it is used in a number of risk checks (for instance, number of payment attempts or location-based checks).\n> This field is mandatory for some merchants depending on your business model. Contact Adyen Support for more information.",
+ "type" : "string"
+ },
+ "shopperInteraction" : {
+ "description" : "Specifies the sales channel, through which the shopper gives their card details, and whether the shopper is a returning customer.\nFor the web service API, Adyen assumes Ecommerce shopper interaction by default.\n\nThis field has the following possible values:\n* `Ecommerce` - Online transactions where the cardholder is present (online). For better authorisation rates, we recommend sending the card security code (CSC) along with the request.\n* `ContAuth` - Card on file and/or subscription transactions, where the card holder is known to the merchant (returning customer). If the shopper is present (online), you can supply also the CSC to improve authorisation (one-click payment).\n* `Moto` - Mail-order and telephone-order transactions where the shopper is in contact with the merchant via email or telephone.\n* `POS` - Point-of-sale transactions where the shopper is physically present to make a payment using a secure payment terminal.",
+ "enum" : [
+ "Ecommerce",
+ "ContAuth",
+ "Moto",
+ "POS"
+ ],
+ "type" : "string"
+ },
+ "shopperLocale" : {
+ "description" : "The combination of a language code and a country code to specify the language to be used in the payment.",
+ "type" : "string"
+ },
+ "shopperName" : {
+ "description" : "The shopper's full name and gender (if specified).",
+ "$ref" : "#/definitions/Name"
+ },
+ "shopperReference" : {
+ "description" : "The shopper's reference to uniquely identify this shopper (e.g. user ID or account ID).\n> This field is required for recurring payments.",
+ "type" : "string"
+ },
+ "shopperStatement" : {
+ "description" : "The text to appear on the shopper's bank statement.",
+ "type" : "string"
+ },
+ "socialSecurityNumber" : {
+ "description" : "The shopper's social security number.",
+ "type" : "string"
+ },
+ "store" : {
+ "description" : "The physical store, for which this payment is processed.",
+ "maxLength" : 16,
+ "minLength" : 1,
+ "type" : "string"
+ },
+ "telephoneNumber" : {
+ "description" : "The shopper's telephone number.",
+ "type" : "string"
+ },
+ "token" : {
+ "description" : "the token generated by the SDK",
+ "type" : "string"
+ },
+ "totalsGroup" : {
+ "description" : "The reference value to aggregate sales totals in reporting. When not specified, the store field is used (if available).",
+ "maxLength" : 16,
+ "minLength" : 1,
+ "type" : "string"
+ },
+ "ui" : {
+ "additionalProperties" : {
+ "type" : "string"
+ },
+ "description" : "the configuration for UI rendering",
+ "type" : "object"
+ }
+ }
+ },
+ "PaymentSetupResponse" : {
+ "properties" : {
+ "authoriseFromSDK" : {
+ "description" : "True if the authorisation needs to happen from the SDK.",
+ "type" : "boolean"
+ },
+ "disableRecurringDetailUrl" : {
+ "description" : "The URL to disable recurring details.",
+ "type" : "string"
+ },
+ "generationtime" : {
+ "description" : "The generationtime of this request, required for CSE.",
+ "type" : "string"
+ },
+ "html" : {
+ "description" : "The stream with html logic, if the html flag was set in the request.",
+ "type" : "string"
+ },
+ "initiationUrl" : {
+ "description" : "The URL for the initiation call.",
+ "type" : "string"
+ },
+ "logoBaseUrl" : {
+ "description" : "The base URL for payment method logos.",
+ "type" : "string"
+ },
+ "origin" : {
+ "description" : "The user origin.",
+ "type" : "string"
+ },
+ "originKey" : {
+ "description" : "The encrypted user origin.",
+ "type" : "string"
+ },
+ "payment" : {
+ "description" : "The summary of the payment setup request.",
+ "$ref" : "#/definitions/PaymentDetails"
+ },
+ "paymentData" : {
+ "description" : "The data blob required to be sent in every future session call.",
+ "type" : "string"
+ },
+ "paymentMethods" : {
+ "description" : "The detailed list of payment methods required to generate payment forms.",
+ "items" : {
+ "$ref" : "#/definitions/PaymentMethod"
+ },
+ "type" : "array"
+ },
+ "publicKey" : {
+ "description" : "The public key required to encrypt sensitive data.",
+ "type" : "string"
+ },
+ "publicKeyToken" : {
+ "description" : "The CSE public key token.",
+ "type" : "string"
+ },
+ "recurringDetails" : {
+ "description" : "The detailed list of stored payment details required to generate payment forms. Will be empty if oneClick is set to false in the request.",
+ "items" : {
+ "$ref" : "#/definitions/RecurringDetail"
+ },
+ "type" : "array"
+ },
+ "token" : {
+ "type" : "string"
+ }
+ }
+ },
+ "PaymentVerificationRequest" : {
+ "properties" : {
+ "payload" : {
+ "type" : "string"
+ }
+ }
+ },
+ "PaymentVerificationResponse" : {
+ "properties" : {
+ "additionalData" : {
+ "additionalProperties" : {
+ "type" : "string"
+ },
+ "description" : "This field contains additional data, which may be required to return in a particular payment response. To choose data fields to be returned, go to Customer Area -> Settings -> API and Response.",
+ "type" : "object"
+ },
+ "authResponse" : {
+ "type" : "string"
+ },
+ "errorMessage" : {
+ "type" : "string"
+ },
+ "fraudResult" : {
+ "description" : "The fraud result properties of the payment.",
+ "$ref" : "#/definitions/FraudResult"
+ },
+ "merchantReference" : {
+ "type" : "string"
+ },
+ "pspReference" : {
+ "description" : "Adyen's 16-digit unique reference associated with the transaction/the request. This value is globally unique; quote it when communicating with us about this request.",
+ "type" : "string"
+ },
+ "refusalReason" : {
+ "description" : "If the payment's authorisation is refused or an error occurrs during authorisation, this field holds Adyen's mapped reason for the refusal or a description of the error.\n\nWhen a transaction fails, the authorisation response includes `resultCode` and `refusalReason` values.",
+ "type" : "string"
+ },
+ "resultCode" : {
+ "description" : "The result of the payment.",
+ "enum" : [
+ "Authorised",
+ "PartiallyAuthorised",
+ "Refused",
+ "Error",
+ "Cancelled",
+ "Received",
+ "RedirectShopper"
+ ],
+ "type" : "string"
+ }
+ }
+ },
+ "Recurring" : {
+ "properties" : {
+ "contract" : {
+ "description" : "The type of recurring contract to be used.\nPossible values:\n* `ONECLICK` – The shopper opts to store their card details for future use. The shopper is present for the subsequent transaction, for cards the security code (CVC/CVV) is required.\n* `RECURRING` – Payment details are stored for future use. For cards, the security code (CVC/CVV) is not required for subsequent payments. This is used for shopper not present transactions.\n* `ONECLICK,RECURRING` – Payment details are stored for future use. This allows the use of the stored payment details regardless of whether the shopper is on your site or not.",
+ "enum" : [
+ "ONECLICK",
+ "RECURRING",
+ "PAYOUT"
+ ],
+ "type" : "string"
+ },
+ "recurringDetailName" : {
+ "description" : "A descriptive name for this detail.",
+ "type" : "string"
+ },
+ "tokenService" : {
+ "description" : "The name of the token service.",
+ "enum" : [
+ "VISATOKENSERVICE"
+ ],
+ "type" : "string"
+ }
+ }
+ },
+ "RecurringDetail" : {
+ "properties" : {
+ "bank" : {
+ "$ref" : "#/definitions/BankAccount"
+ },
+ "card" : {
+ "$ref" : "#/definitions/Card"
+ },
+ "configuration" : {
+ "additionalProperties" : {
+ "type" : "string"
+ },
+ "description" : "the configuration",
+ "type" : "object"
+ },
+ "details" : {
+ "description" : "all input to be provided to complete the payment with this payment method",
+ "items" : {
+ "$ref" : "#/definitions/Detail"
+ },
+ "type" : "array"
+ },
+ "emailAddress" : {
+ "type" : "string"
+ },
+ "group" : {
+ "description" : "the group where this payment method belongs to",
+ "$ref" : "#/definitions/PaymentMethodGroup"
+ },
+ "inputDetails" : {
+ "description" : "all input to be provided to complete the payment with this payment method",
+ "items" : {
+ "$ref" : "#/definitions/InputDetail"
+ },
+ "type" : "array"
+ },
+ "name" : {
+ "description" : "the displayable name of this payment method",
+ "type" : "string"
+ },
+ "paymentMethodData" : {
+ "description" : "echo data required to send in next calls",
+ "type" : "string"
+ },
+ "type" : {
+ "description" : "the unique payment method code",
+ "type" : "string"
+ }
+ }
+ },
+ "SubInputDetail" : {
+ "properties" : {
+ "key" : {
+ "description" : "value to provide in the result",
+ "type" : "string"
+ },
+ "optional" : {
+ "description" : "true iff this input is optional to provide",
+ "type" : "boolean"
+ },
+ "type" : {
+ "description" : "the type of the required input",
+ "type" : "string"
+ },
+ "value" : {
+ "description" : "value can be pre-filled, if available",
+ "type" : "string"
+ }
+ }
+ },
+ "ThreeDSecureData" : {
+ "properties" : {
+ "authenticationResponse" : {
+ "description" : "The authentication response if the shopper was redirected.",
+ "enum" : [
+ "Y",
+ "N",
+ "U",
+ "A"
+ ],
+ "type" : "string"
+ },
+ "cavv" : {
+ "description" : "The cardholder authentication value (base64 encoded, 20 bytes in a decoded form).",
+ "format" : "byte",
+ "type" : "string"
+ },
+ "cavvAlgorithm" : {
+ "description" : "The CAVV algorithm used.",
+ "type" : "string"
+ },
+ "directoryResponse" : {
+ "description" : "The enrollment response from the 3D directory server.",
+ "enum" : [
+ "Y",
+ "N",
+ "U",
+ "E"
+ ],
+ "type" : "string"
+ },
+ "eci" : {
+ "description" : "The electronic commerce indicator.",
+ "type" : "string"
+ },
+ "xid" : {
+ "description" : "The transaction identifier (base64 encoded, 20 bytes in a decoded form).",
+ "format" : "byte",
+ "type" : "string"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/specs/2.0/PaymentService-V25.json b/specs/2.0/PaymentService-V25.json
new file mode 100644
index 0000000..123c190
--- /dev/null
+++ b/specs/2.0/PaymentService-V25.json
@@ -0,0 +1,1101 @@
+{
+ "swagger" : "2.0",
+ "info" : {
+ "version" : "25",
+ "title" : "Adyen Payment Service",
+ "description" : "A set of API endpoints that allow you to initiate, settle, and modify payments on the Adyen payments platform. You can use the API to accept card payments (including One-Click and 3D Secure), bank transfers, ewallets, and many other payment methods. For more information, refer to [Ecommerce integration](https://docs.adyen.com/developers/ecommerce-integration)."
+ },
+ "host" : "pal-test.adyen.com",
+ "basePath" : "/pal/servlet/Payment/v25",
+ "schemes" : [
+ "https"
+ ],
+ "produces" : [
+ "application/json"
+ ],
+ "consumes" : [
+ "application/json"
+ ],
+ "x-groups" : [
+ "General",
+ "Modifications"
+ ],
+ "paths" : {
+ "/authorise" : {
+ "post" : {
+ "summary" : "Creates a payment authorisation",
+ "description" : "Creates a payment with a unique reference (pspReference) and attempts to obtain an authorisation hold, which can be \"captured\" or \"cancelled\" later. While for cards an authorised payment can be captured later, non-card methods typically don't support this and will automatically capture as part of the authorisation.",
+ "x-groupName" : "General",
+ "x-sortIndex" : 1,
+ "parameters" : [
+ {
+ "name" : "paymentRequest",
+ "in" : "body",
+ "schema" : {
+ "$ref" : "#/definitions/PaymentRequest"
+ }
+ }
+ ],
+ "responses" : {
+ "200" : {
+ "description" : "OK - the request has succeeded.",
+ "schema" : {
+ "$ref" : "#/definitions/PaymentResult"
+ }
+ },
+ "400" : {
+ "description" : "Bad Request - a problem reading or understanding the request."
+ },
+ "422" : {
+ "description" : "Unprocessable Entity - a request validation error."
+ },
+ "401" : {
+ "description" : "Unauthorized - authentication required."
+ },
+ "500" : {
+ "description" : "Internal Server Error - the server could not process the request."
+ },
+ "403" : {
+ "description" : "Forbidden - insufficient permissions to process the request."
+ }
+ }
+ }
+ },
+ "/authorise3d" : {
+ "post" : {
+ "summary" : "Completes a 3-D Secure payment authorisation",
+ "description" : "For an authenticated 3-D secure session, creates a payment with a unique reference (pspReference) and attempts to obtain an authorisation hold, which can be \"captured\" or \"cancelled\" later.",
+ "x-groupName" : "General",
+ "x-sortIndex" : 2,
+ "parameters" : [
+ {
+ "name" : "paymentRequest3d",
+ "in" : "body",
+ "schema" : {
+ "$ref" : "#/definitions/PaymentRequest3d"
+ }
+ }
+ ],
+ "responses" : {
+ "200" : {
+ "description" : "OK - the request has succeeded.",
+ "schema" : {
+ "$ref" : "#/definitions/PaymentResult"
+ }
+ },
+ "400" : {
+ "description" : "Bad Request - a problem reading or understanding the request."
+ },
+ "422" : {
+ "description" : "Unprocessable Entity - a request validation error."
+ },
+ "401" : {
+ "description" : "Unauthorized - authentication required."
+ },
+ "500" : {
+ "description" : "Internal Server Error - the server could not process the request."
+ },
+ "403" : {
+ "description" : "Forbidden - insufficient permissions to process the request."
+ }
+ }
+ }
+ },
+ "/cancel" : {
+ "post" : {
+ "summary" : "Cancels a payment authorisation",
+ "description" : "Cancels the authorisation hold on a payment, returning a unique reference for this request.",
+ "x-groupName" : "Modifications",
+ "x-sortIndex" : 1,
+ "parameters" : [
+ {
+ "name" : "modificationRequest",
+ "in" : "body",
+ "schema" : {
+ "$ref" : "#/definitions/ModificationRequest"
+ }
+ }
+ ],
+ "responses" : {
+ "200" : {
+ "description" : "OK - the request has succeeded.",
+ "schema" : {
+ "$ref" : "#/definitions/ModificationResult"
+ }
+ },
+ "400" : {
+ "description" : "Bad Request - a problem reading or understanding the request."
+ },
+ "422" : {
+ "description" : "Unprocessable Entity - a request validation error."
+ },
+ "401" : {
+ "description" : "Unauthorized - authentication required."
+ },
+ "500" : {
+ "description" : "Internal Server Error - the server could not process the request."
+ },
+ "403" : {
+ "description" : "Forbidden - insufficient permissions to process the request."
+ }
+ }
+ }
+ },
+ "/cancelOrRefund" : {
+ "post" : {
+ "summary" : "Cancels or refunds a payment",
+ "description" : "Performs a \"cancel\" on a payment if it has not yet been captured or a \"refund\" if it has already been captured. This is useful when it is not certain if the payment has been captured yet (e.g. when using auto-capture).",
+ "x-groupName" : "Modifications",
+ "x-sortIndex" : 3,
+ "parameters" : [
+ {
+ "name" : "modificationRequest",
+ "in" : "body",
+ "schema" : {
+ "$ref" : "#/definitions/ModificationRequest"
+ }
+ }
+ ],
+ "responses" : {
+ "200" : {
+ "description" : "OK - the request has succeeded.",
+ "schema" : {
+ "$ref" : "#/definitions/ModificationResult"
+ }
+ },
+ "422" : {
+ "description" : "Unprocessable Entity - a request validation error."
+ },
+ "401" : {
+ "description" : "Unauthorized - authentication required."
+ },
+ "500" : {
+ "description" : "Internal Server Error - the server could not process the request."
+ },
+ "403" : {
+ "description" : "Forbidden - insufficient permissions to process the request."
+ }
+ }
+ }
+ },
+ "/capture" : {
+ "post" : {
+ "summary" : "Captures a payment authorisation",
+ "description" : "Captures the authorisation hold on a payment, returning a unique reference for this request. Usually the full authorisation amount is captured, however it's also possible to capture a smaller amount which results in cancelling the remaining authorisation balance. Payment methods which automatically capture as part of authorisation don't need to be captured, but submitting a capture request on these transactions will not result in double charges.
Please note that: