/resources/campaign.proto

--- v22/resources/campaign.proto    2026-02-25 22:50:25.000000000 +0000
+++ v23/resources/campaign.proto    2026-02-25 22:50:33.000000000 +0000
@@ -397,13 +399,58 @@
       // 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.v22.enums.VideoAdSequenceInteractionTypeEnum
+      google.ads.googleads.v23.enums.VideoAdSequenceInteractionTypeEnum
           .VideoAdSequenceInteractionType previous_step_interaction_type = 5;
     }

+    // Container for ad category self-disclosure for campaigns with the
+    // FIXED_CPM or FIXED_SHARE_OF_VOICE bidding strategies.
+    message ReservationAdCategorySelfDisclosure {
+      // The campaign is expected to contain gambling-related ads.
+      bool gambling = 1;
+
+      // The campaign is expected to contain alcohol-related ads.
+      bool alcohol = 2;
+
+      // The campaign is expected to contain politics-related ads.
+      bool politics = 3;
+    }
+
+    // Container for booking details for campaigns with the FIXED_CPM or
+    // FIXED_SHARE_OF_VOICE bidding strategies.
+    message BookingDetails {
+      // Output only. The status of the booking.
+      google.ads.googleads.v23.enums.BookingStatusEnum.BookingStatus status = 1
+          [(google.api.field_behavior) = OUTPUT_ONLY];
+
+      // Output only. Time until which booked inventory will be held or has been
+      // held for this campaign. Available for status HELD and HOLD_EXPIRED.
+      // Format is "yyyy-MM-dd HH:mm:ss" in the customer's time zone.
+      string hold_expiration_date_time = 2
+          [(google.api.field_behavior) = OUTPUT_ONLY];
+
+      // Output only. Time when the booked inventory of this campaign will be
+      // cancelled or has been cancelled. Available for primary status
+      // NOT_ELIGIBLE if the campaign will be cancelled and for primary status
+      // reason BOOKING_CANCELLED. Format is "yyyy-MM-dd HH:mm:ss" in the
+      // customer's time zone.
+      string cancellation_date_time = 3
+          [(google.api.field_behavior) = OUTPUT_ONLY];
+    }
+
     // Container for video ads sequencing definition.
     VideoAdSequence video_ad_sequence = 4;

+    // Ad category self-disclosure for campaigns with the FIXED_CPM or
+    // FIXED_SHARE_OF_VOICE bidding strategies.
+    ReservationAdCategorySelfDisclosure
+        reservation_ad_category_self_disclosure = 5;
+
+    // Output only. Booking information for campaigns with the FIXED_CPM or
+    // FIXED_SHARE_OF_VOICE bidding strategies.
+    BookingDetails booking_details = 6
+        [(google.api.field_behavior) = OUTPUT_ONLY];
+
     // Controls for defining video responsive ads behavior.
     oneof fluidity_control {
       // Inventory control for video responsive ads in reach campaigns.
@@ -457,6 +504,31 @@
     string predefined_font_family = 3;
   }

+  // Settings to control automatically generated text assets.
+  message TextGuidelines {
+    // Exact words or phrases that will be excluded from generated text
+    // assets. At most 25 exclusions may be provided. Valid exclusions may
+    // contain a maximum of 30 characters.
+    repeated string term_exclusions = 1;
+
+    // Freeform instructions that will be used to guide text asset generation
+    // using LLM inference. At most 40 restrictions may be provided.
+    repeated MessagingRestriction messaging_restrictions = 2;
+  }
+
+  // Freeform instructions that will be used to guide text asset generation
+  // using LLM inference.
+  message MessagingRestriction {
+    // Freeform instructions to guide text asset generation using LLM
+    // inference. Valid instructions may contain a maximum of 300 characters.
+    string restriction_text = 1;
+
+    // Determines how the guideline is applied. Only
+    // `RESTRICTION_BASED_EXCLUSION` is currently supported.
+    google.ads.googleads.v23.enums.MessagingRestrictionTypeEnum
+        .MessagingRestrictionType restriction_type = 2;
+  }
+
   // Settings for AI Max in search campaigns.
   message AiMaxSetting {
     // Enum describing whether AI Max must be enabled to serve and update
@@ -686,20 +758,23 @@
     }
   ];

-  // The date when campaign started in serving customer's timezone in YYYY-MM-DD
-  // format.
-  optional string start_date = 63;
-
   // The resource name of the campaign group that this campaign belongs to.
   optional string campaign_group = 76 [(google.api.resource_reference) = {
     type: "googleads.googleapis.com/CampaignGroup"
   }];

-  // The last day of the campaign in serving customer's timezone in YYYY-MM-DD
-  // format. On create, defaults to 2037-12-30, which means the campaign will
-  // run indefinitely. To set an existing campaign to run indefinitely, set this
-  // field to 2037-12-30.
-  optional string end_date = 64;
+  // The date and time when campaign started in serving. The timestamp is in
+  // the customer's time zone and in "yyyy-MM-dd HH:mm:ss" format. Set the time
+  // component to 00:00:00 for daily granularity, time granularity is only
+  // supported for some campaign types.
+  optional string start_date_time = 104;
+
+  // The last day and time of the campaign in serving customer's timezone in
+  // "yyyy-MM-dd HH:mm:ss" format. Set the time component to 23:59:59 for daily
+  // granularity, time granularity is only supported for some campaign types. On
+  // create, defaults to running indefinitely. To set an existing campaign to
+  // run indefinitely, clear this field.
+  optional string end_date_time = 105;

   // Suffix used to append query parameters to landing pages that are served
   // with parallel tracking.
@@ -824,8 +899,13 @@
   // used for Performance Max campaigns that have Brand Guidelines enabled.
   BrandGuidelines brand_guidelines = 98;

+  // Settings to control automatically generated text assets. Only available
+  // in Performance Max and Search campaigns (Brand Guidelines does not need
+  // to be enabled).
+  TextGuidelines text_guidelines = 107;
+
   // Third-Party integration partners.
-  google.ads.googleads.v22.common.CampaignThirdPartyIntegrationPartners
+  google.ads.googleads.v23.common.CampaignThirdPartyIntegrationPartners
       third_party_integration_partners = 100;

   // Settings for AI Max in search campaigns.