> ## Documentation Index
> Fetch the complete documentation index at: https://docs.orbit.devotel.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Wfm

## Overview summary response shape

`GET /api/v1/wfm/summary` aggregates the whole scheduling overview in one response. The blocks below are the same shape the endpoint returns — every count is as-of-query-time, mirroring the list endpoints it reads from, so the KPI chip on the dashboard and the drill-in page it links to never disagree.

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": {
      "date": "2026-08-27",
      "generated_at": "2026-08-27T13:42:11.802Z",
      "operating_date_is_override": false,
      "forecast": {
        "channels": 2,
        "intervals": 96,
        "required_agent_minutes": 14820,
        "by_channel": [
          { "channel": "voice", "intervals": 48, "required_agent_minutes": 9410 },
          { "channel": "sms", "intervals": 48, "required_agent_minutes": 5410 }
        ]
      },
      "staffing": {
        "agents_scheduled": 12,
        "assignments": 14,
        "scheduled_minutes": 6520
      },
      "open_shifts": {
        "open_count": 3,
        "pending_bids": 1
      },
      "requests": {
        "pending_total": 5,
        "by_type": [
          { "type": "time_off", "count": 3 },
          { "type": "shift_swap", "count": 2 }
        ]
      },
      "adherence": {
        "open_events": 4,
        "non_adherent_open_events": 1,
        "unevaluated_open_events": 2
      },
      "overtime": {
        "open_offers": 2
      },
      "vto": {
        "open_offers": 1
      },
      "exceptions": {
        "pending_count": 6
      }
    },
    "meta": {
      "request_id": "req_9f1c4a7b2d8e",
      "timestamp": "2026-08-27T13:42:11.802Z"
    }
  }
  ```
</ResponseExample>

Field semantics:

* `operating_date_is_override` — `true` when you passed `?date=YYYY-MM-DD` explicitly; `false` when the date resolved to your tenant's local operating day (the same resolution the intraday staffing and adherence panels use).
* `forecast` — `null` when no forecast rows exist for the day; otherwise per-channel required agent-minutes (`required_agents × interval`), resolved with the same math the forecast scheduler writes.
* `staffing` — `null` when no roster exists for the day; otherwise the distinct agents rostered, assignment rows, and shift-window minutes (paid-included) resolved in each shift's local timezone — matching the adherence scorer exactly across DST boundaries and midnight-spanning shifts.
* `requests` — the agent self-serve queue; scoped to the caller. Managers ("owner"/"admin") see org-wide counts; agents see only their own pending requests — the same scoping `/wfm/requests` applies, so the chip total and the page count cannot diverge.
* `adherence` — live open events right now, split into currently non-adherent and awaiting-the-scorer buckets.
* `exceptions` — adherence exceptions pending supervisor review only; approved/denied/cancelled close them, mirroring `/wfm/adherence-exceptions`.
