Added
Data App Tile Management API
about 1 month ago
Manage individual tiles within data app dashboards without replacing the entire dashboard configuration. These endpoints enable granular tile-level operations — add, update, or remove tiles independently while maintaining optimistic concurrency control against the parent data app.
New Endpoints
POST /api/v1/accounts/{accountId}/data-products/{dataProductId}/data-apps/{dataAppId}/tiles— Add one or more tilesPATCH /api/v1/accounts/{accountId}/data-products/{dataProductId}/data-apps/{dataAppId}/tiles/{tileId}— Update a tileDELETE /api/v1/accounts/{accountId}/data-products/{dataProductId}/data-apps/{dataAppId}/tiles/{tileId}— Remove a tile
What's New
- Granular tile management: Add, update, or remove individual tiles without overwriting the full
dashboardJson. - Batch tile creation: POST accepts an array of tiles and optional layout placements in a single request.
- Promotability validation: POST and PATCH validate that tile data sources are fully specified (static tiles require data, query tiles require SQL).
- Optimistic concurrency: All mutations require the parent data app's
updatedAttimestamp. Returns409 Conflicton stale writes. - Full data app response: All tile mutations return the complete updated data app so clients always have the latest state.
Request Examples
Create Tiles (POST)
{
"tiles": [
{
"id": "revenue-chart",
"title": "Monthly Revenue",
"dataSource": { "type": "query", "sql": "SELECT month, revenue FROM sales" },
"display": { "chartType": "bar", "dimension": "month", "metrics": ["revenue"] }
}
],
"layout": [{ "tileId": "revenue-chart", "x": 0, "y": 0, "w": 6, "h": 4 }],
"updatedAt": "2026-03-19T12:00:00.000Z"
}Update Tile (PATCH)
{
"title": "Quarterly Revenue",
"dataSource": {
"type": "query",
"sql": "SELECT quarter, SUM(revenue) FROM sales GROUP BY quarter"
},
"updatedAt": "2026-03-19T12:01:00.000Z"
}Delete Tile (DELETE)
{
"updatedAt": "2026-03-19T12:02:00.000Z"
}Getting Started
- Fetch the data app to get the current
updatedAtvalue. - Use POST to add tiles, PATCH to modify, or DELETE to remove.
- Pass the
updatedAtfrom the response into your next mutation to maintain concurrency safety.