> ## Documentation Index
> Fetch the complete documentation index at: https://developers.workchats.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Callbacks

> Coming in the next phase

<Warning>
  Not live yet. See
  [Callbacks & signature verification](/guides/callbacks-and-signature-verification)
  for the full design.
</Warning>

## Envelope

| Field | Type |
| - | - |
| `id` | string, unique per event |
| `type` | `"app.uninstalled"` \| `"directory.changed"` \| `"interaction"` |
| `workspace_id` | string, `cmp_` prefixed |
| `created_at` | string, RFC 3339 |
| `data` | object, shape depends on `type` |

## Headers

| Header | Value |
| - | - |
| `X-Workchats-Timestamp` | Unix seconds |
| `X-Workchats-Signature` | `v1=<hex>`; two comma-separated values during a secret rotation |
| `X-Workchats-Attempt` | Attempt number, starting at 1 |

## Event types

| `type` | `data` |
| - | - |
| `app.uninstalled` | `{"removed_by": {"id": "usr_…"} \| null, "reason": "admin" \| "app_disabled"}` |
| `directory.changed` | `{"kind": "user.created" \| "user.updated" \| "user.deactivated" \| "conversation.created" \| "conversation.renamed" \| "conversation.archived" \| "conversation.deleted" \| "app.removed_from_conversation", "id": "…"}` |
| `interaction` | `{"action_id": "…", "value": "…", "user": {"id": "usr_…", "email": "…"}, "message": {"id": "…", "conversation_id": "…", "metadata": {}}}` |
