# Update

Launch stage: GA

`PUT /api/2.0/pipelines/{pipeline_id}`

Updates a pipeline with the supplied configuration.

API scopes: pipelines

## Path parameters

- `pipeline_id` (string, optional)
  Unique identifier for this pipeline.

## Request body

- `allow_duplicate_names` (boolean, optional)
  If false, deployment will fail if name has changed and conflicts the name of another pipeline.
  Default: `false`
- `expected_last_modified` (int64, optional)
  If present, the last-modified time of the pipeline settings before the edit.
   If the settings were modified after that time, then the request will fail with
   a conflict.
- `run_as` (object, optional)
  - `user_name` (string, required)
    The email of an active workspace user. Users can only set this field to their own email.
    Example: `user@databricks.com`
  - `service_principal_name` (string, required)
    Application ID of an active service principal. Setting this field requires the `servicePrincipal/user` role.
    Example: `692bc6d0-ffa3-11ed-be56-0242ac120002`
- `parameters` (object, optional, Beta)
  Key/value map of default parameters to use for pipeline execution.
   Maximum total size: 10k characters (JSON format)
- `id` (string, optional)
  Unique identifier for this pipeline.
- `name` (string, optional)
  Friendly identifier for this pipeline.
- `storage` (string, optional)
  DBFS root directory for storing checkpoints and tables.
- `configuration` (object, optional)
  String-String configuration for this pipeline execution.
