Mediflo
Webhooki

Katalog zdarzeń

Wszystkie typy zdarzeń webhook z polskim opisem, opcjonalnymi blokami danych i pełną przykładową kopertą.

Katalog jest generowany z tego samego modułu, względem którego walidowane są prawdziwe zdarzenia — nie może opisywać kształtu, którego nie wysyłamy. Przykładowe koperty są celowo nieprawdziwe: wyzerowane identyfikatory, numer testowy, „Jan Testowy", example.com. Identyfikator koperty w przykładach ma przedrostek evt_sample_.

Ten sam katalog w wersji maszynowej: /api/webhook-events.json oraz endpoint GET /meta/event-types.

Zdarzenie testowe

ping

Zdarzenie testowe wysyłane przyciskiem „Wyślij testowy ping”. Nie zawiera danych rozmów ani zadań.

Bez danych osobowych.

Przykładowa koperta
{
  "id": "evt_sample_ping",
  "type": "ping",
  "apiVersion": "v1",
  "occurredAt": "2026-01-01T09:00:00.000Z",
  "data": {
    "message": "ping"
  }
}

Rozmowy bota

bot_call.completed

Rozmowa bota dobiegła końca (odebrana, brak odpowiedzi, poczta głosowa, błąd lub zawieszenie).

Bloki opcjonalne (dane osobowe, włączasz je per webhook):Numery telefonówWynik rozmowyTranskrypcjaKontakt
Przykładowa koperta
{
  "id": "evt_sample_bot_call_completed",
  "type": "bot_call.completed",
  "apiVersion": "v1",
  "occurredAt": "2026-01-01T09:00:00.000Z",
  "data": {
    "dispatchId": "00000000-0000-0000-0000-000000000001",
    "botId": "00000000-0000-0000-0000-000000000002",
    "attemptId": "00000000-0000-0000-0000-000000000003",
    "status": "completed",
    "endReason": "bot_hangup",
    "durationSec": 74,
    "revision": 1767258000000,
    "hasTranscript": true,
    "hasRecording": true,
    "links": {
      "self": "/api/external/v1/bot-sessions/00000000-0000-0000-0000-000000000001",
      "transcript": "/api/external/v1/bot-sessions/00000000-0000-0000-0000-000000000001/transcript",
      "recording": "/api/external/v1/bot-sessions/00000000-0000-0000-0000-000000000001/recording"
    },
    "phoneNumbers": {
      "to": "+48123456789"
    },
    "outcome": {
      "confirmed": true,
      "note": "PRZYKŁAD / SAMPLE — Jan Testowy potwierdził termin."
    },
    "contact": {
      "contactId": "00000000-0000-0000-0000-000000000008"
    }
  }
}

Rozmowy

call.completed

Rozmowa obsłużona przez człowieka dobiegła końca.

Bloki opcjonalne (dane osobowe, włączasz je per webhook):Numery telefonówWynik rozmowyTranskrypcjaKontakt
Przykładowa koperta
{
  "id": "evt_sample_call_completed",
  "type": "call.completed",
  "apiVersion": "v1",
  "occurredAt": "2026-01-01T09:00:00.000Z",
  "data": {
    "callId": "00000000-0000-0000-0000-000000000004",
    "direction": "INBOUND",
    "status": "COMPLETED",
    "startedAt": "2026-01-01T09:00:00.000Z",
    "answeredAt": "2026-01-01T09:00:06.000Z",
    "endedAt": "2026-01-01T09:03:11.000Z",
    "durationSec": 185,
    "totalDurationSec": 191,
    "queueId": null,
    "voicemailDetected": false,
    "agent": {
      "userId": "00000000-0000-0000-0000-000000000009",
      "email": "[email protected]"
    },
    "revision": 1767258000000,
    "hasTranscript": true,
    "hasRecording": true,
    "links": {
      "self": "/api/external/v1/calls/00000000-0000-0000-0000-000000000004"
    },
    "phoneNumbers": {
      "from": "+48123456789",
      "to": "+48987654321"
    },
    "contact": {
      "contactId": "00000000-0000-0000-0000-000000000008"
    }
  }
}

