@lap v0.3
# Machine-readable API spec. Each @endpoint block is one API call.
@api Adyen Checkout API
@base https://checkout-test.adyen.com/v71
@version 71
@auth ApiKey X-API-Key in header | Bearer basic
@endpoints 28
@hint download_for_search
@toc applePay(1), cancels(1), cardDetails(1), donationCampaigns(1), donations(1), forward(1), orders(2), originKeys(1), paymentLinks(3), paymentMethods(2), payments(7), paypal(1), sessions(2), storedPaymentMethods(3), validateShopperId(1)

@group applePay
@endpoint POST /applePay/sessions
@required {displayName: str, domainName: str, merchantIdentifier: str}
@optional {Idempotency-Key: str}
@returns(200) {data: str}

@endgroup

@group cancels
@endpoint POST /cancels
@required {merchantAccount: str, paymentReference: str}
@optional {Idempotency-Key: str, applicationInfo: map{adyenLibrary: map, adyenPaymentSource: map, externalPlatform: map, merchantApplication: map, merchantDevice: map, shopperInteractionDevice: map}, enhancedSchemeData: map{airline: map, levelTwoThree: map}, reference: str}
@returns(201) {merchantAccount: str, paymentReference: str, pspReference: str, reference: str, status: str}
@errors {400, 401, 403, 422, 500}

@endgroup

@group cardDetails
@endpoint POST /cardDetails
@required {merchantAccount: str}
@optional {Idempotency-Key: str, cardNumber: str, countryCode: str, encryptedCardNumber: str, supportedBrands: [str]}
@returns(200) {brands: [map], fundingSource: str, isCardCommercial: bool, issuingCountryCode: str}

@endgroup

@group donationCampaigns
@endpoint POST /donationCampaigns
@required {currency: str, merchantAccount: str}
@optional {Idempotency-Key: str, locale: str, store: str}
@returns(200) {donationCampaigns: [map]}
@errors {400, 401, 403, 422, 500}

@endgroup

@group donations
@endpoint POST /donations
@required {amount: map{currency!: str, value!: int(int64)}, merchantAccount: str, reference: str, returnUrl: str}
@optional {Idempotency-Key: str, accountInfo: map{accountAgeIndicator: str, accountChangeDate: str(date-time), accountChangeIndicator: str, accountCreationDate: str(date-time), accountType: str, addCardAttemptsDay: int(int32), deliveryAddressUsageDate: str(date-time), deliveryAddressUsageIndicator: str, homePhone: str, mobilePhone: str, passwordChangeDate: str(date-time), passwordChangeIndicator: str, pastTransactionsDay: int(int32), pastTransactionsYear: int(int32), paymentAccountAge: str(date-time), paymentAccountIndicator: str, purchasesLast6Months: int(int32), suspiciousActivity: bool, workPhone: str}, additionalData: map, applicationInfo: map{adyenLibrary: map, adyenPaymentSource: map, externalPlatform: map, merchantApplication: map, merchantDevice: map, shopperInteractionDevice: map}, authenticationData: map{attemptAuthentication: str, authenticationOnly: bool, threeDSRequestData: map}, billingAddress: map{city!: str, country!: str, houseNumberOrName!: str, postalCode!: str, stateOrProvince: str, street!: str}, browserInfo: map{acceptHeader!: str, colorDepth!: int(int32), javaEnabled!: bool, javaScriptEnabled: bool, language!: str, screenHeight!: int(int32), screenWidth!: int(int32), timeZoneOffset!: int(int32), userAgent!: str}, channel: str(iOS/Android/Web), checkoutAttemptId: str, conversionId: str, countryCode: str, dateOfBirth: str(date-time), deliverAt: str(date-time), deliveryAddress: map{city!: str, country!: str, firstName: str, houseNumberOrName!: str, lastName: str, postalCode!: str, stateOrProvince: str, street!: str}, deviceFingerprint: str, donationAccount: str, donationCampaignId: str, donationOriginalPspReference: str, donationToken: str, lineItems: [map{amountExcludingTax: int(int64), amountIncludingTax: int(int64), brand: str, color: str, description: str, id: str, imageUrl: str, itemCategory: str, manufacturer: str, marketplaceSellerId: str, productUrl: str, quantity: int(int64), receiverEmail: str, size: str, sku: str, taxAmount: int(int64), taxPercentage: int(int64), upc: str}], merchantRiskIndicator: map{addressMatch: bool, deliveryAddressIndicator: str, deliveryEmail: str, deliveryEmailAddress: str, deliveryTimeframe: str, giftCardAmount: map, giftCardCount: int(int32), giftCardCurr: str, preOrderDate: str(date-time), preOrderPurchase: bool, preOrderPurchaseInd: str, reorderItems: bool, reorderItemsInd: str, shipIndicator: str}, metadata: map, mpiData: map{authenticationResponse: str, cavv: str(byte), cavvAlgorithm: str, challengeCancel: str, directoryResponse: str, dsTransID: str, eci: str, riskScore: str, threeDSVersion: str, tokenAuthenticationVerificationValue: str(byte), transStatusReason: str, xid: str(byte)}, origin: str, paymentMethod: any, recurringProcessingModel: str(CardOnFile/Subscription/UnscheduledCardOnFile), redirectFromIssuerMethod: str, redirectToIssuerMethod: str, sessionValidity: str, shopperEmail: str, shopperIP: str, shopperInteraction: str(Ecommerce/ContAuth/Moto/POS), shopperLocale: str, shopperName: map{firstName!: str, lastName!: str}, shopperReference: str, socialSecurityNumber: str, store: str, telephoneNumber: str, threeDS2RequestData: map{acctInfo: map, acctType: str, acquirerBIN: str, acquirerMerchantID: str, addrMatch: str, authenticationOnly: bool, challengeIndicator: str, deviceRenderOptions: map, homePhone: map, mcc: str, merchantName: str, messageVersion: str, mobilePhone: map, notificationURL: str, payTokenInd: bool, paymentAuthenticationUseCase: str, purchaseInstalData: str, recurringExpiry: str, recurringFrequency: str, sdkAppID: str, sdkEphemPubKey: map, sdkMaxTimeout: int(int32), sdkReferenceNumber: str, sdkTransID: str, threeDSCompInd: str, threeDSRequestorAuthenticationInd: str, threeDSRequestorAuthenticationInfo: map, threeDSRequestorChallengeInd: str, threeDSRequestorID: str, threeDSRequestorName: str, threeDSRequestorPriorAuthenticationInfo: map, threeDSRequestorURL: str, transType: str, transactionType: str, whiteListStatus: str, workPhone: map}, threeDSAuthenticationOnly: bool=false}
@returns(200) {amount: map{currency: str, value: int(int64)}, donationAccount: str, id: str, merchantAccount: str, payment: map{action: any, additionalData: map, amount: map{currency: str, value: int(int64)}, donationToken: str, fraudResult: map{accountScore: int(int32), results: [map]}, merchantReference: str, order: map{amount: map{currency: str, value: int(int64)}, expiresAt: str, orderData: str, pspReference: str, reference: str, remainingAmount: map{currency: str, value: int(int64)}}, paymentMethod: map{brand: str, type: str}, paymentValidations: map{name: map{rawResponse: map, result: map, status: str}}, pspReference: str, refusalReason: str, refusalReasonCode: str, resultCode: str, threeDS2ResponseData: map{acsChallengeMandated: str, acsOperatorID: str, acsReferenceNumber: str, acsSignedContent: str, acsTransID: str, acsURL: str, authenticationType: str, cardHolderInfo: str, cavvAlgorithm: str, challengeIndicator: str, dsReferenceNumber: str, dsTransID: str, exemptionIndicator: str, messageVersion: str, riskScore: str, sdkEphemPubKey: str, threeDSServerTransID: str, transStatus: str, transStatusReason: str}, threeDS2Result: map{authenticationValue: str, cavvAlgorithm: str, challengeCancel: str, dsTransID: str, eci: str, exemptionIndicator: str, messageVersion: str, riskScore: str, threeDSRequestorChallengeInd: str, threeDSServerTransID: str, timestamp: str, transStatus: str, transStatusReason: str, whiteListStatus: str}, threeDSPaymentData: str}, reference: str, status: str}
@errors {400, 401, 403, 422, 500}