- `clusters` (array of object, optional)
  Cluster settings for this pipeline deployment.
  - `label` (string, optional)
    A label for the cluster specification, either `default` to configure the default cluster, or `maintenance` to configure the maintenance cluster. This field is optional. The default value is `default`.
  - `apply_policy_default_values` (boolean, optional)
    Note: This field won't be persisted. Only API users will check this field.
  - `spark_conf` (object, optional)
    An object containing a set of optional, user-specified Spark configuration key-value pairs.
     See :method:clusters/create for more details.
  - `aws_attributes` (object, optional)
    Attributes related to clusters running on Amazon Web Services.
     If not specified at cluster creation, a set of default values will be used.
    - `first_on_demand` (int32, optional)
      The first ``first_on_demand`` nodes of the cluster will be placed on on-demand instances.
       If this value is greater than 0, the cluster driver node in particular will be placed on an
       on-demand instance. If this value is greater than or equal to the current cluster size, all
       nodes will be placed on on-demand instances. If this value is less than the current cluster
       size, ``first_on_demand`` nodes will be placed on on-demand instances and the remainder will
       be placed on ``availability`` instances. Note that this value does not affect
       cluster size and cannot currently be mutated over the lifetime of a cluster.
    - `availability` (string, optional)
      Availability type used for all subsequent nodes past the ``first_on_demand`` ones.
       Note: If ``first_on_demand`` is zero, this availability type will be used for the entire cluster.
      Possible values: `SPOT`, `ON_DEMAND`, `SPOT_WITH_FALLBACK`
    - `zone_id` (string, optional)
      Identifier for the availability zone/datacenter in which the cluster resides.
       This string will be of a form like "us-west-2a". The provided availability
       zone must be in the same region as the <Databricks> deployment. For example, "us-west-2a"
       is not a valid zone id if the <Databricks> deployment resides in the "us-east-1" region.
       This is an optional field at cluster creation, and if not specified, a default zone will be used.
       If the zone specified is "auto", will try to place cluster in a zone with high availability,
       and will retry placement in a different AZ if there is not enough capacity.
       See [[AutoAZHelper.scala]] for more details.
       The list of available zones as well as the default value can be found by using the
       `List Zones`_ method.
    - `instance_profile_arn` (string, optional)
      Nodes for this cluster will only be placed on AWS instances with this instance profile. If
       omitted, nodes will be placed on instances without an IAM instance profile. The instance
       profile must have previously been added to the <Databricks> environment by an account
       administrator.
      
       This feature may only be available to certain customer plans.
      
       ***internal
       If this field is ommitted, we will pull in the default from the conf if it exists.
    - `spot_bid_price_percent` (int32, optional)
      The bid price for AWS spot instances, as a percentage of the corresponding instance type's
       on-demand price.
       For example, if this field is set to 50, and the cluster needs a new ``r3.xlarge`` spot
       instance, then the bid price is half of the price of
       on-demand ``r3.xlarge`` instances. Similarly, if this field is set to 200, the bid price is twice
       the price of on-demand ``r3.xlarge`` instances. If not specified, the default value is 100.
       When spot instances are requested for this cluster, only spot instances whose bid price
       percentage matches this field will be considered.
       Note that, for safety, we enforce this field to be no more than 10000.
      
       ***internal
       The default value and documentation here should be kept consistent with
       CommonConf.defaultSpotBidPricePercent and CommonConf.maxSpotBidPricePercent.
    - `ebs_volume_type` (string, optional)
      The type of EBS volumes that will be launched with this cluster.
      Possible values: `GENERAL_PURPOSE_SSD`, `THROUGHPUT_OPTIMIZED_HDD`
    - `ebs_volume_count` (int32, optional)
      The number of volumes launched for each instance. Users can choose up to 10 volumes.
       This feature is only enabled for supported node types. Legacy node types cannot specify
       custom EBS volumes.
       For node types with no instance store, at least one EBS volume needs to be specified;
       otherwise, cluster creation will fail.
      
       These EBS volumes will be mounted at ``/ebs0``, ``/ebs1``, and etc.
       Instance store volumes will be mounted at ``/local_disk0``, ``/local_disk1``, and etc.
      
       If EBS volumes are attached, <Databricks> will configure Spark to use only the EBS volumes for
       scratch storage because heterogeneously sized scratch devices can lead to inefficient disk
       utilization. If no EBS volumes are attached, <Databricks> will configure Spark to use instance
       store volumes.
      
       Please note that if EBS volumes are specified, then the Spark configuration ``spark.local.dir``
       will be overridden.
    - `ebs_volume_size` (int32, optional)
      The size of each EBS volume (in GiB) launched for each instance. For general purpose
       SSD, this value must be within the range 100 - 4096. For throughput optimized HDD,
       this value must be within the range 500 - 4096.
    - `ebs_volume_iops` (int32, optional)
    - `ebs_volume_throughput` (int32, optional)
  - `azure_attributes` (object, optional)
    Attributes related to clusters running on Microsoft Azure.
     If not specified at cluster creation, a set of default values will be used.
    - `first_on_demand` (int32, optional)
      The first ``first_on_demand`` nodes of the cluster will be placed on on-demand instances.
       This value should be greater than 0, to make sure the cluster driver node is placed on an
       on-demand instance. If this value is greater than or equal to the current cluster size, all
       nodes will be placed on on-demand instances. If this value is less than the current cluster
       size, ``first_on_demand`` nodes will be placed on on-demand instances and the remainder will
       be placed on ``availability`` instances. Note that this value does not affect
       cluster size and cannot currently be mutated over the lifetime of a cluster.
    - `availability` (string, optional)
      Availability type used for all subsequent nodes past the ``first_on_demand`` ones.
       Note: If ``first_on_demand`` is zero (which only happens on pool clusters), this availability
       type will be used for the entire cluster.
      Possible values: `SPOT_AZURE`, `ON_DEMAND_AZURE`, `SPOT_WITH_FALLBACK_AZURE`
    - `spot_bid_max_price` (double, optional)
      The max bid price to be used for Azure spot instances.
       The Max price for the bid cannot be higher than the on-demand price of the instance.
       If not specified, the default value is -1, which specifies that the instance cannot be evicted
       on the basis of price, and only on the basis of availability. Further, the value should > 0 or -1.
  - `gcp_attributes` (object, optional)
    Attributes related to clusters running on Google Cloud Platform.
     If not specified at cluster creation, a set of default values will be used.
    - `google_service_account` (string, optional)
      If provided, the cluster will impersonate the google service account when accessing
       gcloud services (like GCS). The google service account
       must have previously been added to the <Databricks> environment by an account
       administrator.
    - `boot_disk_size` (int32, optional)
      boot disk size in GB
    - `availability` (string, optional)
      This field determines whether the spark executors will be scheduled to run on preemptible
       VMs, on-demand VMs, or preemptible VMs with a fallback to on-demand VMs if the former is unavailable.
      Possible values: `PREEMPTIBLE_GCP`, `ON_DEMAND_GCP`, `PREEMPTIBLE_WITH_FALLBACK_GCP`
    - `zone_id` (string, optional)
      Identifier for the availability zone in which the cluster resides.
       This can be one of the following:
       - "HA" => High availability, spread nodes across availability zones for a
          <Databricks> deployment region [default].
       - "AUTO" => <Databricks> picks an availability zone to schedule the cluster on.
       - A GCP availability zone => Pick One of the available zones for (machine type + region) from
         https://cloud.google.com/compute/docs/regions-zones.
    - `local_ssd_count` (int32, optional)
      The number of local SSDs to attach to each worker and driver for this cluster. If left unspecified,
       the default number of local SSDs for the node type will be used.
      
       NOTE: Each instance type can only support a certain number of attached local SSDs. The value
       specified in local_ssd_count must be valid for BOTH the driver and worker instance type. See
       GCP docs here:
       https://cloud.google.com/compute/docs/disks#local_ssd_machine_type_restrictions
      
       Validation is performed at the RPC layer and the RPC will be rejected if the specified
       local_ssd_count is invalid.
  - `node_type_id` (string, optional)
    This field encodes, through a single value, the resources available to each of
     the Spark nodes in this cluster. For example, the Spark nodes can be provisioned
     and optimized for memory or compute intensive workloads. A list of available node
     types can be retrieved by using the :method:clusters/listNodeTypes API call.
  - `driver_node_type_id` (string, optional)
    The node type of the Spark driver.
     Note that this field is optional; if unset, the driver node type will be set as the same value
     as `node_type_id` defined above.
  - `ssh_public_keys` (array of string, optional)
    SSH public key contents that will be added to each Spark node in this cluster. The
     corresponding private keys can be used to login with the user name `ubuntu` on port `2200`.
     Up to 10 keys can be specified.
  - `custom_tags` (object, optional)
    Additional tags for cluster resources. <Databricks> will tag all cluster resources (e.g., AWS
     instances and EBS volumes) with these tags in addition to `default_tags`. Notes:
    
     - Currently, <Databricks> allows at most 45 custom tags
    
     - Clusters can only reuse cloud resources if the resources' tags are a subset of the cluster tags
  - `cluster_log_conf` (object, optional)
    The configuration for delivering spark logs to a long-term storage destination.
     Only dbfs destinations are supported. Only one destination can be specified
     for one cluster. If the conf is given, the logs will be delivered to the destination every
     `5 mins`. The destination of driver logs is `$destination/$clusterId/driver`, while
     the destination of executor logs is `$destination/$clusterId/executor`.
    - `dbfs` (object, required)
      destination needs to be provided. e.g.
       ``{ "dbfs" : { "destination" : "dbfs:/home/cluster_log" } }``
      - `destination` (string, optional)
        dbfs destination, e.g. ``dbfs:/my/path``
  - `spark_env_vars` (object, optional)
    An object containing a set of optional, user-specified environment variable key-value pairs.
     Please note that key-value pair of the form (X,Y) will be exported as is (i.e.,
     `export X='Y'`) while launching the driver and workers.
    
     In order to specify an additional set of `SPARK_DAEMON_JAVA_OPTS`, we recommend appending
     them to `$SPARK_DAEMON_JAVA_OPTS` as shown in the example below. This ensures that all
     default databricks managed environmental variables are included as well.
    
     Example Spark environment variables:
     `{"SPARK_WORKER_MEMORY": "28000m", "SPARK_LOCAL_DIRS": "/local_disk0"}` or
     `{"SPARK_DAEMON_JAVA_OPTS": "$SPARK_DAEMON_JAVA_OPTS -Dspark.shuffle.service.enabled=true"}`
  - `init_scripts` (array of object, optional)
    The configuration for storing init scripts. Any number of destinations can be specified. The scripts are executed sequentially in the order provided. If `cluster_log_conf` is specified, init script logs are sent to `<destination>/<cluster-ID>/init_scripts`.
    - `dbfs` (object, required)
      destination needs to be provided. e.g.
       ``{ "dbfs" : { "destination" : "dbfs:/init-scripts/my_script.sh" } }``
      - `destination` (string, optional)
        dbfs destination, e.g. ``dbfs:/my/path``
    - `s3` (object, required)
      destination and either region or endpoint should also be provided. e.g.
       ``{ "s3": { "destination" : "s3://init-scripts/my_script.sh", "region" : "us-west-2" } }``
       Cluster iam role is used to access s3, please make sure the cluster iam role in
       ``instance_profile_arn`` has permission to write data to the s3 destination.
      - `destination` (string, optional)
        S3 destination, e.g. ``s3://my-bucket/some-prefix`` Note that logs will be delivered using
         cluster iam role, please make sure you set cluster iam role and the role has write access to the
         destination. Please also note that you cannot use AWS keys to deliver logs.
      - `region` (string, optional)
        S3 region, e.g. ``us-west-2``. Either region or endpoint needs to be set. If both are set,
         endpoint will be used.
      - `endpoint` (string, optional)
        S3 endpoint, e.g. ``https://s3-us-west-2.amazonaws.com``. Either region or endpoint needs to be set.
         If both are set, endpoint will be used.
      - `enable_encryption` (boolean, optional)
        Flag to enable server side encryption, ``false`` by default.
      - `encryption_type` (string, optional)
        The encryption type, it could be ``sse-s3`` or ``sse-kms``. It will be used only when
         encryption is enabled and the default type is ``sse-s3``.
      - `kms_key` (string, optional)
        Kms key which will be used if encryption is enabled and encryption type is set to ``sse-kms``.
      - `canned_acl` (string, optional)
        Set canned access control list for the logs, e.g. ``bucket-owner-full-control``.
         If ``canned_cal`` is set, please make sure the cluster iam role has ``s3:PutObjectAcl`` permission on
         the destination bucket and prefix. The full list of possible canned acl can be found at
         http://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl.
         Please also note that by default only the object owner gets full controls. If you are using cross account
         role for writing data, you may want to set ``bucket-owner-full-control`` to make bucket owner able to
         read the logs.
  - `instance_pool_id` (string, optional)
    The optional ID of the instance pool to which the cluster belongs.
  - `policy_id` (string, optional)
    The ID of the cluster policy used to create the cluster if applicable.
  - `enable_local_disk_encryption` (boolean, optional)
    Whether to enable local disk encryption for the cluster.
  - `driver_instance_pool_id` (string, optional)
    The optional ID of the instance pool for the driver of the cluster belongs.
     The pool cluster uses the instance pool with id (instance_pool_id) if the driver pool is not
     assigned.
  - `num_workers` (int32, required)
    Number of worker nodes that this cluster should have. A cluster has one Spark Driver
     and `num_workers` Executors for a total of `num_workers` + 1 Spark nodes.
    
     Note: When reading the properties of a cluster, this field reflects the desired number
     of workers rather than the actual current number of workers. For instance, if a cluster
     is resized from 5 to 10 workers, this field will immediately be updated to reflect
     the target size of 10 workers, whereas the workers listed in `spark_info` will gradually
     increase from 5 to 10 as the new nodes are provisioned.
  - `autoscale` (object, required)
    Parameters needed in order to automatically scale clusters up and down based on load.
     Note: autoscaling works best with DB runtime versions 3.0 or later.
    - `min_workers` (int32, optional)
      The minimum number of workers the cluster can scale down to when underutilized.
       It is also the initial number of workers the cluster will have after creation.
    - `max_workers` (int32, optional)
      The maximum number of workers to which the cluster can scale up when overloaded. `max_workers` must be strictly greater than `min_workers`.
    - `mode` (string, optional)
      Databricks Enhanced Autoscaling optimizes cluster utilization by automatically
       allocating cluster resources based on workload volume, with minimal impact to
       the data processing latency of your pipelines. Enhanced Autoscaling is available
       for `updates` clusters only. The legacy autoscaling feature is used for `maintenance`
       clusters.
