Fires when a support case changes — either its status (via a Jira webhook) or its assignee. The two triggers emit different eventData shapes under the same eventType, support_case_status_updated. ownerEntity is the Affiliate; targetEntity is the Case.
Field guarantees
| Field | Guarantee |
|---|---|
eventData (status-change firing) | ⚠️ Conditional — 6 case fields, with the external/Jira ones falling back to "" |
eventData (assignee-change firing) | ⚠️ Conditional — a different shape keyed on assignee fields |
| Case fields in v2 | ✅ Now delivered — support_case_id, support_case_status, support_case_name, support_case_category, external_case_identifier, external_case_status, external_case_url |
Two shapes under the same event type. Status-change firings carryinternalCaseStatus/externalCaseStatus, while assignee-change firings carryassignedJiraAccountId/assignedDisplayNameinstead. Both now include case-identifying fields in v2. Assignee details (assignedUser,assignedDisplayName) are not included in v2 (PHI-adjacent).
v1 payload (legacy) — status-change firing
The more common firing, from a Jira webhook changing the case's status. eventData mirrors the key case fields.
{
"ownerEntityModel": "Affiliate",
"targetEntityModel": "Case",
"deleted": false,
"ownerEntity": { "id": "aff::81fdb635-xxxx-xxxx-xxxx-3568ba573d7d", "name": "<AFFILIATE_NAME>", "…": "affiliate document" },
"targetEntity": {
"externalCaseIdentifier": "SUP-4821",
"externalCaseUrl": "https://jira.example.com/browse/SUP-4821",
"externalCaseStatus": "In Progress",
"internalCaseStatus": "Affiliate Review",
"assignedUser": "usr::3f6d2c1b-xxxx-xxxx-xxxx-1c2d3e4f5a6b",
"assignedDisplayName": "Jordan Reyes",
"targetEntityModel": "Order",
"targetEntityId": "order::7a2c1e3d-xxxx-xxxx-xxxx-13f5e2a55f21",
"id": "case::c19d2e4a-xxxx-xxxx-xxxx-6f2b8d5a11c3"
},
"eventTitle": "Support Case Status Updated",
"eventDescription": "Support case status updated to In Progress",
"eventType": "support_case_status_updated",
"eventData": {
"internalCaseId": "case::c19d2e4a-xxxx-xxxx-xxxx-6f2b8d5a11c3",
"internalCaseStatus": "Affiliate Review",
"externalCaseIdentifier": "SUP-4821",
"externalCaseStatus": "In Progress",
"externalCaseUrl": "https://jira.example.com/browse/SUP-4821",
"internalCaseCreatorId": "usr::a53e1c4b-xxxx-xxxx-xxxx-a6595eb8c3f4"
},
"_id": "event::7d4d747b-xxxx-xxxx-xxxx-9ba306c833d5",
"createdAt": "2026-06-26T09:44:31.904Z",
"updatedAt": "2026-06-26T09:44:31.904Z",
"id": "event::7d4d747b-xxxx-xxxx-xxxx-9ba306c833d5"
}eventData field | Type | Always? | Notes |
|---|---|---|---|
internalCaseId, internalCaseStatus, internalCaseCreatorId | string | ✅ (status firing) | Present on the status-change firing |
externalCaseIdentifier, externalCaseStatus, externalCaseUrl | string | ⚠️ | "" when the Jira response omits them |
Assignee-change firing
When only the assignee changes, the same eventType fires with a different eventData, keyed on assignee fields (assignedJiraAccountId, assignedDisplayName, assignedUser) rather than the status fields above. Detect it by the presence of assignee keys.
v2 payload (status-change firing)
Sanitized envelope with case-identifying fields.
{
"event_type": "support_case_status_updated",
"event_id": "event::7d4d747b-xxxx-xxxx-xxxx-9ba306c833d5",
"api_version": "2026-08-09",
"timestamp": "2026-05-30T14:00:00.000Z",
"affiliate_id": "aff::81fdb635-xxxx-xxxx-xxxx-3568ba573d7d",
"patient_marketing_consent": false,
"is_returning_patient": false,
"support_case_id": "case::c19d2e4a-xxxx-xxxx-xxxx-6f2b8d5a11c3",
"support_case_status": "Affiliate Review",
"support_case_name": "Order Issue - Payment Failed",
"support_case_category": "Billing",
"order_id": "order::7a2c1e3d-xxxx-xxxx-xxxx-13f5e2a55f21",
"external_case_identifier": "SUP-4821",
"external_case_status": "In Progress",
"external_case_url": "https://jira.example.com/browse/SUP-4821"
}| Field | Delivered in v2 | Notes |
|---|---|---|
| Envelope | ✅ | |
| Patient identifiers | ⚠️ | Affiliate-owned event — patient_id/patient_external_id absent; the boolean enrichment fields (patient_marketing_consent, is_returning_patient) are still present, defaulting to false |
support_case_id, support_case_status, support_case_name, support_case_category | ✅ | Case-identifying fields now delivered in v2 |
external_case_identifier, external_case_status, external_case_url | ⚠️ | Jira integration fields; may be empty if Jira is not configured |
Assignee details (assignedUser, assignedDisplayName, assignedJiraAccountId) | ⛔ | Not delivered in v2 (PHI-adjacent) — present in v1 on assignee-change firings only |
