/resources/campaign.proto

--- v20/resources/campaign.proto    2025-08-05 14:39:35.000000000 +0000
+++ v21/resources/campaign.proto    2025-08-05 14:39:50.000000000 +0000
@@ -178,13 +182,13 @@
     // inventory in Performance Max campaigns, use `listing_type` instead.
     bool use_vehicle_inventory = 9 [(google.api.field_behavior) = IMMUTABLE];

-    // Immutable. The list of Google Ads accounts IDs of advertising partners
-    // cooperating within the campaign. This feature is currently available only
-    // for accounts having an advertising partner link. This feature is
-    // currently supported only for Performance Max, Shopping, Search and Demand
-    // Gen campaign types.
-    repeated int64 advertising_partner_ids = 11
-        [(google.api.field_behavior) = IMMUTABLE];
+    // The list of Google Ads accounts IDs of advertising partners cooperating
+    // within the campaign.
+    // This feature is currently available only for accounts having an
+    // advertising partner link.
+    // This feature is currently supported only for Performance Max, Shopping,
+    // Search and Demand Gen campaign types.
+    repeated int64 advertising_partner_ids = 11;

     // Disable the optional product feed. This field is currently supported
     // only for Demand Gen campaigns. See
@@ -329,6 +333,12 @@

       // Determine if video responsive ads can be used as shorts format.
       optional bool allow_shorts = 3;
+
+      // Determine if video responsive ads can be used for non-skippable
+      // in-stream ads. This is only available for campaigns that allow mixing
+      // of non-skippable with other formats (Video reach campaign with Target
+      // Frequency bidding strategy goal).
+      optional bool allow_non_skippable_in_stream = 4;
     }

     // Format-restricting control enabling usage of video responsive ads in
@@ -349,10 +359,49 @@
           .NonSkippableMinDuration min_duration = 1;

       // The maximum allowed duration for non-skippable ads.
-      google.ads.googleads.v20.enums.NonSkippableMaxDurationEnum
+      google.ads.googleads.v21.enums.NonSkippableMaxDurationEnum
           .NonSkippableMaxDuration max_duration = 2;
     }

+    // Container for video ads sequencing definition.
+    message VideoAdSequence {
+      // The list of sequence steps and data associated with them.
+      repeated VideoAdSequenceStep steps = 1;
+
+      // Users are eligible to repeat sequence after this period. Defaults to
+      // WEEK if not specified.
+      google.ads.googleads.v21.enums.VideoAdSequenceMinimumDurationEnum
+          .VideoAdSequenceMinimumDuration minimum_duration = 2;
+    }
+
+    // Information about a step within a video sequence.
+    message VideoAdSequenceStep {
+      // The ID of this sequence step.
+      int64 video_ad_sequence_step_id = 1;
+
+      // The ID of the Asset for this step. The asset must be type
+      // YOUTUBE_VIDEO.
+      int64 asset_id = 2;
+
+      // The ad group type for this step (denoting the video format).
+      google.ads.googleads.v21.enums.AdGroupTypeEnum.AdGroupType ad_group_type =
+          3;
+
+      // The ID of the previous step. This field is required for all
+      // steps except the first one. It must point to a step that appears in the
+      // step definition list before this step.
+      int64 previous_step_id = 4;
+
+      // Type of interaction *on the previous step* required in order for the
+      // user to advance to this step. As with the previous step ID, it's
+      // required for every step except for the first one.
+      google.ads.googleads.v21.enums.VideoAdSequenceInteractionTypeEnum
+          .VideoAdSequenceInteractionType previous_step_interaction_type = 5;
+    }
+
+    // Container for video ads sequencing definition.
+    VideoAdSequence video_ad_sequence = 4;
+
     // Controls for defining video responsive ads behavior.
     oneof fluidity_control {
       // Inventory control for video responsive ads in reach campaigns.
@@ -406,6 +455,46 @@
     string predefined_font_family = 3;
   }

+  // Settings for AI Max in search campaigns.
+  message AiMaxSetting {
+    // Enum describing whether AI Max must be enabled to serve and update
+    // text asset automation and brand list features newly bundled with AI Max.
+    enum AiMaxBundlingRequired {
+      // Not specified.
+      UNSPECIFIED = 0;
+
+      // Used for return value only. Represents value unknown in this version.
+      UNKNOWN = 1;
+
+      // Search campaign is using text asset automation or brand
+      // list targeting, and AI Max is not required to be enabled to serve these
+      // features.
+      NOT_REQUIRED = 2;
+
+      // AI Max is required to be enabled for this search campaign to serve
+      // existing text asset automation and brand list targeting, or to add new
+      // text asset automation and brand list targeting settings.
+      REQUIRED = 3;
+    }
+
+    // Controls whether or not AI Max features are serve for this campaign.
+    //
+    // Individual AI Max features are enabled or disabled by their respective
+    // settings. But if enable_ai_max is set to false or cleared, then no AI
+    // Max features will serve for this campaign, regardless of the other
+    // settings.
+    //
+    // Search Term Matching is enabled by default when AI Max is enabled, and
+    // can be disabled at the ad group level.
+    optional bool enable_ai_max = 1;
+
+    // Output only. Indicates whether a search campaign has adopted AI Max
+    // before, and is required to have AI Max enabled to adopt campaign-level
+    // text asset automation and brand list targeting in all API versions.
+    optional AiMaxBundlingRequired bundling_required = 2
+        [(google.api.field_behavior) = OUTPUT_ONLY];
+  }
+
   // Immutable. The resource name of the campaign.
   // Campaign resource names have the form:
   //
@@ -741,9 +830,16 @@
   // used for Performance Max campaigns that have Brand Guidelines enabled.
   BrandGuidelines brand_guidelines = 98;

+  // Third-Party integration partners.
+  google.ads.googleads.v21.common.CampaignThirdPartyIntegrationPartners
+      third_party_integration_partners = 100;
+
+  // Settings for AI Max in search campaigns.
+  AiMaxSetting ai_max_setting = 101;
+
   // The advertiser should self-declare whether this campaign contains
   // political advertising content targeted towards the European Union.
-  google.ads.googleads.v20.enums.EuPoliticalAdvertisingStatusEnum
+  google.ads.googleads.v21.enums.EuPoliticalAdvertisingStatusEnum
       .EuPoliticalAdvertisingStatus contains_eu_political_advertising = 102;

   // The bidding strategy for the campaign.