- `libraries` (array of object, optional)
  Libraries or code needed by this deployment.
  - `whl` (string, required)
    URI of the whl to be installed.
  - `notebook` (object, required)
    The path to a notebook that defines a pipeline and is stored in the <Databricks> workspace.
    - `path` (string, optional)
      The absolute path of the source code.
  - `file` (object, required)
    The path to a file that defines a pipeline and is stored in the Databricks Repos.
    - `path` (string, optional)
      The absolute path of the source code.
  - `glob` (object, required, Public Preview)
    The unified field to include source codes.
     Each entry can be a notebook path, a file path, or a folder path that ends `/**`.
     This field cannot be used together with `notebook` or `file`.
    - `include` (string, optional, Public Preview)
      The source code to include for pipelines
      Example: `/Workspace/Users/user.name/pipeline-folder/my-file.py` : use glob to include a file
      Example: `/Workspace/Users/user.name/pipeline-folder/**` : use glob to include a folder
      Example: `/Workspace/Users/user.name/pipeline-folder/my-notebook` : use glob to include a notebook
- `ingestion_definition` (object, optional, Public Preview)
  The configuration for a managed ingestion pipeline. These settings cannot be used with the 'libraries', 'schema', 'target', or 'catalog' settings.
  - `connection_name` (string, required, Public Preview)
    The Unity Catalog connection that this ingestion pipeline uses to communicate with the source. This is used with
     both connectors for applications like Salesforce, Workday, and so on, and also database connectors like Oracle,
     (connector_type = QUERY_BASED OR connector_type = CDC).
     If connection name corresponds to database connectors like Oracle, and connector_type is not provided then
     connector_type defaults to QUERY_BASED. If connector_type is passed as CDC we use Combined Cdc Managed Ingestion
     pipeline.
     Under certain conditions, this can be replaced with ingestion_gateway_id to change the connector to Cdc Managed
     Ingestion Pipeline with Gateway pipeline.
  - `ingestion_gateway_id` (string, required, Public Preview)
    Identifier for the gateway that is used by this ingestion pipeline to communicate with the source database.
     This is used with CDC connectors to databases like SQL Server using a gateway pipeline (connector_type = CDC).
     Under certain conditions, this can be replaced with connection_name to change the connector to Combined Cdc
     Managed Ingestion Pipeline.
  - `ingest_from_uc_foreign_catalog` (boolean, required, Public Preview)
    Immutable. If set to true, the pipeline will ingest tables from the
     UC foreign catalogs directly without the need to specify a UC connection or ingestion gateway.
     The `source_catalog` fields in objects of IngestionConfig are interpreted as
     the UC foreign catalogs to ingest from.
    Default: `false`
  - `objects` (array of object, optional, Public Preview)
    Required. Settings specifying tables to replicate and the destination for the replicated tables.
    - `schema` (object, required, Public Preview)
      Select all tables from a specific source schema.
      - `source_catalog` (string, optional, Public Preview)
        The source catalog name. Might be optional depending on the type of source.
      - `source_schema` (string, optional, Public Preview)
        Schema name in the source database. Currently required; this field will become optional in
         an upcoming release, since some source types (for example streaming / message-bus connectors)
         do not use it. When that change ships, this field's type in the generated SDKs and CLI will
         change from required to optional (nullable); clients that assume it is always present should
         handle its absence.
      - `destination_catalog` (string, optional, Public Preview)
        Required. Destination catalog to store tables.
      - `destination_schema` (string, optional, Public Preview)
        Required. Destination schema to store tables in. Tables with the same name as the source tables are created in this destination schema. The pipeline fails If a table with the same name already exists.
      - `table_configuration` (object, optional, Public Preview)
        Configuration settings to control the ingestion of tables. These settings are applied to all tables in this schema and override the table_configuration defined in the IngestionPipelineDefinition object.
      - `connector_options` (object, optional, Public Preview)
        (Optional) Source Specific Connector Options
      - `fanout_options` (object, optional, Beta)
        Fanout options for multi-table routing from streaming sources.
         When set, records are routed to destination tables based on a
         per-record routing key. The key value becomes the table name:
         {destination_catalog}.{destination_schema}.{key_value}.
    - `table` (object, required, Public Preview)
      Select a specific source table.
      - `source_catalog` (string, optional, Public Preview)
        Source catalog name. Might be optional depending on the type of source.
      - `source_schema` (string, optional, Public Preview)
        Schema name in the source database. Might be optional depending on the type of source.
      - `source_table` (string, optional, Public Preview)
        Table name in the source database. Currently required; this field will become optional in
         an upcoming release, since some source types (for example streaming / message-bus connectors)
         do not use it. When that change ships, this field's type in the generated SDKs and CLI will
         change from required to optional (nullable); clients that assume it is always present should
         handle its absence.
      - `destination_catalog` (string, optional, Public Preview)
        Required. Destination catalog to store table.
      - `destination_schema` (string, optional, Public Preview)
        Required. Destination schema to store table.
      - `destination_table` (string, optional, Public Preview)
        Optional. Destination table name. The pipeline fails if a table with that name already exists. If not set, the source table name is used.
      - `table_configuration` (object, optional, Public Preview)
        Configuration settings to control the ingestion of tables. These settings override the table_configuration defined in the IngestionPipelineDefinition object and the SchemaSpec.
      - `connector_options` (object, optional, Public Preview)
        (Optional) Source Specific Connector Options
    - `report` (object, required, Public Preview)
      Select a specific source report.
      - `source_url` (string, optional, Public Preview)
        Required. Report URL in the source system.
      - `destination_catalog` (string, optional, Public Preview)
        Required. Destination catalog to store table.
      - `destination_schema` (string, optional, Public Preview)
        Required. Destination schema to store table.
      - `destination_table` (string, optional, Public Preview)
        Required. Destination table name. The pipeline fails if a table with that name already exists.
      - `table_configuration` (object, optional, Public Preview)
        Configuration settings to control the ingestion of tables. These settings override the table_configuration defined in the IngestionPipelineDefinition object.
  - `source_type` (string, optional, Public Preview)
    The type of the foreign source.
     The source type will be inferred from the source connection or ingestion gateway.
     This field is output only and will be ignored if provided.
    Possible values: `INGESTION_SOURCE_TYPE_UNSPECIFIED`, `MYSQL`, `POSTGRESQL`, `SQLSERVER`, `SALESFORCE`, `BIGQUERY`, `NETSUITE`, `WORKDAY_RAAS`, `GA4_RAW_DATA`, `SERVICENOW`, `MANAGED_POSTGRESQL`, `ORACLE`, `TERADATA`, `SHAREPOINT`, `DYNAMICS365`, `JIRA`, `CONFLUENCE`, `META_MARKETING`, `ZENDESK`
  - `table_configuration` (object, optional, Public Preview)
    Configuration settings to control the ingestion of tables. These settings are applied to all tables in the pipeline.
    - `scd_type` (string, optional, Public Preview)
      Possible values: `SCD_TYPE_UNSPECIFIED`, `SCD_TYPE_1`, `SCD_TYPE_2`, `APPEND_ONLY`
      Default: `SCD_TYPE_1`
    - `primary_keys` (array of string, optional, Public Preview)
      The primary key of the table used to apply changes.
    - `sequence_by` (array of string, optional, Public Preview)
      The column names specifying the logical order of events in the source data. Spark Declarative Pipelines uses this sequencing to handle change events that arrive out of order.
    - `include_columns` (array of string, optional, Public Preview)
      A list of column names to be included for the ingestion.
       When not specified, all columns except ones in exclude_columns will be included. Future
       columns will be automatically included.
       When specified, all other future columns will be automatically excluded from ingestion.
       This field in mutually exclusive with `exclude_columns`.
    - `exclude_columns` (array of string, optional, Public Preview)
      A list of column names to be excluded for the ingestion.
       When not specified, include_columns fully controls what columns to be ingested.
       When specified, all other columns including future ones will be automatically included for ingestion.
       This field in mutually exclusive with `include_columns`.
    - `row_filter` (string, optional, Public Preview)
      (Optional, Immutable) The row filter condition to be applied to the table.
       It must not contain the WHERE keyword, only the actual filter condition.
       It must be in DBSQL format.
    - `query_based_connector_config` (object, optional, Public Preview)
      - `cursor_columns` (array of string, optional, Public Preview)
        The names of the monotonically increasing columns in the source table that are used to enable
         the table to be read and ingested incrementally through structured streaming.
         The columns are allowed to have repeated values but have to be non-decreasing.
         If the source data is merged into the destination (e.g., using SCD Type 1 or Type 2), these
         columns will implicitly define the `sequence_by` behavior. You can still explicitly set
         `sequence_by` to override this default.
      - `deletion_condition` (string, optional, Public Preview)
        Specifies a SQL WHERE condition that specifies that the source row has been deleted.
         This is sometimes referred to as "soft-deletes".
         For example: "Operation = 'DELETE'" or "is_deleted = true".
         This field is orthogonal to `hard_deletion_sync_interval_in_seconds`,
         one for soft-deletes and the other for hard-deletes.
         See also the hard_deletion_sync_min_interval_in_seconds field for
         handling of "hard deletes" where the source rows are physically removed from the table.
      - `hard_deletion_sync_min_interval_in_seconds` (int64, optional, Beta)
        Specifies the minimum interval (in seconds) between snapshots on primary keys
         for detecting and synchronizing hard deletions—i.e., rows that have been
         physically removed from the source table.
         This interval acts as a lower bound. If ingestion runs less frequently than
         this value, hard deletion synchronization will align with the actual ingestion
         frequency instead of happening more often.
         If not set, hard deletion synchronization via snapshots is disabled.
         This field is mutable and can be updated without triggering a full snapshot.
    - `auto_full_refresh_policy` (object, optional, Public Preview)
      (Optional, Mutable) Policy for auto full refresh, if enabled pipeline will automatically try
       to fix issues by doing a full refresh on the table in the retry run. auto_full_refresh_policy
       in table configuration will override the above level auto_full_refresh_policy.
       For example,
       {
          "auto_full_refresh_policy": {
            "enabled": true,
            "min_interval_hours": 23,
          }
       }
       If unspecified, auto full refresh is disabled.
      - `enabled` (boolean, optional, Public Preview)
        (Required, Mutable) Whether to enable auto full refresh or not.
      - `min_interval_hours` (int32, optional, Public Preview)
        (Optional, Mutable) Specify the minimum interval in hours between the timestamp
         at which a table was last full refreshed and the current timestamp for triggering auto full
         If unspecified and autoFullRefresh is enabled then by default min_interval_hours is 24 hours.
    - `table_properties` (object, optional, Beta)
      Table properties to set on the destination table.
       These are key-value pairs that configure various Delta table behaviors or any user defined properties.
       Example: {"delta.feature.variantType": "supported", "delta.enableTypeWidening": "true"}
       Note: table_properties in table specific configuration will override the table_properties of the pipeline definition.
    - `enable_auto_clustering` (boolean, optional, Beta)
      Whether to enable auto clustering on the destination table.
       When enabled, Delta will automatically optimize the data layout
       based on the clustering columns for improved query performance.
       Note: enable_auto_clustering in table specific configuration will override the pipeline definition.
       Note: we can only provide enable_auto_clustering or clustering_columns,
       added as separate fields as we cannot have repeated field in oneof.
      Default: `false`
    - `clustering_columns` (array of string, optional, Beta)
      List of column names to use for clustering the destination table.
       When specified, the destination Delta table will be clustered by these columns.
       This can improve query performance when filtering on these columns.
       Note: clustering_columns in table specific configuration will override the pipeline definition.
       Note: we can only provide enable_auto_clustering or clustering_columns,
       added as separate fields as we cannot have repeated field in oneof.
    - `source_metadata_column` (string, optional, Beta)
      (Optional) Name of the struct column added to each ingested record to hold per row source
       metadata.
  - `source_configurations` (array of object, optional, Public Preview)
    Top-level source configurations
    - `catalog` (object, optional, Public Preview)
      Catalog-level source configuration parameters
      - `source_catalog` (string, optional, Public Preview)
        Source catalog name
      - `postgres` (object, required, Public Preview)
        Postgres-specific catalog-level configuration parameters
  - `full_refresh_window` (object, optional, Public Preview)
    (Optional) A window that specifies a set of time ranges for snapshot queries in CDC.
    - `start_hour` (int32, optional, Public Preview)
      An integer between 0 and 23 denoting the start hour for the window in the 24-hour day.
    - `days_of_week` (array of string, optional, Public Preview)
      Days of week in which the window is allowed to happen
       If not specified all days of the week will be used.
      Possible values: `DAY_OF_WEEK_UNSPECIFIED`, `MONDAY`, `TUESDAY`, `WEDNESDAY`, `THURSDAY`, `FRIDAY`, `SATURDAY`, `SUNDAY`
    - `time_zone_id` (string, optional, Public Preview)
      Time zone id of window. See https://docs.databricks.com/sql/language-manual/sql-ref-syntax-aux-conf-mgmt-set-timezone.html for details.
       If not specified, UTC will be used.
  - `connector_type` (string, optional, Public Preview)
    (Optional) Connector Type for sources. Ex: CDC, Query Based.
    Possible values: `CONNECTOR_TYPE_UNSPECIFIED`, `CDC`, `QUERY_BASED`
  - `data_staging_options` (object, optional, Public Preview)
    (Optional) Location of staged data storage. This is required for migration from Cdc Managed Ingestion Pipeline
     with Gateway pipeline to Combined Cdc Managed Ingestion Pipeline.
     If not specified, the volume for staged data will be created in catalog and schema/target specified in the
     top level pipeline definition.
    - `catalog_name` (string, optional, Public Preview)
      (Required, Immutable) The name of the catalog for the connector's staging storage location.
    - `schema_name` (string, optional, Public Preview)
      (Required, Immutable) The name of the schema for the connector's staging storage location.
    - `volume_name` (string, optional, Public Preview)
      (Optional) The Unity Catalog-compatible name for the storage location.
       This is the volume to use for the data that is extracted by the connector.
       Spark Declarative Pipelines system will automatically create the volume under the catalog and schema.
       For Combined Cdc Managed Ingestion pipelines default name for the volume would be :
       __databricks_ingestion_gateway_staging_data-$pipelineId
