# Webhook Events ## List webhook events `webhook_events.list(**kwargs) -> PageNumberPage` **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: Time` - `created_before: Time` - `event_name: :"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: Integer` Items per page (default: 20, max: 100) - `page: Integer` Page number (default: 1) - `resource_id: String` - `resource_type: :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: String` Prefixed unique identifier for this webhook event (e.g., `wevt_...`). - `created_at: Time` When the event occurred, in UTC. - `event_name: String` The event type, formatted as `{resource}.{action}` (e.g., `enrollment.accepted`). - `organization_id: String` The organization this event belongs to. - `resource_id: String` Prefixed ID of the affected resource. Use this to fetch the current state from the API. - `resource_type: String` The type of resource affected (e.g., `enrollment`, `employee`). ### Example ```ruby require "vitable_connect" vitable_connect = VitableConnect::Client.new( api_key: "My API Key", environment: "environment_1" # defaults to "production" ) page = vitable_connect.webhook_events.list puts(page) ``` #### 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(event_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: String` ### Returns - `class WebhookEventRetrieveResponse` Response containing a single webhook event resource. - `data: WebhookEvent` - `id: String` Prefixed unique identifier for this webhook event (e.g., `wevt_...`). - `created_at: Time` When the event occurred, in UTC. - `event_name: String` The event type, formatted as `{resource}.{action}` (e.g., `enrollment.accepted`). - `organization_id: String` The organization this event belongs to. - `resource_id: String` Prefixed ID of the affected resource. Use this to fetch the current state from the API. - `resource_type: String` The type of resource affected (e.g., `enrollment`, `employee`). ### Example ```ruby require "vitable_connect" vitable_connect = VitableConnect::Client.new( api_key: "My API Key", environment: "environment_1" # defaults to "production" ) webhook_event = vitable_connect.webhook_events.retrieve("event_id") puts(webhook_event) ``` #### 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(event_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: String` ### Returns - `class WebhookEventListDeliveriesResponse` - `data: Array[{ id, created_at, delivered_at, 6 more}]` - `id: String` Prefixed unique identifier for this delivery (e.g., `wdlv_...`). - `created_at: Time` When this delivery record was created, in UTC. - `delivered_at: Time` When the delivery was successfully received, in UTC. - `failed_at: Time` When the delivery was marked as permanently failed, in UTC. - `failure_reason: String` Reason for failure, if applicable. - `started_at: Time` When the delivery attempt started, in UTC. - `status: String` Current delivery status: Pending, In Progress, Delivered, or Failed. - `subscription_id: String` The webhook subscription this delivery was sent to. - `webhook_event_id: String` The webhook event this delivery belongs to. ### Example ```ruby require "vitable_connect" vitable_connect = VitableConnect::Client.new( api_key: "My API Key", environment: "environment_1" # defaults to "production" ) response = vitable_connect.webhook_events.list_deliveries("event_id") puts(response) ``` #### 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: String` Prefixed unique identifier for this webhook event (e.g., `wevt_...`). - `created_at: Time` When the event occurred, in UTC. - `event_name: String` The event type, formatted as `{resource}.{action}` (e.g., `enrollment.accepted`). - `organization_id: String` The organization this event belongs to. - `resource_id: String` Prefixed ID of the affected resource. Use this to fetch the current state from the API. - `resource_type: String` The type of resource affected (e.g., `enrollment`, `employee`).