/services/recommendation_service.proto

--- v17/services/recommendation_service.proto   2024-10-17 03:48:53.000000000 +0000
+++ v18/services/recommendation_service.proto   2024-10-17 03:48:58.000000000 +0000
@@ -529,6 +530,12 @@
       // This can be populated for campaigns with a bidding strategy type of
       // TARGET_ROAS or MAXIMIZE_CONVERSION_VALUE.
       double target_roas = 3;
+
+      // Optional. Current Target Impression Share information of the campaign.
+      // This field is necessary for the following recommendation_types:
+      // CAMPAIGN_BUDGET
+      TargetImpressionShareInfo target_impression_share_info = 4
+          [(google.api.field_behavior) = OPTIONAL];
     }
   }

@@ -559,6 +568,59 @@
     repeated string keyword_seeds = 3 [(google.api.field_behavior) = OPTIONAL];
   }

+  // Current budget information of the campaign.
+  message BudgetInfo {
+    // Required. Current budget amount.
+    // This field is necessary for the following recommendation_types if
+    // budget_info is set:
+    // CAMPAIGN_BUDGET
+    optional int64 current_budget = 1 [(google.api.field_behavior) = REQUIRED];
+  }
+
+  // Current AssetGroup information of the campaign.
+  message AssetGroupInfo {
+    // Required. Current url of the asset group.
+    // This field is necessary for the following recommendation_types if
+    // asset_group_info is set:
+    // CAMPAIGN_BUDGET
+    optional string final_url = 1 [(google.api.field_behavior) = REQUIRED];
+
+    // Optional. Current headlines of the asset group.
+    // This field is optional for the following recommendation_types if
+    // asset_group_info is set:
+    // CAMPAIGN_BUDGET
+    repeated string headline = 2 [(google.api.field_behavior) = OPTIONAL];
+
+    // Optional. Current descriptions of the asset group.
+    // This field is optional for the following recommendation_types if
+    // asset_group_info is set:
+    // CAMPAIGN_BUDGET
+    repeated string description = 3 [(google.api.field_behavior) = OPTIONAL];
+  }
+
+  // Current Target Impression Share information of the campaign.
+  message TargetImpressionShareInfo {
+    // Required. The targeted location on the search results page.
+    // This is required for campaigns where the AdvertisingChannelType is SEARCH
+    // and the bidding strategy type is TARGET_IMPRESSION_SHARE.
+    optional google.ads.googleads.v18.enums.TargetImpressionShareLocationEnum
+        .TargetImpressionShareLocation location = 1
+        [(google.api.field_behavior) = REQUIRED];
+
+    // Required. The chosen fraction of targeted impression share in micros. For
+    // example, 1% equals 10,000. It must be a value between 1 and 1,000,000.
+    // This is required for campaigns with an AdvertisingChannelType of SEARCH
+    // and a bidding strategy type of TARGET_IMPRESSION_SHARE.
+    optional int64 target_impression_share_micros = 2
+        [(google.api.field_behavior) = REQUIRED];
+
+    // Optional. Ceiling of max CPC bids in micros set by automated bidders.
+    // This is optional for campaigns with an AdvertisingChannelType of SEARCH
+    // and a bidding strategy type of TARGET_IMPRESSION_SHARE.
+    optional int64 max_cpc_bid_ceiling = 3
+        [(google.api.field_behavior) = OPTIONAL];
+  }
+
   // Required. The ID of the customer generating recommendations.
   string customer_id = 1 [(google.api.field_behavior) = REQUIRED];

@@ -620,6 +685,63 @@
   // This field is necessary for the following recommendation_types:
   // KEYWORD
   optional SeedInfo seed_info = 8 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Current budget information.
+  // This field is optional for the following recommendation_types:
+  // CAMPAIGN_BUDGET
+  optional BudgetInfo budget_info = 9 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Current campaign image asset count.
+  // This field is optional for the following recommendation_types:
+  // CAMPAIGN_BUDGET
+  optional int32 campaign_image_asset_count = 10
+      [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Current campaign call asset count.
+  // This field is optional for the following recommendation_types:
+  // CAMPAIGN_BUDGET
+  optional int32 campaign_call_asset_count = 11
+      [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Current campaign country codes.
+  // This field is required for the following recommendation_types:
+  // CAMPAIGN_BUDGET if AdvertisingChannelType is SEARCH
+  repeated string country_codes = 13 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Current campaign language codes.
+  // This field is required for the following recommendation_types:
+  // CAMPAIGN_BUDGET if AdvertisingChannelType is SEARCH
+  repeated string language_codes = 14 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Current campaign positive location ids.
+  // One of this field OR negative_location_ids is required for the following
+  // recommendation_types: CAMPAIGN_BUDGET if AdvertisingChannelType is SEARCH
+  repeated int64 positive_locations_ids = 15
+      [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Current campaign negative location ids.
+  // One of this field OR positive_location_ids is required for the following
+  // recommendation_types: CAMPAIGN_BUDGET if AdvertisingChannelType is SEARCH
+  repeated int64 negative_locations_ids = 16
+      [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. Current AssetGroup Information.
+  // This field is required for the following recommendation_types:
+  // CAMPAIGN_BUDGET
+  repeated AssetGroupInfo asset_group_info = 17
+      [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. If true, the campaign is opted into serving ads on the Google
+  // Partner Network. This field is optional for the following
+  // recommendation_types: CAMPAIGN_BUDGET
+  optional bool target_partner_search_network = 18
+      [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. If true, the campaign is opted into serving ads on specified
+  // placements in the Google Display Network. This field is optional for the
+  // following recommendation_types: CAMPAIGN_BUDGET
+  optional bool target_content_network = 19
+      [(google.api.field_behavior) = OPTIONAL];
 }

 // Response message for