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

# Search ReportDefinitions

> Search and list ReportDefinition records with filtering, sorting, and pagination.

A saved self-service report: a ReportQuery JSON document plus a visualization. Use report\_catalog to discover fields, report\_query to test a query before saving it, and report\_run to execute a saved report.

## Authentication

> [!NOTE]
>
> This endpoint requires OAuth2 authentication. Include a valid bearer token in the `Authorization` header.
> The authenticated user must be a full unrestricted administrator or have the **`ReportDefinition-List`** role.

## Query Parameters

### Pagination & Sorting

**page** `integer` (default: 1)

The page number to retrieve.

**size** `integer` (default: 25)

The number of records per page.

**orderBy** `string`

The property name to sort results by (e.g. `Name`, `CreatedOn`).

**dir** `integer`

Sort direction. `0` for ascending, `1` for descending.

### Filters

**ReportDefinition\_Business** `integer`

Filter by iD of the business that owns this report.

**ReportDefinition\_Name** `string`

Filter by report name shown in the library.

**ReportDefinition\_Description** `string`

Filter by optional description of what the report shows.

**ReportDefinition\_Folder** `string`

Filter by folder used to group reports in the library (e.g. Bookings, Billing).

**ReportDefinition\_EntityName** `string`

Filter by root entity of the query; derived from QueryJson on save.

**ReportDefinition\_VisualizationType** `string`

Filter by visualization type (table, number, bar, line, area, pie); derived from VisualizationJson on save.

**ReportDefinition\_QueryJson** `string`

Filter by reportQuery JSON document (version 1). Use report\_catalog to discover entities and field paths and report\_query to test the query before saving..

**ReportDefinition\_VisualizationJson** `string`

Filter by visualizationDocument JSON: \{ "type": "table|number|bar|line|area|pie", "settings": \{ ... } }.

**ReportDefinition\_SchemaVersion** `integer`

Filter by version of the QueryJson schema.

**ReportDefinition\_IsShared** `boolean`

Filter by visible to every user of the business; when false only the owner sees it.

**ReportDefinition\_Owner** `integer`

Filter by user who created the report (set automatically).

**ReportDefinition\_Owner\_FullName** `string`

Filter by display value for Owner.FullName..

**ReportDefinition\_Owner\_Email** `string`

Filter by display value for Owner.Email..

**ReportDefinition\_TemplateKey** `string`

Filter by key of the built-in template this report was copied from, if any.

**ReportDefinition\_LastRunOn** `string`

Filter by uTC time the report was last run.

**ReportDefinition\_RunCount** `integer`

Filter by number of times the report has been run.

### Range Filters

**from\_ReportDefinition\_SchemaVersion** `integer`

Filter by version of the QueryJson schema greater than or equal to this value.

**to\_ReportDefinition\_SchemaVersion** `integer`

Filter by version of the QueryJson schema less than or equal to this value.

**from\_ReportDefinition\_LastRunOn** `string`

Filter by uTC time the report was last run greater than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.

**to\_ReportDefinition\_LastRunOn** `string`

Filter by uTC time the report was last run less than or equal to this value. Format: `YYYY-MM-DDTHH:mm`.

**from\_ReportDefinition\_RunCount** `integer`

Filter by number of times the report has been run greater than or equal to this value.

**to\_ReportDefinition\_RunCount** `integer`

Filter by number of times the report has been run less than or equal to this value.

**from\_ReportDefinition\_CreatedOn** `string`

Filter records created on or after this date. Format: `YYYY-MM-DDTHH:mm`.

**to\_ReportDefinition\_CreatedOn** `string`

Filter records created on or before this date. Format: `YYYY-MM-DDTHH:mm`.

**from\_ReportDefinition\_UpdatedOn** `string`

Filter records updated on or after this date. Format: `YYYY-MM-DDTHH:mm`.

**to\_ReportDefinition\_UpdatedOn** `string`

Filter records updated on or before this date. Format: `YYYY-MM-DDTHH:mm`.

## Code Examples

### Simple listing

```bash cURL theme={null}
curl -X GET \
  "https://spaces.nexudus.com/api/sys/reportdefinitions?page=1&size=15&orderBy=Name&dir=0" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

```javascript JavaScript theme={null}
const response = await fetch(
  'https://spaces.nexudus.com/api/sys/reportdefinitions?' + new URLSearchParams({
    page: 1,
    size: 15,
    orderBy: 'Name',
    dir: 1 // Ascending
  }),
  {
    headers: {
      'Authorization': 'Bearer YOUR_TOKEN'
    }
  }
);

const data = await response.json();
```

```python Python theme={null}
import requests

response = requests.get(
    'https://spaces.nexudus.com/api/sys/reportdefinitions',
    params={
        'page': 1,
        'size': 15,
        'orderBy': 'Name',
        'dir': 0 // Ascending
    },
    headers={
        'Authorization': 'Bearer YOUR_TOKEN'
    }
)

data = response.json()
```

### Filtering by Name

```bash cURL theme={null}
curl -X GET \
  "https://spaces.nexudus.com/api/sys/reportdefinitions?ReportDefinition_Name=example-value&orderBy=Name&dir=0" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

