# WebhookEvent

The WebhookEvent object of the Kaabist API.

| Field | Type | Required | Description |
|---|---|---|---|
| `id` | string | yes | pattern `^evt_[0-9a-hjkmnp-tv-z]{26}$` |
| `type` | `"job.queued"` | yes |  |
| `created_at` | string (date-time) | yes |  |
| `org` | string | yes | pattern `^org_[0-9a-hjkmnp-tv-z]{26}$` |
| `mode` | `"live"`, `"test"` | yes |  |
| `data` | object | yes |  |
| `data.job` | string | yes | pattern `^job_[0-9a-hjkmnp-tv-z]{26}$` |
| `data.program` | string or null | yes |  |
| `data.reason` | `"obstacle"`, `"drift"`, `"unknown_page"`, `"session_expired"`, `"side_effect_ambiguous"`, `"captcha"` or enum (58 values) |  |  |
| `data.url` | string (uri) | yes |  |
| `data.batch` | string | yes | pattern `^bat_[0-9a-hjkmnp-tv-z]{26}$` |
| `data.total` | integer | yes | ≥ 0 |
| `data.proposal` | string | yes | pattern `^prp_[0-9a-hjkmnp-tv-z]{26}$` |
| `data.kind` | `"relocate"`, `"dismiss"`, `"insert_steps"`, `"parser_config"`, `"api_discovery"` |  |  |
| `data.decision` | `"approved"`, `"rejected"` |  |  |
| `data.schedule` | string | yes | pattern `^sch_[0-9a-hjkmnp-tv-z]{26}$` |
| `data.status` | enum (7 values) | yes | one of `"queued"`, `"running"`, `"awaiting_input"`, `"needs_attention"`, `"succeeded"`, `"failed"`, `"canceled"` |
| `data.changed` | boolean |  |  |
| `data.changed_paths` | string[] | yes | max items 50 |
| `data.changed_paths_truncated` | boolean |  |  |
| `data.diff_url` | string (uri) | yes |  |
| `data.failure_streak` | integer | yes | ≥ 1 |
| `data.session` | string | yes | pattern `^ses_[0-9a-hjkmnp-tv-z]{26}$` |
| `data.name` | string | yes |  |
| `data.program_version_id` | string | yes | pattern `^pv_[0-9a-hjkmnp-tv-z]{26}$` |
| `data.field` | string | yes |  |
| `data.detail` | string | yes |  |
| `data.source` | `"statistics"`, `"canary"` | yes |  |
| `data.at` | string (date-time) | yes |  |
| `data.balance` | number | yes |  |
| `data.level` | integer |  | ≥ 0 · ≤ 100 |
| `data.threshold` | number |  |  |
| `data.byo` | string | yes | pattern `^byo_[0-9a-hjkmnp-tv-z]{26}$` |
| `data.webhook` | string | yes | pattern `^whk_[0-9a-hjkmnp-tv-z]{26}$` |
| `data.failing_since` | string (date-time) | yes |  |

## Example

```json
{
  "id": "evt_01j9zqk3q7m4n5p6r7s8t9v0wx",
  "type": "job.needs_attention",
  "created_at": "2026-09-18T10:00:00Z",
  "org": "org_01j9zqk3q7m4n5p6r7s8t9v0wx",
  "mode": "live",
  "data": {
    "job": "job_01j9zqk3q7m4n5p6r7s8t9v0wx",
    "reason": "obstacle",
    "program": "acme-report@3",
    "url": "https://api.kaab.ist/v1/jobs/job_01j9zqk3q7m4n5p6r7s8t9v0wx"
  }
}
```
