Webhooks

shift.paid event

The payload is the resource's current state at delivery time, rebuilt per attempt. The POST body is a signed envelope { id, event, data }, where data is the schema below. Verify the X-HireArt-Signature header before trusting the body — see the Webhooks section overview for how.

postWebhookshift.paid

Payload

idstring required

Stable id for this delivery; the same id repeats on every retry, so use it to dedupe.

eventstring required

The event type, e.g. assignment.updated.

Example payload

{
  "id": "d47e1f8a-3c2b-4a90-9f6d-8b21c4e5f0a1:42",
  "event": "shift.paid",
  "data": {
    "id": "97811bd6-539f-4a58-8be3-6bbe3acfdae0",
    "worker_id": "1ccf6e61-376c-47d3-8a63-a8ee112e83a2",
    "assignment_id": "1aecf7c8-9d70-433a-9bb5-473cf4907a86",
    "pay_cycle_id": "1aecf7c8-9d70-433a-9bb5-473cf4907a86",
    "status": "draft",
    "description": "Handle inbound customer inquiries via phone, email, and chat.",
    "reference_number": "PO-12345",
    "submission": {
      "submitted_at": "2024-06-15T14:30:00Z"
    },
    "hours": {
      "total_hours": 7.5,
      "payable_hours": 15.5,
      "reported_by_employee": {
        "break": 0.5,
        "holiday_non_worked": 8,
        "starts_at": "2024-06-15T14:30:00Z",
        "ends_at": "2024-06-15T14:30:00Z"
      },
      "reported_by_employer": {
        "break_override": 0.5,
        "holiday_non_worked_override": 8,
        "total_hours_worked_override": 7.5
      }
    },
    "approval": {
      "approved_at": "2024-06-15T14:30:00Z",
      "approved_by": {
        "id": "97811bd6-539f-4a58-8be3-6bbe3acfdae0",
        "full_name": "Jane Doe",
        "first_name": "Jane",
        "last_name": "Doe",
        "email": "jane.doe@example.com",
        "phone": "+1 (555) 555-5555"
      }
    }
  }
}

Response

Return any 2xx to acknowledge receipt; non-2xx or a timeout is retried.

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.