# Update a Snapshot Schedule

Launch stage: Beta

`PATCH /api/2.0/postgres/{name=projects/*/branches/*/snapshot-schedule}`

Sets the snapshot schedule for a branch. The `schedule` field is replaced
 wholesale; an empty schedule disables automatic snapshots.

API scopes: postgres

## Path parameters

- `name` (string, required, ID, Immutable)
  The resource name of the branch's snapshot schedule.
   Format: projects/{project_id}/branches/{branch_id}/snapshot-schedule

## Query parameters

- `update_mask` (string, required)
  Fields to update. The only updatable path is `schedule`, which replaces the
   entire set of cadences.

## Request body

The snapshot schedule to set. Its `name` identifies the branch.
 Format: projects/{project_id}/branches/{branch_id}/snapshot-schedule
- `schedule` (array of object, optional, Unordered list)
  The cadences at which automatic snapshots are taken. Update replaces the
   whole set; an empty set disables automatic snapshots. Order is not
   significant. When several cadences fire together, one snapshot is taken,
   retained for the longest of their retentions.
  - `daily_schedule` (object, optional)
    Take a snapshot once per day.
    - `hour` (int32, optional)
      The hour of the day, in UTC, at which to take the snapshot, in [0, 23].
  - `weekly_schedule` (object, optional)
    Take a snapshot once per week.
    - `day_of_week` (string, required)
      The day of the week on which to take the snapshot.
      Possible values:
      - `DAY_OF_WEEK_UNSPECIFIED`
      - `MONDAY`
      - `TUESDAY`
      - `WEDNESDAY`
      - `THURSDAY`
      - `FRIDAY`
      - `SATURDAY`
      - `SUNDAY`
    - `hour` (int32, optional)
      The hour of the day, in UTC, at which to take the snapshot, in [0, 23].
  - `monthly_schedule` (object, optional)
    Take a snapshot once per month.
    - `day` (int32, required)
      The day of the month on which to take the snapshot, in [1, 31]. In shorter
       months the snapshot is taken on the last day instead (day 31 runs on Feb 28
       or 29, and on Apr 30), so every month gets exactly one snapshot.
    - `hour` (int32, optional)
      The hour of the day, in UTC, at which to take the snapshot, in [0, 23].
  - `retention` (string, required)
    How long snapshots from this cadence are kept before automatic deletion.
     Must be at least 1 hour. Applied when a snapshot is taken; not retroactive,
     so changing it affects only later snapshots.

## Returns

- `name` (string, optional)
  The server-assigned name, which is only unique within the same service that
   originally returns it. If you use the default HTTP mapping, the
   `name` should be a resource name ending with `operations/{unique_id}`.
- `metadata` (object, optional)
  Service-specific metadata associated with the operation.  It typically
   contains progress information and common metadata such as create time.
   Some services might not provide such metadata.
- `done` (boolean, optional)
  If the value is `false`, it means the operation is still in progress.
   If `true`, the operation is completed, and either `error` or `response` is
   available.
