{"info":{"name":"captur.events API Reference","description":"# captur.events API\n\nAuthenticate with a project API key:\n\n```\nAuthorization: Bearer evt_test_\u2026   # or evt_live_\u2026\n```\n\n**Base URL:** `{APP_URL}\/v1`\n\n1. Register event types (`POST \/event-types`)\n2. Ingest events (`POST \/events`) \u2014 single object or JSON array (batch)\n3. List, retrieve, delete events \/ streams\n4. Webhooks, alerts, projections (plan-gated)\n5. Session reports (`GET \/reports\/sessions`)\n\n### Auth errors\n\n| Status | Code | When |\n|--------|------|------|\n| `401` | `missing_api_key` \/ `invalid_api_key` | Missing, wrong, or revoked Bearer token |\n| `403` | `api_access_denied` | Workspace IP or origin\/domain allowlist rejected the request (`parameter`: `ip` or `origin`) |\n| `403` | `feature_not_available` | Plan does not include the feature |\n| `429` | `rate_limit_exceeded` | Per-key request throttle |\n| `429` | `monthly_quota_exceeded` | Monthly ingest cap (`POST \/events`) |\n\nError bodies use `{ \"error\": { \"type\", \"code\", \"message\", \u2026 } }`.\n\nGuides: [\/docs\/authentication](\/docs\/authentication) \u00b7 [\/docs\/errors](\/docs\/errors) \u00b7 Developers: [\/developers](\/developers)","schema":"https:\/\/schema.getpostman.com\/json\/collection\/v2.1.0\/collection.json","_postman_id":"83bb0a19-2f83-45df-8faf-743bcd91dfb8"},"auth":{"type":"bearer","bearer":[{"key":"token","value":"{{api_key}}","type":"string"}]},"variable":[{"key":"baseUrl","value":"https:\/\/captur.events\/v1"},{"key":"api_key","value":"evt_test_your_key_here"}],"item":[{"name":"Alerts","item":[{"name":"List alerts","request":{"method":"GET","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/alerts?","host":["{{baseUrl}}"],"path":["alerts"],"query":[{"key":"limit","value":"50","description":"Page size (1\u2013200, default 50).","disabled":true},{"key":"page","value":"1","description":"Offset pagination: 1-based page. Do not combine with cursor.","disabled":true},{"key":"cursor","value":"","description":"Cursor pagination: opaque token from meta.next_cursor.","disabled":true},{"key":"starting_after","value":"","description":"Cursor pagination: continue after this alert id.","disabled":true}]},"description":"Return alert rules for this project (email, Slack, SMS). Available on Growth+.\n\n**Pagination (pick one):** offset (`page`+`limit`) or cursor (`cursor`\/`starting_after`+`limit`). Do not combine. Default limit 50 (max 200). Newest first."},"response":[]},{"name":"Create an alert","request":{"method":"POST","header":[{"key":"Accept","value":"application\/json"},{"key":"Content-Type","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/alerts","host":["{{baseUrl}}"],"path":["alerts"]},"description":"Create an alert rule. Enable at least one channel (email, Slack, or SMS).","body":{"mode":"raw","raw":"{\n    \"name\": \"\",\n    \"event_types\": [\n        {}\n    ],\n    \"enabled\": true,\n    \"notify_email\": true,\n    \"notify_slack\": true,\n    \"notify_sms\": true,\n    \"email_recipients\": [\n        {}\n    ],\n    \"email_subject\": \"\",\n    \"email_body\": \"\",\n    \"slack_webhook_url\": \"\",\n    \"slack_message\": \"\",\n    \"sms_recipients\": [\n        {}\n    ],\n    \"sms_message\": \"\",\n    \"throttle_seconds\": 0\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"name":"Retrieve an alert","request":{"method":"GET","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/alerts\/{alert}","host":["{{baseUrl}}"],"path":["alerts","{alert}"]},"description":"Fetch a single alert rule by id."},"response":[]},{"name":"Update an alert","request":{"method":"PUT","header":[{"key":"Accept","value":"application\/json"},{"key":"Content-Type","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/alerts\/{alert}","host":["{{baseUrl}}"],"path":["alerts","{alert}"]},"description":"Replace an alert rule. Send the full configuration body.","body":{"mode":"raw","raw":"{\n    \"name\": \"\",\n    \"event_types\": [\n        {}\n    ],\n    \"enabled\": true,\n    \"notify_email\": true,\n    \"notify_slack\": true,\n    \"notify_sms\": true,\n    \"email_recipients\": [\n        {}\n    ],\n    \"email_subject\": \"\",\n    \"email_body\": \"\",\n    \"slack_webhook_url\": \"\",\n    \"slack_message\": \"\",\n    \"sms_recipients\": [\n        {}\n    ],\n    \"sms_message\": \"\",\n    \"throttle_seconds\": 0\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"name":"Delete an alert","request":{"method":"DELETE","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/alerts\/{alert}","host":["{{baseUrl}}"],"path":["alerts","{alert}"]},"description":"Remove an alert rule."},"response":[]},{"name":"List session overdue alerts","request":{"method":"GET","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/session-overdue-alerts?","host":["{{baseUrl}}"],"path":["session-overdue-alerts"],"query":[{"key":"limit","value":"50","description":"Page size (1\u2013200, default 50).","disabled":true},{"key":"page","value":"1","description":"Offset pagination: 1-based page.","disabled":true}]},"description":"Return rules that notify when a start\u2192end session stays open longer than `threshold_seconds` (Growth+)."},"response":[]},{"name":"Create a session overdue alert","request":{"method":"POST","header":[{"key":"Accept","value":"application\/json"},{"key":"Content-Type","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/session-overdue-alerts","host":["{{baseUrl}}"],"path":["session-overdue-alerts"]},"description":"Create a rule that scans open sessions every minute and notifies once per start event when overdue.","body":{"mode":"raw","raw":"{\n    \"name\": \"\",\n    \"start_type\": \"\",\n    \"end_type\": \"\",\n    \"group_by\": \"\",\n    \"threshold_seconds\": 0,\n    \"lookback_days\": 0,\n    \"notify_email\": true,\n    \"notify_slack\": true,\n    \"notify_sms\": true,\n    \"notify_webhooks\": true\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"name":"Get a session overdue alert","request":{"method":"GET","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/session-overdue-alerts\/{alert}","host":["{{baseUrl}}"],"path":["session-overdue-alerts","{alert}"]},"description":""},"response":[]},{"name":"Update a session overdue alert","request":{"method":"PUT","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/session-overdue-alerts\/{alert}","host":["{{baseUrl}}"],"path":["session-overdue-alerts","{alert}"]},"description":""},"response":[]},{"name":"Delete a session overdue alert","request":{"method":"DELETE","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/session-overdue-alerts\/{alert}","host":["{{baseUrl}}"],"path":["session-overdue-alerts","{alert}"]},"description":""},"response":[]}]},{"name":"Event types","item":[{"name":"List event types","request":{"method":"GET","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/event-types?","host":["{{baseUrl}}"],"path":["event-types"],"query":[{"key":"limit","value":"50","description":"Page size (1\u2013200, default 50).","disabled":true},{"key":"page","value":"1","description":"Offset pagination: 1-based page. Do not combine with cursor.","disabled":true},{"key":"cursor","value":"","description":"Cursor pagination: opaque token from meta.next_cursor.","disabled":true},{"key":"starting_after","value":"","description":"Cursor pagination: continue after this event type id.","disabled":true}]},"description":"Return the allowlist of event types registered for this project, including optional JSON Schemas and indexed filter keys.\n\n**Pagination (pick one):** offset (`page`+`limit`) or cursor (`cursor`\/`starting_after`+`limit`). Do not combine. Default limit 50 (max 200). Ordered by `name`."},"response":[]},{"name":"Register an event type","request":{"method":"POST","header":[{"key":"Accept","value":"application\/json"},{"key":"Content-Type","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/event-types","host":["{{baseUrl}}"],"path":["event-types"]},"description":"Add a type to the project allowlist. Optionally attach JSON Schemas for `data` \/ `metadata`\nand declare top-level keys to index for filtering.\n\nNames use dotted lowercase segments (`resource.action`), e.g. `vehicle.entered`.\nThe `captur.` prefix is reserved for platform types and cannot be registered.","body":{"mode":"raw","raw":"{\n    \"name\": \"\",\n    \"description\": {},\n    \"data_schema\": {},\n    \"metadata_schema\": {},\n    \"indexed_data_keys\": {},\n    \"indexed_metadata_keys\": {}\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"name":"Retrieve an event type","request":{"method":"GET","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/event-types\/{eventType}","host":["{{baseUrl}}"],"path":["event-types","{eventType}"]},"description":"Fetch a single registered event type by name."},"response":[]},{"name":"Update an event type","request":{"method":"PATCH","header":[{"key":"Accept","value":"application\/json"},{"key":"Content-Type","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/event-types\/{eventType}","host":["{{baseUrl}}"],"path":["event-types","{eventType}"]},"description":"Update description, JSON Schemas, or indexed filter keys. The type name cannot change.","body":{"mode":"raw","raw":"{\n    \"description\": \"\",\n    \"data_schema\": {},\n    \"metadata_schema\": {},\n    \"indexed_data_keys\": {},\n    \"indexed_metadata_keys\": {}\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"name":"Delete an event type","request":{"method":"DELETE","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/event-types\/{eventType}","host":["{{baseUrl}}"],"path":["event-types","{eventType}"]},"description":"Remove a type from the allowlist. Existing stored events are not deleted."},"response":[]}]},{"name":"Events","item":[{"name":"Create an event","request":{"method":"POST","header":[{"key":"Accept","value":"application\/json"},{"key":"Content-Type","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/events","host":["{{baseUrl}}"],"path":["events"]},"description":"Append a single event, or a JSON array of up to 500 events.\n\nReturns **202 Accepted** once the event is durably stored. Webhooks and indexing run asynchronously.\n\nThe `type` **must already be registered** via `POST \/event-types`. Unknown types return `422` with code\n`unknown_event_type`.","body":{"mode":"raw","raw":"{\n    \"type\": \"\",\n    \"stream\": \"\",\n    \"stream_id\": \"\",\n    \"data\": {},\n    \"occurred_at\": \"\",\n    \"subject_id\": \"\",\n    \"idempotency_key\": \"\",\n    \"expected_version\": 0,\n    \"metadata\": {}\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"name":"List events","request":{"method":"GET","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/events?","host":["{{baseUrl}}"],"path":["events"],"query":[{"key":"type","value":"vehicle.entered","description":"Filter by event type.","disabled":true},{"key":"stream","value":"vehicle:AB12XYZ","description":"Filter by stream id.","disabled":true},{"key":"subject_id","value":"","description":"Filter by subject id.","disabled":true},{"key":"from","value":"","description":"Inclusive lower bound (ISO-8601).","disabled":true},{"key":"to","value":"","description":"Inclusive upper bound (ISO-8601).","disabled":true},{"key":"limit","value":"50","description":"Page size \/ per page (1\u2013200, default 50).","disabled":true},{"key":"page","value":"1","description":"Offset pagination: 1-based page number. Do not combine with cursor.","disabled":true},{"key":"cursor","value":"","description":"Cursor pagination: opaque token from meta.next_cursor.","disabled":true},{"key":"starting_after","value":"","description":"Cursor pagination: continue after this event id (ULID).","disabled":true},{"key":"data","value":"","description":"Indexed data filters as nested object, e.g. `data[car_park_id]=north`.","disabled":true},{"key":"metadata","value":"","description":"Indexed metadata filters as nested object, e.g. `metadata[source]=gate`.","disabled":true}]},"description":"Page through events with filters. Hot (recent) and cold (cached) history are merged automatically.\n\n**Pagination (pick one):**\n- **Offset:** `page` (1-based) + `limit` \u2014 `meta` includes `current_page`, `last_page`, `total`\n- **Cursor:** `cursor` (from `meta.next_cursor`) or `starting_after` (event id) + `limit` \u2014 `meta` includes\n`has_more`, `next_cursor`\n\nDo not combine `page` with `cursor` \/ `starting_after`. Newest-first.\n\n**Indexed payload filters:** `data[key]=value` and `metadata[key]=value` only work for keys declared on the event type\n(`indexed_data_keys` \/ `indexed_metadata_keys`)."},"response":[]},{"name":"Delete events in bulk","request":{"method":"POST","header":[{"key":"Accept","value":"application\/json"},{"key":"Content-Type","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/events\/delete","host":["{{baseUrl}}"],"path":["events","delete"]},"description":"Permanently delete up to 500 events by id. Unknown ids are skipped. This cannot be undone.","body":{"mode":"raw","raw":"{\n    \"ids\": [\n        \"\"\n    ]\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"name":"Retrieve an event","request":{"method":"GET","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/events\/{event}","host":["{{baseUrl}}"],"path":["events","{event}"]},"description":"Fetch a single event by ULID. Older events may be served from cold storage cache."},"response":[]},{"name":"Delete an event","request":{"method":"DELETE","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/events\/{event}","host":["{{baseUrl}}"],"path":["events","{event}"]},"description":"Permanently delete a single event by ULID. This cannot be undone. Stream tip versions are not rewritten \u2014 gaps in `stream_version` may remain."},"response":[]}]},{"name":"Projections","item":[{"name":"List projections","request":{"method":"GET","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/projections?","host":["{{baseUrl}}"],"path":["projections"],"query":[{"key":"limit","value":"50","description":"Page size (1\u2013200, default 50).","disabled":true},{"key":"page","value":"1","description":"Offset pagination: 1-based page. Do not combine with cursor.","disabled":true},{"key":"cursor","value":"","description":"Cursor pagination: opaque token from meta.next_cursor.","disabled":true},{"key":"starting_after","value":"","description":"Cursor pagination: continue after this projection id.","disabled":true}]},"description":"Return project-level aggregate projections. Available on Growth+.\n\n**Pagination (pick one):** offset (`page`+`limit`) or cursor (`cursor`\/`starting_after`+`limit`). Do not combine. Default limit 50 (max 200). Ordered by `name`."},"response":[]},{"name":"Create a projection","request":{"method":"POST","header":[{"key":"Accept","value":"application\/json"},{"key":"Content-Type","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/projections","host":["{{baseUrl}}"],"path":["projections"]},"description":"Create the project-level aggregate definition (`name`, optional `slug`). Each project may have only one projection. Replay after create to populate state from the full event history.","body":{"mode":"raw","raw":"{\n    \"name\": \"\",\n    \"slug\": {}\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"name":"Retrieve a projection","request":{"method":"GET","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/projections\/{projection}","host":["{{baseUrl}}"],"path":["projections","{projection}"]},"description":"Fetch a projection by id, including current state and checkpoint."},"response":[]},{"name":"Update a projection","request":{"method":"PATCH","header":[{"key":"Accept","value":"application\/json"},{"key":"Content-Type","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/projections\/{projection}","host":["{{baseUrl}}"],"path":["projections","{projection}"]},"description":"Rename a projection. The slug cannot change after create.","body":{"mode":"raw","raw":"{\n    \"name\": \"\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"name":"Delete a projection","request":{"method":"DELETE","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/projections\/{projection}","host":["{{baseUrl}}"],"path":["projections","{projection}"]},"description":"Remove a projection definition and its derived state."},"response":[]},{"name":"Replay a projection","request":{"method":"POST","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/projections\/{projection}\/replay","host":["{{baseUrl}}"],"path":["projections","{projection}","replay"]},"description":"Rebuild this projection\u2019s project-level aggregate from the full event history (counts by type, streams seen). Requires Growth+ with replay."},"response":[]}]},{"name":"Reports","item":[{"name":"Session report","request":{"method":"GET","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/reports\/sessions?start_type=employee.logged_in&end_type=employee.logged_out&from=2026-07-27T00%3A00%3A00Z&to=2026-08-03T23%3A59%3A59Z","host":["{{baseUrl}}"],"path":["reports","sessions"],"query":[{"key":"start_type","value":"employee.logged_in","description":"Entry \/ clock-in event type.","disabled":false},{"key":"end_type","value":"employee.logged_out","description":"Exit \/ clock-out event type.","disabled":false},{"key":"from","value":"2026-07-27T00:00:00Z","description":"Window start (ISO-8601, `occurred_at`).","disabled":false},{"key":"to","value":"2026-08-03T23:59:59Z","description":"Window end (ISO-8601, `occurred_at`). Max 31 days after `from`.","disabled":false},{"key":"group_by","value":"stream","description":"`stream` (default) or `subject_id`.","disabled":true},{"key":"stream","value":"employee:4821","description":"Optional single stream filter.","disabled":true},{"key":"subject_id","value":"","description":"Optional single subject filter.","disabled":true},{"key":"open","value":"exclude","description":"`exclude` (default), `include`, or `only` unmatched starts.","disabled":true},{"key":"limit","value":"50","description":"Groups per page (1\u2013200, default 50).","disabled":true},{"key":"page","value":"1","description":"Offset pagination: 1-based page of groups. Do not combine with cursor.","disabled":true},{"key":"cursor","value":"","description":"Cursor pagination: opaque token from meta.next_cursor.","disabled":true},{"key":"starting_after","value":"","description":"Cursor pagination: continue after this group key.","disabled":true}]},"description":"Pair **start** and **end** event types per entity over a time window and return intervals + totals.\n\nUse this for timesheets (`employee.logged_in` \u2192 `employee.logged_out`), parking dwell, machine runtime, ticket SLA,\netc. \u2014 the API is domain-agnostic; you only supply the two type names.\n\n**Required:** `start_type`, `end_type`, `from`, `to` (max 31 days).\n\n**Grouping:** `group_by=stream` (default) or `subject_id`.\n\n**Open sessions:** `open=exclude` (default), `include`, or `only`.\n\n**Pagination (pick one):** offset (`page`+`limit`) or cursor (`cursor`\/`starting_after`+`limit`).\nDo not combine. Default limit 50 (max 200). Groups ordered by `group` ascending.\n`starting_after` is the previous page\u2019s last `group` value.\n\n**Try it:** click **Test Request**, set the Bearer token, then fill **Query Parameters**\n(`start_type`, `end_type`, `from`, `to`, \u2026) before sending."},"response":[]}]},{"name":"Streams","item":[{"name":"Read a stream","request":{"method":"GET","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/streams\/{stream}?","host":["{{baseUrl}}"],"path":["streams","{stream}"],"query":[{"key":"limit","value":"50","description":"Page size (1\u2013200, default 50).","disabled":true},{"key":"page","value":"1","description":"Offset pagination: 1-based page. Do not combine with cursor.","disabled":true},{"key":"cursor","value":"","description":"Cursor pagination: opaque token from meta.next_cursor.","disabled":true},{"key":"starting_after","value":"","description":"Cursor pagination: continue after this event id.","disabled":true}]},"description":"Return the ordered event history for a stream id (entity timeline), newest and oldest metadata included.\n\n**Pagination (pick one):** offset (`page`+`limit`) or cursor (`cursor`\/`starting_after`+`limit`). Do not combine. Default limit 50 (max 200). Ordered by `stream_version` ascending."},"response":[]},{"name":"Delete a stream","request":{"method":"DELETE","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/streams\/{stream}","host":["{{baseUrl}}"],"path":["streams","{stream}"]},"description":"Permanently delete a stream and **all events** belonging to it. This cannot be undone. Webhook delivery rows for those events are removed via cascade."},"response":[]}]},{"name":"Webhooks","item":[{"name":"List webhooks","request":{"method":"GET","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/webhooks?","host":["{{baseUrl}}"],"path":["webhooks"],"query":[{"key":"limit","value":"50","description":"Page size (1\u2013200, default 50).","disabled":true},{"key":"page","value":"1","description":"Offset pagination: 1-based page. Do not combine with cursor.","disabled":true},{"key":"cursor","value":"","description":"Cursor pagination: opaque token from meta.next_cursor.","disabled":true},{"key":"starting_after","value":"","description":"Cursor pagination: continue after this webhook id.","disabled":true}]},"description":"Return webhook endpoints for this project. Signing secrets are not included.\n\n**Pagination (pick one):** offset (`page`+`limit`) or cursor (`cursor`\/`starting_after`+`limit`). Do not combine. Default limit 50 (max 200). Newest first."},"response":[]},{"name":"Create a webhook","request":{"method":"POST","header":[{"key":"Accept","value":"application\/json"},{"key":"Content-Type","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/webhooks","host":["{{baseUrl}}"],"path":["webhooks"]},"description":"Register an HTTPS endpoint. The signing `secret` is returned **once** in the create response.","body":{"mode":"raw","raw":"{\n    \"url\": \"\",\n    \"description\": \"\",\n    \"event_types\": [\n        {}\n    ],\n    \"enabled\": true,\n    \"notify_on_failure\": true,\n    \"notify_on_success\": true\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"name":"Retrieve email test inbox","request":{"method":"GET","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/webhooks\/test-inbox","host":["{{baseUrl}}"],"path":["webhooks","test-inbox"]},"description":"Return the project\u2019s email test inbox URL if configured."},"response":[]},{"name":"Create or rotate email test inbox","request":{"method":"PUT","header":[{"key":"Accept","value":"application\/json"},{"key":"Content-Type","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/webhooks\/test-inbox","host":["{{baseUrl}}"],"path":["webhooks","test-inbox"]},"description":"Mint a captur-hosted webhook URL that emails signed payloads to the given address. Also registers a webhook endpoint on the project pointing at that URL. The signing secret is returned.","body":{"mode":"raw","raw":"{\n    \"email\": \"\"\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"name":"Delete email test inbox","request":{"method":"DELETE","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/webhooks\/test-inbox","host":["{{baseUrl}}"],"path":["webhooks","test-inbox"]},"description":"Remove the test inbox and its linked webhook endpoint."},"response":[]},{"name":"Email a sample test webhook","request":{"method":"POST","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/webhooks\/test-inbox\/sample","host":["{{baseUrl}}"],"path":["webhooks","test-inbox","sample"]},"description":"Send a sample signed payload to the configured test inbox email."},"response":[]},{"name":"Retrieve a webhook","request":{"method":"GET","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/webhooks\/{webhook}","host":["{{baseUrl}}"],"path":["webhooks","{webhook}"]},"description":"Fetch a webhook endpoint by id. The signing secret is not returned."},"response":[]},{"name":"Update a webhook","request":{"method":"PATCH","header":[{"key":"Accept","value":"application\/json"},{"key":"Content-Type","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/webhooks\/{webhook}","host":["{{baseUrl}}"],"path":["webhooks","{webhook}"]},"description":"Update URL, filters, enabled flag, or notification preferences.","body":{"mode":"raw","raw":"{\n    \"url\": \"\",\n    \"description\": {},\n    \"enabled\": true,\n    \"notify_on_failure\": true,\n    \"notify_on_success\": true,\n    \"event_types\": {}\n}","options":{"raw":{"language":"json"}}}},"response":[]},{"name":"Delete a webhook","request":{"method":"DELETE","header":[{"key":"Accept","value":"application\/json"}],"url":{"raw":"{{baseUrl}}\/webhooks\/{webhook}","host":["{{baseUrl}}"],"path":["webhooks","{webhook}"]},"description":"Remove a webhook endpoint. Delivery history for that endpoint is removed via cascade."},"response":[]}]}]}