# Update

Launch stage: GA

`POST /api/2.0/policies/clusters/edit`

Update an existing policy for cluster. This operation may make some clusters governed by the previous policy invalid.

API scopes: clusters

## Request body

- `policy_id` (string, optional)
  The ID of the policy to update.
- `name` (string, optional)
  Cluster Policy name requested by the user. This has to be unique. Length must be between 1 and 100
   characters.
- `definition` (string, optional)
  Policy definition document expressed in [Databricks Cluster Policy Definition Language](https://docs.databricks.com/administration-guide/clusters/policy-definition.html).
- `description` (string, optional)
  Additional human-readable description of the cluster policy.
  Constraints: `<= 1000 characters`
- `policy_family_id` (string, optional)
  ID of the policy family. The cluster policy's policy definition inherits the policy
   family's policy definition.
  
   Cannot be used with `definition`. Use `policy_family_definition_overrides` instead to
   customize the policy definition.
- `policy_family_definition_overrides` (string, optional)
  Policy definition JSON document expressed in [Databricks Policy Definition Language](https://docs.databricks.com/administration-guide/clusters/policy-definition.html).
   The JSON document must be passed as a string and cannot be embedded in the requests.
  
   You can use this to customize the policy definition inherited from the policy family.
   Policy rules specified here are merged into the inherited policy definition.
- `max_clusters_per_user` (int64, optional)
  Max number of clusters per user that can be active using this policy. If not present, there is no max limit.
  Constraints: `>= 1`
- `libraries` (array of object, optional)
  A list of libraries to be installed on the next cluster restart that uses this policy. The maximum number of libraries is 500.
  - `jar` (string, required)
    URI of the JAR library to install. Supported URIs include Workspace paths, Unity Catalog Volumes paths, and S3 URIs.
     For example: `{ "jar": "/Workspace/path/to/library.jar" }`, `{ "jar" : "/Volumes/path/to/library.jar" }` or
     `{ "jar": "s3://my-bucket/library.jar" }`.
     If S3 is used, please make sure the cluster has read access on the library. You may need to
     launch the cluster with an IAM role to access the S3 URI.
    **Azure:** URI of the JAR library to install. Supported URIs include Workspace paths, Unity Catalog Volumes paths, and ADLS URIs.
    For example: `{ "jar": "/Workspace/path/to/library.jar" }`, `{ "jar" : "/Volumes/path/to/library.jar" }` or
    `{ "jar": "abfss://my-bucket/library.jar" }`.
    If ADLS is used, please make sure the cluster has read access on the library. You may need to
    launch the cluster with a Microsoft Entra ID service principal to access the ADLS URI.
    **GCP:** URI of the jar library to be installed. Supported URIs include Workspace path, UC Volumes path, and GCS URIs.
    For example: `{ "jar": "/Workspace/path/to/library.jar" }`, `{ "jar" : "/Volumes/path/to/library.jar" }` or
    `{ "jar": "gs://my-bucket/library.jar" }`.
    If GCS is used, please make sure the cluster has read access on the library. You may need to
    launch the cluster with an IAM service account to access the GCS URI.
  - `egg` (string, required)
    Deprecated. URI of the egg library to install. Installing Python egg files is deprecated and is not supported in Databricks Runtime 14.0 and above.
  - `pypi` (object, required)
    Specification of a PyPi library to be installed. For example:
     `{ "package": "simplejson" }`
    - `package` (string, optional)
      The name of the pypi package to install. An optional exact version specification is also
       supported. Examples: "simplejson" and "simplejson==3.8.0".
    - `repo` (string, optional)
      The repository where the package can be found. If not specified, the default pip index is
       used.
  - `maven` (object, required)
    Specification of a maven library to be installed. For example:
     `{ "coordinates": "org.jsoup:jsoup:1.7.2" }`
    - `coordinates` (string, optional)
      Gradle-style maven coordinates. For example: "org.jsoup:jsoup:1.7.2".
    - `repo` (string, optional)
      Maven repo to install the Maven package from. If omitted, both Maven Central Repository
       and Spark Packages are searched.
    - `exclusions` (array of string, optional)
      List of dependences to exclude. For example: `["slf4j:slf4j", "*:hadoop-client"]`.
      
       Maven dependency exclusions:
       https://maven.apache.org/guides/introduction/introduction-to-optional-and-excludes-dependencies.html.
  - `cran` (object, required)
    Specification of a CRAN library to be installed as part of the library
    - `package` (string, optional)
      The name of the CRAN package to install.
    - `repo` (string, optional)
      The repository where the package can be found. If not specified, the default CRAN repo is used.
  - `whl` (string, required)
    URI of the wheel library to install. Supported URIs include Workspace paths, Unity Catalog Volumes paths, and S3 URIs.
     For example: `{ "whl": "/Workspace/path/to/library.whl" }`, `{ "whl" : "/Volumes/path/to/library.whl" }` or
     `{ "whl": "s3://my-bucket/library.whl" }`.
     If S3 is used, please make sure the cluster has read access on the library. You may need to
     launch the cluster with an IAM role to access the S3 URI.
    **Azure:** URI of the wheel library to install. Supported URIs include Workspace paths, Unity Catalog Volumes paths, and ADLS URIs.
    For example: `{ "whl": "/Workspace/path/to/library.whl" }`, `{ "whl" : "/Volumes/path/to/library.whl" }` or
    `{ "whl": "abfss://my-bucket/library.whl" }`.
    If ADLS is used, please make sure the cluster has read access on the library. You may need to
    launch the cluster with a Microsoft Entra ID service principal to access the ADLS URI.
    **GCP:** URI of the wheel library to be installed. Supported URIs include Workspace path, UC Volumes path, and GCS URIs.
    For example: `{ "whl": "/Workspace/path/to/library.whl" }`, `{ "whl" : "/Volumes/path/to/library.whl" }` or
    `{ "whl": "gs://my-bucket/library.egg" }`.
    If GCS is used, please make sure the cluster has read access on the library. You may need to
    launch the cluster with an IAM service account to access the GCS URI.
  - `requirements` (string, required)
    URI of the requirements.txt file to install. Only Workspace paths and Unity Catalog Volumes paths are supported.
     For example: `{ "requirements": "/Workspace/path/to/requirements.txt" }` or `{ "requirements" : "/Volumes/path/to/requirements.txt" }`

## Request

### With libraries in policy

```json
{
  "definition": "{ \"custom_tags.test_tag\": { \"type\": \"fixed\", \"value\": \"test_value\" } }",
  "libraries": [
    {
      "jar": "dbfs:/Test/Example.jar"
    }
  ],
  "name": "Test policy",
  "policy_id": "ABCD000000000000"
}
```

### With policy family

```json
{
  "name": "Test policy",
  "policy_family_definition_overrides": "{ \"custom_tags.test_tag\": { \"type\": \"fixed\", \"value\": \"test_value\" } }",
  "policy_family_id": "personal-vm",
  "policy_id": "ABCD000000000000"
}
```

### Without policy family

```json
{
  "definition": "{ \"custom_tags.test_tag\": { \"type\": \"fixed\", \"value\": \"test_value\" } }",
  "name": "Test policy",
  "policy_id": "ABCD000000000000"
}
```

## Response

```json
{}
```

