Skip to main content
POST
https://sandbox.getcollate.io/api
/
v1
/
dataProducts
POST /v1/dataProducts
from metadata.sdk import configure
from metadata.sdk.entities import DataProducts

configure(
    host="https://your-company.getcollate.io/api",
    jwt_token="your-jwt-token"
)

request = {
    "name": "CustomerInsights",
    "displayName": "Customer Insights",
    "domain": "Marketing",
    "description": "Curated customer analytics data product"
}

data_product = DataProducts.create(request)
print(f"Created: {data_product.fullyQualifiedName}")
{
  "id": "b1839f98-f046-5f35-bdef-20f9b3395cb2",
  "name": "CustomerInsights",
  "fullyQualifiedName": "Marketing.CustomerInsights",
  "displayName": "Customer Insights",
  "description": "Curated customer analytics data product",
  "version": 0.1,
  "updatedAt": 1769984330261,
  "updatedBy": "admin",
  "href": "http://localhost:8585/api/v1/dataProducts/b1839f98-f046-5f35-bdef-20f9b3395cb2",
  "domain": {
    "id": "a0729e98-e946-4e25-acde-10e8a2294ba1",
    "type": "domain",
    "name": "Marketing",
    "fullyQualifiedName": "Marketing",
    "deleted": false
  },
  "deleted": false,
  "owners": [],
  "experts": []
}

Create a Data Product

Create a new data product within a domain.

Body Parameters

name
string
required
Name of the data product. Must be unique within the parent domain.
domain
string
required
Fully qualified name of the parent domain (e.g., Marketing).
displayName
string
Human-readable display name for the data product.
description
string
Description of the data product in Markdown format.
owners
array
Array of owner references (users or teams) to assign to the data product.
experts
array
Array of user references who are subject matter experts.
POST /v1/dataProducts
from metadata.sdk import configure
from metadata.sdk.entities import DataProducts

configure(
    host="https://your-company.getcollate.io/api",
    jwt_token="your-jwt-token"
)

request = {
    "name": "CustomerInsights",
    "displayName": "Customer Insights",
    "domain": "Marketing",
    "description": "Curated customer analytics data product"
}

data_product = DataProducts.create(request)
print(f"Created: {data_product.fullyQualifiedName}")
{
  "id": "b1839f98-f046-5f35-bdef-20f9b3395cb2",
  "name": "CustomerInsights",
  "fullyQualifiedName": "Marketing.CustomerInsights",
  "displayName": "Customer Insights",
  "description": "Curated customer analytics data product",
  "version": 0.1,
  "updatedAt": 1769984330261,
  "updatedBy": "admin",
  "href": "http://localhost:8585/api/v1/dataProducts/b1839f98-f046-5f35-bdef-20f9b3395cb2",
  "domain": {
    "id": "a0729e98-e946-4e25-acde-10e8a2294ba1",
    "type": "domain",
    "name": "Marketing",
    "fullyQualifiedName": "Marketing",
    "deleted": false
  },
  "deleted": false,
  "owners": [],
  "experts": []
}

Returns

Returns the created data product object with all specified properties and system-generated fields.

Response

id
string
Unique identifier for the data product (UUID format).
name
string
Data product name.
fullyQualifiedName
string
Fully qualified name in format domain.dataProductName.
displayName
string
Human-readable display name.
description
string
Description of the data product in Markdown format.
domain
object
Reference to the parent domain.
owners
array
List of owners assigned to the data product.
experts
array
Subject matter experts for the data product.
version
number
Version number for the entity (starts at 0.1).

Create or Update (PUT)

Use PUT /v1/dataProducts instead of POST to perform an upsert. If a data product with the same fullyQualifiedName already exists, it will be updated; otherwise, a new data product is created. The request body is the same as POST.
curl -X PUT "{base_url}/api/v1/dataProducts" \
  -H "Authorization: Bearer {access_token}" \
  -H "Content-Type: application/json" \
  -d '{ ... same body as POST ... }'
PUT will not return a 409 conflict error if the entity already exists — it will update the existing entity instead.

Error Handling

CodeError TypeDescription
400BAD_REQUESTInvalid request body or missing required fields
401UNAUTHORIZEDInvalid or missing authentication token
403FORBIDDENUser lacks permission to create data products
409ENTITY_ALREADY_EXISTSData product with same name already exists in domain (POST only)