@endgroup

@group forward
@endpoint POST /forward
@required {baseUrl: str, merchantAccount: str, request: map{body!: str, credentials: str, headers: map, httpMethod!: str, urlSuffix: str}, shopperReference: str}
@optional {Idempotency-Key: str, amount: map{currency!: str, value!: int(int64)}, merchantReference: str, options: map{accountUpdate: bool, dryRun: bool, networkToken: map, networkTxReferencePaths: [str], tokenize: bool}, paymentMethod: map{cvc: str, encryptedCardNumber: str, encryptedExpiryMonth: str, encryptedExpiryYear: str, encryptedSecurityCode: str, expiryMonth: str, expiryYear: str, holderName: str, number: str, type: str}, storedPaymentMethodId: str}
@returns(200) {merchantReference: str, pspReference: str, response: map{body: str, headers: map, status: int(int32)}, storedPaymentMethodId: str}

@endgroup

@group orders
@endpoint POST /orders
@required {amount: map{currency!: str, value!: int(int64)}, merchantAccount: str, reference: str}
@optional {Idempotency-Key: str, expiresAt: str}
@returns(200) {additionalData: map, amount: map{currency: str, value: int(int64)}, expiresAt: str, fraudResult: map{accountScore: int(int32), results: [map]}, orderData: str, pspReference: str, reference: str, refusalReason: str, remainingAmount: map{currency: str, value: int(int64)}, resultCode: str}
@errors {400, 401, 403, 422, 500}

@endpoint POST /orders/cancel
@required {merchantAccount: str, order: map{orderData!: str, pspReference!: str}}
@optional {Idempotency-Key: str}
@returns(200) {pspReference: str, resultCode: str}
@errors {400, 401, 403, 422, 500}

@endgroup

@group originKeys
@endpoint POST /originKeys
@required {originDomains: [str]}
@optional {Idempotency-Key: str}
@returns(200) {originKeys: map}
@errors {400, 401, 403, 422, 500}

@endgroup

@group paymentLinks
@endpoint POST /paymentLinks
@required {amount: map{currency!: str, value!: int(int64)}, merchantAccount: str, reference: str}
@optional {Idempotency-Key: str, allowedPaymentMethods: [str], applicationInfo: map{adyenLibrary: map, adyenPaymentSource: map, externalPlatform: map, merchantApplication: map, merchantDevice: map, shopperInteractionDevice: map}, billingAddress: map{city!: str, country!: str, houseNumberOrName!: str, postalCode!: str, stateOrProvince: str, street!: str}, blockedPaymentMethods: [str], captureDelayHours: int(int32), countryCode: str, dateOfBirth: str(date), deliverAt: str(date-time), deliveryAddress: map{city!: str, country!: str, houseNumberOrName!: str, postalCode!: str, stateOrProvince: str, street!: str}, description: str, expiresAt: str(date-time), fundOrigin: map{billingAddress: map, shopperEmail: str, shopperName: map, telephoneNumber: str, walletIdentifier: str}, fundRecipient: map{IBAN: str, billingAddress: map, paymentMethod: map, shopperEmail: str, shopperName: map, shopperReference: str, storedPaymentMethodId: str, subMerchant: map, telephoneNumber: str, walletIdentifier: str, walletOwnerTaxId: str, walletPurpose: str}, installmentOptions: map, lineItems: [map{amountExcludingTax: int(int64), amountIncludingTax: int(int64), brand: str, color: str, description: str, id: str, imageUrl: str, itemCategory: str, manufacturer: str, marketplaceSellerId: str, productUrl: str, quantity: int(int64), receiverEmail: str, size: str, sku: str, taxAmount: int(int64), taxPercentage: int(int64), upc: str}], manualCapture: bool, mcc: str, merchantOrderReference: str, metadata: map, platformChargebackLogic: map{behavior: str, costAllocationAccount: str, targetAccount: str}, recurringProcessingModel: str(CardOnFile/Subscription/UnscheduledCardOnFile), requiredShopperFields: [str], returnUrl: str, reusable: bool, riskData: map{clientData: str, customFields: map, fraudOffset: int(int32), profileReference: str}, shopperEmail: str, shopperLocale: str, shopperName: map{firstName!: str, lastName!: str}, shopperReference: str, shopperStatement: str, showRemovePaymentMethodButton: bool=true, socialSecurityNumber: str, splitCardFundingSources: bool=false, splits: [map{account: str, amount: map, description: str, reference: str, type!: str}], store: str, storePaymentMethodMode: str(askForConsent/disabled/enabled), telephoneNumber: str, themeId: str, threeDS2RequestData: map{homePhone: map, mobilePhone: map, threeDSRequestorChallengeInd: str, workPhone: map}}
@returns(201) {allowedPaymentMethods: [str], amount: map{currency: str, value: int(int64)}, applicationInfo: map{adyenLibrary: map{name: str, version: str}, adyenPaymentSource: map{name: str, version: str}, externalPlatform: map{integrator: str, name: str, version: str}, merchantApplication: map{name: str, version: str}, merchantDevice: map{os: str, osVersion: str, reference: str}, shopperInteractionDevice: map{locale: str, os: str, osVersion: str}}, billingAddress: map{city: str, country: str, houseNumberOrName: str, postalCode: str, stateOrProvince: str, street: str}, blockedPaymentMethods: [str], captureDelayHours: int(int32), countryCode: str, dateOfBirth: str(date), deliverAt: str(date-time), deliveryAddress: map{city: str, country: str, houseNumberOrName: str, postalCode: str, stateOrProvince: str, street: str}, description: str, expiresAt: str(date-time), fundOrigin: map{billingAddress: map{city: str, country: str, houseNumberOrName: str, postalCode: str, stateOrProvince: str, street: str}, shopperEmail: str, shopperName: map{firstName: str, lastName: str}, telephoneNumber: str, walletIdentifier: str}, fundRecipient: map{IBAN: str, billingAddress: map{city: str, country: str, houseNumberOrName: str, postalCode: str, stateOrProvince: str, street: str}, paymentMethod: map{billingSequenceNumber: str, brand: str, checkoutAttemptId: str, cupsecureplus.smscode: str, cvc: str, encryptedCard: str, encryptedCardNumber: str, encryptedExpiryMonth: str, encryptedExpiryYear: str, encryptedPassword: str, encryptedSecurityCode: str, expiryMonth: str, expiryYear: str, fastlaneData: str, fundingSource: str, holderName: str, networkPaymentReference: str, number: str, recurringDetailReference: str, sdkData: str, shopperNotificationReference: str, srcCorrelationId: str, srcDigitalCardId: str, srcScheme: str, srcTokenReference: str, storedPaymentMethodId: str, threeDS2SdkVersion: str, type: str}, shopperEmail: str, shopperName: map{firstName: str, lastName: str}, shopperReference: str, storedPaymentMethodId: str, subMerchant: map{city: str, country: str, mcc: str, name: str, taxId: str}, telephoneNumber: str, walletIdentifier: str, walletOwnerTaxId: str, walletPurpose: str}, id: str, installmentOptions: map, lineItems: [map], manualCapture: bool, mcc: str, merchantAccount: str, merchantOrderReference: str, metadata: map, platformChargebackLogic: map{behavior: str, costAllocationAccount: str, targetAccount: str}, recurringProcessingModel: str, reference: str, requiredShopperFields: [str], returnUrl: str, reusable: bool, riskData: map{clientData: str, customFields: map, fraudOffset: int(int32), profileReference: str}, shopperEmail: str, shopperLocale: str, shopperName: map{firstName: str, lastName: str}, shopperReference: str, shopperStatement: str, showRemovePaymentMethodButton: bool, socialSecurityNumber: str, splitCardFundingSources: bool, splits: [map], status: str, store: str, storePaymentMethodMode: str, telephoneNumber: str, themeId: str, threeDS2RequestData: map{homePhone: map{cc: str, subscriber: str}, mobilePhone: map{cc: str, subscriber: str}, threeDSRequestorChallengeInd: str, workPhone: map{cc: str, subscriber: str}}, updatedAt: str(date-time), url: str}
@errors {400, 401, 403, 422, 500}

