# Webhook Events ## List webhook events `webhook_events.list(WebhookEventListParams**kwargs) -> SyncPageNumberPage[WebhookEvent]` **get** `/v1/webhook-events` Retrieves a paginated list of webhook events for the authenticated organization. Supports filtering by event name, resource type, resource ID, and date range. ### Parameters - `created_after: Optional[Union[str, datetime]]` - `created_before: Optional[Union[str, datetime]]` - `event_name: Optional[Literal["enrollment.accepted", "enrollment.terminated", "enrollment.elected", 8 more]]` * `enrollment.accepted` - Enrollment Accepted * `enrollment.terminated` - Enrollment Terminated * `enrollment.elected` - Enrollment Elected * `enrollment.granted` - Enrollment Granted * `enrollment.waived` - Enrollment Waived * `enrollment.started` - Enrollment Started * `employee.eligibility_granted` - Employee Eligibility Granted * `employee.eligibility_terminated` - Employee Eligibility Terminated * `employee.deactivated` - Employee Deactivated * `payroll_deduction.created` - Payroll Deduction Created * `employer.eligibility_policy_created` - Employer Eligibility Policy Created - `"enrollment.accepted"` - `"enrollment.terminated"` - `"enrollment.elected"` - `"enrollment.granted"` - `"enrollment.waived"` - `"enrollment.started"` - `"employee.eligibility_granted"` - `"employee.eligibility_terminated"` - `"employee.deactivated"` - `"payroll_deduction.created"` - `"employer.eligibility_policy_created"` - `limit: Optional[int]` Items per page (default: 20, max: 100) - `page: Optional[int]` Page number (default: 1) - `resource_id: Optional[str]` - `resource_type: Optional[Literal["enrollment", "employee", "employer", 3 more]]` * `enrollment` - Enrollment * `employee` - Employee * `employer` - Employer * `dependent` - Dependent * `plan_year` - Plan Year * `payroll_deduction` - Payroll Deduction - `"enrollment"` - `"employee"` - `"employer"` - `"dependent"` - `"plan_year"` - `"payroll_deduction"` ### Returns - `class WebhookEvent: …` - `id: str` Prefixed unique identifier for this webhook event (e.g., `wevt_...`). - `created_at: datetime` When the event occurred, in UTC. - `event_name: str` The event type, formatted as `{resource}.{action}` (e.g., `enrollment.accepted`). - `organization_id: str` The organization this event belongs to. - `resource_id: str` Prefixed ID of the affected resource. Use this to fetch the current state from the API. - `resource_type: str` The type of resource affected (e.g., `enrollment`, `employee`). ### Example ```python import os from vitable_connect import VitableConnect client = VitableConnect( api_key=os.environ.get("VITABLE_CONNECT_API_KEY"), # This is the default and can be omitted ) page = client.webhook_events.list() page = page.data[0] print(page.id) ``` #### Response ```json { "data": [ { "id": "wevt_abc123def456", "organization_id": "org_xyz789", "event_name": "enrollment.accepted", "resource_type": "enrollment", "resource_id": "enrl_sample123", "created_at": "2024-06-15T14:30:00Z" }, { "id": "wevt_def456ghi789", "organization_id": "org_xyz789", "event_name": "employee.deactivated", "resource_type": "employee", "resource_id": "empl_sample456", "created_at": "2024-06-15T12:00:00Z" } ], "pagination": { "page": 1, "limit": 20, "total": 2, "total_pages": 1 } } ``` ## Get webhook event `webhook_events.retrieve(strevent_id) -> WebhookEventRetrieveResponse` **get** `/v1/webhook-events/{event_id}` Retrieves a single webhook event by its prefixed ID. Returns 404 if the event does not exist or belongs to a different organization. ### Parameters - `event_id: str` ### Returns - `class WebhookEventRetrieveResponse: …` Response containing a single webhook event resource. - `data: WebhookEvent` - `id: str` Prefixed unique identifier for this webhook event (e.g., `wevt_...`). - `created_at: datetime` When the event occurred, in UTC. - `event_name: str` The event type, formatted as `{resource}.{action}` (e.g., `enrollment.accepted`). - `organization_id: str` The organization this event belongs to. - `resource_id: str` Prefixed ID of the affected resource. Use this to fetch the current state from the API. - `resource_type: str` The type of resource affected (e.g., `enrollment`, `employee`). ### Example ```python import os from vitable_connect import VitableConnect client = VitableConnect( api_key=os.environ.get("VITABLE_CONNECT_API_KEY"), # This is the default and can be omitted ) webhook_event = client.webhook_events.retrieve( "event_id", ) print(webhook_event.data) ``` #### Response ```json { "data": { "id": "wevt_abc123def456", "organization_id": "org_xyz789", "event_name": "enrollment.accepted", "resource_type": "enrollment", "resource_id": "enrl_sample123", "created_at": "2024-06-15T14:30:00Z" } } ``` ## List webhook event deliveries `webhook_events.list_deliveries(strevent_id) -> WebhookEventListDeliveriesResponse` **get** `/v1/webhook-events/{event_id}/deliveries` Retrieves all delivery attempts for a webhook event. Returns up to 100 deliveries. Each delivery includes a computed status field (Pending, In Progress, Delivered, or Failed). ### Parameters - `event_id: str` ### Returns - `class WebhookEventListDeliveriesResponse: …` - `data: List[Data]` - `id: str` Prefixed unique identifier for this delivery (e.g., `wdlv_...`). - `created_at: datetime` When this delivery record was created, in UTC. - `delivered_at: Optional[datetime]` When the delivery was successfully received, in UTC. - `failed_at: Optional[datetime]` When the delivery was marked as permanently failed, in UTC. - `failure_reason: str` Reason for failure, if applicable. - `started_at: Optional[datetime]` When the delivery attempt started, in UTC. - `status: str` Current delivery status: Pending, In Progress, Delivered, or Failed. - `subscription_id: str` The webhook subscription this delivery was sent to. - `webhook_event_id: str` The webhook event this delivery belongs to. ### Example ```python import os from vitable_connect import VitableConnect client = VitableConnect( api_key=os.environ.get("VITABLE_CONNECT_API_KEY"), # This is the default and can be omitted ) response = client.webhook_events.list_deliveries( "event_id", ) print(response.data) ``` #### Response ```json { "data": [ { "id": "wdlv_abc123def456", "webhook_event_id": "wevt_xyz789abc012", "subscription_id": "wsub_sub123def456", "status": "Delivered", "started_at": "2024-06-15T14:30:01Z", "delivered_at": "2024-06-15T14:30:02Z", "failed_at": null, "failure_reason": "", "created_at": "2024-06-15T14:30:00Z" }, { "id": "wdlv_def456ghi789", "webhook_event_id": "wevt_xyz789abc012", "subscription_id": "wsub_sub456ghi789", "status": "Failed", "started_at": "2024-06-15T14:30:01Z", "delivered_at": null, "failed_at": "2024-06-15T14:30:05Z", "failure_reason": "max_attempts", "created_at": "2024-06-15T14:30:00Z" } ] } ``` ## Domain Types ### Webhook Event - `class WebhookEvent: …` - `id: str` Prefixed unique identifier for this webhook event (e.g., `wevt_...`). - `created_at: datetime` When the event occurred, in UTC. - `event_name: str` The event type, formatted as `{resource}.{action}` (e.g., `enrollment.accepted`). - `organization_id: str` The organization this event belongs to. - `resource_id: str` Prefixed ID of the affected resource. Use this to fetch the current state from the API. - `resource_type: str` The type of resource affected (e.g., `enrollment`, `employee`).