---
title: "POST /v1/projects/{projectsId}/locations/{locationsId}/backupPlanAssociations"
method: POST
path: "/v1/projects/{projectsId}/locations/{locationsId}/backupPlanAssociations"
tags: ["projects"]
---

# POST /v1/projects/{projectsId}/locations/{locationsId}/backupPlanAssociations

`POST /v1/projects/{projectsId}/locations/{locationsId}/backupPlanAssociations`

## Request

- Base URL: `https://backupdr.googleapis.com`
- URL: `https://backupdr.googleapis.com/v1/projects/{projectsId}/locations/{locationsId}/backupPlanAssociations`
- Auth: one of:
  - OAuth 2 and OAuth 2
    - Implicit: `https://accounts.google.com/o/oauth2/auth`
    - Scopes: `https://www.googleapis.com/auth/cloud-backupdr`
    - Authorization code: `https://accounts.google.com/o/oauth2/auth`
    - Token URL: `https://accounts.google.com/o/oauth2/token` scopes: `https://www.googleapis.com/auth/cloud-backupdr`
  - OAuth 2 and OAuth 2
    - Implicit: `https://accounts.google.com/o/oauth2/auth`
    - Scopes: `https://www.googleapis.com/auth/cloud-platform`
    - Authorization code: `https://accounts.google.com/o/oauth2/auth`
    - Token URL: `https://accounts.google.com/o/oauth2/token` scopes: `https://www.googleapis.com/auth/cloud-platform`

Create a BackupPlanAssociation

## Path parameters

- `projectsId` string, required
- `locationsId` string, required

## Query parameters

- `backupPlanAssociationId` string
- `requestId` string

## Request body

- BackupPlanAssociation: A BackupPlanAssociation represents a single BackupPlanAssociation which contains details like workload, backup plan etc
  - `alloydbClusterBackupPlanAssociationProperties` AlloyDBClusterBackupPlanAssociationProperties: Properties for an AlloyDB cluster backup plan association.
    - `clusterUid` string: Output only. The cluster UID of the AlloyDB cluster.
  - `autoProtectionPolicyBinding` string: Output only. The resource name of the `AutoProtectionPolicyBinding` that manages this association, if any. Format: `projects/{project}/locations/{location}/autoProtectionPolicies/{policy}/bindings/{binding}`.
  - `backupPlan` string: Required. Resource name of backup plan which needs to be applied on workload. Format: projects/{project}/locations/{location}/backupPlans/{backupPlanId}
  - `backupPlanRevisionId` string: Output only. The user friendly revision ID of the `BackupPlanRevision`. Example: v0, v1, v2, etc.
  - `backupPlanRevisionName` string: Output only. The resource id of the `BackupPlanRevision`. Format: `projects/{project}/locations/{location}/backupPlans/{backup_plan}/revisions/{revision_id}`
  - `cloudSqlInstanceBackupPlanAssociationProperties` CloudSqlInstanceBackupPlanAssociationProperties: Cloud SQL instance's BPA properties.
    - `instanceCreateTime` string, google-datetime: Output only. The time when the instance was created.
  - `createTime` string, google-datetime: Output only. The time when the instance was created.
  - `dataSource` string: Output only. Resource name of data source which will be used as storage location for backups taken. Format : projects/{project}/locations/{location}/backupVaults/{backupvault}/dataSources/{datasource}
  - `filestoreInstanceBackupPlanAssociationProperties` FilestoreInstanceBackupPlanAssociationProperties: Filestore instance's BPA properties.
    - `instanceCreateTime` string, google-datetime: Output only. The time when the instance was created.
  - `name` string: Output only. Identifier. The resource name of BackupPlanAssociation in below format Format : projects/{project}/locations/{location}/backupPlanAssociations/{backupPlanAssociationId}
  - `netappVolumeBackupPlanAssociationProperties` NetAppVolumeBackupPlanAssociationProperties: NetAppVolumeBackupPlanAssociationProperties represents NetApp Volume backup plan association properties in BackupPlanAssociation. .
    - `sourceResourceCreateTime` string, google-datetime: Output only. The creation timestamp of the source resource.
  - `resource` string: Required. Immutable. Resource name of workload on which the backup plan is applied. The format can either be the resource name (e.g., "projects/my-project/zones/us-central1-a/instances/my-instance") or the full resource URI (e.g., "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instances/my-instance").
  - `resourceType` string: Required. Immutable. Resource type of workload on which backupplan is applied
  - `rulesConfigInfo` RuleConfigInfo[]: Output only. The config info related to backup rules.
    - `lastBackupError` Status: The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
      - `code` integer: The status code, which should be an enum value of google.rpc.Code.
      - `details` object[]: A list of messages that carry the error details. There is a common set of message types for APIs to use.
      - `message` string: A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
    - `lastBackupState` 'LAST_BACKUP_STATE_UNSPECIFIED' | 'FIRST_BACKUP_PENDING' | 'PERMISSION_DENIED' | 'SUCCEEDED' | 'FAILED': Output only. The last backup state for rule.
    - `lastSuccessfulBackupConsistencyTime` string, google-datetime: Output only. The point in time when the last successful backup was captured from the source.
    - `ruleId` string: Output only. Backup Rule id fetched from backup plan.
  - `state` 'STATE_UNSPECIFIED' | 'CREATING' | 'ACTIVE' | 'DELETING' | 'INACTIVE' | 'UPDATING' | 'PAUSED': Output only. The BackupPlanAssociation resource state.
  - `updateTime` string, google-datetime: Output only. The time when the instance was updated.

## Response `200`

Successful response

- Operation: This resource represents a long-running operation that is the result of a network API call.
  - `done` boolean: 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` Status: The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).
    - `code` integer: The status code, which should be an enum value of google.rpc.Code.
    - `details` object[]: A list of messages that carry the error details. There is a common set of message types for APIs to use.
    - `message` string: A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  - `metadata` object: 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. Any method that returns a long-running operation should document the metadata type, if any.
  - `name` string: 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}`.
  - `response` object: The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.

## Changes

- **2026-11-05** `da857420b4f6`: 4 info
  - the security scope `https://www.googleapis.com/auth/cloud-backupdr` was added to the endpoint's security scheme `Oauth2`
  - the security scope `https://www.googleapis.com/auth/cloud-backupdr` was added to the endpoint's security scheme `Oauth2c`
  - the security scope `https://www.googleapis.com/auth/cloud-platform` was removed from the endpoint's security scheme `Oauth2`
  - the security scope `https://www.googleapis.com/auth/cloud-platform` was removed from the endpoint's security scheme `Oauth2c`
- **2026-10-29** `3244196e66b0`: 4 info
  - the security scope `https://www.googleapis.com/auth/cloud-backupdr` was added to the endpoint's security scheme `Oauth2`
  - the security scope `https://www.googleapis.com/auth/cloud-backupdr` was added to the endpoint's security scheme `Oauth2c`
  - the security scope `https://www.googleapis.com/auth/cloud-platform` was removed from the endpoint's security scheme `Oauth2`
  - the security scope `https://www.googleapis.com/auth/cloud-platform` was removed from the endpoint's security scheme `Oauth2c`

[Operation history](https://skmtc.dev/google/apis/backupdr/changes/v1/projects/:projectsId/locations/:locationsId/backupPlanAssociations/post.md)

---

[API](https://skmtc.dev/google/apis/backupdr.md) - [All operations](https://skmtc.dev/google/apis/backupdr/llms.txt) - [OpenAPI document](https://skmtc.dev/google/apis/backupdr/revisions/da857420b4f6?raw)
