Added

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
  • isDeployed overrides: 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

New 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

New 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

New 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

The 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