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" }
}