> [!CAUTION]
> **Caution:** This documentation is for Google Ads API **v23** . The latest active version is [**v26**](https://developers.google.com/google-ads/api/reference/rpc/latest/CampaignBudgetOperation).

A single operation (create, update, remove) on a campaign budget.

Update operations require an `update_mask` specifying which fields to modify. Note that `explicitly_shared` defaults to `true` if unspecified. A non-shared budget can be updated to explicitly shared, but an explicitly shared budget cannot become non-shared.

[Proto definition ![GitHub](https://developers.google.com/site-assets/logo-github.svg)](https://github.com/googleapis/googleapis/blob/master/google/ads/googleads/v23/services/campaign_budget_service.proto)

| Fields ||
|---|---|
| ## `operation` Union field. The mutate operation. `operation` can be only one of the following: ||
| ### `create` | `CampaignBudget` Create operation: No resource name is expected for the new budget. Note that `explicitly_shared` defaults to `true` if unspecified. A non-shared budget can be updated to explicitly shared, but an explicitly shared budget cannot become non-shared. |
| ### `remove` | `string` Remove operation: A resource name for the removed budget is expected, in this format: `customers/{customer_id}/campaignBudgets/{budget_id}` |
| ### `update` | `CampaignBudget` Update operation: The campaign budget is expected to have a valid resource name, and `update_mask` must be populated with the fields to modify. Note that `explicitly_shared` defaults to `true` if unspecified. A non-shared budget can be updated to explicitly shared, but an explicitly shared budget cannot become non-shared. |
| ## `update_mask` | `FieldMask` FieldMask that determines which resource fields are modified in an update. Required for `update` operations. |