PUT /v1/dataProducts/{id}/assets/add
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"
)
# Add input ports
DataProducts.add_input_ports(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
[{"id": "table-uuid-1", "type": "table"}]
)
# Remove input ports
DataProducts.remove_input_ports(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
[{"id": "table-uuid-1", "type": "table"}]
)
# Add output ports
DataProducts.add_output_ports(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
[{"id": "dashboard-uuid-1", "type": "dashboard"}]
)
# Remove output ports
DataProducts.remove_output_ports(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
[{"id": "dashboard-uuid-1", "type": "dashboard"}]
)
# Add assets
DataProducts.add_assets(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
[{"id": "table-uuid-2", "type": "table"}]
)
# Remove assets
DataProducts.remove_assets(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
[{"id": "table-uuid-2", "type": "table"}]
)
import static org.openmetadata.sdk.fluent.DataProducts.*;
// Add assets
DataProducts.addAssets(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
List.of(new EntityReference("table-uuid-1", "table"))
);
// Remove assets
DataProducts.removeAssets(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
List.of(new EntityReference("table-uuid-1", "table"))
);
# Add assets
curl -X PUT "{base_url}/api/v1/dataProducts/b1839f98-f046-5f35-bdef-20f9b3395cb2/assets/add" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{
"assets": [
{"id": "table-uuid-1", "type": "table"},
{"id": "topic-uuid-1", "type": "topic"}
]
}'
# Remove assets
curl -X PUT "{base_url}/api/v1/dataProducts/b1839f98-f046-5f35-bdef-20f9b3395cb2/assets/remove" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{
"assets": [
{"id": "table-uuid-1", "type": "table"}
]
}'
{
"id": "b1839f98-f046-5f35-bdef-20f9b3395cb2",
"name": "CustomerInsights",
"fullyQualifiedName": "Marketing.CustomerInsights",
"description": "Curated customer analytics data product",
"version": 0.3,
"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": []
}
Ports & Assets
Manage input ports, output ports, and assets for a data product
PUT
/
v1
/
dataProducts
/
{id}
/
assets
/
add
PUT /v1/dataProducts/{id}/assets/add
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"
)
# Add input ports
DataProducts.add_input_ports(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
[{"id": "table-uuid-1", "type": "table"}]
)
# Remove input ports
DataProducts.remove_input_ports(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
[{"id": "table-uuid-1", "type": "table"}]
)
# Add output ports
DataProducts.add_output_ports(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
[{"id": "dashboard-uuid-1", "type": "dashboard"}]
)
# Remove output ports
DataProducts.remove_output_ports(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
[{"id": "dashboard-uuid-1", "type": "dashboard"}]
)
# Add assets
DataProducts.add_assets(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
[{"id": "table-uuid-2", "type": "table"}]
)
# Remove assets
DataProducts.remove_assets(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
[{"id": "table-uuid-2", "type": "table"}]
)
import static org.openmetadata.sdk.fluent.DataProducts.*;
// Add assets
DataProducts.addAssets(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
List.of(new EntityReference("table-uuid-1", "table"))
);
// Remove assets
DataProducts.removeAssets(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
List.of(new EntityReference("table-uuid-1", "table"))
);
# Add assets
curl -X PUT "{base_url}/api/v1/dataProducts/b1839f98-f046-5f35-bdef-20f9b3395cb2/assets/add" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{
"assets": [
{"id": "table-uuid-1", "type": "table"},
{"id": "topic-uuid-1", "type": "topic"}
]
}'
# Remove assets
curl -X PUT "{base_url}/api/v1/dataProducts/b1839f98-f046-5f35-bdef-20f9b3395cb2/assets/remove" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{
"assets": [
{"id": "table-uuid-1", "type": "table"}
]
}'
{
"id": "b1839f98-f046-5f35-bdef-20f9b3395cb2",
"name": "CustomerInsights",
"fullyQualifiedName": "Marketing.CustomerInsights",
"description": "Curated customer analytics data product",
"version": 0.3,
"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": []
}
Ports & Assets
Manage the input ports, output ports, and associated assets of a data product. These endpoints allow you to add or remove data assets from a data product without replacing the entire entity.Add Assets
UsePUT /v1/dataProducts/{id}/assets/add to add assets to a data product.
UUID of the data product.
Remove Assets
UsePUT /v1/dataProducts/{id}/assets/remove to remove assets from a data product.
UUID of the data product.
PUT /v1/dataProducts/{id}/assets/add
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"
)
# Add input ports
DataProducts.add_input_ports(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
[{"id": "table-uuid-1", "type": "table"}]
)
# Remove input ports
DataProducts.remove_input_ports(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
[{"id": "table-uuid-1", "type": "table"}]
)
# Add output ports
DataProducts.add_output_ports(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
[{"id": "dashboard-uuid-1", "type": "dashboard"}]
)
# Remove output ports
DataProducts.remove_output_ports(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
[{"id": "dashboard-uuid-1", "type": "dashboard"}]
)
# Add assets
DataProducts.add_assets(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
[{"id": "table-uuid-2", "type": "table"}]
)
# Remove assets
DataProducts.remove_assets(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
[{"id": "table-uuid-2", "type": "table"}]
)
import static org.openmetadata.sdk.fluent.DataProducts.*;
// Add assets
DataProducts.addAssets(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
List.of(new EntityReference("table-uuid-1", "table"))
);
// Remove assets
DataProducts.removeAssets(
"b1839f98-f046-5f35-bdef-20f9b3395cb2",
List.of(new EntityReference("table-uuid-1", "table"))
);
# Add assets
curl -X PUT "{base_url}/api/v1/dataProducts/b1839f98-f046-5f35-bdef-20f9b3395cb2/assets/add" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{
"assets": [
{"id": "table-uuid-1", "type": "table"},
{"id": "topic-uuid-1", "type": "topic"}
]
}'
# Remove assets
curl -X PUT "{base_url}/api/v1/dataProducts/b1839f98-f046-5f35-bdef-20f9b3395cb2/assets/remove" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{
"assets": [
{"id": "table-uuid-1", "type": "table"}
]
}'
{
"id": "b1839f98-f046-5f35-bdef-20f9b3395cb2",
"name": "CustomerInsights",
"fullyQualifiedName": "Marketing.CustomerInsights",
"description": "Curated customer analytics data product",
"version": 0.3,
"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 updated data product object with the new version number reflecting the asset changes.Error Handling
| Code | Error Type | Description |
|---|---|---|
400 | BAD_REQUEST | Invalid request body or asset references |
401 | UNAUTHORIZED | Invalid or missing authentication token |
403 | FORBIDDEN | User lacks permission to modify this data product |
404 | NOT_FOUND | Data product or referenced asset does not exist |
Was this page helpful?
⌘I