Update a dashboard tile
Reports module
PATCH/dashboard-tiles/{id}dashboardTiles.update
A report tile on a dashboard. Updates the fields sent; omitted fields are unchanged. Requires `If-Match` with the current `ETag`: a stale tag returns 412 and a missing tag returns 428.
- Requires the capability reports.report.write.
- OAuth scopes: reports.
- Send If-Match with the ETag you read. A stale tag returns 412; a missing tag returns 428.
- Error statuses: 400, 401, 404, 412, 422, 428, 429. Errors are RFC 9457 problem details.
Path and query parameters
| Field | Type | Required | Description |
|---|---|---|---|
| id | string (uuid) | Yes | Identifier of the dashboard tile. |
Request body: DashboardTileUpdate
| Field | Type | Required | Description |
|---|---|---|---|
| report_definition_id | string (uuid) | No | Identifier of the report definition. |
| grid_column | integer | No | Leftmost column, 1 to 12.Constraints: range 1 to any |
| grid_row | integer | No | Top row, from 1.Constraints: range 1 to any |
| column_span | integer | No | Columns spanned, 1 to 12.Constraints: range 1 to any |
| row_span | integer | No | Rows spanned, 1 to 12.Constraints: range 1 to any |
{
"report_definition_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
"grid_column": 1,
"grid_row": 1,
"column_span": 6,
"row_span": 1
}Response 200: DashboardTile
| Field | Type | Required | Description |
|---|---|---|---|
| id | string (uuid) | Yes | Identifier of the dashboard tile. |
| org_id | string (uuid) | Yes | Identifier of the owning organization, derived from the parent row and never accepted from the caller. |
| created_at | string (date-time) | Yes | When the row was created. |
| created_by | string (uuid) | null | Yes | Identifier of the person who created the row; null when a seed, platform or system process created it. |
| updated_at | string (date-time) | Yes | When the row was last updated. |
| updated_by | string (uuid) | null | Yes | Identifier of the person who last updated the row; null when a seed, platform or system process updated it. |
| dashboard_id | string (uuid) | Yes | Identifier of the dashboard. |
| report_definition_id | string (uuid) | Yes | Identifier of the report definition. |
| grid_column | integer | Yes | Leftmost column, 1 to 12.Constraints: range 1 to any |
| grid_row | integer | Yes | Top row, from 1.Constraints: range 1 to any |
| column_span | integer | Yes | Columns spanned, 1 to 12.Constraints: range 1 to any |
| row_span | integer | Yes | Rows spanned, 1 to 12.Constraints: range 1 to any |
{
"id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
"org_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
"created_at": "2026-10-08T14:30:00Z",
"created_by": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
"updated_at": "2026-10-08T14:30:00Z",
"updated_by": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
"dashboard_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
"report_definition_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
"grid_column": 1,
"grid_row": 1,
"column_span": 6,
"row_span": 1
}Code samples
curl -X PATCH "$XOS_BASE_URL/dashboard-tiles/0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f" \
-H "Authorization: Bearer $XOS_API_KEY" \
-H 'If-Match: W/"etag-from-your-last-read"' \
-H "Content-Type: application/json" \
-d '{"report_definition_id":"0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f","grid_column":1,"grid_row":1,"column_span":6,"row_span":1}'const { data, etag } = await xos.dashboardTiles.update("0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f", {
"report_definition_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f",
"grid_column": 1,
"grid_row": 1,
"column_span": 6,
"row_span": 1
}, { ifMatch: etag });response = xos.dashboard_tiles.update("0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f", {"report_definition_id": "0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f", "grid_column": 1, "grid_row": 1, "column_span": 6, "row_span": 1}, if_match=etag)xos dashboard-tiles update 0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f --data '{"report_definition_id":"0192f1e2-7c3a-7b4d-9e8f-1a2b3c4d5e6f","grid_column":1,"grid_row":1,"column_span":6,"row_span":1}' --if-match auto