All webhooks
Users & team
Invitation accepted
user.invitation_acceptedFires when an invited user accepts their invitation and joins the company. The payload carries both the newly created user and the accepted invitation.
HTTP request
AISAR sends a signed POST request to your webhook_url:
http
POST {webhook_url}
Content-Type: application/json
X-AISAR-Signature: sha256=...
{
"event": "user.invitation_accepted",
"event_id": "evt_01JXXXXXXXXXXXXXXXXXXXXX",
"timestamp": "2026-03-26T12:00:00.000000Z",
"company_id": 1,
"data": {
"user": {
"id": 60,
"name": "New User Name",
"email": "newuser@company.kz",
"availability": null
},
"invitation": {
"id": 12,
"email": "newuser@company.kz",
"role": "agent",
"status": "accepted"
}
}
}The X-AISAR-Signature header carries an HMAC-SHA256 signature of the request body — use it to verify the request came from AISAR.
Example payload
json
{
"event": "user.invitation_accepted",
"event_id": "evt_01JXXXXXXXXXXXXXXXXXXXXX",
"timestamp": "2026-03-26T12:00:00.000000Z",
"company_id": 1,
"data": {
"user": {
"id": 60,
"name": "New User Name",
"email": "newuser@company.kz",
"availability": null
},
"invitation": {
"id": 12,
"email": "newuser@company.kz",
"role": "agent",
"status": "accepted"
}
}
}Payload fields
| Field | Type | Description |
|---|---|---|
user | object | The newly joined user |
user.id | integer | User ID |
user.name | string | Full name (first + last combined) |
user.email | string | User email |
user.availability | string|null | Availability status |
invitation | object | The invitation that was accepted |
invitation.id | integer | Invitation ID |
invitation.role | string | Role granted: `admin` or `agent` |
invitation.status | string | Always `accepted` |