{"files":{"SKILL.md":"---\nname: adyen-binlookup-api\ndescription: \"Adyen BinLookup API skill. Use when working with Adyen BinLookup for get3dsAvailability, getCostEstimate. Covers 2 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# Adyen BinLookup API\nAPI version: 54\n\n## Auth\nApiKey X-API-Key in header | Bearer basic\n\n## Base URL\nhttps://pal-test.adyen.com/pal/servlet/BinLookup/v54\n\n## Setup\n1. Set Authorization header with Bearer token\n2. Verify API access with a test request\n3. POST /get3dsAvailability -- create first get3dsAvailability\n\n## Endpoints\n2 endpoints across 2 groups. See references/api-spec.lap for full details.\n\n### Get3dsAvailability\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /get3dsAvailability | Check if 3D Secure is available |\n\n### GetCostEstimate\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /getCostEstimate | Get a fees cost estimate |\n\n## Common Questions\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"Create a get3dsAvailability?\" -> POST /get3dsAvailability\n- \"Create a getCostEstimate?\" -> POST /getCostEstimate\n- \"How to authenticate?\" -> See Auth section above\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Create/update endpoints return the modified resource on success\n- Error responses include status codes and descriptions in the spec\n\n## References\n- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas\n\n> Generated from the official API spec by [LAP](https://lap.sh)\n","references/api-spec.lap":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api Adyen BinLookup API\n@base https://pal-test.adyen.com/pal/servlet/BinLookup/v54\n@version 54\n@auth ApiKey X-API-Key in header | Bearer basic\n@endpoints 2\n@toc get3dsAvailability(1), getCostEstimate(1)\n\n@group get3dsAvailability\n@endpoint POST /get3dsAvailability\n@desc Check if 3D Secure is available\n@required {merchantAccount: str # The merchant account identifier.}\n@optional {additionalData: map # This field contains additional data, which may be required for a particular request.  The `additionalData` object consists of entries, each of which includes the key and value., brands: [str] # List of brands., cardNumber: str # Card number or BIN., recurringDetailReference: str # A recurring detail reference corresponding to a card., shopperReference: str # The shopper's reference to uniquely identify this shopper (e.g. user ID or account ID).}\n@returns(200) {binDetails: map{issuerCountry: str}, dsPublicKeys: [map], threeDS1Supported: bool, threeDS2CardRangeDetails: [map], threeDS2supported: bool} # OK - the request has succeeded.\n@errors {400: Bad Request - a problem reading or understanding the request., 401: Unauthorized - authentication required., 403: Forbidden - insufficient permissions to process the request., 422: Unprocessable Entity - a request validation error., 500: Internal Server Error - the server could not process the request.}\n@example_request {\"merchantAccount\":\"YOUR_MERCHANT_ACCOUNT\",\"cardNumber\":\"4111111111111111\"}\n\n@endgroup\n\n@group getCostEstimate\n@endpoint POST /getCostEstimate\n@desc Get a fees cost estimate\n@required {amount: map{currency!: str, value!: int(int64)}, merchantAccount: str # The merchant account identifier you want to process the (transaction) request with.}\n@optional {assumptions: map{assume3DSecureAuthenticated: bool, assumeLevel3Data: bool, installments: int(int32)}, cardNumber: str # The card number (4-19 characters) for PCI compliant use cases. Do not use any separators.  > Either the `cardNumber` or `encryptedCardNumber` field must be provided in a payment request., encryptedCardNumber: str # Encrypted data that stores card information for non PCI-compliant use cases. The encrypted data must be created with the Checkout Card Component or Secured Fields Component, and must contain the `encryptedCardNumber` field.  > Either the `cardNumber` or `encryptedCardNumber` field must be provided in a payment request., merchantDetails: map{countryCode: str, enrolledIn3DSecure: bool, mcc: str}, recurring: map{contract: str, recurringDetailName: str, recurringExpiry: str(date-time), recurringFrequency: str, tokenService: str}, selectedRecurringDetailReference: str # The `recurringDetailReference` you want to use for this cost estimate. The value `LATEST` can be used to select the most recently stored recurring detail., shopperInteraction: str(Ecommerce/ContAuth/Moto/POS) # Specifies the sales channel, through which the shopper gives their card details, and whether the shopper is a returning customer. For the web service API, Adyen assumes Ecommerce shopper interaction by default.  This field has the following possible values: * `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. * `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). * `Moto` - Mail-order and telephone-order transactions where the shopper is in contact with the merchant via email or telephone. * `POS` - Point-of-sale transactions where the shopper is physically present to make a payment using a secure payment terminal., shopperReference: str # Required for recurring payments.  Your reference to uniquely identify this shopper, for example user ID or account ID. The value is case-sensitive and must be at least three characters. > Your reference must not include personally identifiable information (PII) such as name or email address.}\n@returns(200) {cardBin: map{bin: str, commercial: bool, fundingSource: str, fundsAvailability: str, issuerBin: str, issuingBank: str, issuingCountry: str, issuingCurrency: str, paymentMethod: str, payoutEligible: str, summary: str}, costEstimateAmount: map{currency: str, value: int(int64)}, costEstimateReference: str, resultCode: str} # OK - the request has succeeded.\n@errors {400: Bad Request - a problem reading or understanding the request., 401: Unauthorized - authentication required., 403: Forbidden - insufficient permissions to process the request., 422: Unprocessable Entity - a request validation error., 500: Internal Server Error - the server could not process the request.}\n@example_request {\"amount\":{\"value\":1234,\"currency\":\"EUR\"},\"assumptions\":{\"assumeLevel3Data\":true,\"assume3DSecureAuthenticated\":true},\"cardNumber\":\"5101180000000007\",\"merchantAccount\":\"YOUR_MERCHANT_ACCOUNT\",\"merchantDetails\":{\"countryCode\":\"NL\",\"mcc\":\"7411\",\"enrolledIn3DSecure\":true},\"shopperInteraction\":\"Ecommerce\"}\n\n@endgroup\n\n@end\n"}}