/errors/criterion_error.proto

--- v20/errors/criterion_error.proto    2025-08-05 14:39:41.000000000 +0000
+++ v21/errors/criterion_error.proto    2025-08-05 14:39:46.000000000 +0000
@@ -382,9 +382,16 @@
     // Listing group SUBDIVISION nodes cannot have bids.
     CANNOT_SET_BIDS_ON_LISTING_GROUP_SUBDIVISION = 105;

+    // Product group operation is invalid because another operation targeting
+    // the same AdGroupId is failing.
+    LISTING_GROUP_ERROR_IN_ANOTHER_OPERATION = 169;
+
     // Ad group is invalid due to the listing groups it contains.
     INVALID_LISTING_GROUP_HIERARCHY = 106;

+    // Tree was invalid before the mutation.
+    LISTING_GROUP_TREE_WAS_INVALID_BEFORE_MUTATION = 170;
+
     // Listing group unit cannot have children.
     LISTING_GROUP_UNIT_CANNOT_HAVE_CHILDREN = 107;

@@ -529,6 +536,23 @@
     // campaign.
     LOCATION_TARGETING_NOT_ELIGIBLE_FOR_RESTRICTED_CAMPAIGN = 166;

+    // Ad group level brand list criteria only support inclusionary targeting.
+    // Negative targeting at this level is not supported.
+    ONLY_INCLUSION_BRAND_LIST_ALLOWED_FOR_AD_GROUPS = 171;
+
+    // Cannot create a placement list with deleted shared set.
+    CANNOT_ADD_REMOVED_PLACEMENT_LIST_SHARED_SET = 172;
+
+    // The placement_list.shared_set_id references a shared set that does not
+    // exist.
+    PLACEMENT_LIST_SHARED_SET_DOES_NOT_EXIST = 173;
+
+    // This feature is only available for AI Max campaigns.
+    AI_MAX_MUST_BE_ENABLED = 174;
+
+    // This feature is not available for AI Max campaigns.
+    NOT_AVAILABLE_FOR_AI_MAX_CAMPAIGNS = 175;
+
     // The operation failed because the campaign is missing the
     // self-declaration on political advertising status in the EU.
     MISSING_EU_POLITICAL_ADVERTISING_SELF_DECLARATION = 176;