/services/audience_insights_service.proto

--- v14/services/audience_insights_service.proto    2023-10-19 02:11:02.000000000 +0000
+++ v15/services/audience_insights_service.proto    2023-10-19 02:11:06.000000000 +0000
@@ -119,11 +119,34 @@
       GenerateAudienceCompositionInsightsRequest)
       returns (GenerateAudienceCompositionInsightsResponse) {
     option (google.api.http) = {
-      post: "/v14/customers/{customer_id=*}:generateAudienceCompositionInsights"
+      post: "/v15/customers/{customer_id=*}:generateAudienceCompositionInsights"
       body: "*"
     };
     option (google.api.method_signature) = "customer_id,audience,dimensions";
   }
+
+  // Returns a collection of targeting insights (e.g. targetable audiences) that
+  // are relevant to the requested audience.
+  //
+  // List of thrown errors:
+  //   [AudienceInsightsError]()
+  //   [AuthenticationError]()
+  //   [AuthorizationError]()
+  //   [FieldError]()
+  //   [HeaderError]()
+  //   [InternalError]()
+  //   [QuotaError]()
+  //   [RangeError]()
+  //   [RequestError]()
+  rpc GenerateSuggestedTargetingInsights(
+      GenerateSuggestedTargetingInsightsRequest)
+      returns (GenerateSuggestedTargetingInsightsResponse) {
+    option (google.api.http) = {
+      post: "/v15/customers/{customer_id=*}:generateSuggestedTargetingInsights"
+      body: "*"
+    };
+    option (google.api.method_signature) = "customer_id,audience";
+  }
 }

 // Request message for
@@ -194,7 +217,68 @@
 }

 // Request message for
-// [AudienceInsightsService.ListAudienceInsightsAttributes][google.ads.googleads.v14.services.AudienceInsightsService.ListAudienceInsightsAttributes].
+// [AudienceInsightsService.GenerateSuggestedTargetingInsights][google.ads.googleads.v15.services.AudienceInsightsService.GenerateSuggestedTargetingInsights].
+message GenerateSuggestedTargetingInsightsRequest {
+  // Required. The ID of the customer.
+  string customer_id = 1 [(google.api.field_behavior) = REQUIRED];
+
+  // Required. The audience of interest for which insights are being requested.
+  InsightsAudience audience = 2 [(google.api.field_behavior) = REQUIRED];
+
+  // Optional. The baseline audience.  The default, if unspecified, is all
+  // people in the same country as the audience of interest.
+  InsightsAudience baseline_audience = 3
+      [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. The one-month range of historical data to use for insights, in
+  // the format "yyyy-mm". If unset, insights will be returned for the last
+  // thirty days of data.
+  string data_month = 4 [(google.api.field_behavior) = OPTIONAL];
+
+  // Optional. The name of the customer being planned for.  This is a
+  // user-defined value.
+  string customer_insights_group = 5 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Response message for
+// [AudienceInsightsService.GenerateSuggestedTargetingInsights][google.ads.googleads.v15.services.AudienceInsightsService.GenerateSuggestedTargetingInsights].
+message GenerateSuggestedTargetingInsightsResponse {
+  // Suggested insights for targetable audiences.
+  repeated TargetingSuggestionMetrics suggestions = 1;
+}
+
+// A suggested targetable audience relevant to the requested audience.
+message TargetingSuggestionMetrics {
+  // Suggested location targeting.  These attributes all have dimension
+  // GEO_TARGET_COUNTRY or SUB_COUNTRY_LOCATION
+  repeated AudienceInsightsAttributeMetadata locations = 1;
+
+  // Suggested age targeting; may be empty indicating no age targeting.
+  repeated google.ads.googleads.v15.common.AgeRangeInfo age_ranges = 2;
+
+  // Suggested gender targeting.  If present, this attribute has dimension
+  // GENDER.
+  google.ads.googleads.v15.common.GenderInfo gender = 3;
+
+  // Suggested audience segments to target.  These attributes all have dimension
+  // AFFINITY_USER_INTEREST or IN_MARKET_USER_INTEREST
+  repeated AudienceInsightsAttributeMetadata user_interests = 4;
+
+  // The fraction (from 0 to 1 inclusive) of the requested audience that can be
+  // reached using the suggested targeting.
+  double coverage = 5;
+
+  // The ratio of coverage to the coverage of the baseline audience or zero if
+  // this ratio is undefined or is not meaningful.
+  double index = 6;
+
+  // The approximate estimated number of people that can be reached on YouTube
+  // using this targeting.
+  int64 potential_youtube_reach = 7;
+}
+
+// Request message for
+// [AudienceInsightsService.ListAudienceInsightsAttributes][google.ads.googleads.v15.services.AudienceInsightsService.ListAudienceInsightsAttributes].
 message ListAudienceInsightsAttributesRequest {
   // Required. The ID of the customer.
   string customer_id = 1 [(google.api.field_behavior) = REQUIRED];