/resources/asset_group_listing_group_filter.proto

--- v14/resources/asset_group_listing_group_filter.proto    2023-10-18 04:25:31.000000000 +0000
+++ v15/resources/asset_group_listing_group_filter.proto    2023-10-18 04:25:35.000000000 +0000
@@ -67,14 +67,13 @@
   int64 id = 3 [(google.api.field_behavior) = OUTPUT_ONLY];

   // Immutable. Type of a listing group filter node.
-  google.ads.googleads.v14.enums.ListingGroupFilterTypeEnum
+  google.ads.googleads.v15.enums.ListingGroupFilterTypeEnum
       .ListingGroupFilterType type = 4
       [(google.api.field_behavior) = IMMUTABLE];

-  // Immutable. The vertical the current node tree represents. All nodes in the
-  // same tree must belong to the same vertical.
-  google.ads.googleads.v14.enums.ListingGroupFilterVerticalEnum
-      .ListingGroupFilterVertical vertical = 5
+  // Immutable. The source of listings filtered by this listing group filter.
+  google.ads.googleads.v15.enums.ListingGroupFilterListingSourceEnum
+      .ListingGroupFilterListingSource listing_source = 9
       [(google.api.field_behavior) = IMMUTABLE];

   // Dimension value with which this listing group is refining its parent.
@@ -105,21 +104,21 @@

 // Listing dimensions for the asset group listing group filter.
 message ListingGroupFilterDimension {
-  // One element of a bidding category at a certain level. Top-level categories
+  // One element of a category at a certain level. Top-level categories
   // are at level 1, their children at level 2, and so on. We currently support
   // up to 5 levels. The user must specify a dimension type that indicates the
   // level of the category. All cases of the same subdivision must have the same
   // dimension type (category level).
-  message ProductBiddingCategory {
-    // ID of the product bidding category.
+  message ProductCategory {
+    // ID of the product category.
     //
     // This ID is equivalent to the google_product_category ID as described in
     // this article: https://support.google.com/merchants/answer/6324436
-    optional int64 id = 1;
+    optional int64 category_id = 1;

     // Indicates the level of the category in the taxonomy.
-    google.ads.googleads.v14.enums.ListingGroupFilterBiddingCategoryLevelEnum
-        .ListingGroupFilterBiddingCategoryLevel level = 2;
+    google.ads.googleads.v15.enums.ListingGroupFilterProductCategoryLevelEnum
+        .ListingGroupFilterProductCategoryLevel level = 2;
   }

   // Brand of the product.
@@ -164,14 +163,48 @@
     optional string value = 1;

     // Level of the type.
-    google.ads.googleads.v14.enums.ListingGroupFilterProductTypeLevelEnum
+    google.ads.googleads.v15.enums.ListingGroupFilterProductTypeLevelEnum
         .ListingGroupFilterProductTypeLevel level = 2;
   }

+  // Filters for URLs in a page feed and URLs from the advertiser web domain.
+  // Several root nodes with this dimension are allowed in an asset group and
+  // their conditions are considered in OR.
+  message Webpage {
+    // The webpage conditions are case sensitive and these are and-ed together
+    // when evaluated for filtering. All the conditions should be of same type.
+    // Example1: for URL1 = www.ads.google.com?ocid=1&euid=2
+    // and URL2 = www.ads.google.com?ocid=1
+    // and with "ocid" and "euid" as url_contains conditions,
+    // URL1 will be matched, but URL2 not.
+    //
+    // Example2 : If URL1 has Label1, Label2 and URL2 has Label2, Label3, then
+    // with Label1 and Label2 as custom_label conditions, URL1 will be matched
+    // but not URL2.
+    // With Label2 as the only custom_label condition then both URL1 and URL2
+    // will be matched.
+    repeated WebpageCondition conditions = 1;
+  }
+
+  // Matching condition for URL filtering.
+  message WebpageCondition {
+    // Condition for filtering the URLs.
+    oneof condition {
+      // Filters the URLs in a page feed that have this custom label. A custom
+      // label can be added to a campaign by creating an AssetSet of type
+      // PAGE_FEED and linking it to the campaign using CampaignAssetSet.
+      string custom_label = 1;
+
+      // Filters the URLs in a page feed and the URLs from the advertiser web
+      // domain that contain this string.
+      string url_contains = 2;
+    }
+  }
+
   // Dimension of one of the types below is always present.
   oneof dimension {
-    // Bidding category of a product offer.
-    ProductBiddingCategory product_bidding_category = 1;
+    // Category of a product offer.
+    ProductCategory product_category = 10;

     // Brand of a product offer.
     ProductBrand product_brand = 2;
@@ -190,5 +223,8 @@

     // Type of a product offer.
     ProductType product_type = 7;
+
+    // Filters for URLs in a page feed and URLs from the advertiser web domain.
+    Webpage webpage = 9;
   }
 }