/common/ad_asset.proto

--- v22/common/ad_asset.proto   2026-01-23 15:31:43.000000000 +0000
+++ v23/common/ad_asset.proto   2026-01-22 20:49:24.000000000 +0000
@@ -1,120 +1,132 @@
 // Copyright 2026 Google LLC
 //
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
 //
 //     http://www.apache.org/licenses/LICENSE-2.0
 //
 // Unless required by applicable law or agreed to in writing, software
 // distributed under the License is distributed on an "AS IS" BASIS,
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.

 syntax = "proto3";

-package google.ads.googleads.v22.common;
+package google.ads.googleads.v23.common;

-import "google/ads/googleads/v22/common/asset_policy.proto";
-import "google/ads/googleads/v22/enums/asset_performance_label.proto";
-import "google/ads/googleads/v22/enums/served_asset_field_type.proto";
+import "google/ads/googleads/v23/common/asset_policy.proto";
+import "google/ads/googleads/v23/enums/asset_performance_label.proto";
+import "google/ads/googleads/v23/enums/served_asset_field_type.proto";

-option csharp_namespace = "Google.Ads.GoogleAds.V22.Common";
-option go_package = "google.golang.org/genproto/googleapis/ads/googleads/v22/common;common";
+option csharp_namespace = "Google.Ads.GoogleAds.V23.Common";
+option go_package = "google.golang.org/genproto/googleapis/ads/googleads/v23/common;common";
 option java_multiple_files = true;
 option java_outer_classname = "AdAssetProto";
-option java_package = "com.google.ads.googleads.v22.common";
+option java_package = "com.google.ads.googleads.v23.common";
 option objc_class_prefix = "GAA";
-option php_namespace = "Google\\Ads\\GoogleAds\\V22\\Common";
-option ruby_package = "Google::Ads::GoogleAds::V22::Common";
+option php_namespace = "Google\\Ads\\GoogleAds\\V23\\Common";
+option ruby_package = "Google::Ads::GoogleAds::V23::Common";

 // Proto file describing assets used inside an ad.

 // A text asset used inside an ad.
 message AdTextAsset {
   // Asset text.
   optional string text = 4;

   // The pinned field of the asset. This restricts the asset to only serve
   // within this field. Multiple assets can be pinned to the same field. An
   // asset that is unpinned or pinned to a different field will not serve in a
   // field where some other asset has been pinned.
-  google.ads.googleads.v22.enums.ServedAssetFieldTypeEnum.ServedAssetFieldType
+  google.ads.googleads.v23.enums.ServedAssetFieldTypeEnum.ServedAssetFieldType
       pinned_field = 2;

   // The performance label of this text asset.
-  google.ads.googleads.v22.enums.AssetPerformanceLabelEnum.AssetPerformanceLabel
+  google.ads.googleads.v23.enums.AssetPerformanceLabelEnum.AssetPerformanceLabel
       asset_performance_label = 5;

   // The policy summary of this text asset.
   AdAssetPolicySummary policy_summary_info = 6;
 }

 // An image asset used inside an ad.
 message AdImageAsset {
   // The Asset resource name of this image.
   optional string asset = 2;
 }

 // A video asset used inside an ad.
 message AdVideoAsset {
   // The Asset resource name of this video.
   optional string asset = 2;

   // Contains info fields for this AdVideoAsset.
   optional AdVideoAssetInfo ad_video_asset_info = 4;
 }

 // Contains info fields for AdVideoAssets.
 message AdVideoAssetInfo {
   // List of inventory preferences for this AdVideoAsset. This field can only be
   // set for DiscoveryVideoResponsiveAd. The video assets with an inventory
   // asset preference set will be preferred over other videos from the same ad
   // during serving time. For example, consider this ad being served for a
   // specific inventory. The server will first try to match an eligible video
   // with a matching preference for that inventory. Videos with no preferences
   // are chosen only when a video with matching preference and eligible for a
   // given ad slot can be found.
   optional AdVideoAssetInventoryPreferences
       ad_video_asset_inventory_preferences = 1;
+
+  // Defines feature controls for this AdVideoAsset during serving time.
+  // For example, whether YouTube comments should be enabled for Partnership Ads
+  // served on YouTube Shorts.
+  optional AdVideoAssetLinkFeatureControl ad_video_asset_feature_control = 2;
 }

 // YouTube Video Asset inventory preferences.
 message AdVideoAssetInventoryPreferences {
   // When true, YouTube Video Asset with this inventory preference will be
   // preferred when choosing a video to serve In Feed.
   optional bool in_feed_preference = 1;

   // When true, YouTube Video Asset with this inventory preference will be
   // preferred when choosing a video to serve In Stream.
   optional bool in_stream_preference = 2;

   // When true, YouTube Video Asset with this inventory preference will be
   // preferred when choosing a video to serve on YouTube Shorts.
   optional bool shorts_preference = 3;
 }

+// YouTube Video Asset feature controls.
+message AdVideoAssetLinkFeatureControl {
+  // Defines if YouTube comments should be enabled for the creative
+  // using this YouTube video asset served on YouTube Shorts.
+  optional bool allow_youtube_comments = 1;
+}
+
 // A media bundle asset used inside an ad.
 message AdMediaBundleAsset {
   // The Asset resource name of this media bundle.
   optional string asset = 2;
 }

 // A Demand Gen carousel card asset used inside an ad.
 message AdDemandGenCarouselCardAsset {
   // The Asset resource name of this discovery carousel card.
   optional string asset = 1;
 }

 // A call to action asset used inside an ad.
 message AdCallToActionAsset {
   // The Asset resource name of this call to action asset.
   optional string asset = 1;
 }

 // An app deep link used inside an ad.
 message AdAppDeepLinkAsset {
   // The Asset resource name of this app deep link asset.
   optional string asset = 1;
 }