Deploy Endpoint and isDeployed Overrides
New deploy endpoint and isDeployed parameter support across data product entity APIs, enabling a fully API-driven data product lifecycle without requiring the frontend UI.
What's New
- Deploy endpoint: Promote all draft entities to deployed state in a single API call
isDeployedoverrides: Control whether entities are created as drafts or deployed immediately when using create/update APIs- Verified queries default change: New verified queries are now created as drafts by default (previously deployed)
New Endpoint
POST /api/v1/accounts/{accountId}/data-products/{dataProductId}/deploy
Promotes all pending draft entities (data assets, semantic model tables/relationships/metrics, verified queries, compositions, data models, unstructured assets, front page configs) to deployed state. Returns per-entity promotion counts. Idempotent — calling with no drafts returns success with zero counts.
Response Example
{
"ok": true,
"data": {
"dataProductId": "550e8400-e29b-41d4-a716-446655440000",
"deployedAt": "2026-03-25T10:30:00.000Z",
"deployedBy": "user-uuid",
"results": {
"dataAssets": { "promoted": 3, "deleted": 1 },
"dataModels": { "promoted": 0, "deleted": 0 },
"compositions": { "promoted": 1, "deleted": 0 },
"unstructuredAssets": { "promoted": 0, "deleted": 0 },
"semanticModelTables": { "promoted": 5 },
"semanticModelRelationships": { "promoted": 2 },
"semanticModelMetrics": { "promoted": 1 },
"verifiedQueries": { "promoted": 3 },
"frontPageConfigs": { "draftsRemoved": 0 },
"semanticModelV2Draft": { "deleted": false }
}
}
}Updated Endpoints
PATCH /api/v1/accounts/{accountId}/data-products/{dataProductId}/data-assets
PATCH /api/v1/accounts/{accountId}/data-products/{dataProductId}/data-assetsNew optional isDeployed field in request body. When true, added assets skip the draft stage. Default: false (draft).
POST /api/v1/accounts/{accountId}/data-products/{dataProductId}/compositions
POST /api/v1/accounts/{accountId}/data-products/{dataProductId}/compositionsNew optional isDeployed field in request body. When false, composition is created as a draft. Default: true (deployed, matching previous behavior).
POST /api/v1/accounts/{accountId}/data-products/{dataProductId}/data-models
POST /api/v1/accounts/{accountId}/data-products/{dataProductId}/data-modelsNew optional isDeployed field in request body. When true, data model is created as deployed. Default: false (draft, matching previous behavior).
⚠️ Breaking Change
POST /api/v1/accounts/{accountId}/data-products/{dataProductId}/verified-queries
POST /api/v1/accounts/{accountId}/data-products/{dataProductId}/verified-queriesThe isDeployed field now defaults to false instead of true. Verified queries created without an explicit isDeployed value will now be drafts. To maintain previous behavior, explicitly pass "isDeployed": true in the request body.
Getting Started
To deploy a data product via API after making changes:
# 1. Add data assets (created as drafts by default)
curl -X PATCH .../data-assets -d '{"dataAssetsToAdd": [...]}'
# 2. Add semantic model tables
curl -X POST .../semantic-models/{id}/tables -d '{"name": "orders", ...}'
# 3. Deploy all drafts
curl -X POST .../deploy