/resources/campaign_budget.proto

--- v25/resources/campaign_budget.proto 2026-07-21 22:09:38.000000000 +0000
+++ v26/resources/campaign_budget.proto 2026-10-26 01:59:49.000000000 +0000
@@ -1,190 +1,203 @@
 // Copyright 2026 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
 //     http://www.apache.org/licenses/LICENSE-2.0
 //
 // Unless required by applicable law or agreed to in writing, software
 // distributed under the License is distributed on an "AS IS" BASIS,
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.

 syntax = "proto3";

-package google.ads.googleads.v25.resources;
+package google.ads.googleads.v26.resources;

-import "google/ads/googleads/v25/enums/budget_delivery_method.proto";
-import "google/ads/googleads/v25/enums/budget_period.proto";
-import "google/ads/googleads/v25/enums/budget_status.proto";
-import "google/ads/googleads/v25/enums/budget_type.proto";
+import "google/ads/googleads/v26/common/budget_network_common.proto";
+import "google/ads/googleads/v26/enums/budget_delivery_method.proto";
+import "google/ads/googleads/v26/enums/budget_period.proto";
+import "google/ads/googleads/v26/enums/budget_status.proto";
+import "google/ads/googleads/v26/enums/budget_type.proto";
 import "google/api/field_behavior.proto";
 import "google/api/resource.proto";

-option csharp_namespace = "Google.Ads.GoogleAds.V25.Resources";
-option go_package = "google.golang.org/genproto/googleapis/ads/googleads/v25/resources;resources";
+option csharp_namespace = "Google.Ads.GoogleAds.V26.Resources";
+option go_package = "google.golang.org/genproto/googleapis/ads/googleads/v26/resources;resources";
 option java_multiple_files = true;
 option java_outer_classname = "CampaignBudgetProto";
-option java_package = "com.google.ads.googleads.v25.resources";
+option java_package = "com.google.ads.googleads.v26.resources";
 option objc_class_prefix = "GAA";