@endpoint GET /paymentLinks/{linkId}
@required {linkId: str}
@returns(200) {allowedPaymentMethods: [str], amount: map{currency: str, value: int(int64)}, applicationInfo: map{adyenLibrary: map{name: str, version: str}, adyenPaymentSource: map{name: str, version: str}, externalPlatform: map{integrator: str, name: str, version: str}, merchantApplication: map{name: str, version: str}, merchantDevice: map{os: str, osVersion: str, reference: str}, shopperInteractionDevice: map{locale: str, os: str, osVersion: str}}, billingAddress: map{city: str, country: str, houseNumberOrName: str, postalCode: str, stateOrProvince: str, street: str}, blockedPaymentMethods: [str], captureDelayHours: int(int32), countryCode: str, dateOfBirth: str(date), deliverAt: str(date-time), deliveryAddress: map{city: str, country: str, houseNumberOrName: str, postalCode: str, stateOrProvince: str, street: str}, description: str, expiresAt: str(date-time), fundOrigin: map{billingAddress: map{city: str, country: str, houseNumberOrName: str, postalCode: str, stateOrProvince: str, street: str}, shopperEmail: str, shopperName: map{firstName: str, lastName: str}, telephoneNumber: str, walletIdentifier: str}, fundRecipient: map{IBAN: str, billingAddress: map{city: str, country: str, houseNumberOrName: str, postalCode: str, stateOrProvince: str, street: str}, paymentMethod: map{billingSequenceNumber: str, brand: str, checkoutAttemptId: str, cupsecureplus.smscode: str, cvc: str, encryptedCard: str, encryptedCardNumber: str, encryptedExpiryMonth: str, encryptedExpiryYear: str, encryptedPassword: str, encryptedSecurityCode: str, expiryMonth: str, expiryYear: str, fastlaneData: str, fundingSource: str, holderName: str, networkPaymentReference: str, number: str, recurringDetailReference: str, sdkData: str, shopperNotificationReference: str, srcCorrelationId: str, srcDigitalCardId: str, srcScheme: str, srcTokenReference: str, storedPaymentMethodId: str, threeDS2SdkVersion: str, type: str}, shopperEmail: str, shopperName: map{firstName: str, lastName: str}, shopperReference: str, storedPaymentMethodId: str, subMerchant: map{city: str, country: str, mcc: str, name: str, taxId: str}, telephoneNumber: str, walletIdentifier: str, walletOwnerTaxId: str, walletPurpose: str}, id: str, installmentOptions: map, lineItems: [map], manualCapture: bool, mcc: str, merchantAccount: str, merchantOrderReference: str, metadata: map, platformChargebackLogic: map{behavior: str, costAllocationAccount: str, targetAccount: str}, recurringProcessingModel: str, reference: str, requiredShopperFields: [str], returnUrl: str, reusable: bool, riskData: map{clientData: str, customFields: map, fraudOffset: int(int32), profileReference: str}, shopperEmail: str, shopperLocale: str, shopperName: map{firstName: str, lastName: str}, shopperReference: str, shopperStatement: str, showRemovePaymentMethodButton: bool, socialSecurityNumber: str, splitCardFundingSources: bool, splits: [map], status: str, store: str, storePaymentMethodMode: str, telephoneNumber: str, themeId: str, threeDS2RequestData: map{homePhone: map{cc: str, subscriber: str}, mobilePhone: map{cc: str, subscriber: str}, threeDSRequestorChallengeInd: str, workPhone: map{cc: str, subscriber: str}}, updatedAt: str(date-time), url: str}
@errors {400, 401, 403, 422, 500}

@endpoint PATCH /paymentLinks/{linkId}
@required {linkId: str, status: str}
@returns(200) {allowedPaymentMethods: [str], amount: map{currency: str, value: int(int64)}, applicationInfo: map{adyenLibrary: map{name: str, version: str}, adyenPaymentSource: map{name: str, version: str}, externalPlatform: map{integrator: str, name: str, version: str}, merchantApplication: map{name: str, version: str}, merchantDevice: map{os: str, osVersion: str, reference: str}, shopperInteractionDevice: map{locale: str, os: str, osVersion: str}}, billingAddress: map{city: str, country: str, houseNumberOrName: str, postalCode: str, stateOrProvince: str, street: str}, blockedPaymentMethods: [str], captureDelayHours: int(int32), countryCode: str, dateOfBirth: str(date), deliverAt: str(date-time), deliveryAddress: map{city: str, country: str, houseNumberOrName: str, postalCode: str, stateOrProvince: str, street: str}, description: str, expiresAt: str(date-time), fundOrigin: map{billingAddress: map{city: str, country: str, houseNumberOrName: str, postalCode: str, stateOrProvince: str, street: str}, shopperEmail: str, shopperName: map{firstName: str, lastName: str}, telephoneNumber: str, walletIdentifier: str}, fundRecipient: map{IBAN: str, billingAddress: map{city: str, country: str, houseNumberOrName: str, postalCode: str, stateOrProvince: str, street: str}, paymentMethod: map{billingSequenceNumber: str, brand: str, checkoutAttemptId: str, cupsecureplus.smscode: str, cvc: str, encryptedCard: str, encryptedCardNumber: str, encryptedExpiryMonth: str, encryptedExpiryYear: str, encryptedPassword: str, encryptedSecurityCode: str, expiryMonth: str, expiryYear: str, fastlaneData: str, fundingSource: str, holderName: str, networkPaymentReference: str, number: str, recurringDetailReference: str, sdkData: str, shopperNotificationReference: str, srcCorrelationId: str, srcDigitalCardId: str, srcScheme: str, srcTokenReference: str, storedPaymentMethodId: str, threeDS2SdkVersion: str, type: str}, shopperEmail: str, shopperName: map{firstName: str, lastName: str}, shopperReference: str, storedPaymentMethodId: str, subMerchant: map{city: str, country: str, mcc: str, name: str, taxId: str}, telephoneNumber: str, walletIdentifier: str, walletOwnerTaxId: str, walletPurpose: str}, id: str, installmentOptions: map, lineItems: [map], manualCapture: bool, mcc: str, merchantAccount: str, merchantOrderReference: str, metadata: map, platformChargebackLogic: map{behavior: str, costAllocationAccount: str, targetAccount: str}, recurringProcessingModel: str, reference: str, requiredShopperFields: [str], returnUrl: str, reusable: bool, riskData: map{clientData: str, customFields: map, fraudOffset: int(int32), profileReference: str}, shopperEmail: str, shopperLocale: str, shopperName: map{firstName: str, lastName: str}, shopperReference: str, shopperStatement: str, showRemovePaymentMethodButton: bool, socialSecurityNumber: str, splitCardFundingSources: bool, splits: [map], status: str, store: str, storePaymentMethodMode: str, telephoneNumber: str, themeId: str, threeDS2RequestData: map{homePhone: map{cc: str, subscriber: str}, mobilePhone: map{cc: str, subscriber: str}, threeDSRequestorChallengeInd: str, workPhone: map{cc: str, subscriber: str}}, updatedAt: str(date-time), url: str}
@errors {400, 401, 403, 422, 500}

