---
title: "Checkin status counts"
method: GET
path: "/v1/checkins/status-counts"
tags: ["Checkins"]
---

# Checkin status counts

`GET /v1/checkins/status-counts`

## Request

- Base URL: `https://api.officina.it`
- URL: `https://api.officina.it/v1/checkins/status-counts`
- Auth: HTTP bearer

Returns how many accettazioni sit in each state, for the tab counters
on the checkins list (web checkin-list StatusCount parity). Accepts
the same filters as the list (minus status/pagination) so the numbers
always match what the list shows:

q                   optional substring match on customer/vehicle/plate
from, to, preset    date filter — same semantics as
GET /v1/checkins; the applied range is echoed
back in `date_filter`

## Query parameters

- `from` string
- `preset` 'rel30' | 'rel90' | 'rel365' | 'year' | 'Q1' | 'Q2' | 'Q3' | 'Q4' | 'month' | 'custom' | 'all'
- `q` string
- `to` string

## Response `200`

success

- CheckinStatusCounts: CheckinStatusCounts: tab counters for the checkins list (web checkin-list StatusCount parity), computed with the same q + date filters as the list.
  - `object` string, required: always "checkin_status_counts"
  - `active` integer, required
  - `completed` integer, required
  - `date_filter` DateFilter, required: The effective date range the server applied to a date-scoped list request, echoed on the list envelope so clients can render the active filter without re-deriving it. A request that sends no `from`/`to`/`preset` gets the default window, the last 12 months (`rel365`); nothing is carried over between requests. Relative presets are resolved here to concrete dates and roll forward over time.
    - `object` 'date_filter', required
    - `preset` 'rel30' | 'rel90' | 'rel365' | 'year' | 'Q1' | 'Q2' | 'Q3' | 'Q4' | 'month' | 'custom' | 'all', required: Effective selection label. Relative (`rel30`/`rel90`/`rel365`) and absolute (`year`/`Q1`-`Q4`/`month`/`custom`) carry `from`/`to`; `all` omits them.
    - `from` string, date: Inclusive lower bound (YYYY-MM-DD). Omitted when `preset` is `all`.
    - `to` string, date: Inclusive upper bound (YYYY-MM-DD). Omitted when `preset` is `all`.

## Other responses

- `401`: Missing, malformed, expired, or wrong-audience bearer token.
- `402`: The company has no active subscription, or its plan does not include API access. API access is included in the Business and Illimitato plans.
- `403`: The authenticated user lacks the required permission.
- `422`: A request field is missing or invalid (fast-fail).
- `500`: Unhandled server error. Detail is logged, not exposed.

---

[API](https://skmtc.dev/officina/apis/officina-it-api.md) · [All operations](https://skmtc.dev/officina/apis/officina-it-api/llms.txt) · [OpenAPI document](https://skmtc.dev/officina/apis/officina-it-api/revisions/7da3fccfe551?raw)