- `trigger` (object, optional)
  Which pipeline trigger to use. Deprecated: Use `continuous` instead.
  - `manual` (object, required)
  - `cron` (object, required)
    - `quartz_cron_schedule` (string, optional)
    - `timezone_id` (string, optional)
- `target` (string, optional)
  Target schema (database) to add tables in this pipeline to. Exactly one of `schema` or `target` must be specified. To publish to Unity Catalog, also specify `catalog`. This legacy field is deprecated for pipeline creation in favor of the `schema` field.
- `schema` (string, optional)
  The default schema (database) where tables are read from or published to.
- `filters` (object, optional)
  Filters on which Pipeline packages to include in the deployed graph.
  - `include` (array of string, optional)
    Paths to include.
  - `exclude` (array of string, optional)
    Paths to exclude.
- `continuous` (boolean, optional)
  Whether the pipeline is continuous or triggered. This replaces `trigger`.
  
   Deprecated: wrap the pipeline in a continuous job instead, which also lets you take advantage
   of job-level settings such as performance mode. When the pipeline is started by a continuous
   job, the job's setting takes precedence and this field is ignored.
- `development` (boolean, optional)
  Whether the pipeline is in Development mode. Defaults to false.
- `photon` (boolean, optional)
  Whether Photon is enabled for this pipeline.
