REST APIProjects, targets, forecasts and reportsReports
Reports
Read-only: list and get Reports.
- 2 operations
- 25 fields
- Schema Report
- GraphQL: report
- ReportSharingClientRelations
- ReportSharingSalesUnitRelations
The summaries on this page are generated from the specification; written descriptions come with the next releases of the reference.
| Method | Path | Operation |
|---|---|---|
| GET | /entities/Reports | List Reports |
| GET | /entities/Reports/{id} | Get Report |
Reports is read-only: the API offers its read operations only.
GET List Reports
Returns the Reports the API application can read, one page at a time. In the list envelope, total counts every match and page_info pages through them.
Query parameters
| Name | Type | Description |
|---|---|---|
include-deleted | boolean | Include soft-deleted records. Lists only; get-by-id refuses it. |
first | integer | Page size. Default 30, maximum 100; a larger value is refused with HTTP 400, code 117. |
last | integer | Return the last N records of the result; together with first, the last N of the first M. Maximum 100. |
before | string | Cursor from page_info.start_cursor, to page backwards. URL-encode it. |
after | string | Cursor from page_info.end_cursor of the previous page. URL-encode it: cursors are base64, and a raw + becomes a space. |
expand | string | Related records to return inline instead of their URIs, comma-separated; dots reach nested relations, as in account_relations.account. |
order-by | string | Fields to sort by, comma-separated. A leading - sorts descending, as in -modified; dotted paths sort by related fields. |
filter | object | filter[field]=value. Separate several values with a raw comma (OR), as in filter[name]=north,south. Encode a comma that belongs to a value as %2C. URLSearchParams and Python requests encode every comma, so build the filter part of the query string yourself. Dotted paths filter on related records, as in filter[owner.email]. Encode a + in a value as %2B: query values are form-decoded, so a raw + becomes a space. |
filter-op | object | filter-op[field]=operator, one per field: eq (the default), ieq, not-eq, not-ieq, contains, icontains, starts, istarts, ends, iends, gt, gte, lt, lte, between, null, not-null, empty and not-empty. null, not-null, empty and not-empty take no filter value; gt, gte, lt and lte take exactly one. |
load-only | string | Fields to return, comma-separated (raw or encoded commas both work here); dots select nested fields, as in owner.id. All fields are returned without it. Lists only: get-by-id refuses it with HTTP 400, code 118. |
Responses
200 Page of Report records.: success, total, page_info, data 400 Bad request 401 Not authenticated 429 Rate limited 500 Server error
curl 'https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Reports?first=10&filter%5Bname%5D=north&filter-op%5Bname%5D=icontains' \
--user "$COEVERA_API_KEY:$COEVERA_API_SECRET"fetch('https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Reports?first=10&filter%5Bname%5D=north&filter-op%5Bname%5D=icontains', {
headers: {
Authorization: "Basic " + btoa(`${process.env.COEVERA_API_KEY}:${process.env.COEVERA_API_SECRET}`)
}
})import os
import requests
response = requests.get(
"https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Reports",
params={
"first": "10",
"filter[name]": "north",
"filter-op[name]": "icontains"
},
auth=(os.environ["COEVERA_API_KEY"], os.environ["COEVERA_API_SECRET"])
)GET Get Report
Returns one record by id. expand returns related records inline instead of their URIs.
Path parameters
| Name | Type | Description |
|---|---|---|
id | string (uuid) | Id of the Report record to retrieve. Required |
Query parameters
| Name | Type | Description |
|---|---|---|
expand | string | Related records to return inline instead of their URIs, comma-separated; dots reach nested relations. The only parameter this call accepts. |
Responses
200 The Report record.: success, data 400 Bad request 401 Not authenticated 404 Not found 429 Rate limited 500 Server error
curl 'https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Reports/e8000000-0000-4000-a000-000000000001?expand=owner' \
--user "$COEVERA_API_KEY:$COEVERA_API_SECRET"fetch('https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Reports/e8000000-0000-4000-a000-000000000001?expand=owner', {
headers: {
Authorization: "Basic " + btoa(`${process.env.COEVERA_API_KEY}:${process.env.COEVERA_API_SECRET}`)
}
})import os
import requests
response = requests.get(
"https://{region}.api.coevera.com/api/v100/rest/spaces/{space_id}/entities/Reports/e8000000-0000-4000-a000-000000000001",
params={
"expand": "owner"
},
auth=(os.environ["COEVERA_API_KEY"], os.environ["COEVERA_API_SECRET"])
)Report fields
| Field | Type | Notes |
|---|---|---|
id | uuid | Read-only Unique identifier of entity. |
is_delete_protected | boolean | Read-only True when the record is protected against deletion because it must always exist in the space. |
is_deleted | boolean | Read-only Specifies if the entity is considered deleted. |
modified | date-time | Read-only Last modification time. |
created | date-time | Read-only Creation time. |
owner | uri → Clients | Read-only User who owns the report or dashboard. |
reports_folder | uri → ReportFolders | Read-only Report folder this report is filed under (default folder when empty). |
sync_entity | uri → Profiles | Read-only Specific record this report is synchronized to. |
access_link | string | Read-only Public access token used in shareable report URLs. |
ai_conversation | object | Read-only AI assistant conversation associated with the report (e.g. |
description | string | Read-only Free-text description shown alongside the report. |
name | string | Read-only Name of the entity and its default text representation. |
owner_id | uuid → Clients | Read-only Id of the owning user. |
reports_folder_id | uuid → ReportFolders | Read-only Id of the parent report folder. |
settings | object | Read-only Report definition (entity, columns, filters, charts, structure). |
Show all 25 fields
| Field | Type | Notes |
|---|---|---|
share_mode | integer | Read-only Who besides the owner can access the report: nobody (Private, the default), the users and sales units in sharing_clients and sharing_units (Standard), or all …0 Standard · 1 Private · 2 AllView · 3 AllEdit |
share_mode_params | string | Read-only Legacy additional sharing options; kept with the record but no longer applied.1 · 2 |
sync_enabled | boolean | Read-only When true, name and settings are kept in sync with the linked screen profile; when false, the report is detached from profile sync. |
sync_entity_id | uuid → Profiles | Read-only Id of the synchronized record. |
type | integer | Read-only Kind of report: a table or pivot report, a dashboard, an opportunity forecast, or an advanced report built from several linked tables.0 TableReport · 1 DashboardReport · 2 ForecastReport · 3 AdvancedReport |
revision | integer | Read-only Revision when entity was lastly changed. |
schedule | uri → ReportSchedules | Read-only The calling user's scheduled email delivery of this report; empty when none is set. |
is_favorite | boolean | Read-only True when the current user has marked this report as a favorite (see ClientFavorite). |
sharing_units | array of uri → ReportSharingSalesUnitRelations | Read-only Sales units granted shared access to this report (custom share mode). |
sharing_clients | array of uri → ReportSharingClientRelations | Read-only Users granted shared access to this report (custom share mode). |
Custom fields appear in your space's live spec: fetch it with your credentials.
Errors
Every error body has success: false, http_status, code, name and message. Branch on code: the status alone does not tell a missing permission from a bad parameter. All codes: error codes; how to handle them: Errors.
| HTTP | When |
|---|---|
| 400 | Bad request: a bad or unknown parameter (codes 117, 118), a missing permission (code 50), conflicting data (code 2002) or any other API error. The REST API answers 400 where others answer 403 or 409; check code. |
| 401 | Not authenticated: missing or wrong credentials, a credential of another space, or an expired token (code 401, ERROR_UNAUTHORIZED). |
| 404 | No such record or entity (code 143 ERROR_NO_ENTITY, or 2006 ERROR_UNKNOWN_TYPE). |
| 429 | Too many requests (code 182). Wait for the seconds in Retry-After, then retry. |
| 500 | Unexpected server error (code 1000, ERROR_UNKNOWN). |