@endgroup

@group paymentMethods
@endpoint POST /paymentMethods
@required {merchantAccount: str}
@optional {Idempotency-Key: str, additionalData: map, allowedPaymentMethods: [str], amount: map{currency!: str, value!: int(int64)}, blockedPaymentMethods: [str], browserInfo: map{acceptHeader!: str, colorDepth!: int(int32), javaEnabled!: bool, javaScriptEnabled: bool, language!: str, screenHeight!: int(int32), screenWidth!: int(int32), timeZoneOffset!: int(int32), userAgent!: str}, channel: str(iOS/Android/Web), countryCode: str, order: map{orderData!: str, pspReference!: str}, shopperConversionId: str, shopperEmail: str, shopperIP: str, shopperLocale: str, shopperReference: str, splitCardFundingSources: bool=false, store: str, storeFiltrationMode: str(exclusive/inclusive/skipFilter), telephoneNumber: str}
@returns(200) {paymentMethods: [map], storedPaymentMethods: [map]}
@errors {400, 401, 403, 422, 500}

@endpoint POST /paymentMethods/balance
@required {amount: map{currency!: str, value!: int(int64)}, merchantAccount: str, paymentMethod: map}
@optional {Idempotency-Key: str, accountInfo: map{accountAgeIndicator: str, accountChangeDate: str(date-time), accountChangeIndicator: str, accountCreationDate: str(date-time), accountType: str, addCardAttemptsDay: int(int32), deliveryAddressUsageDate: str(date-time), deliveryAddressUsageIndicator: str, homePhone: str, mobilePhone: str, passwordChangeDate: str(date-time), passwordChangeIndicator: str, pastTransactionsDay: int(int32), pastTransactionsYear: int(int32), paymentAccountAge: str(date-time), paymentAccountIndicator: str, purchasesLast6Months: int(int32), suspiciousActivity: bool, workPhone: str}, additionalAmount: map{currency!: str, value!: int(int64)}, additionalData: map, applicationInfo: map{adyenLibrary: map, adyenPaymentSource: map, externalPlatform: map, merchantApplication: map, merchantDevice: map, shopperInteractionDevice: map}, billingAddress: map{city!: str, country!: str, houseNumberOrName!: str, postalCode!: str, stateOrProvince: str, street!: str}, browserInfo: map{acceptHeader!: str, colorDepth!: int(int32), javaEnabled!: bool, javaScriptEnabled: bool, language!: str, screenHeight!: int(int32), screenWidth!: int(int32), timeZoneOffset!: int(int32), userAgent!: str}, captureDelayHours: int(int32), dateOfBirth: str(date), dccQuote: map{account: str, accountType: str, baseAmount: map, basePoints!: int(int32), buy: map, interbank: map, reference: str, sell: map, signature: str, source: str, type: str, validTill!: str(date-time)}, deliveryAddress: map{city!: str, country!: str, houseNumberOrName!: str, postalCode!: str, stateOrProvince: str, street!: str}, deliveryDate: str(date-time), deviceFingerprint: str, fraudOffset: int(int32), installments: map{extra: int(int32), plan: str, value!: int(int32)}, localizedShopperStatement: map, mcc: str, merchantOrderReference: str, merchantRiskIndicator: map{addressMatch: bool, deliveryAddressIndicator: str, deliveryEmail: str, deliveryEmailAddress: str, deliveryTimeframe: str, giftCardAmount: map, giftCardCount: int(int32), giftCardCurr: str, preOrderDate: str(date-time), preOrderPurchase: bool, preOrderPurchaseInd: str, reorderItems: bool, reorderItemsInd: str, shipIndicator: str}, metadata: map, orderReference: str, recurring: map{contract: str, recurringDetailName: str, recurringExpiry: str(date-time), recurringFrequency: str, tokenService: str}, recurringProcessingModel: str(CardOnFile/Subscription/UnscheduledCardOnFile), reference: str, selectedBrand: str, selectedRecurringDetailReference: str, sessionId: str, shopperEmail: str, shopperIP: str, shopperInteraction: str(Ecommerce/ContAuth/Moto/POS), shopperLocale: str, shopperName: map{firstName!: str, lastName!: str}, shopperReference: str, shopperStatement: str, socialSecurityNumber: str, splits: [map{account: str, amount: map, description: str, reference: str, type!: str}], store: str, telephoneNumber: str, threeDS2RequestData: map{acctInfo: map, acctType: str, acquirerBIN: str, acquirerMerchantID: str, addrMatch: str, authenticationOnly: bool, challengeIndicator: str, deviceChannel!: str, deviceRenderOptions: map, homePhone: map, mcc: str, merchantName: str, messageVersion: str, mobilePhone: map, notificationURL: str, payTokenInd: bool, paymentAuthenticationUseCase: str, purchaseInstalData: str, recurringExpiry: str, recurringFrequency: str, sdkAppID: str, sdkEncData: str, sdkEphemPubKey: map, sdkMaxTimeout: int(int32), sdkReferenceNumber: str, sdkTransID: str, sdkVersion: str, threeDSCompInd: str, threeDSRequestorAuthenticationInd: str, threeDSRequestorAuthenticationInfo: map, threeDSRequestorChallengeInd: str, threeDSRequestorID: str, threeDSRequestorName: str, threeDSRequestorPriorAuthenticationInfo: map, threeDSRequestorURL: str, transType: str, transactionType: str, whiteListStatus: str, workPhone: map}, threeDSAuthenticationOnly: bool=false, totalsGroup: str, trustedShopper: bool}
@returns(200) {additionalData: map, balance: map{currency: str, value: int(int64)}, fraudResult: map{accountScore: int(int32), results: [map]}, pspReference: str, refusalReason: str, resultCode: str, transactionLimit: map{currency: str, value: int(int64)}}
@errors {400, 401, 403, 422, 500}