- `edition` (string, optional)
  Pipeline product edition.
- `channel` (string, optional)
  SDP Release Channel that specifies which version to use.
- `catalog` (string, optional)
  A catalog in Unity Catalog to publish data from this pipeline to. If `target` is specified, tables in this pipeline are published to a `target` schema inside `catalog` (for example, `catalog`.`target`.`table`). If `target` is not specified, no data is published to Unity Catalog.
- `notifications` (array of object, optional)
  List of notification settings for this pipeline.
  - `email_recipients` (array of string, optional)
    A list of email addresses notified when a configured alert is triggered.
  - `alerts` (array of string, optional)
    A list of alerts that trigger the sending of notifications to the configured
     destinations. The supported alerts are:
    
     * `on-update-success`: A pipeline update completes successfully.
     * `on-update-failure`: Each time a pipeline update fails.
     * `on-update-fatal-failure`: A pipeline update fails with a non-retryable (fatal) error.
     * `on-flow-failure`: A single data flow fails.
- `serverless` (boolean, optional)
  Whether serverless compute is enabled for this pipeline.
- `deployment` (object, optional)
  Deployment type of this pipeline.
  - `kind` (string, optional)
    The deployment method that manages the pipeline.
    Possible values: `BUNDLE`
  - `metadata_file_path` (string, optional)
    The path to the file containing metadata about the deployment.
