---
title: "List available reports with their parameter schemas."
method: GET
path: "/Reports"
tags: ["Reports"]
---

# List available reports with their parameter schemas.

`GET /Reports`

## Request

- Base URL: `https://api.clinicos.vet/backend/business`
- URL: `https://api.clinicos.vet/backend/business/Reports`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/docs/Reports/get.ts> (a function with typed inputs; its response is checked against the schema)

## Response `200`

OK

- ReportDescriptor[]
  - `key` string
  - `title` string
  - `description` string
  - `fileSlug` string: Filename stem for downloads, e.g. "BI-Report".
  - `audience` string[]: Intended readers, e.g. ["Owner", "Practice Manager"].
  - `parameters` ReportParameterDescriptor[]
    - `name` string
    - `label` string
    - `type` string: "select" | "string" | "number" | "client" | "item" | "period" — drives the parameter form and tool validation. `client` renders the app's shared client picker rather than a text box. The value on the wire is still a client id string, so nothing downstream changes: it exists because a report keyed on a client is otherwise only runnable by pasting a UUID (ITE-747). `item` renders a catalog item picker scoped by the report's `itemType` parameter (a service, inventory item, charge, retail item, kit or vaccine type). Like `client`, the value on the wire is just the picked id (PAW-842). `period` is a `select` of the preset tokens in List&lt;string&gt; ReportParameterDescriptor.Options plus one extra choice: a specific calendar month, sent as `YYYY-MM`. The value on the wire is still the same single period string the providers already take — `MetricPeriod.Parse` has always resolved `YYYY-MM` to that month's days, so nothing downstream changes. A plain select could only ever ask for period-to-date, which made closing the books on a finished month impossible from the UI (ITE-777).
    - `default` string, nullable
    - `options` string[]
    - `required` boolean: The report cannot render without this parameter, so the UI must collect it before asking for a preview rather than firing a request that is certain to fail. Almost every report defaults its parameters in the provider (Daily Close falls back to yesterday, and so on) and so renders fine with none supplied. `client-statement` is the exception — it throws — and selecting it in the catalog produced an immediate 400 with no way to recover from inside the panel (ITE-747).

## Changes

- **2026-09-11** `503cd0546309`: 3 info
  - added the optional property `items/parameters/items/required` to the response with the `200` status (media type: text/plain)
  - added the optional property `items/parameters/items/required` to the response with the `200` status (media type: application/json)
  - added the optional property `items/parameters/items/required` to the response with the `200` status (media type: text/json)

[Operation history](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/changes/Reports/get.md)

---

[API](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1.md) - [All operations](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/llms.txt) - [OpenAPI document](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/revisions/099cf36186e0?raw)
