{"files":{"SKILL.md":"---\nname: webhook-api\ndescription: \"Webhook API skill. Use when working with Webhook for webhook. Covers 10 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# Webhook API\nAPI version: 10.24.12\n\n## Auth\nApiKey Authorization in header\n\n## Base URL\nhttps://unify.apideck.com\n\n## Setup\n1. Set your API key in the appropriate header\n2. GET /webhook/webhooks -- list webhook subscriptions\n3. POST /webhook/webhooks -- create first webhook\n\n## Endpoints\n10 endpoints across 1 group. See references/api-spec.lap for full details.\n\n### Webhook\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /webhook/webhooks | List webhook subscriptions |\n| POST | /webhook/webhooks | Create webhook subscription |\n| GET | /webhook/webhooks/{id} | Get webhook subscription |\n| PATCH | /webhook/webhooks/{id} | Update webhook subscription |\n| DELETE | /webhook/webhooks/{id} | Delete webhook subscription |\n| POST | /webhook/webhooks/{id}/execute/{serviceId} | Execute a webhook |\n| POST | /webhook/webhooks/{id}/x/{serviceId} | Execute a webhook |\n| POST | /webhook/w/{id}/{serviceId} | Resolve and Execute a connection webhook |\n| GET | /webhook/w/{id}/{serviceId} | Resolve and Execute a connection webhook |\n| GET | /webhook/logs | List event logs |\n\n## Common Questions\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"List all webhooks?\" -> GET /webhook/webhooks\n- \"Create a webhook?\" -> POST /webhook/webhooks\n- \"Get webhook details?\" -> GET /webhook/webhooks/{id}\n- \"Partially update a webhook?\" -> PATCH /webhook/webhooks/{id}\n- \"Delete a webhook?\" -> DELETE /webhook/webhooks/{id}\n- \"Get w details?\" -> GET /webhook/w/{id}/{serviceId}\n- \"List all logs?\" -> GET /webhook/logs\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- 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 Webhook API\n@base https://unify.apideck.com\n@version 10.24.10\n@auth ApiKey Authorization in header\n@endpoints 10\n@toc webhook(10)\n\n@endpoint GET /webhook/webhooks\n@desc List webhook subscriptions\n@required {x-apideck-app-id: str # The ID of your Unify application}\n@optional {cursor: str # Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response., limit: int=20 # Number of results to return. Minimum 1, Maximum 200, Default 20}\n@returns(200) {status_code: int, status: str, data: [map], meta: map{items_on_page: int, cursors: map{previous: str?, current: str?, next: str?}}, links: map{previous: str?, current: str, next: str?}, _raw: map?} # Webhooks\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint POST /webhook/webhooks\n@desc Create webhook subscription\n@required {x-apideck-app-id: str # The ID of your Unify application, unified_api: str(accounting/ats/calendar/crm/csp/customer-support/ecommerce/email/email-marketing/expense-management/file-storage/form/hris/lead/payroll/pos/procurement/project-management/script/sms/spreadsheet/team-messaging/issue-tracking/time-registration/transactional-email/vault/data-warehouse) # Name of Apideck Unified API, status: str(enabled/disabled) # The status of the webhook., delivery_url: str(uri) # The delivery url of the webhook endpoint., events: [str] # The list of subscribed events for this webhook. [`*`] indicates that all events are enabled.}\n@optional {description: str # A description of the object.}\n@returns(201) {status_code: int, status: str, data: map{id: str, description: str?, unified_api: str, status: str, disabled_reason: str, delivery_url: str(uri), execute_base_url: str(uri), events: [str], updated_at: str(date-time)?, created_at: str(date-time)?}, _raw: map?} # Webhooks\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint GET /webhook/webhooks/{id}\n@desc Get webhook subscription\n@required {id: str # JWT Webhook token that represents the unifiedApi and applicationId associated to the event source., x-apideck-app-id: str # The ID of your Unify application}\n@returns(200) {status_code: int, status: str, data: map{id: str, description: str?, unified_api: str, status: str, disabled_reason: str, delivery_url: str(uri), execute_base_url: str(uri), events: [str], updated_at: str(date-time)?, created_at: str(date-time)?}, _raw: map?} # Webhooks\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint PATCH /webhook/webhooks/{id}\n@desc Update webhook subscription\n@required {id: str # JWT Webhook token that represents the unifiedApi and applicationId associated to the event source., x-apideck-app-id: str # The ID of your Unify application}\n@optional {description: str # A description of the object., status: str(enabled/disabled) # The status of the webhook., delivery_url: str(uri) # The delivery url of the webhook endpoint., events: [str] # The list of subscribed events for this webhook. [`*`] indicates that all events are enabled.}\n@returns(200) {status_code: int, status: str, data: map{id: str, description: str?, unified_api: str, status: str, disabled_reason: str, delivery_url: str(uri), execute_base_url: str(uri), events: [str], updated_at: str(date-time)?, created_at: str(date-time)?}, _raw: map?} # Webhooks\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint DELETE /webhook/webhooks/{id}\n@desc Delete webhook subscription\n@required {id: str # JWT Webhook token that represents the unifiedApi and applicationId associated to the event source., x-apideck-app-id: str # The ID of your Unify application}\n@returns(200) {status_code: int, status: str, data: map{id: str, description: str?, unified_api: str, status: str, disabled_reason: str, delivery_url: str(uri), execute_base_url: str(uri), events: [str], updated_at: str(date-time)?, created_at: str(date-time)?}, _raw: map?} # Webhooks\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint POST /webhook/webhooks/{id}/execute/{serviceId}\n@desc Execute a webhook\n@required {id: str # JWT Webhook token that represents the unifiedApi and applicationId associated to the event source., serviceId: str # Service provider ID.}\n@returns(200) {status_code: int, status: str, data: map{timestamp: str, request_id: str}, request_id: str, timestamp: str} # Execute Webhook\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint POST /webhook/webhooks/{id}/x/{serviceId}\n@desc Execute a webhook\n@required {id: str # JWT Webhook token that represents the unifiedApi and applicationId associated to the event source., serviceId: str # Service provider ID.}\n@optional {l_id: str # Unique identifier to used to look up consumer/connection when receiving connector events from downstream., e: str # The name of downstream event when connector does not supply in body or header}\n@returns(200) {status_code: int, status: str, data: map{timestamp: str, request_id: str}, request_id: str, timestamp: str} # Execute Webhook\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint POST /webhook/w/{id}/{serviceId}\n@desc Resolve and Execute a connection webhook\n@required {id: str # JWT Webhook token that represents the connection lookupId. Signed so we know source came from us, serviceId: str # Service provider ID.}\n@optional {e: str # The name of downstream event when connector does not supply in body or header, validationToken: str # Validation token for webhook verification}\n@returns(200) {status_code: int, status: str, data: map{timestamp: str, request_id: str}, request_id: str, timestamp: str, _raw: map?} # Resolve Webhook\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint GET /webhook/w/{id}/{serviceId}\n@desc Resolve and Execute a connection webhook\n@required {id: str # JWT Webhook token that represents the connection lookupId. Signed so we know source came from us, serviceId: str # Service provider ID.}\n@optional {e: str # The name of downstream event when connector does not supply in body or header}\n@returns(200) {status_code: int, status: str, data: map{timestamp: str, request_id: str}, request_id: str, timestamp: str, _raw: map?} # Resolve Webhook\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@endpoint GET /webhook/logs\n@desc List event logs\n@required {x-apideck-app-id: str # The ID of your Unify application}\n@optional {cursor: str # Cursor to start from. You can find cursors for next/previous pages in the meta.cursors property of the response., limit: int=20 # Number of results to return. Minimum 1, Maximum 200, Default 20, filter: map # Filter results}\n@returns(200) {status_code: int, status: str, data: [map], meta: map{items_on_page: int, cursors: map{previous: str?, current: str?, next: str?}}, links: map{previous: str?, current: str, next: str?}, _raw: map?} # EventLogs\n@errors {400: Bad Request, 401: Unauthorized, 402: Payment Required, 404: The specified resource was not found, 422: Unprocessable}\n\n@end\n"}}