---
title: "Update pipeline storage settings"
method: PATCH
path: "/pipelines/storage-settings"
tags: ["Pipelines"]
---

# Update pipeline storage settings

`PATCH /pipelines/storage-settings`

Update Git storage settings for a pipeline selected by `pipeline_id` or `alias`.

## Query parameters

- `pipeline_id` string, uuid4, nullable
- `alias` string, nullable

## Request body

- PipelineStorageSettingsRequest — Request body for updating git-backed pipeline storage settings.
  - `path` string, required
  - `repository` string, required
  - `storageProvider` 'ORCHESTRA' | 'AZURE_DEVOPS' | 'GITHUB' | 'GITLAB' | 'BITBUCKET', required
  - `defaultBranch` string, required
  - `workingBranch` string, nullable

## Response `200`

Successful response.

- CreateOrUpdatePipelineResponse
  - `id` string, uuid4, required
  - `name` string, required
  - `numTasks` integer, nullable
  - `yamlPath` string, required
  - `createdAt` string, required
  - `updatedAt` string, required
  - `paused` boolean, required
  - `triggerEvents` string, nullable
  - `webhook` string, nullable
  - `schedule` string, nullable
  - `sensors` string, nullable
  - `inputs` object, nullable
  - `productId` string, uuid4, nullable
  - `productName` string, nullable
  - `latestVersionNumber` integer, nullable
  - `publishedVersionNumber` integer, nullable
  - `storageProvider` string, nullable
  - `repository` string, nullable
  - `defaultBranch` string, nullable
  - `alias` string, nullable
  - `latestRunId` string, uuid4, nullable
  - `latestRunStatus` 'CREATED' | 'RUNNING' | 'SUCCEEDED' | 'WARNING' | 'FAILED' | 'SKIPPED' | 'CANCELLING' | 'CANCELLED'
  - `latestRunMessage` string, nullable
  - `latestRunCreatedAt` string, nullable
  - `latestRunCompletedAt` string, nullable
  - `latestRunStartedAt` string, nullable
  - `data` PipelineModel, required — Root model for Orchestra pipeline definitions. Orchestra pipelines are DAGs (directed acyclic graphs) of task groups that orchestrate jobs across external systems (dbt, Snowflake, Fivetran, Databricks, AWS, GCP, Azure, etc.). DAG structure: The 'pipeline' dictionary contains task groups (recommended) or standalone tasks. Each entry has a user-chosen ID that can be referenced in 'dependsOn' arrays. Task groups are the primary mechanism for building DAGs -- dependencies between groups define execution order. Variable system: Use ${{ expression }} syntax throughout the pipeline. Available variable types: - ENV.*: Environment variables (e.g., ${{ ENV.MY_VAR }}) - ORCHESTRA.*: Global runtime variables -- PIPELINE_RUN_ID, CURRENT_TIME, TASK_RUN_ID - inputs.*: Runtime inputs (e.g., ${{ inputs.my_input }}) - matrix.*: Matrix iteration values (e.g., ${{ matrix.table_name }}) - ORCHESTRA.PIPELINE_RUN_TASKS['task_id'].OUTPUTS['name']: Upstream task outputs Built-in functions: format_date(timestamp, format, timezone), add_days(timestamp, delta), add_months(timestamp, delta), len(list), int(value), str(value). Trigger model: Triggers use OR-logic -- any single trigger firing (cron schedule, webhook, pipeline event, or sensor) starts a pipeline run. Pipeline run states: Created -> Running -> Succeeded | Failed | Warning | Cancelling -> Cancelled. Task run states: Created -> Queued -> Running -> Succeeded | Failed | Skipped | Cancelling -> Cancelled. Key constraints: Task IDs must be unique across the entire pipeline. Dependencies must not be circular. JSON keys use snake_case in YAML but are converted to camelCase in the API (except in 'parameters' blocks and 'inputs').
    - `version` 'v1', required — Pipeline schema version. Currently only 'v1' is supported.
    - `name` string, required — Unique identifier for this pipeline (max 100 chars). Used in UI and API.
    - `pipeline` object, required — Dictionary mapping user-chosen IDs to task group or standalone task definitions. IDs must be unique across the entire pipeline and are referenced in dependsOn arrays. Task groups (recommended) are the primary mechanism for building DAGs -- dependencies between groups define execution order.
    - `schedule` ScheduleModel[], nullable — List of cron schedules that trigger this pipeline. Triggers use OR-logic -- any single trigger firing starts a pipeline run.
      - `name` string, nullable
      - `cron` string, required
      - `timezone` string, nullable
      - `environment` union
        - string, uuid4
        - string
      - `branch` string, nullable
      - `exclude` string[], nullable
      - `runInputs` object, nullable
    - `sensors` object, nullable — Dictionary of sensor definitions that trigger this pipeline. Triggers use OR-logic -- any single trigger firing starts a pipeline run.
    - `triggerEvents` TriggerEventModel[], nullable — List of pipeline completion events that trigger this pipeline. Triggers use OR-logic -- any single trigger firing starts a pipeline run.
      - `type` 'pipeline', required — Event type. Currently only 'pipeline' is supported.
      - `pipelineId` union, required — UUID of the pipeline whose completion triggers this pipeline. If 'ANY', triggers on any pipeline completion.
        - string, uuid4
        - '*'
      - `statuses` PipelineRunStatus[], nullable — List of pipeline run statuses that trigger this pipeline. Available values: SUCCEEDED, FAILED, WARNING, CANCELLED. If omitted, triggers on SUCCEEDED and WARNING only.
      - `runInputs` object, nullable — Input values to pass to the triggered pipeline run.
    - `webhook` WebhookModel
      - `enabled` boolean
      - `operationMetadata` object, nullable
      - `runInputs` object, nullable
    - `configuration` ConfigurationModel
      - `retries` integer, nullable
      - `retryDelay` integer, nullable
      - `timeout` integer, nullable
      - `concurrency` ConcurrencyModel
        - `maxActive` integer, nullable
    - `inputs` object, nullable — Declared inputs that can be passed when triggering the pipeline. Reference in tasks using ${{ inputs.<name> }}. Non-optional inputs without defaults must appear in all trigger runInputs.
    - `meta` object, nullable
    - `alerts` AlertModel[], nullable
      - `name` string, required
      - `statuses` AlertLevelTypes[], required
      - `destinations` AlertDestinationModel[], required
        - `integration` 'EMAIL' | 'DATADOG' | 'MICROSOFT_TEAMS' | 'PAGER_DUTY' | 'SLACK' | 'WEBHOOK', required
        - `destination` string, nullable
        - `connectionId` string, nullable
        - `parameters` union
          - BaseDatadogNotificationParametersModel
            - `priority` integer, nullable
          - WebhookAlertParametersModel
            - `body` union
              - …
      - `customMessage` string, nullable
    - `anomalies` PipelineAnomalyModel[], nullable
      - `percentageAboveBaseline` integer
      - `destinations` AlertDestinationModel[]
        - `integration` 'EMAIL' | 'DATADOG' | 'MICROSOFT_TEAMS' | 'PAGER_DUTY' | 'SLACK' | 'WEBHOOK', required
        - `destination` string, nullable
        - `connectionId` string, nullable
        - `parameters` union
          - BaseDatadogNotificationParametersModel
            - `priority` integer, nullable
          - WebhookAlertParametersModel
            - `body` union
              - …
      - `type` 'pipeline_duration_above_baseline'
  - `latestFileSha` string, nullable
  - `newCommitSha` string, nullable
  - `currentVersionNumber` integer, nullable

## Other responses

- `401` — The request was not authorized. Check the API key and `Authorization` header.
- `403` — The request was forbidden, or the Metadata API is not enabled for this workspace.
- `422` — Validation failed. Check path parameters, query parameters, and JSON request bodies.

---

[API](https://skmtc.net/getorchestra/apis/orchestra-api.md) · [All operations](https://skmtc.net/getorchestra/apis/orchestra-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/getorchestra/orchestra-api/versions/50f4d2ba114d/schema)