call.updated

Korekta wcześniej zgłoszonej rozmowy — np. reklasyfikacja poczty głosowej zmieniła werdykt.

Bloki opcjonalne (dane osobowe, włączasz je per webhook):Numery telefonówWynik rozmowyTranskrypcjaKontakt
Przykładowa koperta
{
  "id": "evt_sample_call_updated",
  "type": "call.updated",
  "apiVersion": "v1",
  "occurredAt": "2026-01-01T09:00:00.000Z",
  "data": {
    "callId": "00000000-0000-0000-0000-000000000004",
    "changed": [
      "status",
      "voicemailDetected"
    ],
    "status": "NO_ANSWER",
    "voicemailDetected": true,
    "revision": 1767258000000,
    "links": {
      "self": "/api/external/v1/calls/00000000-0000-0000-0000-000000000004"
    }
  }
}

call.transcript.ready

Transkrypcja rozmowy jest gotowa.

Bloki opcjonalne (dane osobowe, włączasz je per webhook):Numery telefonówWynik rozmowyTranskrypcjaKontakt
Przykładowa koperta
{
  "id": "evt_sample_call_transcript_ready",
  "type": "call.transcript.ready",
  "apiVersion": "v1",
  "occurredAt": "2026-01-01T09:00:00.000Z",
  "data": {
    "callId": "00000000-0000-0000-0000-000000000004",
    "transcriptionId": "00000000-0000-0000-0000-000000000005",
    "requestedLanguage": "pl",
    "detectedLanguage": "pl",
    "revision": 1767258000000,
    "links": {
      "self": "/api/external/v1/calls/00000000-0000-0000-0000-000000000004",
      "transcript": "/api/external/v1/calls/00000000-0000-0000-0000-000000000004/transcript"
    }
  }
}

call.analysis.completed

Analiza porozmowna została zakończona. Pole `insights.profile` wskazuje taksonomię, z której pochodzą wartości analizy.

Bloki opcjonalne (dane osobowe, włączasz je per webhook):Numery telefonówWynik rozmowyTranskrypcjaKontakt
Przykładowa koperta
{
  "id": "evt_sample_call_analysis_completed",
  "type": "call.analysis.completed",
  "apiVersion": "v1",
  "occurredAt": "2026-01-01T09:00:00.000Z",
  "data": {
    "callId": "00000000-0000-0000-0000-000000000004",
    "runId": "00000000-0000-0000-0000-000000000006",
    "runStatus": "COMPLETED",
    "insights": {
      "primaryIntent": "order_status",
      "category": "order_status",
      "payer": null,
      "outcome": "handled",
      "booking": "not_applicable",
      "callerSatisfaction": "satisfied",
      "unmetDemandPresent": false,
      "confidence": 0.86,
      "profile": "commercial"
    },
    "summary": "PRZYKŁAD / SAMPLE — Jan Testowy zapytał o status zamówienia; dostawa jutro.",
    "revision": 1767258000000,
    "links": {
      "self": "/api/external/v1/calls/00000000-0000-0000-0000-000000000004"
    }
  }
}

Zadania

task.created

Powstało zadanie, także sugerowane przez AI (uzasadnienie AI nigdy nie trafia do webhooka).

Bez danych osobowych.

Przykładowa koperta
{
  "id": "evt_sample_task_created",
  "type": "task.created",
  "apiVersion": "v1",
  "occurredAt": "2026-01-01T09:00:00.000Z",
  "data": {
    "taskId": "00000000-0000-0000-0000-000000000007",
    "title": "PRZYKŁAD / SAMPLE — oddzwoń do: Jan Testowy",
    "description": "Przykładowe zadanie z testowego webhooka. Nie jest realne.",
    "status": "TODO",
    "priority": "MEDIUM",
    "origin": "SYSTEM",
    "systemSource": "call_analysis",
    "suggestionConfidence": 0.72,
    "suggestionOutcome": null,
    "dueDate": "2026-01-02T09:00:00.000Z",
    "createdAt": "2026-01-01T09:00:00.000Z",
    "assignedTo": {
      "userId": "00000000-0000-0000-0000-000000000009",
      "email": "[email protected]"
    },
    "suggestedAssignee": null,
    "linked": {
      "telephonyCallId": "00000000-0000-0000-0000-000000000004",
      "dispatchId": null,
      "contactId": "00000000-0000-0000-0000-000000000008",
      "patientId": null,
      "companyId": null
    },
    "revision": 1767258000000,
    "links": {
      "self": "/api/external/v1/tasks/00000000-0000-0000-0000-000000000007"
    }
  }
}