- `budget_policy_id` (string, optional, Public Preview)
  Budget policy of this pipeline.
- `tags` (object, optional)
  A map of tags associated with the pipeline.
   These are forwarded to the cluster as cluster tags, and are therefore subject to the same limitations.
   A maximum of 25 tags can be added to the pipeline.
- `event_log` (object, optional)
  Event log configuration for this pipeline
  - `name` (string, optional)
    The name the event log is published to in UC.
  - `schema` (string, optional)
    The UC schema the event log is published under.
  - `catalog` (string, optional)
    The UC catalog the event log is published under.
- `root_path` (string, optional, Public Preview)
  Root path for this pipeline.
   This is used as the root directory when editing the pipeline in the <Databricks> user interface and it is
   added to sys.path when executing Python sources during pipeline execution.
  Example: `/Workspace/Users/user.name/my-pipeline`
- `environment` (object, optional, Public Preview)
  Environment specification for this pipeline used to install dependencies.
  - `dependencies` (array of string, optional, Public Preview)
    List of pip dependencies, as supported by the version of pip in this environment.
     Each dependency is a pip requirement file line https://pip.pypa.io/en/stable/reference/requirements-file-format/
     Allowed dependency could be <requirement specifier>, <archive url/path>, <local project path>(WSFS or Volumes in <Databricks>), <vcs project url>
  - `environment_version` (string, optional, Beta)
    The environment version of the serverless Python environment used to execute
     customer Python code. Each environment version includes a specific Python
     version and a curated set of pre-installed libraries with defined versions,
     providing a stable and reproducible execution environment.
    
     <Databricks> supports a three-year lifecycle for each environment version.
     For available versions and their included packages, see
     https://docs.databricks.com/aws/en/release-notes/serverless/environment-version/
    
     The value should be a string representing the environment version number, for example: `"4"`.

## Request

```json
{
  "clusters": [
    {
      "autoscale": {
        "max_workers": 5,
        "min_workers": 1,
        "mode": "ENHANCED"
      },
      "label": "default"
    }
  ],
  "continuous": false,
  "id": "a12cd3e4-0ab1-1abc-1a2b-1a2bcd3e4fg5",
  "libraries": [
    {
      "notebook": {
        "path": "/Users/username/SDP Notebooks/Spark Declarative Pipelines quickstart (SQL)"
      }
    }
  ],
  "name": "Wikipedia pipeline (SQL)",
  "storage": "/Users/username/data",
  "target": "wikipedia_quickstart_data"
}
```

## Response

```json
{}
```

