{"files":{"SKILL.md":"---\nname: webhooks-management\ndescription: \"Webhooks Management API skill. Use when working with Webhooks Management for notifications. Covers 16 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# Webhooks Management\nAPI version: 1.11\n\n## Auth\nOAuth2\n\n## Base URL\nhttps://api-m.sandbox.paypal.com\n\n## Setup\n1. Configure auth: OAuth2\n2. GET /v1/notifications/webhooks -- list webhooks\n3. POST /v1/notifications/webhooks -- create first webhook\n\n## Endpoints\n16 endpoints across 1 group. See references/api-spec.lap for full details.\n\n### Notifications\n| Method | Path | Description |\n|--------|------|-------------|\n| POST | /v1/notifications/webhooks | Create webhook |\n| GET | /v1/notifications/webhooks | List webhooks |\n| GET | /v1/notifications/webhooks/{webhook_id} | Show webhook details |\n| PATCH | /v1/notifications/webhooks/{webhook_id} | Update webhook |\n| DELETE | /v1/notifications/webhooks/{webhook_id} | Delete webhook |\n| GET | /v1/notifications/webhooks/{webhook_id}/event-types | List event subscriptions for webhook |\n| POST | /v1/notifications/webhooks-lookup | Create webhook lookup |\n| GET | /v1/notifications/webhooks-lookup | List webhook lookups |\n| GET | /v1/notifications/webhooks-lookup/{webhook_lookup_id} | Show webhook lookup details |\n| DELETE | /v1/notifications/webhooks-lookup/{webhook_lookup_id} | Delete webhook lookup |\n| POST | /v1/notifications/verify-webhook-signature | Verify webhook signature |\n| GET | /v1/notifications/webhooks-event-types | List available events |\n| GET | /v1/notifications/webhooks-events | List event notifications |\n| GET | /v1/notifications/webhooks-events/{event_id} | Show event notification details |\n| POST | /v1/notifications/webhooks-events/{event_id}/resend | Resend event notification |\n| POST | /v1/notifications/simulate-event | Simulate webhook event |\n\n## Common Questions\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"Create a webhook?\" -> POST /v1/notifications/webhooks\n- \"List all webhooks?\" -> GET /v1/notifications/webhooks\n- \"Get webhook details?\" -> GET /v1/notifications/webhooks/{webhook_id}\n- \"Partially update a webhook?\" -> PATCH /v1/notifications/webhooks/{webhook_id}\n- \"Delete a webhook?\" -> DELETE /v1/notifications/webhooks/{webhook_id}\n- \"List all event-types?\" -> GET /v1/notifications/webhooks/{webhook_id}/event-types\n- \"Create a webhooks-lookup?\" -> POST /v1/notifications/webhooks-lookup\n- \"List all webhooks-lookup?\" -> GET /v1/notifications/webhooks-lookup\n- \"Get webhooks-lookup details?\" -> GET /v1/notifications/webhooks-lookup/{webhook_lookup_id}\n- \"Delete a webhooks-lookup?\" -> DELETE /v1/notifications/webhooks-lookup/{webhook_lookup_id}\n- \"Create a verify-webhook-signature?\" -> POST /v1/notifications/verify-webhook-signature\n- \"List all webhooks-event-types?\" -> GET /v1/notifications/webhooks-event-types\n- \"List all webhooks-events?\" -> GET /v1/notifications/webhooks-events\n- \"Get webhooks-event details?\" -> GET /v1/notifications/webhooks-events/{event_id}\n- \"Create a resend?\" -> POST /v1/notifications/webhooks-events/{event_id}/resend\n- \"Create a simulate-event?\" -> POST /v1/notifications/simulate-event\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- Paginated endpoints accept limit/offset or cursor parameters\n- Create/update endpoints return the modified resource on success\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 Webhooks Management\n@base https://api-m.sandbox.paypal.com\n@version 1.11\n@auth OAuth2\n@endpoints 16\n@toc notifications(16)\n\n@endpoint POST /v1/notifications/webhooks\n@desc Create webhook\n@required {url: str(uri) # The URL that is configured to listen on `localhost` for incoming `POST` notification messages that contain event information., event_types: [map{name!: str, description: str, status: str, resource_versions: [str]}] # An array of events to which to subscribe your webhook. To subscribe to all events, including events as they are added, specify the asterisk wild card. To replace the `event_types` array, specify the asterisk wild card. To list all supported events, list available events.}\n@optional {id: str # The ID of the webhook., links: [map{href!: str, rel!: str, method: str}] # An array of request-related [HATEOAS links](/docs/api/reference/api-responses/#hateoas-links/).}\n@returns(201) {id: str, url: str(uri), event_types: [map], links: [map]} # A successful request returns the HTTP `201 Created` status code and a JSON response body with a [`webhook`](/docs/api/webhooks/v1/#definition-webhook) object that includes the webhook ID for later use.\n@example_request {\"url\":\"https://example.com/example_webhook\",\"event_types\":[{\"name\":\"PAYMENT.AUTHORIZATION.CREATED\"},{\"name\":\"PAYMENT.AUTHORIZATION.VOIDED\"}]}\n\n@endpoint GET /v1/notifications/webhooks\n@desc List webhooks\n@optional {anchor_type: str(APPLICATION/ACCOUNT)=APPLICATION # Filters the webhooks in the response by an `anchor_id` entity type.}\n@returns(200) {webhooks: [map]} # A successful request returns the HTTP `200 OK` status code and a JSON response body that lists webhooks with webhook details.\n\n@endpoint GET /v1/notifications/webhooks/{webhook_id}\n@desc Show webhook details\n@required {webhook_id: str # The ID of the webhook for which to list subscriptions.}\n@returns(200) {id: str, url: str(uri), event_types: [map], links: [map]} # A successful request returns the HTTP `200 OK` status code and a JSON response body that shows webhook details.\n\n@endpoint PATCH /v1/notifications/webhooks/{webhook_id}\n@desc Update webhook\n@required {webhook_id: str # The ID of the webhook for which to list subscriptions.}\n@returns(200) {id: str, url: str(uri), event_types: [map], links: [map]} # A successful request returns the HTTP `200 OK` status code and a JSON response body that shows webhook details.\n\n@endpoint DELETE /v1/notifications/webhooks/{webhook_id}\n@desc Delete webhook\n@required {webhook_id: str # The ID of the webhook for which to list subscriptions.}\n@returns(204) A successful request returns the HTTP `204 No Content` status code with no JSON response body.\n\n@endpoint GET /v1/notifications/webhooks/{webhook_id}/event-types\n@desc List event subscriptions for webhook\n@required {webhook_id: str # The ID of the webhook for which to list subscriptions.}\n@returns(200) {event_types: [map]} # A successful request returns the HTTP `200 OK` status code and a JSON response body that lists event subscriptions for a webhook.\n\n@endpoint POST /v1/notifications/webhooks-lookup\n@desc Create webhook lookup\n@returns(201) {id: str, client_id: str, links: [map]} # A successful request returns the HTTP `201 Created` status code and a JSON response body that shows webhook lookup details.\n\n@endpoint GET /v1/notifications/webhooks-lookup\n@desc List webhook lookups\n@returns(200) {webhooks_lookups: [map]} # A successful request returns the HTTP `200 OK` status code and a JSON response body that lists webhook lookups with webhook lookup details.\n\n@endpoint GET /v1/notifications/webhooks-lookup/{webhook_lookup_id}\n@desc Show webhook lookup details\n@required {webhook_lookup_id: str # The ID of the webhook lookup to delete.}\n@returns(200) {id: str, client_id: str, links: [map]} # A successful request returns the HTTP `200 OK` status code and a JSON response body that shows webhook lookup details.\n\n@endpoint DELETE /v1/notifications/webhooks-lookup/{webhook_lookup_id}\n@desc Delete webhook lookup\n@required {webhook_lookup_id: str # The ID of the webhook lookup to delete.}\n@returns(204) A successful request returns the HTTP `204 No Content` status code with no JSON response body.\n\n@endpoint POST /v1/notifications/verify-webhook-signature\n@desc Verify webhook signature\n@required {auth_algo: str # The algorithm that PayPal uses to generate the signature and that you can use to verify the signature. Extract this value from the `PAYPAL-AUTH-ALGO` response header, which is received with the webhook notification., cert_url: str(uri) # The X.509 public key certificate. Download the certificate from this URL and use it to verify the signature. Extract this value from the `PAYPAL-CERT-URL` response header, which is received with the webhook notification., transmission_id: str # The ID of the HTTP transmission. Contained in the `PAYPAL-TRANSMISSION-ID` header of the notification message., transmission_sig: str # The PayPal-generated asymmetric signature. Appears in the `PAYPAL-TRANSMISSION-SIG` header of the notification message., transmission_time: str(date-time) # The date and time of the HTTP transmission, in [Internet date and time format](https://tools.ietf.org/html/rfc3339#section-5.6). Appears in the `PAYPAL-TRANSMISSION-TIME` header of the notification message., webhook_id: str # The ID of the webhook as configured in your Developer Portal account., webhook_event: map{id: str, create_time: str(date-time), resource_type: str, event_version: str, event_type: str, summary: str, resource_version: str, resource: map, links: [map]} # A webhook event notification.}\n@returns(200) {verification_status: str} # A successful request returns the HTTP `200 OK` status code and a JSON response body that shows the verification status.\n@example_request {\"transmission_id\":\"69cd13f0-d67a-11e5-baa3-778b53f4ae55\",\"transmission_time\":\"2016-02-18T20:01:35Z\",\"cert_url\":\"cert_url\",\"auth_algo\":\"SHA256withRSA\",\"transmission_sig\":\"lmI95Jx3Y9nhR5SJWlHVIWpg4AgFk7n9bCHSRxbrd8A9zrhdu2rMyFrmz+Zjh3s3boXB07VXCXUZy/UFzUlnGJn0wDugt7FlSvdKeIJenLRemUxYCPVoEZzg9VFNqOa48gMkvF+XTpxBeUx/kWy6B5cp7GkT2+pOowfRK7OaynuxUoKW3JcMWw272VKjLTtTAShncla7tGF+55rxyt2KNZIIqxNMJ48RDZheGU5w1npu9dZHnPgTXB9iomeVRoD8O/jhRpnKsGrDschyNdkeh81BJJMH4Ctc6lnCCquoP/GzCzz33MMsNdid7vL/NIWaCsekQpW26FpWPi/tfj8nLA==\",\"webhook_id\":\"1JE4291016473214C\",\"webhook_event\":{\"id\":\"8PT597110X687430LKGECATA\",\"create_time\":\"2013-06-25T21:41:28Z\",\"resource_type\":\"authorization\",\"event_type\":\"PAYMENT.AUTHORIZATION.CREATED\",\"summary\":\"A payment authorization was created\",\"resource\":{\"id\":\"2DC87612EK520411B\",\"create_time\":\"2013-06-25T21:39:15Z\",\"update_time\":\"2013-06-25T21:39:17Z\",\"state\":\"authorized\",\"amount\":{\"total\":\"7.47\",\"currency\":\"USD\",\"details\":{\"subtotal\":\"7.47\"}},\"parent_payment\":\"PAY-36246664YD343335CKHFA4AY\",\"valid_until\":\"2013-07-24T21:39:15Z\",\"links\":[{\"href\":\"https://api-m.paypal.com/v1/payments/authorization/2DC87612EK520411B\",\"rel\":\"self\",\"method\":\"GET\"},{\"href\":\"https://api-m.paypal.com/v1/payments/authorization/2DC87612EK520411B/capture\",\"rel\":\"capture\",\"method\":\"POST\"},{\"href\":\"https://api-m.paypal.com/v1/payments/authorization/2DC87612EK520411B/void\",\"rel\":\"void\",\"method\":\"POST\"},{\"href\":\"https://api-m.paypal.com/v1/payments/payment/PAY-36246664YD343335CKHFA4AY\",\"rel\":\"parent_payment\",\"method\":\"GET\"}]}}}\n\n@endpoint GET /v1/notifications/webhooks-event-types\n@desc List available events\n@returns(200) {event_types: [map]} # A successful request returns the HTTP `200 OK` status code and a JSON response body that lists available events to which any webhook can subscribe.\n\n@endpoint GET /v1/notifications/webhooks-events\n@desc List event notifications\n@optional {page_size: int=10 # The number of webhook event notifications to return in the response., start_time: str # Filters the webhook event notifications in the response to those created on or after this date and time and on or before the `end_time` value. Both values are in [Internet date and time format](https://tools.ietf.org/html/rfc3339#section-5.6) format. Example: `start_time=2013-03-06T11:00:00Z`., end_time: str # Filters the webhook event notifications in the response to those created on or after the `start_time` and on or before this date and time. Both values are in [Internet date and time format](https://tools.ietf.org/html/rfc3339#section-5.6) format. Example: `end_time=2013-03-06T11:00:00Z`., transaction_id: str # Filters the response to a single transaction, by ID., event_type: str # Filters the response to a single event.}\n@returns(200) {events: [map], count: int, links: [map]} # A successful request returns the HTTP `200 OK` status code and a JSON response body that lists webhooks event notifications.\n\n@endpoint GET /v1/notifications/webhooks-events/{event_id}\n@desc Show event notification details\n@required {event_id: str # The ID of the webhook event notification to resend.}\n@returns(200) {id: str, create_time: str(date-time), resource_type: str, event_version: str, event_type: str, summary: str, resource_version: str, resource: map, links: [map]} # A successful request returns the HTTP `200 OK` status code and a JSON response body that shows webhooks event notification details.\n\n@endpoint POST /v1/notifications/webhooks-events/{event_id}/resend\n@desc Resend event notification\n@required {event_id: str # The ID of the webhook event notification to resend.}\n@optional {webhook_ids: [str] # An array of webhook account IDs.}\n@returns(202) {id: str, create_time: str(date-time), resource_type: str, event_version: str, event_type: str, summary: str, resource_version: str, resource: map, links: [map]} # A successful request returns the HTTP `202 Accepted` status code and a JSON response body that shows webhook event notification details.\n\n@endpoint POST /v1/notifications/simulate-event\n@desc Simulate webhook event\n@required {event_type: str # The event name. Specify one of the subscribed events. For each request, provide only one event.}\n@optional {webhook_id: str # The ID of the webhook. If omitted, the URL is required., url: str(uri) # The URL for the webhook endpoint. If omitted, the webhook ID is required., resource_version: str # The identifier for event type ex: 1.0/2.0 etc.}\n@returns(202) {id: str, create_time: str(date-time), resource_type: str, event_version: str, event_type: str, summary: str, resource_version: str, resource: map, links: [map]} # A successful request returns the HTTP `202 Accepted` status code and a JSON response body that shows details for the mock event.\n@example_request {\"url\":\"https://example.com/example_webhook\",\"event_type\":\"PAYMENT.AUTHORIZATION.CREATED\",\"resource_version\":\"1.0\"}\n\n@end\n"}}