# What a report can be built from

The vocabulary behind the Reports page: every source a report can count (deals, leads, submissions, offers, tasks) with its fields and what each field is (dimension, measure, date or computed KPI) and its unit, the aggregates (count, sum, avg, min, max), the operators, the periods a date can be grouped by, and `max_rows`. Read this before writing a definition for `post_reports_preview` or `post_reports_views` — a field that is not here cannot be asked for, and a figure this schema cannot answer is absent rather than zero.

Access class: `workspace`.

## Endpoint

`GET /v1/reports/catalogue`

## Parameters

| Name | In | Type | Required |
| --- | --- | --- | --- |
| body | query | null | No |
| params | query | object | No |
| query | query | object | No |

## Responses

### 200

the action's answer

Content type: `application/json`.

```json
{
  "data": {
    "aggregates": [
      {
        "key": "string",
        "label": "string"
      }
    ],
    "max_rows": 1.5,
    "operators": [
      {
        "key": "string",
        "label": "string"
      }
    ],
    "periods": [
      {
        "key": "string",
        "label": "string"
      }
    ],
    "sources": [
      {
        "fields": [
          {
            "help": "string",
            "identifying": true,
            "key": "string",
            "kind": "string",
            "label": "string",
            "unit": "string"
          }
        ],
        "key": "string",
        "label": "string"
      }
    ]
  }
}
```

### default

a refusal: `{"error": "<what a person needs to read>"}`. 401 no credential, 402 the plan does not include this, 403 the seat does not, 404 the thing does not exist or is not yours to see.

Content type: `application/json`.

```json
{
  "error": "string"
}
```