@endgroup

@group payments
@endpoint POST /payments
@required {amount: map{currency!: str, value!: int(int64)}, merchantAccount: str, paymentMethod: any, reference: str, returnUrl: str}
@optional {Idempotency-Key: str, accountInfo: map{accountAgeIndicator: str, accountChangeDate: str(date-time), accountChangeIndicator: str, accountCreationDate: str(date-time), accountType: str, addCardAttemptsDay: int(int32), deliveryAddressUsageDate: str(date-time), deliveryAddressUsageIndicator: str, homePhone: str, mobilePhone: str, passwordChangeDate: str(date-time), passwordChangeIndicator: str, pastTransactionsDay: int(int32), pastTransactionsYear: int(int32), paymentAccountAge: str(date-time), paymentAccountIndicator: str, purchasesLast6Months: int(int32), suspiciousActivity: bool, workPhone: str}, additionalAmount: map{currency!: str, value!: int(int64)}, additionalData: map, applicationInfo: map{adyenLibrary: map, adyenPaymentSource: map, externalPlatform: map, merchantApplication: map, merchantDevice: map, shopperInteractionDevice: map}, authenticationData: map{attemptAuthentication: str, authenticationOnly: bool, threeDSRequestData: map}, bankAccount: map{accountType: str, bankAccountNumber: str, bankCity: str, bankLocationId: str, bankName: str, bic: str, countryCode: str, iban: str, ownerName: str, taxId: str}, billingAddress: map{city!: str, country!: str, houseNumberOrName!: str, postalCode!: str, stateOrProvince: str, street!: str}, browserInfo: map{acceptHeader!: str, colorDepth!: int(int32), javaEnabled!: bool, javaScriptEnabled: bool, language!: str, screenHeight!: int(int32), screenWidth!: int(int32), timeZoneOffset!: int(int32), userAgent!: str}, captureDelayHours: int(int32), channel: str(iOS/Android/Web), checkoutAttemptId: str, company: map{homepage: str, name: str, registrationNumber: str, registryLocation: str, taxId: str, type: str}, conversionId: str, countryCode: str, dateOfBirth: str(date-time), dccQuote: map{account: str, accountType: str, baseAmount: map, basePoints!: int(int32), buy: map, interbank: map, reference: str, sell: map, signature: str, source: str, type: str, validTill!: str(date-time)}, deliverAt: str(date-time), deliveryAddress: map{city!: str, country!: str, firstName: str, houseNumberOrName!: str, lastName: str, postalCode!: str, stateOrProvince: str, street!: str}, deliveryDate: str(date-time), deviceFingerprint: str, enableOneClick: bool, enablePayOut: bool, enableRecurring: bool, enhancedSchemeData: map{airline: map, levelTwoThree: map}, entityType: str(NaturalPerson/CompanyName), fraudOffset: int(int32), fundOrigin: map{billingAddress: map, shopperEmail: str, shopperName: map, telephoneNumber: str, walletIdentifier: str}, fundRecipient: map{IBAN: str, billingAddress: map, paymentMethod: map, shopperEmail: str, shopperName: map, shopperReference: str, storedPaymentMethodId: str, subMerchant: map, telephoneNumber: str, walletIdentifier: str, walletOwnerTaxId: str, walletPurpose: str}, industryUsage: str(delayedCharge/installment/noShow), installments: map{extra: int(int32), plan: str, value!: int(int32)}, lineItems: [map{amountExcludingTax: int(int64), amountIncludingTax: int(int64), brand: str, color: str, description: str, id: str, imageUrl: str, itemCategory: str, manufacturer: str, marketplaceSellerId: str, productUrl: str, quantity: int(int64), receiverEmail: str, size: str, sku: str, taxAmount: int(int64), taxPercentage: int(int64), upc: str}], localizedShopperStatement: map, mandate: map{amount!: str, amountRule: str, billingAttemptsRule: str, billingDay: str, count: str, endsAt!: str, frequency!: str, remarks: str, startsAt: str}, mcc: str, merchantOrderReference: str, merchantRiskIndicator: map{addressMatch: bool, deliveryAddressIndicator: str, deliveryEmail: str, deliveryEmailAddress: str, deliveryTimeframe: str, giftCardAmount: map, giftCardCount: int(int32), giftCardCurr: str, preOrderDate: str(date-time), preOrderPurchase: bool, preOrderPurchaseInd: str, reorderItems: bool, reorderItemsInd: str, shipIndicator: str}, metadata: map, mpiData: map{authenticationResponse: str, cavv: str(byte), cavvAlgorithm: str, challengeCancel: str, directoryResponse: str, dsTransID: str, eci: str, riskScore: str, threeDSVersion: str, tokenAuthenticationVerificationValue: str(byte), transStatusReason: str, xid: str(byte)}, order: map{orderData!: str, pspReference!: str}, orderReference: str, origin: str, paymentValidations: map{name: map}, platformChargebackLogic: map{behavior: str, costAllocationAccount: str, targetAccount: str}, recurringExpiry: str, recurringFrequency: str, recurringProcessingModel: str(CardOnFile/Subscription/UnscheduledCardOnFile), redirectFromIssuerMethod: str, redirectToIssuerMethod: str, riskData: map{clientData: str, customFields: map, fraudOffset: int(int32), profileReference: str}, sessionValidity: str, shopperConversionId: str, shopperEmail: str, shopperIP: str, shopperInteraction: str(Ecommerce/ContAuth/Moto/POS), shopperLocale: str, shopperName: map{firstName!: str, lastName!: str}, shopperReference: str, shopperStatement: str, shopperTaxInfo: map{taxCountryCode!: str, taxIdentificationNumber!: str}, socialSecurityNumber: str, splits: [map{account: str, amount: map, description: str, reference: str, type!: str}], store: str, storePaymentMethod: bool, subMerchants: [map{address: map, amount: map, email: str, id: str, mcc: str, name: str, phoneNumber: str, registeredSince: str, taxId: str, url: str}], surcharge: map{value!: int(int64)}, telephoneNumber: str, threeDS2RequestData: map{acctInfo: map, acctType: str, acquirerBIN: str, acquirerMerchantID: str, addrMatch: str, authenticationOnly: bool, challengeIndicator: str, deviceRenderOptions: map, homePhone: map, mcc: str, merchantName: str, messageVersion: str, mobilePhone: map, notificationURL: str, payTokenInd: bool, paymentAuthenticationUseCase: str, purchaseInstalData: str, recurringExpiry: str, recurringFrequency: str, sdkAppID: str, sdkEphemPubKey: map, sdkMaxTimeout: int(int32), sdkReferenceNumber: str, sdkTransID: str, threeDSCompInd: str, threeDSRequestorAuthenticationInd: str, threeDSRequestorAuthenticationInfo: map, threeDSRequestorChallengeInd: str, threeDSRequestorID: str, threeDSRequestorName: str, threeDSRequestorPriorAuthenticationInfo: map, threeDSRequestorURL: str, transType: str, transactionType: str, whiteListStatus: str, workPhone: map}, threeDSAuthenticationOnly: bool=false, trustedShopper: bool}
@returns(200) {action: any, additionalData: map, amount: map{currency: str, value: int(int64)}, donationToken: str, fraudResult: map{accountScore: int(int32), results: [map]}, merchantReference: str, order: map{amount: map{currency: str, value: int(int64)}, expiresAt: str, orderData: str, pspReference: str, reference: str, remainingAmount: map{currency: str, value: int(int64)}}, paymentMethod: map{brand: str, type: str}, paymentValidations: map{name: map{rawResponse: map{firstName: str, fullName: str, lastName: str, middleName: str, status: str}, result: map{firstName: str, fullName: str, lastName: str, middleName: str}, status: str}}, pspReference: str, refusalReason: str, refusalReasonCode: str, resultCode: str, threeDS2ResponseData: map{acsChallengeMandated: str, acsOperatorID: str, acsReferenceNumber: str, acsSignedContent: str, acsTransID: str, acsURL: str, authenticationType: str, cardHolderInfo: str, cavvAlgorithm: str, challengeIndicator: str, dsReferenceNumber: str, dsTransID: str, exemptionIndicator: str, messageVersion: str, riskScore: str, sdkEphemPubKey: str, threeDSServerTransID: str, transStatus: str, transStatusReason: str}, threeDS2Result: map{authenticationValue: str, cavvAlgorithm: str, challengeCancel: str, dsTransID: str, eci: str, exemptionIndicator: str, messageVersion: str, riskScore: str, threeDSRequestorChallengeInd: str, threeDSServerTransID: str, timestamp: str, transStatus: str, transStatusReason: str, whiteListStatus: str}, threeDSPaymentData: str}
@errors {400, 401, 403, 422, 500}

