/resources/asset_group.proto

--- v23/resources/asset_group.proto 2026-06-18 21:38:49.000000000 +0000
+++ v24/resources/asset_group.proto 2026-06-18 21:38:55.000000000 +0000
@@ -108,11 +108,14 @@
   string path2 = 8;

   // Output only. Overall ad strength of this asset group.
-  google.ads.googleads.v23.enums.AdStrengthEnum.AdStrength ad_strength = 10
+  google.ads.googleads.v24.enums.AdStrengthEnum.AdStrength ad_strength = 10
       [(google.api.field_behavior) = OUTPUT_ONLY];

   // Output only. The asset coverage of this asset group.
   AssetCoverage asset_coverage = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+  // Local services info of the asset group.
+  GoogleLocalServicesInfo google_local_services_info = 14;
 }

 // Information about the asset coverage of an asset group.
@@ -157,3 +160,21 @@
         [(google.api.field_behavior) = OUTPUT_ONLY];
   }
 }
+
+// Local services info for the asset group.
+message GoogleLocalServicesInfo {
+  // Immutable. The local services category associated with this asset group.
+  // That is, XCAT format - xcat:service_area_business_plumber. See
+  // https://developers.google.com/google-ads/api/data/codes-formats#local-services-category-ids
+  // This field cannot be modified after the AssetGroup has been created.
+  optional string category_id = 1 [(google.api.field_behavior) = IMMUTABLE];
+
+  // Callouts selected by the advertiser to show.
+  repeated LocalServicesCallout callouts = 2;
+}
+
+// Local services callout of the asset group.
+message LocalServicesCallout {
+  // Required. The unique ID of the callout.
+  optional string callout_id = 1 [(google.api.field_behavior) = REQUIRED];
+}