{"files":{"SKILL.md":"---\nname: adyen-recurring-api\ndescription: \"Adyen Recurring API skill. Use when working with Adyen Recurring for createPermit, disable, disablePermit. Covers 6 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# Adyen Recurring API\nAPI version: 68\n\n## Auth\nApiKey X-API-Key in header | Bearer basic\n\n## Base URL\nhttps://paltokenization-test.adyen.com/paltokenization/servlet/Recurring/v68\n\n## Setup\n1. Set Authorization header with Bearer token\n2. Verify API access with a test request\n3. POST /createPermit -- create first createPermit\n\n## Endpoints\n6 endpoints across 6 groups. See references/api-spec.lap for full details.\n\n### CreatePermit\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /createPermit | Create new permits linked to a recurring contract. |\n\n### Disable\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /disable | Disable stored payment details |\n\n### DisablePermit\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /disablePermit | Disable an existing permit. |\n\n### ListRecurringDetails\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /listRecurringDetails | Get stored payment details |\n\n### NotifyShopper\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /notifyShopper | Ask issuer to notify the shopper |\n\n### ScheduleAccountUpdater\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /scheduleAccountUpdater | Schedule running the Account Updater |\n\n## Common Questions\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"Create a createPermit?\" -> POST /createPermit\n- \"Create a disable?\" -> POST /disable\n- \"Create a disablePermit?\" -> POST /disablePermit\n- \"Create a listRecurringDetail?\" -> POST /listRecurringDetails\n- \"Create a notifyShopper?\" -> POST /notifyShopper\n- \"Create a scheduleAccountUpdater?\" -> POST /scheduleAccountUpdater\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 Recurring API\n@base https://paltokenization-test.adyen.com/paltokenization/servlet/Recurring/v68\n@version 68\n@auth ApiKey X-API-Key in header | Bearer basic\n@common_fields {merchantAccount: str # The merchant account identifier, with which you want to process the transaction.}\n@endpoints 6\n@toc createPermit(1), disable(1), disablePermit(1), listRecurringDetails(1), notifyShopper(1), scheduleAccountUpdater(1)\n\n@group createPermit\n@endpoint POST /createPermit\n@desc Create new permits linked to a recurring contract.\n@required {permits: [map{partnerId: str, profileReference: str, restriction: map, resultKey: str, validTillDate: str(date-time)}] # The permits to create for this recurring contract., recurringDetailReference: str # The recurring contract the new permits will use., shopperReference: str # The shopper's reference to uniquely identify this shopper (e.g. user ID or account ID).}\n@returns(200) {permitResultList: [map], pspReference: 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\n@endgroup\n\n@group disable\n@endpoint POST /disable\n@desc Disable stored payment details\n@required {shopperReference: str # The ID that uniquely identifies the shopper.  This `shopperReference` must be the same as the `shopperReference` used in the initial payment.}\n@optional {contract: str # Specify the contract if you only want to disable a specific use.  This field can be set to one of the following values, or to their combination (comma-separated): * ONECLICK * RECURRING * PAYOUT, recurringDetailReference: str # The ID that uniquely identifies the recurring detail reference.  If it is not provided, the whole recurring contract of the `shopperReference` will be disabled, which includes all recurring details.}\n@returns(200) {response: 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 {\"shopperReference\":\"YOUR_SHOPPER_REFERENCE\",\"recurringDetailReference\":\"8314442372419167\",\"merchantAccount\":\"YOUR_MERCHANT_ACCOUNT\"}\n\n@endgroup\n\n@group disablePermit\n@endpoint POST /disablePermit\n@desc Disable an existing permit.\n@required {token: str # The permit token to disable.}\n@returns(200) {pspReference: str, status: 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\n@endgroup\n\n@group listRecurringDetails\n@endpoint POST /listRecurringDetails\n@desc Get stored payment details\n@required {shopperReference: str # The reference you use to uniquely identify the shopper (e.g. user ID or account ID).}\n@optional {recurring: map{contract: str, recurringDetailName: str, recurringExpiry: str(date-time), recurringFrequency: str, tokenService: str}}\n@returns(200) {creationDate: str(date-time), details: [any], lastKnownShopperEmail: str, shopperReference: 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 {\"recurring\":{\"contract\":\"RECURRING\"},\"shopperReference\":\"YOUR_SHOPPER_REFERENCE\",\"merchantAccount\":\"YOUR_MERCHANT_ACCOUNT\"}\n\n@endgroup\n\n@group notifyShopper\n@endpoint POST /notifyShopper\n@desc Ask issuer to notify the shopper\n@required {amount: map{currency!: str, value!: int(int64)}, reference: str # Pre-debit notification reference sent by the merchant. This is a mandatory field, shopperReference: str # The ID that uniquely identifies the shopper.  This `shopperReference` must be the same as the `shopperReference` used in the initial payment.}\n@optional {billingDate: str # Date on which the subscription amount will be debited from the shopper. In YYYY-MM-DD format, billingSequenceNumber: str # Sequence of the debit. Depends on Frequency and Billing Attempts Rule., displayedReference: str # Reference of Pre-debit notification that is displayed to the shopper. Optional field. Maps to reference if missing, recurringDetailReference: str # This is the `recurringDetailReference` returned in the response when you created the token., storedPaymentMethodId: str # This is the `recurringDetailReference` returned in the response when you created the token.}\n@returns(200) {displayedReference: str, message: str, pspReference: str, reference: str, resultCode: str, shopperNotificationReference: str, storedPaymentMethodId: 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 {\"merchantAccount\":\"YOUR_MERCHANT_ACCOUNT\",\"storedPaymentMethodId\":\"8415995487234100\",\"shopperReference\":\"YOUR_SHOPPER_REFERENCE\",\"amount\":{\"currency\":\"INR\",\"value\":1000},\"billingDate\":\"2021-03-16\",\"reference\":\"Example reference\",\"displayedReference\":\"exampleDisplayedReference\"}\n\n@endgroup\n\n@group scheduleAccountUpdater\n@endpoint POST /scheduleAccountUpdater\n@desc Schedule running the Account Updater\n@required {reference: str # A reference that merchants can apply for the call.}\n@optional {additionalData: map # This field contains additional data, which may be required for a particular request., card: map{cvc: str, expiryMonth: str, expiryYear: str, holderName: str, issueNumber: str, number: str, startMonth: str, startYear: str}, selectedRecurringDetailReference: str # The selected detail recurring reference.  Optional if `card` is provided., shopperReference: str # The reference of the shopper that owns the recurring contract.  Optional if `card` is provided.}\n@returns(200) {pspReference: str, result: 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 {\"merchantAccount\":\"YOUR_MERCHANT_ACCOUNT\",\"reference\":\"YOUR_REFERENCE\",\"card\":{\"expiryMonth\":\"03\",\"expiryYear\":\"2030\",\"holderName\":\"Adyen Test\",\"number\":\"4111111111111111\"}}\n\n@endgroup\n\n@end\n"}}