-option php_namespace = "Google\\Ads\\GoogleAds\\V25\\Resources";
-option ruby_package = "Google::Ads::GoogleAds::V25::Resources";
+option php_namespace = "Google\\Ads\\GoogleAds\\V26\\Resources";
+option ruby_package = "Google::Ads::GoogleAds::V26::Resources";

 // Proto file describing the Budget resource.

 // A campaign budget.
 message CampaignBudget {
   option (google.api.resource) = {
     type: "googleads.googleapis.com/CampaignBudget"
     pattern: "customers/{customer_id}/campaignBudgets/{campaign_budget_id}"
   };

   // Immutable. The resource name of the campaign budget.
   // Campaign budget resource names have the form:
   //
   // `customers/{customer_id}/campaignBudgets/{campaign_budget_id}`
   string resource_name = 1 [
     (google.api.field_behavior) = IMMUTABLE,
     (google.api.resource_reference) = {
       type: "googleads.googleapis.com/CampaignBudget"
     }
   ];

   // Output only. The ID of the campaign budget.
   //
   // A campaign budget is created using the CampaignBudgetService create
   // operation and is assigned a budget ID. A budget ID can be shared across
   // different campaigns; the system will then allocate the campaign budget
   // among different campaigns to get optimum results.
   optional int64 id = 19 [(google.api.field_behavior) = OUTPUT_ONLY];

   // The name of the campaign budget.
   //
   // When creating a campaign budget through CampaignBudgetService, every
   // explicitly shared campaign budget must have a non-null, non-empty name.
   // Campaign budgets that are not explicitly shared derive their name from the
   // attached campaign's name.
   //
   // The length of this string must be between 1 and 255, inclusive,
   // in UTF-8 bytes, (trimmed).
   optional string name = 20;

   // The average daily amount to be spent by the campaign.
   // This field is used when the CampaignBudget `period` is set to `DAILY`,
   // which is the default.
   //
   // Amount is specified in micros in the account's local currency.
   // One million micros is equivalent to one currency unit.
   // The effective monthly spend is capped at 30.4 times this daily amount.
   //
   // This field is mutually exclusive with 'total_amount_micros'. Only one
   // of 'amount_micros' or 'total_amount_micros' should be set.
   optional int64 amount_micros = 21;

   // The total amount to be spent by the campaign over its entire duration.
   // This field is used *only* when the CampaignBudget `period` is set to
   // `CUSTOM_PERIOD`. It represents the budget cap for the campaign's lifetime,
   // rather than a daily limit. The amount is specified in micros in the
   // account's local currency. One million micros is equivalent to one currency
   // unit.
   //
   // This field is mutually exclusive with 'amount_micros'. Only one of
   // 'total_amount_micros' or 'amount_micros' should be set.
   optional int64 total_amount_micros = 22;

   // Output only. The status of this campaign budget. This field is read-only.
-  google.ads.googleads.v25.enums.BudgetStatusEnum.BudgetStatus status = 6
+  google.ads.googleads.v26.enums.BudgetStatusEnum.BudgetStatus status = 6
       [(google.api.field_behavior) = OUTPUT_ONLY];

   // The delivery method that determines the rate at which the campaign budget
   // is spent.
   //
   // Defaults to STANDARD if unspecified in a create operation.
-  google.ads.googleads.v25.enums.BudgetDeliveryMethodEnum.BudgetDeliveryMethod
+  google.ads.googleads.v26.enums.BudgetDeliveryMethodEnum.BudgetDeliveryMethod
       delivery_method = 7;

   // Specifies whether the budget is explicitly shared. Defaults to true if
   // unspecified in a create operation.
   //
   // If true, the budget was created with the purpose of sharing
   // across one or more campaigns.
   //
   // If false, the budget was created with the intention of only being used
   // with a single campaign. The budget's name and status will stay in sync
   // with the campaign's name and status. Attempting to share the budget with a
   // second campaign will result in an error.
   //
   // A non-shared budget can become an explicitly shared. The same operation
   // must also assign the budget a name.
   //
   // A shared campaign budget can never become non-shared.
   optional bool explicitly_shared = 23;

   // Output only. The number of campaigns actively using the budget.
   //
   // This field is read-only.
   optional int64 reference_count = 24
       [(google.api.field_behavior) = OUTPUT_ONLY];

   // Output only. Indicates whether there is a recommended budget for this
   // campaign budget.
   //
   // This field is read-only.
   optional bool has_recommended_budget = 25
       [(google.api.field_behavior) = OUTPUT_ONLY];

   // Output only. The recommended budget amount. If no recommendation is
   // available, this will be set to the budget amount. Amount is specified in
   // micros, where one million is equivalent to one currency unit.
   //
   // This field is read-only.
   optional int64 recommended_budget_amount_micros = 26
       [(google.api.field_behavior) = OUTPUT_ONLY];

   // Immutable. Period over which to spend the budget. Defaults to DAILY if not
   // specified.
-  google.ads.googleads.v25.enums.BudgetPeriodEnum.BudgetPeriod period = 13
+  google.ads.googleads.v26.enums.BudgetPeriodEnum.BudgetPeriod period = 13
       [(google.api.field_behavior) = IMMUTABLE];

   // Output only. The estimated change in weekly clicks if the recommended
   // budget is applied.
   //
   // This field is read-only.
   optional int64 recommended_budget_estimated_change_weekly_clicks = 27
       [(google.api.field_behavior) = OUTPUT_ONLY];

   // Output only. The estimated change in weekly cost in micros if the
   // recommended budget is applied. One million is equivalent to one currency
   // unit.
   //
   // This field is read-only.
   optional int64 recommended_budget_estimated_change_weekly_cost_micros = 28
       [(google.api.field_behavior) = OUTPUT_ONLY];

   // Output only. The estimated change in weekly interactions if the recommended
   // budget is applied.
   //
   // This field is read-only.
   optional int64 recommended_budget_estimated_change_weekly_interactions = 29
       [(google.api.field_behavior) = OUTPUT_ONLY];

   // Output only. The estimated change in weekly views if the recommended budget
   // is applied.
   //
   // This field is read-only.
   optional int64 recommended_budget_estimated_change_weekly_views = 30
       [(google.api.field_behavior) = OUTPUT_ONLY];

   // Immutable. The type of the campaign budget.
-  google.ads.googleads.v25.enums.BudgetTypeEnum.BudgetType type = 18
+  google.ads.googleads.v26.enums.BudgetTypeEnum.BudgetType type = 18
       [(google.api.field_behavior) = IMMUTABLE];

   // ID of the portfolio bidding strategy that this shared campaign budget
   // is aligned with. When a bidding strategy and a campaign budget are aligned,
   // they are attached to the same set of campaigns. After a campaign budget is
   // aligned with a bidding strategy, campaigns that are added to the campaign
   // budget must also use the aligned bidding strategy.
   int64 aligned_bidding_strategy_id = 31;
+
+  // Waterfall channel priorities and budget caps for this budget, at most one
+  // entry per advertising channel type. When unset, the customer-level
+  // defaults in `CustomerBudgetNetworkSetting` apply.
+  google.ads.googleads.v26.common.BudgetNetworkSettings
+      budget_network_settings = 32;
+
+  // Output only. Whether this budget is eligible for waterfall channel
+  // prioritization and budget caps, and if not, why.
+  google.ads.googleads.v26.common.BudgetNetworkEligibility
+      budget_network_eligibility = 33
+      [(google.api.field_behavior) = OUTPUT_ONLY];
 }