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

# Home, search and support

> Read Home metrics, search product records, and contact support.

<Warning>
  This contract belongs to the Worker development preview. It is not served by the public API yet.
</Warning>

`GET /v1/overview` returns organization-wide Home metrics and ordered next-step objects in one
request. Reporting periods and timezone are included. Amounts are exact decimal strings; different
currencies remain separate and incomplete totals can be null. Coverage means agreement coverage,
not completed checks. Each next step includes its own counts and, for agreement actions, an `agreement_id` when there is exactly one target (otherwise null). Setup and upload actions contain only `type`. This read starts no work.

Monetary metrics share the same structure: `{ total: [{ currency_code, amount }], recent: [{ currency_code, amount }] }`.
This applies to `invoice_spend`, `claims.awaiting`, `claims.refunded`, and `alerts.pending.value`.
`recent` uses `periods.recent`; `total` covers all currently applicable records.
Awaiting claims and open alerts contain one organization-currency entry. Invoice spend and
refunds retain separate currency buckets; an empty array means no matching records.
Amounts remain exact decimal strings, or null when a contributing amount is unknown.

Pending alert counts and monetary values are grouped under `alerts.pending`. Active-check status
and agreement coverage are internal inputs to next-step selection, not top-level overview fields.
The `add_supplier_agreements` step carries its own `coverage_ratio` when applicable.

`GET /v1/search?query=acme` supplies command-palette results and assistant mentions. Narrow results
with `types=agreement,invoice,alert,topic,claim` and `limit_per_type` (1–20, default 5). Exact matches
rank before prefixes and substrings. Results include record identities and context for building
links; no frontend URLs or pagination are returned. Both reads require Read access.

`POST /v1/support/contact` requires Write and accepts a message plus up to five base64 attachments
of at most 4.5 MiB each. This route permits a 32 MiB JSON body. The authenticated user and active
organization determine the sender; callers cannot choose a recipient. Success means accepted by
the email provider. Supply an `Idempotency-Key` and reuse it with identical input after a timeout
or lost response, within 24 hours. Without a key, retrying an uncertain send can produce duplicates.

See the generated endpoint pages for the full inputs, outputs and errors.
