Added

Data Products API

Manage data products through a dedicated API surface that mirrors the existing Workspaces API. Data products provide the same capabilities — data assets, semantic models, verified queries, system prompts, front page configs, chat, skills, and compositions — under a streamlined data-products URL namespace. This enables API consumers to work with data products directly without needing to understand the internal workspace abstraction.

What's New

  • Full CRUD operations for data products: list, create, get, update, and delete
  • All workspace sub-resources available under data products: semantic models, verified queries, system prompts, front page configs, data assets, chat, compositions, skills, and unstructured assets
  • Automatic field name translation — responses use dataProductId, dataProductType, and externalDataProductId instead of workspace terminology
  • Request bodies accept data-product field names (e.g., sourceDataProductId) which are transparently mapped to internal representations
  • OpenAPI documentation with dedicated "Data Products" tag groups

New Endpoints

Data Product CRUD

  • GET /api/v1/accounts/{accountId}/data-products — List data products
  • POST /api/v1/accounts/{accountId}/data-products — Create data product
  • GET /api/v1/accounts/{accountId}/data-products/{dataProductId} — Get data product details
  • PATCH /api/v1/accounts/{accountId}/data-products/{dataProductId} — Update data product settings
  • DELETE /api/v1/accounts/{accountId}/data-products/{dataProductId} — Delete a data product

Data Product Sub-Resources

All workspace sub-resource endpoints are mirrored under /data-products/{dataProductId}/:

  • Semantic Models: GET, POST, PATCH at .../semantic-models/...
  • Verified Queries: GET, POST, DELETE at .../verified-queries/...
  • System Prompts: GET, POST, DELETE at .../system-prompts/...
  • Front Page Configs: GET, POST, DELETE at .../front-page-configs/...
  • Data Assets: GET, PATCH at .../data-assets
  • Chat: POST at .../chat and .../chat/stream
  • Skills: GET, PUT, DELETE at .../skills/...
  • Unstructured Assets: GET, POST, PATCH, DELETE at .../unstructured-assets/...
  • Users: GET, PATCH at .../users
  • Compositions: GET, POST, DELETE at .../compositions/...

Example Request

POST /api/v1/accounts/{accountId}/data-products
{
  "name": "Sales Analytics",
  "description": "Sales data product for reporting",
  "dataSourceId": "default",
  "dataAssets": [
    {
      "externalId": "asset-123",
      "tableName": "orders",
      "schemaName": "sales"
    }
  ]
}

Example Response

{
  "ok": true,
  "data": {
    "dataProduct": {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "accountId": "123e4567-e89b-12d3-a456-426614174000",
      "name": "Sales Analytics",
      "description": "Sales data product for reporting",
      "dataSourceId": "987fcdeb-51a2-43e7-b123-456789abcdef",
      "externalDataProductId": "ws-abc123",
      "createdAt": "2026-03-02T12:00:00Z",
      "updatedAt": "2026-03-02T12:00:00Z"
    },
    "dataAssets": [
      {
        "id": "660e8400-e29b-41d4-a716-446655440001",
        "dataProductId": "550e8400-e29b-41d4-a716-446655440000",
        "tableName": "orders",
        "schemaName": "sales"
      }
    ]
  }
}

Deprecation Notice

All /workspaces/ endpoints are now marked as deprecated in the OpenAPI spec. They continue to function but will be removed in a future release. Migrate to the equivalent /data-products/ endpoints at your earliest convenience.

Getting Started

Replace /workspaces/{workspaceId} with /data-products/{dataProductId} in your API calls. Field names in request bodies and responses automatically use data-product terminology. The existing Workspaces API continues to work unchanged — both APIs operate on the same underlying resources.