task.updated

Zmiana w zadaniu — status, osoba, priorytet lub termin.

Bez danych osobowych.

Przykładowa koperta
{
  "id": "evt_sample_task_updated",
  "type": "task.updated",
  "apiVersion": "v1",
  "occurredAt": "2026-01-01T09:00:00.000Z",
  "data": {
    "taskId": "00000000-0000-0000-0000-000000000007",
    "title": "PRZYKŁAD / SAMPLE — oddzwoń do: Jan Testowy",
    "description": "Przykładowe zadanie z testowego webhooka. Nie jest realne.",
    "status": "IN_PROGRESS",
    "priority": "HIGH",
    "origin": "SYSTEM",
    "systemSource": "call_analysis",
    "suggestionConfidence": 0.72,
    "suggestionOutcome": "ACCEPTED",
    "dueDate": "2026-01-02T09:00:00.000Z",
    "createdAt": "2026-01-01T09:00:00.000Z",
    "assignedTo": {
      "userId": "00000000-0000-0000-0000-000000000009",
      "email": "[email protected]"
    },
    "suggestedAssignee": null,
    "linked": {
      "telephonyCallId": "00000000-0000-0000-0000-000000000004",
      "dispatchId": null,
      "contactId": "00000000-0000-0000-0000-000000000008",
      "patientId": null,
      "companyId": null
    },
    "revision": 1767258000000,
    "changed": [
      "status",
      "priority"
    ],
    "links": {
      "self": "/api/external/v1/tasks/00000000-0000-0000-0000-000000000007"
    }
  }
}

task.deleted

Zadanie zostało usunięte.

Bez danych osobowych.

Przykładowa koperta
{
  "id": "evt_sample_task_deleted",
  "type": "task.deleted",
  "apiVersion": "v1",
  "occurredAt": "2026-01-01T09:00:00.000Z",
  "data": {
    "taskId": "00000000-0000-0000-0000-000000000007",
    "deletedAt": "2026-01-01T09:00:00.000Z",
    "links": {
      "self": "/api/external/v1/tasks/00000000-0000-0000-0000-000000000007"
    }
  }
}

task.suggestion.resolved

Sugestia zadania została przyjęta, odrzucona albo wygasła.

Bez danych osobowych.

Przykładowa koperta
{
  "id": "evt_sample_task_suggestion_resolved",
  "type": "task.suggestion.resolved",
  "apiVersion": "v1",
  "occurredAt": "2026-01-01T09:00:00.000Z",
  "data": {
    "taskId": "00000000-0000-0000-0000-000000000007",
    "resolution": "accepted",
    "suggestionOutcome": "ACCEPTED",
    "resolvedAt": "2026-01-01T09:00:00.000Z",
    "revision": 1767258000000,
    "links": {
      "self": "/api/external/v1/tasks/00000000-0000-0000-0000-000000000007"
    }
  }
}

Sprawy

case.created

Powstała sprawa klienta. Dostępne tylko dla organizacji z włączonymi sprawami.

Bez danych osobowych.

