| Time | Status | User Agent |  |
| :-- | :-- | :-- | :-- |
| Make a request to see history. |

#### URL Expired

The URL for this request expired after 30 days.

### name_patterns

- **Type**: array of strings  
- **Required**: Yes  
- **Description**: Stable selector for the logical table to query. Copy this from

```plaintext
POST /reporting/metadata -> data_sources[*].name_patterns.
```

The provided patterns must resolve to exactly one authorized logical table.

### columns

- **Type**: array of strings  
- **Required**: Yes (length ≥ 1)  
- **Description**: Exact column labels to include. At least one column is required.

Choose values from `POST /reporting/metadata -> data_sources[*].column_names`.

- **Note**: DATE and DATE_TIME columns may append one supported bucket suffix using `Column Name.bucket`; supported buckets are `detailed`, `hourly`, `daily`, `weekly`, `monthly`, `quarterly`, and `yearly`.

### filters

- **Type**: array of objects  
- **Description**: Equality filters using `{ column_name, value }`.

Each `filters[*].column_name` must also appear in `columns`. Only use values returned by `POST /reporting/metadata -> data_sources[*].filters[*].name`.

### runtime_filters

- **Type**: array of objects  
- **Description**: Advanced runtime filters. Intended for advanced cases such as date-range filtering.

Use metadata to determine which operators are valid for a given field.

ISO 8601 timestamp strings are converted to epoch seconds only when they include a time component.

### runtime_param_override

- **Type**: array of objects  
- **Description**: Parameter overrides forwarded as numbered `param1`, `paramVal1`, etc.

OEM handling depends on the authenticated user:

- Single-OEM admin: if `oem` is omitted, the server infers it and adds `[filter_oem]=true`.
- Multi-OEM admin: the request must include a non-blank `oem` override.
- Non-OEM admin: any client-supplied `oem` override is stripped, and the server injects

`preferred_dealer = true` as a runtime filter.

### page

- **Type**: integer  
- **Required**: Yes (≥ 1)  
- **Description**: 1-based page number for pagination.

### per_page

- **Type**: integer  
- **Required**: Yes (≥ 1)  
- **Description**: Number of rows to return per page.

### api-version

- **Type**: integer  
- **Required**: Yes  
- **Description**: Target API version

### API Responses

- **200 Success**: Reporting response. The server preserves the underlying payload shape without adding total-row counts, which are known to be inaccurate. Date-like response values are normalized to ISO 8601 strings: DATE values use `YYYY-MM-DD`, and DATE_TIME values use UTC timestamps such as `2026-04-01T00:00:00Z`.
- **400 Bad Request**  
- **401 Unauthorized**  
- **403 Forbidden**  
- **406 Not Acceptable**  
- **422 Unprocessable Content**

### Example Request
```bash
curl --request POST \
     --url https://api.dealerware.com/reporting/data \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "columns": [],
  "page": 1
}
'```

### Example Response
```json
{
  "contents": [
    {
      "column_names": [
        "DBA Name",
        "Dealer Code",
        "Region",
        "Actual Pickup At"
      ],
      "data_rows": [
        [
          "Dealer One",
          "D001",
          "West",
          "2026-04-01T00:00:00Z"
        ],
        [
          "Dealer Two",
          "D002",
          "West",
          "2026-04-02T00:00:00Z"
        ]
      ]
    }
  ]
}
```
