GET /v1/dataProducts
from metadata.sdk import configure
from metadata.sdk.entities import DataProducts
configure(
host="https://your-company.open-metadata.org/api",
jwt_token="your-jwt-token"
)
# List first page
products = DataProducts.list(limit=50)
for dp in products.entities:
print(f"{dp.fullyQualifiedName.root}")
# List all with auto-pagination
for dp in DataProducts.list_all():
print(f"{dp.fullyQualifiedName.root}")
# Filter by domain with fields
products = DataProducts.list(
filters={"domain": "Marketing"},
fields=["owners", "domains", "experts", "assets"],
limit=50
)
for dp in products.entities:
print(f"{dp.fullyQualifiedName.root}")
if dp.owners:
print(f" Owners: {[o.name for o in dp.owners.root]}")
import org.openmetadata.sdk.models.ListParams;
// client is an initialized OpenMetadataClient.
// List first page
var params = new ListParams().setLimit(50);
var page = client.dataProducts().list(params);
for (var item : page.getData()) {
System.out.println(item.getFullyQualifiedName());
}
// Filter by domain with fields
var filtered = new ListParams()
.addFilter("domain", "Marketing")
.setFields("owners,domains,experts,assets")
.setLimit(50);
var filteredPage = client.dataProducts().list(filtered);
for (var item : filteredPage.getData()) {
System.out.println(item.getFullyQualifiedName());
}
# List all
curl "{base_url}/api/v1/dataProducts?limit=50" \
-H "Authorization: Bearer {access_token}"
# Filter by domain
curl "{base_url}/api/v1/dataProducts?domain=Marketing&fields=owners,domains,experts,assets&limit=50" \
-H "Authorization: Bearer {access_token}"
{
"data": [
{
"id": "b1839f98-f046-5f35-bdef-20f9b3395cb2",
"name": "CustomerInsights",
"fullyQualifiedName": "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",
"domains": [
{
"id": "a0729e98-e946-4e25-acde-10e8a2294ba1",
"type": "domain",
"name": "Marketing",
"fullyQualifiedName": "Marketing",
"deleted": false
}
],
"deleted": false,
"owners": [],
"experts": []
}
],
"paging": {
"after": "...",
"total": 3
}
}
List Data Products
List all data products with optional filtering and pagination
GET
/
v1
/
dataProducts
GET /v1/dataProducts
from metadata.sdk import configure
from metadata.sdk.entities import DataProducts
configure(
host="https://your-company.open-metadata.org/api",
jwt_token="your-jwt-token"
)
# List first page
products = DataProducts.list(limit=50)
for dp in products.entities:
print(f"{dp.fullyQualifiedName.root}")
# List all with auto-pagination
for dp in DataProducts.list_all():
print(f"{dp.fullyQualifiedName.root}")
# Filter by domain with fields
products = DataProducts.list(
filters={"domain": "Marketing"},
fields=["owners", "domains", "experts", "assets"],
limit=50
)
for dp in products.entities:
print(f"{dp.fullyQualifiedName.root}")
if dp.owners:
print(f" Owners: {[o.name for o in dp.owners.root]}")
import org.openmetadata.sdk.models.ListParams;
// client is an initialized OpenMetadataClient.
// List first page
var params = new ListParams().setLimit(50);
var page = client.dataProducts().list(params);
for (var item : page.getData()) {
System.out.println(item.getFullyQualifiedName());
}
// Filter by domain with fields
var filtered = new ListParams()
.addFilter("domain", "Marketing")
.setFields("owners,domains,experts,assets")
.setLimit(50);
var filteredPage = client.dataProducts().list(filtered);
for (var item : filteredPage.getData()) {
System.out.println(item.getFullyQualifiedName());
}
# List all
curl "{base_url}/api/v1/dataProducts?limit=50" \
-H "Authorization: Bearer {access_token}"
# Filter by domain
curl "{base_url}/api/v1/dataProducts?domain=Marketing&fields=owners,domains,experts,assets&limit=50" \
-H "Authorization: Bearer {access_token}"
{
"data": [
{
"id": "b1839f98-f046-5f35-bdef-20f9b3395cb2",
"name": "CustomerInsights",
"fullyQualifiedName": "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",
"domains": [
{
"id": "a0729e98-e946-4e25-acde-10e8a2294ba1",
"type": "domain",
"name": "Marketing",
"fullyQualifiedName": "Marketing",
"deleted": false
}
],
"deleted": false,
"owners": [],
"experts": []
}
],
"paging": {
"after": "...",
"total": 3
}
}
List Data Products
List all data products with optional filtering and pagination.Query Parameters
string
Filter by domain fully qualified name.
integer
default:"10"
Maximum number of results to return (max: 1000000).
string
Cursor for backward pagination.
string
Cursor for forward pagination.
string
Comma-separated list of fields to include:
owners, domains, experts, assets. See Supported Fields below.string
default:"non-deleted"
Include
all, deleted, or non-deleted entities.GET /v1/dataProducts
from metadata.sdk import configure
from metadata.sdk.entities import DataProducts
configure(
host="https://your-company.open-metadata.org/api",
jwt_token="your-jwt-token"
)
# List first page
products = DataProducts.list(limit=50)
for dp in products.entities:
print(f"{dp.fullyQualifiedName.root}")
# List all with auto-pagination
for dp in DataProducts.list_all():
print(f"{dp.fullyQualifiedName.root}")
# Filter by domain with fields
products = DataProducts.list(
filters={"domain": "Marketing"},
fields=["owners", "domains", "experts", "assets"],
limit=50
)
for dp in products.entities:
print(f"{dp.fullyQualifiedName.root}")
if dp.owners:
print(f" Owners: {[o.name for o in dp.owners.root]}")
import org.openmetadata.sdk.models.ListParams;
// client is an initialized OpenMetadataClient.
// List first page
var params = new ListParams().setLimit(50);
var page = client.dataProducts().list(params);
for (var item : page.getData()) {
System.out.println(item.getFullyQualifiedName());
}
// Filter by domain with fields
var filtered = new ListParams()
.addFilter("domain", "Marketing")
.setFields("owners,domains,experts,assets")
.setLimit(50);
var filteredPage = client.dataProducts().list(filtered);
for (var item : filteredPage.getData()) {
System.out.println(item.getFullyQualifiedName());
}
# List all
curl "{base_url}/api/v1/dataProducts?limit=50" \
-H "Authorization: Bearer {access_token}"
# Filter by domain
curl "{base_url}/api/v1/dataProducts?domain=Marketing&fields=owners,domains,experts,assets&limit=50" \
-H "Authorization: Bearer {access_token}"
{
"data": [
{
"id": "b1839f98-f046-5f35-bdef-20f9b3395cb2",
"name": "CustomerInsights",
"fullyQualifiedName": "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",
"domains": [
{
"id": "a0729e98-e946-4e25-acde-10e8a2294ba1",
"type": "domain",
"name": "Marketing",
"fullyQualifiedName": "Marketing",
"deleted": false
}
],
"deleted": false,
"owners": [],
"experts": []
}
],
"paging": {
"after": "...",
"total": 3
}
}
Returns
Returns a paginated list of data product objects. By default, only basic fields are included. Use thefields parameter to request additional data.
Response
array
Array of data product objects.
Show properties
Show properties
string
Unique identifier for the data product (UUID format).
string
Data product name.
string
Fully qualified name of the data product. This is the data product name.
array
Parent domain references. Only included when
fields contains domains.array
List of owners. Only included when
fields contains owners.array
Subject matter experts. Only included when
fields contains experts.array
Associated data assets. Only included when
fields contains assets.object
Supported Fields
| Field | Description |
|---|---|
owners | Owner references (users and teams) |
domains | Parent domain references |
experts | Subject matter expert references |
assets | Associated data assets |
Error Handling
| Code | Error Type | Description |
|---|---|---|
401 | UNAUTHORIZED | Invalid or missing authentication token |
403 | FORBIDDEN | User lacks permission to list data products |
Was this page helpful?