Wire Format Examples
Complete JSON pairs — Request + Reply for each scenario
1. Approval — Web + Email, custom ActionName
Single assignee, two channels, one presentation step. Actor adds a comment then clicks “approveOrder”.
REQUEST — HilPresentationRequestEnvelope
{
"Session": {
"EngageSessionID": 1042,
"NodeKey": "approve_manager",
"WorkflowID": "wf_onboarding_001",
"TenantID": 5,
"CorrelationID": "a3f7c912-0b44-4e1d-9f28-1c5d83ab2e47",
"ReplyToID": null,
"ResumeCallbackURL": "/api/hil/respond/1042"
},
"HilType": "approval",
"Title": "Approve: New Employee Onboarding — John Doe",
"Description": "Please review and approve or reject.",
"Deadline": "2026-06-25T17:00:00Z",
"Assignees": [
{ "ActorID": "47", "ActorType": "user", "DisplayName": "Jane Smith", "Email": "jane@company.com" }
],
"Channels": [
{ "ChannelType": "web", "Name": "Work Desk", "ChannelFormat": "modal", "IsPrimary": true },
{ "ChannelType": "email", "Name": "Email Notification", "ChannelFormat": "html-email",
"IsPrimary": false, "ChannelConfig": { "ToAddress": "jane@company.com", "TemplateID": "hil_approval_v2" } }
],
"Presentations": [
{
"PresentationType": "approval", "Order": 1,
"SummaryText": "John Doe — Junior Developer. Start: 2026-07-01.",
"ContextDocURL": "https://hr.company.com/onboarding/john-doe",
"Actions": [],
"CustomData": { "Department": "Engineering", "Salary": 85000 }
}
],
"Actions": [
{ "ActionKey": "approveOrder", "Label": "Approve", "Style": "primary", "Order": 1 },
{ "ActionKey": "rejectOrder", "Label": "Reject", "Style": "danger", "RequiresInput": true, "InputLabel": "Reason", "Order": 2 },
{ "ActionKey": "escalateOrder", "Label": "Escalate", "Style": "secondary", "Order": 3 }
],
"ReplyOptions": { "EnableSteppedDataReturn": true, "EnableFlatDataReturn": true },
"CustomData": { "InitiatedBy": "HR System", "RequestDate": "2026-06-20T09:00:00Z" },
"Metadata": { "SchemaVersion": "1.3" }
}
REPLY — HilPresentationReplyEnvelope
{
"EngageSessionID": 1042,
"CorrelationID": "a3f7c912-0b44-4e1d-9f28-1c5d83ab2e47",
"ReplyToID": null,
"Responders": [
{ "ActorID": "47", "ActorType": "user", "DisplayName": "Jane Smith", "ResponderRole": "primary" }
],
"Decision": "approved",
"ActionName": "approveOrder",
"DecidedAt": "2026-06-23T14:30:00Z",
"Channel": "web",
"Actions": [
{ "ActionType": "comment", "ActionName": "", "ActionLabel": "Added comment", "PerformedBy": "47", "PerformedAt": "2026-06-23T14:29:45Z" },
{ "ActionType": "approve", "ActionName": "approveOrder", "ActionLabel": "Order approved", "PerformedBy": "47", "PerformedAt": "2026-06-23T14:30:00Z" }
],
"Payload": {
"DataSteps": [
{ "StepOrder": 1, "PresentationType": "approval", "ActionName": "approveOrder",
"Data": { "Comment": "Looks good. Approved for Q3." }, "CompletedAt": "2026-06-23T14:30:00Z" }
],
"Data": { "Comment": "Looks good. Approved for Q3." },
"Comment": "Looks good. Approved for Q3."
}
}
2. Form — Multi-step with per-step actions
Two sequential form steps. Step 1 shows “Next / Cancel”; Step 2 shows “Submit / Cancel”. Both DataSteps[] and Data{} populated. Delegate responder included.
REQUEST — HilPresentationRequestEnvelope
{
"Session": {
"EngageSessionID": 1055,
"NodeKey": "collect_review_data",
"WorkflowID": "wf_review_002",
"TenantID": 5,
"CorrelationID": "b9d2e541-3c11-4f8a-bc90-7e4f12cd3b58",
"ReplyToID": null,
"ResumeCallbackURL": "/api/hil/respond/1055"
},
"HilType": "form",
"Title": "Annual Employee Review",
"Assignees": [
{ "ActorID": "23", "ActorType": "user", "DisplayName": "Mark Lee" }
],
"Channels": [
{ "ChannelType": "web", "Name": "Work Desk", "ChannelFormat": "modal", "IsPrimary": true }
],
"Presentations": [
{
"PresentationType": "form", "Order": 1,
"Title": "Step 1 — Personal Details",
"FormID": 13005,
"PrePopulate": { "FirstName": "John", "Department": "Engineering" },
"Actions": [
{ "ActionKey": "next", "Label": "Next", "Style": "primary", "Order": 1 },
{ "ActionKey": "cancelled", "Label": "Cancel", "Style": "ghost", "Order": 2 }
],
"CustomData": {}
},
{
"PresentationType": "form", "Order": 2,
"Title": "Step 2 — Performance Rating",
"FormID": 13006,
"PrePopulate": { "ReviewYear": "2025" },
"Actions": [
{ "ActionKey": "submitted", "Label": "Submit", "Style": "primary", "Order": 1 },
{ "ActionKey": "cancelled", "Label": "Cancel", "Style": "ghost", "Order": 2 }
],
"CustomData": { "LastYearRating": "4", "TargetsMet": true }
}
],
"Actions": [
{ "ActionKey": "cancelled", "Label": "Cancel", "Style": "ghost", "Order": 1 }
],
"ReplyOptions": { "EnableSteppedDataReturn": true, "EnableFlatDataReturn": true },
"CustomData": { "EmployeeID": "EMP-00123", "ReviewCycleID": "RC-2025-Q4" }
}
REPLY — HilPresentationReplyEnvelope
{
"EngageSessionID": 1055,
"CorrelationID": "b9d2e541-3c11-4f8a-bc90-7e4f12cd3b58",
"ReplyToID": null,
"Responders": [
{ "ActorID": "23", "ActorType": "user", "DisplayName": "Mark Lee", "ResponderRole": "primary" },
{ "ActorID": "11", "ActorType": "user", "DisplayName": "Sarah Kim", "ResponderRole": "delegate" }
],
"Decision": "submitted",
"ActionName": "submitted",
"DecidedAt": "2026-06-23T15:20:00Z",
"Channel": "web",
"Payload": {
"DataSteps": [
{
"StepOrder": 1, "PresentationType": "form", "ActionName": "next",
"Data": { "FirstName": "John", "LastName": "Doe", "Department": "Engineering" },
"CompletedAt": "2026-06-23T15:12:00Z"
},
{
"StepOrder": 2, "PresentationType": "form", "ActionName": "submitted",
"Data": { "ReviewYear": "2025", "Rating": "4", "Comments": "Exceeded targets." },
"CompletedAt": "2026-06-23T15:20:00Z"
}
],
"Data": {
"FirstName": "John", "LastName": "Doe", "Department": "Engineering",
"ReviewYear": "2025", "Rating": "4", "Comments": "Exceeded targets."
}
}
}
3. Chat — Slack, ReplyToID threading
Chat trigger via Slack. ReplyToID references a prior Slack message for thread continuity.
REQUEST — HilPresentationRequestEnvelope
{
"Session": {
"EngageSessionID": 1067,
"NodeKey": "confirm_budget",
"WorkflowID": "wf_procurement_007",
"TenantID": 5,
"CorrelationID": "c1a8f703-9e55-4d2b-a741-3b6e90ef4c21",
"ReplyToID": "MSG-SLACK-1750598400.000050",
"ResumeCallbackURL": "/api/hil/respond/1067"
},
"HilType": "chat",
"Title": "Budget Confirmation Required",
"Assignees": [
{ "ActorID": "U09XK2M", "ActorType": "user", "DisplayName": "Alex" }
],
"Channels": [
{ "ChannelType": "slack", "Name": "Slack DM", "ChannelFormat": "slack-blocks",
"IsPrimary": true, "ChannelConfig": { "SlackChannelID": "C08SLACK001" } }
],
"Presentations": [
{
"PresentationType": "chat", "Order": 1,
"PromptMessage": "Confirm Q3 budget allocation of $45,000 for Engineering.",
"Actions": [],
"CustomData": { "BudgetLine": "ENG-Q3-2026", "CurrentBalance": 62000 }
}
],
"Actions": [
{ "ActionKey": "confirmBudget", "Label": "Reply", "Style": "primary",
"RequiresInput": true, "InputLabel": "Your reply", "Order": 1 }
],
"ReplyOptions": { "EnableSteppedDataReturn": true, "EnableFlatDataReturn": true }
}
REPLY — HilPresentationReplyEnvelope
{
"EngageSessionID": 1067,
"CorrelationID": "c1a8f703-9e55-4d2b-a741-3b6e90ef4c21",
"ReplyToID": "MSG-SLACK-1750598400.000050",
"Responders": [
{ "ActorID": "U09XK2M", "ActorType": "user", "DisplayName": "Alex", "ResponderRole": "primary" }
],
"Decision": "replied",
"ActionName": "confirmBudget",
"DecidedAt": "2026-06-23T16:00:00Z",
"Channel": "slack",
"Actions": [
{ "ActionType": "reply", "ActionName": "confirmBudget",
"ActionLabel": "Budget confirmed",
"PerformedBy": "U09XK2M", "PerformedAt": "2026-06-23T16:00:00Z",
"ActionData": { "SlackMessageTS": "1750600800.000100" } }
],
"Payload": {
"DataSteps": [
{
"StepOrder": 1, "PresentationType": "chat", "ActionName": "confirmBudget",
"Data": { "ReplyText": "Yes, confirmed. $45,000 is correct for Q3." },
"CompletedAt": "2026-06-23T16:00:00Z"
}
],
"Data": { "ReplyText": "Yes, confirmed. $45,000 is correct for Q3." },
"ReplyText": "Yes, confirmed. $45,000 is correct for Q3.",
"ThreadID": "C08SLACK001"
},
"Metadata": { "SlackTeamID": "T01TEAM001" }
}