@endpoint POST /payments/details
@required {details: map{MD: str, PaReq: str, PaRes: str, authorization_token: str, billingToken: str, cupsecureplus.smscode: str, facilitatorAccessToken: str, oneTimePasscode: str, orderID: str, payerID: str, payload: str, paymentID: str, paymentStatus: str, redirectResult: str, resultCode: str, returnUrlQueryString: str, threeDSResult: str, threeds2.challengeResult: str, threeds2.fingerprint: str, vaultToken: str}}
@optional {Idempotency-Key: str, authenticationData: map{authenticationOnly: bool}, paymentData: str, threeDSAuthenticationOnly: bool}
@returns(200) {action: any, additionalData: map, amount: map{currency: str, value: int(int64)}, donationToken: str, fraudResult: map{accountScore: int(int32), results: [map]}, merchantReference: str, order: map{amount: map{currency: str, value: int(int64)}, expiresAt: str, orderData: str, pspReference: str, reference: str, remainingAmount: map{currency: str, value: int(int64)}}, paymentMethod: map{brand: str, type: str}, paymentValidations: map{name: map{rawResponse: map{firstName: str, fullName: str, lastName: str, middleName: str, status: str}, result: map{firstName: str, fullName: str, lastName: str, middleName: str}, status: str}}, pspReference: str, refusalReason: str, refusalReasonCode: str, resultCode: str, shopperLocale: str, threeDS2ResponseData: map{acsChallengeMandated: str, acsOperatorID: str, acsReferenceNumber: str, acsSignedContent: str, acsTransID: str, acsURL: str, authenticationType: str, cardHolderInfo: str, cavvAlgorithm: str, challengeIndicator: str, dsReferenceNumber: str, dsTransID: str, exemptionIndicator: str, messageVersion: str, riskScore: str, sdkEphemPubKey: str, threeDSServerTransID: str, transStatus: str, transStatusReason: str}, threeDS2Result: map{authenticationValue: str, cavvAlgorithm: str, challengeCancel: str, dsTransID: str, eci: str, exemptionIndicator: str, messageVersion: str, riskScore: str, threeDSRequestorChallengeInd: str, threeDSServerTransID: str, timestamp: str, transStatus: str, transStatusReason: str, whiteListStatus: str}, threeDSPaymentData: str}
@errors {400, 401, 403, 422, 500}

@endpoint POST /payments/{paymentPspReference}/amountUpdates
@required {paymentPspReference: str, amount: map{currency!: str, value!: int(int64)}, merchantAccount: str}
@optional {Idempotency-Key: str, applicationInfo: map{adyenLibrary: map, adyenPaymentSource: map, externalPlatform: map, merchantApplication: map, merchantDevice: map, shopperInteractionDevice: map}, enhancedSchemeData: map{airline: map, levelTwoThree: map}, industryUsage: str(delayedCharge/installment/noShow), lineItems: [map{amountExcludingTax: int(int64), amountIncludingTax: int(int64), brand: str, color: str, description: str, id: str, imageUrl: str, itemCategory: str, manufacturer: str, marketplaceSellerId: str, productUrl: str, quantity: int(int64), receiverEmail: str, size: str, sku: str, taxAmount: int(int64), taxPercentage: int(int64), upc: str}], reference: str, splits: [map{account: str, amount: map, description: str, reference: str, type!: str}]}
@returns(201) {amount: map{currency: str, value: int(int64)}, industryUsage: str, lineItems: [map], merchantAccount: str, paymentPspReference: str, pspReference: str, reference: str, splits: [map], status: str}
@errors {400, 401, 403, 422, 500}

@endpoint POST /payments/{paymentPspReference}/cancels
@required {paymentPspReference: str, merchantAccount: str}
@optional {Idempotency-Key: str, applicationInfo: map{adyenLibrary: map, adyenPaymentSource: map, externalPlatform: map, merchantApplication: map, merchantDevice: map, shopperInteractionDevice: map}, enhancedSchemeData: map{airline: map, levelTwoThree: map}, reference: str}
@returns(201) {merchantAccount: str, paymentPspReference: str, pspReference: str, reference: str, status: str}
@errors {400, 401, 403, 422, 500}

@endpoint POST /payments/{paymentPspReference}/captures
@required {paymentPspReference: str, amount: map{currency!: str, value!: int(int64)}, merchantAccount: str}
@optional {Idempotency-Key: str, applicationInfo: map{adyenLibrary: map, adyenPaymentSource: map, externalPlatform: map, merchantApplication: map, merchantDevice: map, shopperInteractionDevice: map}, enhancedSchemeData: map{airline: map, levelTwoThree: map}, lineItems: [map{amountExcludingTax: int(int64), amountIncludingTax: int(int64), brand: str, color: str, description: str, id: str, imageUrl: str, itemCategory: str, manufacturer: str, marketplaceSellerId: str, productUrl: str, quantity: int(int64), receiverEmail: str, size: str, sku: str, taxAmount: int(int64), taxPercentage: int(int64), upc: str}], platformChargebackLogic: map{behavior: str, costAllocationAccount: str, targetAccount: str}, reference: str, splits: [map{account: str, amount: map, description: str, reference: str, type!: str}], subMerchants: [map{address: map, amount: map, email: str, id: str, mcc: str, name: str, phoneNumber: str, registeredSince: str, taxId: str, url: str}]}
@returns(201) {amount: map{currency: str, value: int(int64)}, lineItems: [map], merchantAccount: str, paymentPspReference: str, platformChargebackLogic: map{behavior: str, costAllocationAccount: str, targetAccount: str}, pspReference: str, reference: str, splits: [map], status: str, subMerchants: [map]}
@errors {400, 401, 403, 422, 500}

