PUT /v1/pipelines
curl -X PUT "{base_url}/api/v1/pipelines" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{
"name": "dbt_analytics_customers",
"displayName": "DBT Customer Analytics",
"service": "sample_airflow",
"description": "Analytics pipeline for customer data processing",
"sourceUrl": "http://localhost:8080/tree?dag_id=dbt_analytics_customers",
"tasks": [
{
"name": "extract_customers",
"taskType": "BatchTask",
"description": "Extract customer data from source",
"downstreamTasks": ["transform_customers"]
},
{
"name": "transform_customers",
"taskType": "BatchTask",
"description": "Transform and clean customer data",
"downstreamTasks": ["load_customers"]
},
{
"name": "load_customers",
"taskType": "BatchTask",
"description": "Load transformed data into warehouse"
}
]
}'
from metadata.sdk import configure
from metadata.sdk.entities import Pipelines
configure(
host="https://your-company.open-metadata.org/api",
jwt_token="your-jwt-token"
)
# Retrieve, modify, and update
pipeline = Pipelines.retrieve("538faa63-d204-46ff-aead-d158d0401cac")
pipeline.description = "Updated: Analytics pipeline with incremental customer processing"
updated = Pipelines.update(pipeline)
print(f"Updated to version {updated.version.root}")
import org.openmetadata.schema.entity.data.Pipeline;
// client is an initialized OpenMetadataClient.
// Retrieve, modify, and update
Pipeline pipeline = client.pipelines().get("538faa63-d204-46ff-aead-d158d0401cac");
pipeline.setDescription("Updated: Analytics pipeline with incremental customer processing");
Pipeline updated = client.pipelines().update(pipeline.getId(), pipeline);
# Update by ID
curl -X PATCH "{base_url}/api/v1/pipelines/538faa63-d204-46ff-aead-d158d0401cac" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json-patch+json" \
-d '[
{"op": "replace", "path": "/description", "value": "Updated: Analytics pipeline with incremental customer processing"}
]'
# Update by name
curl -X PATCH "{base_url}/api/v1/pipelines/name/sample_airflow.dbt_analytics_customers" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json-patch+json" \
-d '[
{"op": "replace", "path": "/description", "value": "Updated: Analytics pipeline with incremental customer processing"}
]'
{
"id": "538faa63-d204-46ff-aead-d158d0401cac",
"name": "dbt_analytics_customers",
"displayName": "DBT Customer Analytics",
"fullyQualifiedName": "sample_airflow.dbt_analytics_customers",
"description": "Updated: Analytics pipeline with incremental customer processing",
"version": 0.2,
"updatedAt": 1769982668397,
"updatedBy": "admin",
"service": {
"id": "daa58a49-df05-48a3-a417-45dfd12eacf5",
"type": "pipelineService",
"name": "sample_airflow",
"fullyQualifiedName": "sample_airflow",
"deleted": false
},
"serviceType": "DBTCloud",
"href": "http://localhost:8585/api/v1/pipelines/538faa63-d204-46ff-aead-d158d0401cac",
"deleted": false,
"owners": [],
"tags": [],
"followers": [],
"votes": {
"upVotes": 0,
"downVotes": 0
},
"domains": []
}
Update a Pipeline
Create or update a pipeline with a full request body
PUT
/
v1
/
pipelines
PUT /v1/pipelines
curl -X PUT "{base_url}/api/v1/pipelines" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{
"name": "dbt_analytics_customers",
"displayName": "DBT Customer Analytics",
"service": "sample_airflow",
"description": "Analytics pipeline for customer data processing",
"sourceUrl": "http://localhost:8080/tree?dag_id=dbt_analytics_customers",
"tasks": [
{
"name": "extract_customers",
"taskType": "BatchTask",
"description": "Extract customer data from source",
"downstreamTasks": ["transform_customers"]
},
{
"name": "transform_customers",
"taskType": "BatchTask",
"description": "Transform and clean customer data",
"downstreamTasks": ["load_customers"]
},
{
"name": "load_customers",
"taskType": "BatchTask",
"description": "Load transformed data into warehouse"
}
]
}'
from metadata.sdk import configure
from metadata.sdk.entities import Pipelines
configure(
host="https://your-company.open-metadata.org/api",
jwt_token="your-jwt-token"
)
# Retrieve, modify, and update
pipeline = Pipelines.retrieve("538faa63-d204-46ff-aead-d158d0401cac")
pipeline.description = "Updated: Analytics pipeline with incremental customer processing"
updated = Pipelines.update(pipeline)
print(f"Updated to version {updated.version.root}")
import org.openmetadata.schema.entity.data.Pipeline;
// client is an initialized OpenMetadataClient.
// Retrieve, modify, and update
Pipeline pipeline = client.pipelines().get("538faa63-d204-46ff-aead-d158d0401cac");
pipeline.setDescription("Updated: Analytics pipeline with incremental customer processing");
Pipeline updated = client.pipelines().update(pipeline.getId(), pipeline);
# Update by ID
curl -X PATCH "{base_url}/api/v1/pipelines/538faa63-d204-46ff-aead-d158d0401cac" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json-patch+json" \
-d '[
{"op": "replace", "path": "/description", "value": "Updated: Analytics pipeline with incremental customer processing"}
]'
# Update by name
curl -X PATCH "{base_url}/api/v1/pipelines/name/sample_airflow.dbt_analytics_customers" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json-patch+json" \
-d '[
{"op": "replace", "path": "/description", "value": "Updated: Analytics pipeline with incremental customer processing"}
]'
{
"id": "538faa63-d204-46ff-aead-d158d0401cac",
"name": "dbt_analytics_customers",
"displayName": "DBT Customer Analytics",
"fullyQualifiedName": "sample_airflow.dbt_analytics_customers",
"description": "Updated: Analytics pipeline with incremental customer processing",
"version": 0.2,
"updatedAt": 1769982668397,
"updatedBy": "admin",
"service": {
"id": "daa58a49-df05-48a3-a417-45dfd12eacf5",
"type": "pipelineService",
"name": "sample_airflow",
"fullyQualifiedName": "sample_airflow",
"deleted": false
},
"serviceType": "DBTCloud",
"href": "http://localhost:8585/api/v1/pipelines/538faa63-d204-46ff-aead-d158d0401cac",
"deleted": false,
"owners": [],
"tags": [],
"followers": [],
"votes": {
"upVotes": 0,
"downVotes": 0
},
"domains": []
}
Update a Pipeline
Create a pipeline or update it if it already exists, usingPUT /v1/pipelines with the full request body. Send the complete definition, not just the fields you want to change. To change only some fields, use PATCH with a JSON Patch array and the application/json-patch+json content type, as shown in the PATCH examples below.
Body Parameters
Array of pipeline tasks representing individual steps in the pipeline.
PUT /v1/pipelines
curl -X PUT "{base_url}/api/v1/pipelines" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{
"name": "dbt_analytics_customers",
"displayName": "DBT Customer Analytics",
"service": "sample_airflow",
"description": "Analytics pipeline for customer data processing",
"sourceUrl": "http://localhost:8080/tree?dag_id=dbt_analytics_customers",
"tasks": [
{
"name": "extract_customers",
"taskType": "BatchTask",
"description": "Extract customer data from source",
"downstreamTasks": ["transform_customers"]
},
{
"name": "transform_customers",
"taskType": "BatchTask",
"description": "Transform and clean customer data",
"downstreamTasks": ["load_customers"]
},
{
"name": "load_customers",
"taskType": "BatchTask",
"description": "Load transformed data into warehouse"
}
]
}'
from metadata.sdk import configure
from metadata.sdk.entities import Pipelines
configure(
host="https://your-company.open-metadata.org/api",
jwt_token="your-jwt-token"
)
# Retrieve, modify, and update
pipeline = Pipelines.retrieve("538faa63-d204-46ff-aead-d158d0401cac")
pipeline.description = "Updated: Analytics pipeline with incremental customer processing"
updated = Pipelines.update(pipeline)
print(f"Updated to version {updated.version.root}")
import org.openmetadata.schema.entity.data.Pipeline;
// client is an initialized OpenMetadataClient.
// Retrieve, modify, and update
Pipeline pipeline = client.pipelines().get("538faa63-d204-46ff-aead-d158d0401cac");
pipeline.setDescription("Updated: Analytics pipeline with incremental customer processing");
Pipeline updated = client.pipelines().update(pipeline.getId(), pipeline);
# Update by ID
curl -X PATCH "{base_url}/api/v1/pipelines/538faa63-d204-46ff-aead-d158d0401cac" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json-patch+json" \
-d '[
{"op": "replace", "path": "/description", "value": "Updated: Analytics pipeline with incremental customer processing"}
]'
# Update by name
curl -X PATCH "{base_url}/api/v1/pipelines/name/sample_airflow.dbt_analytics_customers" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json-patch+json" \
-d '[
{"op": "replace", "path": "/description", "value": "Updated: Analytics pipeline with incremental customer processing"}
]'
{
"id": "538faa63-d204-46ff-aead-d158d0401cac",
"name": "dbt_analytics_customers",
"displayName": "DBT Customer Analytics",
"fullyQualifiedName": "sample_airflow.dbt_analytics_customers",
"description": "Updated: Analytics pipeline with incremental customer processing",
"version": 0.2,
"updatedAt": 1769982668397,
"updatedBy": "admin",
"service": {
"id": "daa58a49-df05-48a3-a417-45dfd12eacf5",
"type": "pipelineService",
"name": "sample_airflow",
"fullyQualifiedName": "sample_airflow",
"deleted": false
},
"serviceType": "DBTCloud",
"href": "http://localhost:8585/api/v1/pipelines/538faa63-d204-46ff-aead-d158d0401cac",
"deleted": false,
"owners": [],
"tags": [],
"followers": [],
"votes": {
"upVotes": 0,
"downVotes": 0
},
"domains": []
}
Returns
Returns the updated pipeline object with the new version number.Response
Error Handling
| Code | Error Type | Description |
|---|---|---|
400 | BAD_REQUEST | Invalid or malformed request body |
401 | UNAUTHORIZED | Invalid or missing authentication token |
403 | FORBIDDEN | User lacks permission to update this pipeline |
409 | CONFLICT | Concurrent modification detected |
Was this page helpful?