Przykładowa koperta
{
  "id": "evt_sample_case_created",
  "type": "case.created",
  "apiVersion": "v1",
  "occurredAt": "2026-01-01T09:00:00.000Z",
  "data": {
    "caseId": "00000000-0000-0000-0000-000000000011",
    "number": 1042,
    "title": "PRZYKŁAD / SAMPLE — zgłoszenie od: Jan Testowy",
    "description": "Przykładowa sprawa z testowego webhooka. Nie jest realna.",
    "status": "NEW",
    "priority": "MEDIUM",
    "categoryKey": "service_request",
    "source": "CALL",
    "topicId": "00000000-0000-0000-0000-000000000013",
    "contactId": "00000000-0000-0000-0000-000000000008",
    "companyId": "00000000-0000-0000-0000-000000000012",
    "assignedTo": {
      "userId": "00000000-0000-0000-0000-000000000009",
      "email": "[email protected]"
    },
    "createdAt": "2026-01-01T09:00:00.000Z",
    "statusChangedAt": "2026-01-01T09:00:00.000Z",
    "dueAt": "2026-01-03T09:00:00.000Z",
    "firstResponseAt": null,
    "resolvedAt": null,
    "closedAt": null,
    "linkSummary": {
      "total": 1,
      "items": [
        {
          "resourceType": "TELEPHONY_CALL",
          "resourceId": "00000000-0000-0000-0000-000000000004"
        }
      ]
    },
    "revision": 1767258000000,
    "links": {
      "self": "/api/external/v1/cases/00000000-0000-0000-0000-000000000011"
    }
  }
}

case.updated

Zmiana w sprawie — status, osoba, priorytet, kategoria, termin, powiązane rekordy albo nowa notatka; pole `changed` wskazuje, co się zmieniło (treść notatek nigdy nie trafia do webhooka).

Bez danych osobowych.

Przykładowa koperta
{
  "id": "evt_sample_case_updated",
  "type": "case.updated",
  "apiVersion": "v1",
  "occurredAt": "2026-01-01T09:00:00.000Z",
  "data": {
    "caseId": "00000000-0000-0000-0000-000000000011",
    "number": 1042,
    "title": "PRZYKŁAD / SAMPLE — zgłoszenie od: Jan Testowy",
    "description": "Przykładowa sprawa z testowego webhooka. Nie jest realna.",
    "status": "IN_PROGRESS",
    "priority": "HIGH",
    "categoryKey": "service_request",
    "source": "CALL",
    "topicId": "00000000-0000-0000-0000-000000000013",
    "contactId": "00000000-0000-0000-0000-000000000008",
    "companyId": "00000000-0000-0000-0000-000000000012",
    "assignedTo": {
      "userId": "00000000-0000-0000-0000-000000000009",
      "email": "[email protected]"
    },
    "createdAt": "2026-01-01T09:00:00.000Z",
    "statusChangedAt": "2026-01-01T10:00:00.000Z",
    "dueAt": "2026-01-03T09:00:00.000Z",
    "firstResponseAt": null,
    "resolvedAt": null,
    "closedAt": null,
    "linkSummary": {
      "total": 1,
      "items": [
        {
          "resourceType": "TELEPHONY_CALL",
          "resourceId": "00000000-0000-0000-0000-000000000004"
        }
      ]
    },
    "revision": 1767258000000,
    "links": {
      "self": "/api/external/v1/cases/00000000-0000-0000-0000-000000000011"
    },
    "changed": [
      "status",
      "priority"
    ]
  }
}

case.deleted

Sprawa została usunięta.

Bez danych osobowych.

Przykładowa koperta
{
  "id": "evt_sample_case_deleted",
  "type": "case.deleted",
  "apiVersion": "v1",
  "occurredAt": "2026-01-01T09:00:00.000Z",
  "data": {
    "caseId": "00000000-0000-0000-0000-000000000011",
    "number": 1042,
    "deletedAt": "2026-01-01T09:00:00.000Z",
    "links": {
      "self": "/api/external/v1/cases/00000000-0000-0000-0000-000000000011"
    }
  }
}

Webhooki

webhook_endpoint.auto_disabled

Webhook został wyłączony automatycznie po serii nieudanych dostarczeń.

Bez danych osobowych.

Przykładowa koperta
{
  "id": "evt_sample_webhook_endpoint_auto_disabled",
  "type": "webhook_endpoint.auto_disabled",
  "apiVersion": "v1",
  "occurredAt": "2026-01-01T09:00:00.000Z",
  "data": {
    "endpointId": "00000000-0000-0000-0000-000000000010",
    "endpointOrigin": "https://example.com",
    "consecutiveFailures": 20,
    "lastFailureAt": "2026-01-01T09:00:00.000Z"
  }
}