@endpoint POST /payments/{paymentPspReference}/refunds
@required {paymentPspReference: str, amount: map{currency!: str, value!: int(int64)}, merchantAccount: str}
@optional {Idempotency-Key: str, applicationInfo: map{adyenLibrary: map, adyenPaymentSource: map, externalPlatform: map, merchantApplication: map, merchantDevice: map, shopperInteractionDevice: map}, capturePspReference: str, enhancedSchemeData: map{airline: map, levelTwoThree: map}, lineItems: [map{amountExcludingTax: int(int64), amountIncludingTax: int(int64), brand: str, color: str, description: str, id: str, imageUrl: str, itemCategory: str, manufacturer: str, marketplaceSellerId: str, productUrl: str, quantity: int(int64), receiverEmail: str, size: str, sku: str, taxAmount: int(int64), taxPercentage: int(int64), upc: str}], merchantRefundReason: str(FRAUD/CUSTOMER REQUEST/RETURN/DUPLICATE/OTHER), reference: str, splits: [map{account: str, amount: map, description: str, reference: str, type!: str}], store: str}
@returns(201) {amount: map{currency: str, value: int(int64)}, capturePspReference: str, lineItems: [map], merchantAccount: str, merchantRefundReason: str?, paymentPspReference: str, pspReference: str, reference: str, splits: [map], status: str, store: str}
@errors {400, 401, 403, 422, 500}

@endpoint POST /payments/{paymentPspReference}/reversals
@required {paymentPspReference: str, merchantAccount: str}
@optional {Idempotency-Key: str, applicationInfo: map{adyenLibrary: map, adyenPaymentSource: map, externalPlatform: map, merchantApplication: map, merchantDevice: map, shopperInteractionDevice: map}, enhancedSchemeData: map{airline: map, levelTwoThree: map}, reference: str}
@returns(201) {merchantAccount: str, paymentPspReference: str, pspReference: str, reference: str, status: str}
@errors {400, 401, 403, 422, 500}

@endgroup

@group paypal
@endpoint POST /paypal/updateOrder
@optional {Idempotency-Key: str, amount: map{currency!: str, value!: int(int64)}, deliveryMethods: [map{amount: map, description: str, reference: str, selected: bool, type: str}], paymentData: str, pspReference: str, sessionId: str, taxTotal: map{amount: map}}
@returns(200) {paymentData: str, status: str}
@errors {400, 401, 403, 422, 500}

@endgroup