- `error` (object, optional)
  The error result of the operation in case of failure or cancellation.
  - `error_code` (string, optional)
    Possible values:
    - `UNKNOWN`
    - `INTERNAL_ERROR`
    - `TEMPORARILY_UNAVAILABLE`
    - `IO_ERROR`
    - `BAD_REQUEST`
    - `SERVICE_UNDER_MAINTENANCE`
    - `WORKSPACE_TEMPORARILY_UNAVAILABLE`
    - `DEADLINE_EXCEEDED`
    - `CANCELLED`
    - `RESOURCE_EXHAUSTED`
    - `ABORTED`
    - `NOT_FOUND`
    - `ALREADY_EXISTS`
    - `UNAUTHENTICATED`
    - `UNAVAILABLE`
    - `INVALID_PARAMETER_VALUE`
    - `ENDPOINT_NOT_FOUND`
    - `MALFORMED_REQUEST`
    - `INVALID_STATE`
    - `PERMISSION_DENIED`
    - `FEATURE_DISABLED`
    - `CUSTOMER_UNAUTHORIZED`
    - `REQUEST_LIMIT_EXCEEDED`
    - `RESOURCE_CONFLICT`
    - `UNPARSEABLE_HTTP_ERROR`
    - `NOT_IMPLEMENTED`
    - `DATA_LOSS`
    - `INVALID_STATE_TRANSITION`
    - `COULD_NOT_ACQUIRE_LOCK`
    - `RESOURCE_ALREADY_EXISTS`
    - `RESOURCE_DOES_NOT_EXIST`
    - `QUOTA_EXCEEDED`
    - `MAX_BLOCK_SIZE_EXCEEDED`
    - `MAX_READ_SIZE_EXCEEDED`
    - `PARTIAL_DELETE`
    - `MAX_LIST_SIZE_EXCEEDED`
    - `DRY_RUN_FAILED`
    - `RESOURCE_LIMIT_EXCEEDED`
    - `DIRECTORY_NOT_EMPTY`
    - `DIRECTORY_PROTECTED`
    - `MAX_NOTEBOOK_SIZE_EXCEEDED`
    - `MAX_CHILD_NODE_SIZE_EXCEEDED`
    - `SEARCH_QUERY_TOO_LONG`
    - `SEARCH_QUERY_TOO_SHORT`
    - `MANAGED_RESOURCE_GROUP_DOES_NOT_EXIST`
    - `PERMISSION_NOT_PROPAGATED`
    - `DEPLOYMENT_TIMEOUT`
    - `GIT_CONFLICT`
    - `GIT_UNKNOWN_REF`
    - `GIT_SENSITIVE_TOKEN_DETECTED`
    - `GIT_URL_NOT_ON_ALLOW_LIST`
    - `GIT_REMOTE_ERROR`
    - `PROJECTS_OPERATION_TIMEOUT`
    - `IPYNB_FILE_IN_REPO`
    - `INSECURE_PARTNER_RESPONSE`
    - `MALFORMED_PARTNER_RESPONSE`
    - `METASTORE_DOES_NOT_EXIST`
    - `DAC_DOES_NOT_EXIST`
    - `CATALOG_DOES_NOT_EXIST`
    - `SCHEMA_DOES_NOT_EXIST`
    - `TABLE_DOES_NOT_EXIST`
    - `SHARE_DOES_NOT_EXIST`
    - `RECIPIENT_DOES_NOT_EXIST`
    - `STORAGE_CREDENTIAL_DOES_NOT_EXIST`
    - `EXTERNAL_LOCATION_DOES_NOT_EXIST`
    - `PRINCIPAL_DOES_NOT_EXIST`
    - `PROVIDER_DOES_NOT_EXIST`
    - `METASTORE_ALREADY_EXISTS`
    - `DAC_ALREADY_EXISTS`
    - `CATALOG_ALREADY_EXISTS`
    - `SCHEMA_ALREADY_EXISTS`
    - `TABLE_ALREADY_EXISTS`
    - `SHARE_ALREADY_EXISTS`
    - `RECIPIENT_ALREADY_EXISTS`
    - `STORAGE_CREDENTIAL_ALREADY_EXISTS`
    - `EXTERNAL_LOCATION_ALREADY_EXISTS`
    - `PROVIDER_ALREADY_EXISTS`
    - `CATALOG_NOT_EMPTY`
    - `SCHEMA_NOT_EMPTY`
    - `METASTORE_NOT_EMPTY`
    - `PROVIDER_SHARE_NOT_ACCESSIBLE`
  - `message` (string, optional)
  - `stack_trace` (string, optional)
  - `details` (array of object, optional)
- `response` (object, optional)
  The normal, successful response of the operation.

## Response

```json
{
  "name": "string",
  "metadata": {},
  "done": true,
  "error": {
    "error_code": "UNKNOWN",
    "message": "string",
    "stack_trace": "string",
    "details": [
      {}
    ]
  },
  "response": {}
}
```