```javascript JavaScript theme={null}
const response = await fetch(
  'https://spaces.nexudus.com/api/sys/reportdefinitions?' + new URLSearchParams({
    ReportDefinition_Name: 'example-value',
    orderBy: 'Name',
    dir: 1
  }),
  {
    headers: {
      'Authorization': 'Bearer YOUR_TOKEN'
    }
  }
);

const data = await response.json();
```

```python Python theme={null}
import requests

response = requests.get(
    'https://spaces.nexudus.com/api/sys/reportdefinitions',
    params={
        'ReportDefinition_Name': 'example-value',
        'orderBy': 'Name',
        'dir': 0 // Ascending
    },
    headers={
        'Authorization': 'Bearer YOUR_TOKEN'
    }
)

data = response.json()
```

### Range filters

```bash cURL theme={null}
curl -X GET \
  "https://spaces.nexudus.com/api/sys/reportdefinitions?from_ReportDefinition_UpdatedOn=2025-01-01T00:00&to_ReportDefinition_UpdatedOn=2025-12-31T23:59&orderBy=UpdatedOn&dir=0" \
  -H "Authorization: Bearer YOUR_TOKEN"
```

```javascript JavaScript theme={null}
const response = await fetch(
  'https://spaces.nexudus.com/api/sys/reportdefinitions?' + new URLSearchParams({
    from_ReportDefinition_UpdatedOn: '2025-01-01T00:00',
    to_ReportDefinition_UpdatedOn: '2025-12-31T23:59',
    orderBy: 'UpdatedOn',
    dir: 1 // Descending
   }),
  {
    headers: {
      'Authorization': 'Bearer YOUR_TOKEN'
    }
  }
);

const data = await response.json();
```

```python Python theme={null}
import requests

response = requests.get(
    'https://spaces.nexudus.com/api/sys/reportdefinitions',
    params={
        'from_ReportDefinition_UpdatedOn': '2025-01-01T00:00',
        'to_ReportDefinition_UpdatedOn': '2025-12-31T23:59',
        'orderBy': 'UpdatedOn',
        'dir': 1 // Descending
    },
    headers={
        'Authorization': 'Bearer YOUR_TOKEN'
    }
)

data = response.json()
```

## Response

### 200

**Records** `ReportDefinition[]`

The list of ReportDefinition records matching the query. See the [Get one ReportDefinition](https://learn.nexudus.com/rest-api/sys/get-reportdefinitions-by-id.md) endpoint for the full list of properties returned for each record.

> [!WARNING]
>
> **Partial records** — The listing endpoint returns a summary representation of each ReportDefinition. The following fields are **not populated** in the `Records[]` response: `QueryJson`, `VisualizationJson`.
>
> To get all fields, fetch the full record using the [Get one ReportDefinition](https://learn.nexudus.com/rest-api/sys/get-reportdefinitions-by-id.md) endpoint.
>
> **Important for updates:** When updating a record via `PUT`, always retrieve the full record with a `GET` request first, apply your changes to that complete data, and then send the updated record. Do not use data from a listing response as the base for a `PUT` request, as missing fields may be unintentionally cleared.

**CurrentPage** `integer`

Current page number.

**CurrentPageSize** `integer`

Number of records per page.

**CurrentOrderField** `string`

The field used for sorting.

**CurrentSortDirection** `integer`

The sort direction (`0` = ascending, `1` = descending).

**FirstItem** `integer`

Index of the first item on the current page.

**LastItem** `integer`

Index of the last item on the current page.

**TotalItems** `integer`

Total number of matching records across all pages.

**TotalPages** `integer`

Total number of pages.

**HasNextPage** `boolean`

Whether there is a next page of results.

**HasPreviousPage** `boolean`

Whether there is a previous page of results.

```json Example Response theme={null}
{
  "Records": [
    {
      "BusinessId": 0,
      "Name": "",
      "Description": null,
      "Folder": null,
      "EntityName": null,
      "VisualizationType": null,
      "SchemaVersion": 0,
      "IsShared": false,
      "OwnerId": null,
      "OwnerFullName": null,
      "OwnerEmail": null,
      "TemplateKey": null,
      "LastRunOn": null,
      "RunCount": 0,
      "Id": 87654321,
      "UpdatedOn": "2025-01-15T10:30:00Z",
      "CreatedOn": "2025-01-10T08:00:00Z",
      "UniqueId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "UpdatedBy": "admin@example.com",
      "IsNew": false,
      "SystemId": null,
      "ToStringText": "ReportDefinition Example",
      "LocalizationDetails": null,
      "CustomFields": null
    }
  ],
  "CurrentPageSize": 15,
  "CurrentPage": 1,
  "CurrentOrderField": "Name",
  "CurrentSortDirection": 1,
  "FirstItem": 1,
  "HasNextPage": false,
  "HasPreviousPage": false,
  "LastItem": 1,
  "PageNumber": 1,
  "PageSize": 15,
  "TotalItems": 1,
  "TotalPages": 1
}
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.