@group sessions
@endpoint POST /sessions
@required {amount: map{currency!: str, value!: int(int64)}, merchantAccount: str, reference: str, returnUrl: str}
@optional {Idempotency-Key: str, accountInfo: map{accountAgeIndicator: str, accountChangeDate: str(date-time), accountChangeIndicator: str, accountCreationDate: str(date-time), accountType: str, addCardAttemptsDay: int(int32), deliveryAddressUsageDate: str(date-time), deliveryAddressUsageIndicator: str, homePhone: str, mobilePhone: str, passwordChangeDate: str(date-time), passwordChangeIndicator: str, pastTransactionsDay: int(int32), pastTransactionsYear: int(int32), paymentAccountAge: str(date-time), paymentAccountIndicator: str, purchasesLast6Months: int(int32), suspiciousActivity: bool, workPhone: str}, additionalAmount: map{currency!: str, value!: int(int64)}, additionalData: map, allowedPaymentMethods: [str], applicationInfo: map{adyenLibrary: map, adyenPaymentSource: map, externalPlatform: map, merchantApplication: map, merchantDevice: map, shopperInteractionDevice: map}, authenticationData: map{attemptAuthentication: str, authenticationOnly: bool, threeDSRequestData: map}, billingAddress: map{city!: str, country!: str, houseNumberOrName!: str, postalCode!: str, stateOrProvince: str, street!: str}, blockedPaymentMethods: [str], captureDelayHours: int(int32), channel: str(iOS/Android/Web), company: map{homepage: str, name: str, registrationNumber: str, registryLocation: str, taxId: str, type: str}, countryCode: str, dateOfBirth: str(date), deliverAt: str(date-time), deliveryAddress: map{city!: str, country!: str, firstName: str, houseNumberOrName!: str, lastName: str, postalCode!: str, stateOrProvince: str, street!: str}, enableOneClick: bool, enablePayOut: bool, enableRecurring: bool, expiresAt: str(date-time), fundOrigin: map{billingAddress: map, shopperEmail: str, shopperName: map, telephoneNumber: str, walletIdentifier: str}, fundRecipient: map{IBAN: str, billingAddress: map, paymentMethod: map, shopperEmail: str, shopperName: map, shopperReference: str, storedPaymentMethodId: str, subMerchant: map, telephoneNumber: str, walletIdentifier: str, walletOwnerTaxId: str, walletPurpose: str}, installmentOptions: map, lineItems: [map{amountExcludingTax: int(int64), amountIncludingTax: int(int64), brand: str, color: str, description: str, id: str, imageUrl: str, itemCategory: str, manufacturer: str, marketplaceSellerId: str, productUrl: str, quantity: int(int64), receiverEmail: str, size: str, sku: str, taxAmount: int(int64), taxPercentage: int(int64), upc: str}], mandate: map{amount!: str, amountRule: str, billingAttemptsRule: str, billingDay: str, count: str, endsAt!: str, frequency!: str, remarks: str, startsAt: str}, mcc: str, merchantOrderReference: str, metadata: map, mode: str(embedded/hosted)=embedded, mpiData: map{authenticationResponse: str, cavv: str(byte), cavvAlgorithm: str, challengeCancel: str, directoryResponse: str, dsTransID: str, eci: str, riskScore: str, threeDSVersion: str, tokenAuthenticationVerificationValue: str(byte), transStatusReason: str, xid: str(byte)}, platformChargebackLogic: map{behavior: str, costAllocationAccount: str, targetAccount: str}, recurringExpiry: str, recurringFrequency: str, recurringProcessingModel: str(CardOnFile/Subscription/UnscheduledCardOnFile), redirectFromIssuerMethod: str, redirectToIssuerMethod: str, riskData: map{clientData: str, customFields: map, fraudOffset: int(int32), profileReference: str}, shopperEmail: str, shopperIP: str, shopperInteraction: str(Ecommerce/ContAuth/Moto/POS), shopperLocale: str, shopperName: map{firstName!: str, lastName!: str}, shopperReference: str, shopperStatement: str, showInstallmentAmount: bool, showRemovePaymentMethodButton: bool, socialSecurityNumber: str, splitCardFundingSources: bool=false, splits: [map{account: str, amount: map, description: str, reference: str, type!: str}], store: str, storeFiltrationMode: str(exclusive/inclusive/skipFilter), storePaymentMethod: bool, storePaymentMethodMode: str(askForConsent/disabled/enabled), telephoneNumber: str, themeId: str, threeDS2RequestData: map{homePhone: map, mobilePhone: map, threeDSRequestorChallengeInd: str, workPhone: map}, threeDSAuthenticationOnly: bool=false, trustedShopper: bool}
@returns(201) {accountInfo: map{accountAgeIndicator: str, accountChangeDate: str(date-time), accountChangeIndicator: str, accountCreationDate: str(date-time), accountType: str, addCardAttemptsDay: int(int32), deliveryAddressUsageDate: str(date-time), deliveryAddressUsageIndicator: str, homePhone: str, mobilePhone: str, passwordChangeDate: str(date-time), passwordChangeIndicator: str, pastTransactionsDay: int(int32), pastTransactionsYear: int(int32), paymentAccountAge: str(date-time), paymentAccountIndicator: str, purchasesLast6Months: int(int32), suspiciousActivity: bool, workPhone: str}, additionalAmount: map{currency: str, value: int(int64)}, additionalData: map, allowedPaymentMethods: [str], amount: map{currency: str, value: int(int64)}, applicationInfo: map{adyenLibrary: map{name: str, version: str}, adyenPaymentSource: map{name: str, version: str}, externalPlatform: map{integrator: str, name: str, version: str}, merchantApplication: map{name: str, version: str}, merchantDevice: map{os: str, osVersion: str, reference: str}, shopperInteractionDevice: map{locale: str, os: str, osVersion: str}}, authenticationData: map{attemptAuthentication: str, authenticationOnly: bool, threeDSRequestData: map{challengeWindowSize: str, dataOnly: str, nativeThreeDS: str, threeDSVersion: str}}, billingAddress: map{city: str, country: str, houseNumberOrName: str, postalCode: str, stateOrProvince: str, street: str}, blockedPaymentMethods: [str], captureDelayHours: int(int32), channel: str, company: map{homepage: str, name: str, registrationNumber: str, registryLocation: str, taxId: str, type: str}, countryCode: str, dateOfBirth: str(date-time), deliverAt: str(date-time), deliveryAddress: map{city: str, country: str, firstName: str, houseNumberOrName: str, lastName: str, postalCode: str, stateOrProvince: str, street: str}, enableOneClick: bool, enablePayOut: bool, enableRecurring: bool, expiresAt: str(date-time), fundOrigin: map{billingAddress: map{city: str, country: str, houseNumberOrName: str, postalCode: str, stateOrProvince: str, street: str}, shopperEmail: str, shopperName: map{firstName: str, lastName: str}, telephoneNumber: str, walletIdentifier: str}, fundRecipient: map{IBAN: str, billingAddress: map{city: str, country: str, houseNumberOrName: str, postalCode: str, stateOrProvince: str, street: str}, paymentMethod: map{billingSequenceNumber: str, brand: str, checkoutAttemptId: str, cupsecureplus.smscode: str, cvc: str, encryptedCard: str, encryptedCardNumber: str, encryptedExpiryMonth: str, encryptedExpiryYear: str, encryptedPassword: str, encryptedSecurityCode: str, expiryMonth: str, expiryYear: str, fastlaneData: str, fundingSource: str, holderName: str, networkPaymentReference: str, number: str, recurringDetailReference: str, sdkData: str, shopperNotificationReference: str, srcCorrelationId: str, srcDigitalCardId: str, srcScheme: str, srcTokenReference: str, storedPaymentMethodId: str, threeDS2SdkVersion: str, type: str}, shopperEmail: str, shopperName: map{firstName: str, lastName: str}, shopperReference: str, storedPaymentMethodId: str, subMerchant: map{city: str, country: str, mcc: str, name: str, taxId: str}, telephoneNumber: str, walletIdentifier: str, walletOwnerTaxId: str, walletPurpose: str}, id: str, installmentOptions: map, lineItems: [map], mandate: map{amount: str, amountRule: str, billingAttemptsRule: str, billingDay: str, count: str, endsAt: str, frequency: str, remarks: str, startsAt: str}, mcc: str, merchantAccount: str, merchantOrderReference: str, metadata: map, mode: str, mpiData: map{authenticationResponse: str, cavv: str(byte), cavvAlgorithm: str, challengeCancel: str, directoryResponse: str, dsTransID: str, eci: str, riskScore: str, threeDSVersion: str, tokenAuthenticationVerificationValue: str(byte), transStatusReason: str, xid: str(byte)}, platformChargebackLogic: map{behavior: str, costAllocationAccount: str, targetAccount: str}, recurringExpiry: str, recurringFrequency: str, recurringProcessingModel: str, redirectFromIssuerMethod: str, redirectToIssuerMethod: str, reference: str, returnUrl: str, riskData: map{clientData: str, customFields: map, fraudOffset: int(int32), profileReference: str}, sessionData: str, shopperEmail: str, shopperIP: str, shopperInteraction: str, shopperLocale: str, shopperName: map{firstName: str, lastName: str}, shopperReference: str, shopperStatement: str, showInstallmentAmount: bool, showRemovePaymentMethodButton: bool, socialSecurityNumber: str, splitCardFundingSources: bool, splits: [map], store: str, storeFiltrationMode: str, storePaymentMethod: bool, storePaymentMethodMode: str, telephoneNumber: str, themeId: str, threeDS2RequestData: map{homePhone: map{cc: str, subscriber: str}, mobilePhone: map{cc: str, subscriber: str}, threeDSRequestorChallengeInd: str, workPhone: map{cc: str, subscriber: str}}, threeDSAuthenticationOnly: bool, trustedShopper: bool, url: str}

@endpoint GET /sessions/{sessionId}
@required {sessionId: str, sessionResult: str}
@returns(200) {additionalData: map, id: str, payments: [map], reference: str, status: str}

@endgroup

@group storedPaymentMethods
@endpoint GET /storedPaymentMethods
@optional {shopperReference: str, merchantAccount: str}
@returns(200) {merchantAccount: str, shopperReference: str, storedPaymentMethods: [map]}

@endpoint POST /storedPaymentMethods
@required {merchantAccount: str, paymentMethod: map{brand: str, cvc: str, encryptedCard: str, encryptedCardNumber: str, encryptedExpiryMonth: str, encryptedExpiryYear: str, encryptedSecurityCode: str, expiryMonth: str, expiryYear: str, holderName: str, number: str, type: str}, recurringProcessingModel: str(CardOnFile/Subscription/UnscheduledCardOnFile), shopperReference: str}
@optional {Idempotency-Key: str, shopperEmail: str, shopperIP: str}
@returns(201) {alias: str, aliasType: str, brand: str, cardBin: str, expiryMonth: str, expiryYear: str, externalResponseCode: str, externalTokenReference: str, holderName: str, iban: str, id: str, issuerName: str, lastFour: str, mandate: map{accountIdType: str, amount: str, amountRule: str, billingAttemptsRule: str, billingDay: str, count: str, currency: str, endsAt: str, frequency: str, mandateId: str, maskedAccountId: str, minAmount: str, providerId: str, recurringAmount: str, recurringStatement: str, remarks: str, retryPolicy: str, startsAt: str, status: str, txVariant: str}, name: str, networkTxReference: str, ownerName: str, shopperEmail: str, shopperReference: str, supportedRecurringProcessingModels: [str], type: str}

@endpoint DELETE /storedPaymentMethods/{storedPaymentMethodId}
@required {storedPaymentMethodId: str, shopperReference: str, merchantAccount: str}
@returns(204)

@endgroup

@group validateShopperId
@endpoint POST /validateShopperId
@required {merchantAccount: str, paymentMethod: map{type!: str}}
@optional {shopperEmail: str, shopperIP: str, shopperReference: str}
@returns(200) {reason: str, result: str}
@errors {400, 401, 403, 422, 500}

@endgroup

@end
