diff --git a/google/ads/admanager/v1/BUILD.bazel b/google/ads/admanager/v1/BUILD.bazel
index c824cf5385..bec1d4349e 100644
--- a/google/ads/admanager/v1/BUILD.bazel
+++ b/google/ads/admanager/v1/BUILD.bazel
@@ -29,9 +29,19 @@ proto_library(
"ad_review_center_ad_enums.proto",
"ad_review_center_ad_messages.proto",
"ad_review_center_ad_service.proto",
+ "ad_rule_enums.proto",
+ "ad_rule_messages.proto",
+ "ad_rule_service.proto",
+ "ad_rule_slot_behavior_enum.proto",
+ "ad_rule_slot_bumper_enum.proto",
+ "ad_rule_slot_midroll_frequency_type_enum.proto",
+ "ad_spot_messages.proto",
+ "ad_spot_service.proto",
+ "ad_spot_targeting_type_enum.proto",
"ad_unit_enums.proto",
"ad_unit_messages.proto",
"ad_unit_service.proto",
+ "admanager_error.proto",
"application_enums.proto",
"application_messages.proto",
"application_service.proto",
@@ -44,6 +54,12 @@ proto_library(
"browser_language_service.proto",
"browser_messages.proto",
"browser_service.proto",
+ "cdn_config_messages.proto",
+ "cdn_config_service.proto",
+ "cdn_config_status_enum.proto",
+ "cdn_config_type_enum.proto",
+ "cdn_security_policy_enum.proto",
+ "cdn_security_policy_origin_forwarding_enum.proto",
"child_publisher_messages.proto",
"cms_metadata_key_enums.proto",
"cms_metadata_key_messages.proto",
@@ -57,8 +73,10 @@ proto_library(
"contact_enums.proto",
"contact_messages.proto",
"contact_service.proto",
+ "content_bundle_enums.proto",
"content_bundle_messages.proto",
"content_bundle_service.proto",
+ "content_enums.proto",
"content_label_messages.proto",
"content_label_service.proto",
"content_messages.proto",
@@ -78,6 +96,7 @@ proto_library(
"custom_targeting_value_messages.proto",
"custom_targeting_value_service.proto",
"deal_buyer_permission_type_enum.proto",
+ "deal_priority_tier_enum.proto",
"device_capability_messages.proto",
"device_capability_service.proto",
"device_category_messages.proto",
@@ -103,7 +122,10 @@ proto_library(
"linked_device_enums.proto",
"linked_device_messages.proto",
"linked_device_service.proto",
+ "live_stream_event_enums.proto",
"live_stream_event_messages.proto",
+ "live_stream_messages.proto",
+ "live_stream_service.proto",
"mcm_earnings_messages.proto",
"mcm_earnings_service.proto",
"mcm_enums.proto",
@@ -115,6 +137,7 @@ proto_library(
"mobile_device_submodel_service.proto",
"network_messages.proto",
"network_service.proto",
+ "non_guaranteed_deal_priority.proto",
"operating_system_messages.proto",
"operating_system_service.proto",
"operating_system_version_messages.proto",
@@ -148,14 +171,23 @@ proto_library(
"site_service.proto",
"size.proto",
"size_type_enum.proto",
+ "suggested_ad_unit_messages.proto",
+ "suggested_ad_unit_service.proto",
+ "target_platform_enum.proto",
"targeted_video_bumper_type_enum.proto",
"targeting.proto",
+ "targeting_preset_enums.proto",
+ "targeting_preset_messages.proto",
+ "targeting_preset_service.proto",
"taxonomy_category_messages.proto",
"taxonomy_category_service.proto",
"taxonomy_type_enum.proto",
"team_enums.proto",
"team_messages.proto",
"team_service.proto",
+ "third_party_company_enums.proto",
+ "third_party_company_messages.proto",
+ "third_party_company_service.proto",
"time_unit_enum.proto",
"user_messages.proto",
"user_service.proto",
@@ -174,6 +206,7 @@ proto_library(
"//google/type:interval_proto",
"//google/type:money_proto",
"//google/type:timeofday_proto",
+ "@com_google_protobuf//:any_proto",
"@com_google_protobuf//:duration_proto",
"@com_google_protobuf//:empty_proto",
"@com_google_protobuf//:field_mask_proto",
@@ -206,8 +239,6 @@ java_proto_library(
deps = [":admanager_proto"],
)
-
-
java_gapic_library(
name = "admanager_java_gapic",
srcs = [":admanager_proto_with_info"],
@@ -229,12 +260,15 @@ java_gapic_test(
test_classes = [
"com.google.ads.admanager.v1.AdBreakServiceClientTest",
"com.google.ads.admanager.v1.AdReviewCenterAdServiceClientTest",
+ "com.google.ads.admanager.v1.AdRuleServiceClientTest",
+ "com.google.ads.admanager.v1.AdSpotServiceClientTest",
"com.google.ads.admanager.v1.AdUnitServiceClientTest",
"com.google.ads.admanager.v1.ApplicationServiceClientTest",
"com.google.ads.admanager.v1.AudienceSegmentServiceClientTest",
"com.google.ads.admanager.v1.BandwidthGroupServiceClientTest",
"com.google.ads.admanager.v1.BrowserLanguageServiceClientTest",
"com.google.ads.admanager.v1.BrowserServiceClientTest",
+ "com.google.ads.admanager.v1.CdnConfigServiceClientTest",
"com.google.ads.admanager.v1.CmsMetadataKeyServiceClientTest",
"com.google.ads.admanager.v1.CmsMetadataValueServiceClientTest",
"com.google.ads.admanager.v1.CompanyServiceClientTest",
@@ -254,6 +288,7 @@ java_gapic_test(
"com.google.ads.admanager.v1.LabelServiceClientTest",
"com.google.ads.admanager.v1.LineItemServiceClientTest",
"com.google.ads.admanager.v1.LinkedDeviceServiceClientTest",
+ "com.google.ads.admanager.v1.LiveStreamServiceClientTest",
"com.google.ads.admanager.v1.McmEarningsServiceClientTest",
"com.google.ads.admanager.v1.MobileCarrierServiceClientTest",
"com.google.ads.admanager.v1.MobileDeviceServiceClientTest",
@@ -270,8 +305,11 @@ java_gapic_test(
"com.google.ads.admanager.v1.RichMediaAdsCompanyServiceClientTest",
"com.google.ads.admanager.v1.RoleServiceClientTest",
"com.google.ads.admanager.v1.SiteServiceClientTest",
+ "com.google.ads.admanager.v1.SuggestedAdUnitServiceClientTest",
+ "com.google.ads.admanager.v1.TargetingPresetServiceClientTest",
"com.google.ads.admanager.v1.TaxonomyCategoryServiceClientTest",
"com.google.ads.admanager.v1.TeamServiceClientTest",
+ "com.google.ads.admanager.v1.ThirdPartyCompanyServiceClientTest",
"com.google.ads.admanager.v1.UserServiceClientTest",
],
runtime_deps = [":admanager_java_gapic_test"],
@@ -280,13 +318,13 @@ java_gapic_test(
# Open Source Packages
java_gapic_assembly_gradle_pkg(
name = "google-ads-admanager-v1-java",
+ include_samples = True,
transport = "rest",
deps = [
":admanager_java_gapic",
":admanager_java_proto",
":admanager_proto",
],
- include_samples = True,
)
##############################################################################
@@ -331,6 +369,7 @@ go_gapic_library(
"//google/longrunning:longrunning_go_proto",
"@com_google_cloud_go_longrunning//:go_default_library",
"@com_google_cloud_go_longrunning//autogen:go_default_library",
+ "@io_bazel_rules_go//proto/wkt:any_go_proto",
"@io_bazel_rules_go//proto/wkt:duration_go_proto",
],
)
@@ -340,9 +379,9 @@ go_gapic_assembly_pkg(
name = "gapi-ads-admanager-v1-go",
deps = [
":admanager_go_gapic",
- ":admanager_go_gapic_srcjar-test.srcjar",
":admanager_go_gapic_srcjar-metadata.srcjar",
":admanager_go_gapic_srcjar-snippets.srcjar",
+ ":admanager_go_gapic_srcjar-test.srcjar",
":admanager_go_proto",
],
)
@@ -407,8 +446,8 @@ php_gapic_library(
name = "admanager_php_gapic",
srcs = [":admanager_proto_with_info"],
grpc_service_config = "admanager_grpc_service_config.json",
- rest_numeric_enums = True,
migration_mode = "NEW_SURFACE_ONLY",
+ rest_numeric_enums = True,
service_yaml = "admanager_v1.yaml",
transport = "rest",
deps = [
@@ -462,8 +501,8 @@ nodejs_gapic_assembly_pkg(
# buildifier: disable=same-origin-load
load(
"@com_google_googleapis_imports//:imports.bzl",
- "ruby_gapic_assembly_pkg",
"ruby_cloud_gapic_library",
+ "ruby_gapic_assembly_pkg",
"ruby_grpc_library",
"ruby_proto_library",
)
@@ -482,9 +521,7 @@ ruby_grpc_library(
ruby_cloud_gapic_library(
name = "admanager_ruby_gapic",
srcs = [":admanager_proto_with_info"],
- extra_protoc_parameters = [
- "ruby-cloud-gem-name=google-ads-ad_manager-v1",
- ],
+ extra_protoc_parameters = ["ruby-cloud-gem-name=google-ads-ad_manager-v1"],
grpc_service_config = "admanager_grpc_service_config.json",
rest_numeric_enums = True,
service_yaml = "admanager_v1.yaml",
@@ -519,7 +556,6 @@ load(
csharp_proto_library(
name = "admanager_csharp_proto",
- extra_opts = [],
deps = [":admanager_proto"],
)
diff --git a/google/ads/admanager/v1/ad_break_service.proto b/google/ads/admanager/v1/ad_break_service.proto
index d990b412b8..7fdb59c8d0 100644
--- a/google/ads/admanager/v1/ad_break_service.proto
+++ b/google/ads/admanager/v1/ad_break_service.proto
@@ -39,7 +39,7 @@ service AdBreakService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve an `AdBreak` object.
+ // Retrieves an `AdBreak` object.
//
// Query an ad break by its resource name or custom asset key. Check the
// resource's `breakState` field to determine its state.
@@ -56,7 +56,7 @@ service AdBreakService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `AdBreak` objects.
+ // Lists `AdBreak` objects.
//
// By default, when no `orderBy` query parameter is specified, ad breaks are
// ordered reverse chronologically. However, ad breaks with a 'breakState' of
@@ -74,7 +74,7 @@ service AdBreakService {
option (google.api.method_signature) = "parent";
}
- // API to create an `AdBreak` object.
+ // Creates an `AdBreak` object.
//
// Informs DAI of an upcoming ad break for a live stream event, with an
// optional expected start time. DAI will begin decisioning ads for the break
@@ -113,7 +113,7 @@ service AdBreakService {
option (google.api.method_signature) = "parent,ad_break";
}
- // API to update an `AdBreak` object.
+ // Updates an `AdBreak` object.
//
// Modify an ad break when its state is
// [`SCHEDULED`][google.ads.admanager.v1.AdBreakStateEnum.AdBreakState.SCHEDULED].
@@ -125,7 +125,7 @@ service AdBreakService {
option (google.api.method_signature) = "ad_break,update_mask";
}
- // API to delete an `AdBreak` object.
+ // Deletes an `AdBreak` object.
//
// Deletes and cancels an incomplete ad break, mitigating the need to wait
// for the current break to serve before recreating an ad break. You can
diff --git a/google/ads/admanager/v1/ad_review_center_ad_service.proto b/google/ads/admanager/v1/ad_review_center_ad_service.proto
index 9bb1f3d53d..a71ebb3e00 100644
--- a/google/ads/admanager/v1/ad_review_center_ad_service.proto
+++ b/google/ads/admanager/v1/ad_review_center_ad_service.proto
@@ -41,7 +41,7 @@ service AdReviewCenterAdService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to search for AdReviewCenterAds.
+ // Searches for AdReviewCenterAds.
rpc SearchAdReviewCenterAds(SearchAdReviewCenterAdsRequest)
returns (SearchAdReviewCenterAdsResponse) {
option (google.api.http) = {
@@ -50,7 +50,7 @@ service AdReviewCenterAdService {
option (google.api.method_signature) = "parent";
}
- // API to batch allow AdReviewCenterAds.
+ // Batch allows AdReviewCenterAds.
// This method supports partial success. Some operations may succeed while
// others fail. Callers should check the failedRequests field in the response
// to determine which operations failed.
@@ -67,7 +67,7 @@ service AdReviewCenterAdService {
};
}
- // API to batch block AdReviewCenterAds.
+ // Batch blocks AdReviewCenterAds.
// This method supports partial success. Some operations may succeed while
// others fail. Callers should check the failedRequests field in the response
// to determine which operations failed.
diff --git a/google/ads/admanager/v1/ad_rule_enums.proto b/google/ads/admanager/v1/ad_rule_enums.proto
new file mode 100644
index 0000000000..703ab93651
--- /dev/null
+++ b/google/ads/admanager/v1/ad_rule_enums.proto
@@ -0,0 +1,61 @@
+// 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.admanager.v1;
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "AdRuleEnumsProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+message AdRuleStatusEnum {
+ // Represents the status of ad rules and ad rule slots.
+ enum AdRuleStatus {
+ // Default value. This value is unused.
+ AD_RULE_STATUS_UNSPECIFIED = 0;
+
+ // Created and ready to be served. Is user-visible.
+ ACTIVE = 1;
+
+ // Marked as deleted, not user-visible.
+ DELETED = 2;
+
+ // Inactive, not user-visible.
+ INACTIVE = 5;
+ }
+}
+
+// Wrapper message for
+// [AdRuleFrequencyCapBehavior][google.ads.admanager.v1.AdRuleFrequencyCapBehaviorEnum.AdRuleFrequencyCapBehavior]
+message AdRuleFrequencyCapBehaviorEnum {
+ // Types of behavior for frequency caps within ad rules.
+ enum AdRuleFrequencyCapBehavior {
+ // Default value. This value is unused.
+ AD_RULE_FREQUENCY_CAP_BEHAVIOR_UNSPECIFIED = 0;
+
+ // Defer frequency cap decisions to the next ad rule in priority order.
+ DEFER = 1;
+
+ // Turn off all frequency caps.
+ TURN_OFF = 2;
+
+ // Turn on at least one of the frequency caps.
+ TURN_ON = 3;
+ }
+}
diff --git a/google/ads/admanager/v1/ad_rule_messages.proto b/google/ads/admanager/v1/ad_rule_messages.proto
new file mode 100644
index 0000000000..fdd08c8109
--- /dev/null
+++ b/google/ads/admanager/v1/ad_rule_messages.proto
@@ -0,0 +1,168 @@
+// 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.admanager.v1;
+
+import "google/ads/admanager/v1/ad_rule_enums.proto";
+import "google/ads/admanager/v1/ad_rule_slot_behavior_enum.proto";
+import "google/ads/admanager/v1/ad_rule_slot_bumper_enum.proto";
+import "google/ads/admanager/v1/ad_rule_slot_midroll_frequency_type_enum.proto";
+import "google/ads/admanager/v1/targeting.proto";
+import "google/api/field_behavior.proto";
+import "google/api/resource.proto";
+import "google/protobuf/duration.proto";
+import "google/protobuf/timestamp.proto";
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "AdRuleMessagesProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// An AdRule contains data that the ad server will use to generate a playlist of
+// video ads.
+message AdRule {
+ option (google.api.resource) = {
+ type: "admanager.googleapis.com/AdRule"
+ pattern: "networks/{network_code}/adRules/{ad_rule}"
+ plural: "adRules"
+ singular: "adRule"
+ };
+
+ // Identifier. The resource name of the `AdRule`.
+ // Format: `networks/{network_code}/adRules/{ad_rule_id}`
+ string name = 1 [(google.api.field_behavior) = IDENTIFIER];
+
+ // Required. The unique name of the AdRule. This attribute is required to
+ // create an ad rule and has a maximum length of 255 characters.
+ optional string display_name = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // Optional. The priority of the AdRule. This attribute is required and can
+ // range from 1 to 1000, with 1 being the highest possible priority.
+ //
+ // Changing an ad rule's priority can affect the priorities of other ad rules.
+ // For example,
+ // increasing an ad rule's priority from 5 to 1 will shift the ad rules that
+ // were previously in
+ // priority positions 1 through 4 down one.
+ optional int32 priority = 3 [(google.api.field_behavior) = OPTIONAL];
+
+ // Required. The start time of the AdRule. This attribute is required and must
+ // be a date in the future for new ad rules.
+ optional google.protobuf.Timestamp start_time = 13
+ [(google.api.field_behavior) = REQUIRED];
+
+ // Optional. This end time of the AdRule. This attribute is required
+ // unless
+ // [end_time_unlimited][google.ads.admanager.v1.AdRule.end_time_unlimited] is
+ // set to true. If specified, it must be after the
+ // [start_time][google.ads.admanager.v1.AdRule.start_time].
+ optional google.protobuf.Timestamp end_time = 14
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Specifies whether or not the AdRule has an end time. This
+ // attribute is optional and defaults to false.
+ optional bool end_time_unlimited = 15
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Output only. The AdRuleStatus of the AdRule. This attribute is read-only
+ // and defaults to [AdRuleStatus.INACTIVE][].
+ optional AdRuleStatusEnum.AdRuleStatus status = 4
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Optional. The FrequencyCapBehavior of the AdRule. This attribute is
+ // optional and defaults to [FrequencyCapBehavior.DEFER][].
+ optional AdRuleFrequencyCapBehaviorEnum.AdRuleFrequencyCapBehavior
+ frequency_cap_behavior = 5 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. This AdRule object's frequency cap for the maximum impressions
+ // per stream. This attribute is optional and defaults to 0.
+ optional int32 max_impressions_per_line_item_per_stream = 6
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. This AdRule object's frequency cap for the maximum impressions
+ // per pod. This attribute is optional and defaults to 0.
+ optional int32 max_impressions_per_line_item_per_pod = 7
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Required. This AdRule object's pre-roll slot. This attribute is required.
+ optional AdRuleSlot preroll = 8 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. This AdRule object's video mid-roll slots. This attribute is
+ // required, and there must be at least one mid-roll.
+ repeated AdRuleSlot midrolls = 9 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. This AdRule object's post-roll slot. This attribute is required.
+ optional AdRuleSlot postroll = 10 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The targeting of the `AdRule`.
+ optional Targeting targeting = 11 [(google.api.field_behavior) = REQUIRED];
+}
+
+// Simple object representing an ad slot within an AdRule. Ad rule slots contain
+// information about the types/number of ads to display, as well as additional
+// information on how the ad server will generate playlists.
+message AdRuleSlot {
+ // Optional. The AdRuleSlotBehavior for video ads for this slot. This
+ // attribute is optional and defaults to [AdRuleSlotBehavior.DEFER][].
+ // Indicates whether video ads are allowed for this slot, or if the decision
+ // is deferred to alower-priority ad rule.
+ optional AdRuleSlotBehaviorEnum.AdRuleSlotBehavior slot_behavior = 1
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The maximum duration in milliseconds of video ads within this
+ // slot. This attribute is optional and defaults to 0.
+ optional google.protobuf.Duration max_video_ad_duration = 4
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The frequency type for video ads in this ad rule slot. This
+ // attribute is required for mid-rolls, but if this is not a mid-roll, the
+ // value is set to [AdRuleSlotMidrollFrequencyType.NONE][].
+ optional AdRuleSlotMidrollFrequencyTypeEnum.AdRuleSlotMidrollFrequencyType
+ video_midroll_frequency_type = 5 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The mid-roll frequency of this ad rule slot for video ads. This
+ // attribute is required for mid-rolls, but if MidrollFrequencyType is set to
+ // [AdRuleSlotMidrollFrequencyType.NONE][], this value should be ignored. For
+ // example, if this slot has a frequency type of
+ // [AdRuleSlotMidrollFrequencyType.EVERY_N_SECONDS][] and
+ // # videoMidrollFrequency = "60", this would mean "play a mid-roll every 60
+ //
+ // seconds."
+ optional string video_midroll_frequency = 6
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The AdRuleSlotBumper for this slot. This attribute is optional
+ // and defaults to [AdRuleSlotBumper.NONE][].
+ optional AdRuleSlotBumperEnum.AdRuleSlotBumper bumper = 7
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The maximum duration of bumper ads within this slot. This
+ // attribute is optional and defaults to 0.
+ optional google.protobuf.Duration max_bumper_duration = 8
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The maximum pod duration for this slot. This attribute is
+ // optional and defaults to 0.
+ optional google.protobuf.Duration max_pod_duration = 9
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The maximum number of ads allowed in a pod in this slot. This
+ // attribute is optional and defaults to 0.
+ optional int32 pod_max_ad_count = 10 [(google.api.field_behavior) = OPTIONAL];
+}
diff --git a/google/ads/admanager/v1/ad_rule_service.proto b/google/ads/admanager/v1/ad_rule_service.proto
new file mode 100644
index 0000000000..1a8d2e5408
--- /dev/null
+++ b/google/ads/admanager/v1/ad_rule_service.proto
@@ -0,0 +1,353 @@
+// 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.admanager.v1;
+
+import "google/ads/admanager/v1/ad_rule_messages.proto";
+import "google/api/annotations.proto";
+import "google/api/client.proto";
+import "google/api/field_behavior.proto";
+import "google/api/resource.proto";
+import "google/protobuf/empty.proto";
+import "google/protobuf/field_mask.proto";
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "AdRuleServiceProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Provides methods for handling `AdRule` objects.
+service AdRuleService {
+ option (google.api.default_host) = "admanager.googleapis.com";
+ option (google.api.oauth_scopes) =
+ "https://www.googleapis.com/auth/admanager,"
+ "https://www.googleapis.com/auth/admanager.readonly";
+
+ // Retrieves an `AdRule` object.
+ rpc GetAdRule(GetAdRuleRequest) returns (AdRule) {
+ option (google.api.http) = {
+ get: "/v1/{name=networks/*/adRules/*}"
+ };
+ option (google.api.method_signature) = "name";
+ }
+
+ // Lists `AdRule` objects.
+ rpc ListAdRules(ListAdRulesRequest) returns (ListAdRulesResponse) {
+ option (google.api.http) = {
+ get: "/v1/{parent=networks/*}/adRules"
+ };
+ option (google.api.method_signature) = "parent";
+ }
+
+ // Creates a `AdRule` object.
+ rpc CreateAdRule(CreateAdRuleRequest) returns (AdRule) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/adRules"
+ body: "ad_rule"
+ };
+ option (google.api.method_signature) = "parent,ad_rule";
+ }
+
+ // Batch creates `AdRule` objects.
+ rpc BatchCreateAdRules(BatchCreateAdRulesRequest)
+ returns (BatchCreateAdRulesResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/adRules:batchCreate"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,requests";
+ }
+
+ // Updates a `AdRule` object.
+ rpc UpdateAdRule(UpdateAdRuleRequest) returns (AdRule) {
+ option (google.api.http) = {
+ patch: "/v1/{ad_rule.name=networks/*/adRules/*}"
+ body: "ad_rule"
+ };
+ option (google.api.method_signature) = "ad_rule,update_mask";
+ }
+
+ // Batch updates `AdRule` objects.
+ rpc BatchUpdateAdRules(BatchUpdateAdRulesRequest)
+ returns (BatchUpdateAdRulesResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/adRules:batchUpdate"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,requests";
+ }
+
+ // Activates a list of `AdRule` objects.
+ rpc BatchActivateAdRules(BatchActivateAdRulesRequest)
+ returns (BatchActivateAdRulesResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/adRules:batchActivate"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,names";
+ }
+
+ // Deactivates a list of `AdRule` objects.
+ rpc BatchDeactivateAdRules(BatchDeactivateAdRulesRequest)
+ returns (BatchDeactivateAdRulesResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/adRules:batchDeactivate"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,names";
+ }
+
+ // Deletes a list of `AdRule` objects.
+ rpc BatchDeleteAdRules(BatchDeleteAdRulesRequest)
+ returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/adRules:batchDelete"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,names";
+ }
+}
+
+// Request object for `GetAdRule` method.
+message GetAdRuleRequest {
+ // Required. The resource name of the AdRule.
+ // Format: `networks/{network_code}/adRules/{ad_rule_id}`
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/AdRule"
+ }
+ ];
+}
+
+// Request object for `ListAdRules` method.
+message ListAdRulesRequest {
+ // Required. The parent, which owns this collection of AdRules.
+ // Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Optional. The maximum number of `AdRules` to return. The service may return
+ // fewer than this value. If unspecified, at most 50 `AdRules` will be
+ // returned. The maximum value is 1000; values greater than 1000 will be
+ // coerced to 1000.
+ int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. A page token, received from a previous `ListAdRules` call.
+ // Provide this to retrieve the subsequent page.
+ //
+ // When paginating, all other parameters provided to `ListAdRules` must match
+ // the call that provided the page token.
+ string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Expression to filter the response.
+ // See syntax details at
+ // https://developers.google.com/ad-manager/api/beta/filters
+ //
+ // Filterable fields:
+ //
+ // displayName
+ // name
+ // priority
+ // status
+ //
+ string filter = 4 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Expression to specify sorting order.
+ // See syntax details at
+ // https://developers.google.com/ad-manager/api/beta/filters#order
+ string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Number of individual resources to skip while paginating.
+ int32 skip = 6 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Response object for `ListAdRulesRequest` containing matching `AdRule`
+// objects.
+message ListAdRulesResponse {
+ // The `AdRule` objects from the specified network.
+ repeated AdRule ad_rules = 1;
+
+ // A token, which can be sent as `page_token` to retrieve the next page.
+ // If this field is omitted, there are no subsequent pages.
+ string next_page_token = 2;
+
+ // Total number of `AdRule` objects.
+ // If a filter was included in the request, this reflects the total number
+ // after the filtering is applied.
+ //
+ // `total_size` won't be calculated in the response unless it has been
+ // included in a response field mask. The response field mask can be provided
+ // to the method by using the URL parameter `$fields` or `fields`, or by using
+ // the HTTP/gRPC header `X-Goog-FieldMask`.
+ //
+ // For more information, see
+ // https://developers.google.com/ad-manager/api/beta/field-masks
+ int32 total_size = 3;
+}
+
+// Request object for `CreateAdRule` method.
+message CreateAdRuleRequest {
+ // Required. The parent resource where this `AdRule` will be created.
+ // Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The `AdRule` to create.
+ AdRule ad_rule = 2 [(google.api.field_behavior) = REQUIRED];
+}
+
+// Request object for `BatchCreateAdRules` method.
+message BatchCreateAdRulesRequest {
+ // Required. The parent resource where `AdRules` will be created.
+ // Format: `networks/{network_code}`
+ // The parent field in the CreateAdRuleRequest must match this
+ // field.
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The `AdRule` objects to create.
+ // A maximum of 100 objects can be created in a batch.
+ repeated CreateAdRuleRequest requests = 2
+ [(google.api.field_behavior) = REQUIRED];
+}
+
+// Response object for `BatchCreateAdRules` method.
+message BatchCreateAdRulesResponse {
+ // The `AdRule` objects created.
+ repeated AdRule ad_rules = 1;
+}
+
+// Request object for `UpdateAdRule` method.
+message UpdateAdRuleRequest {
+ // Required. The `AdRule` to update.
+ //
+ // The `AdRule`'s `name` is used to identify the `AdRule` to update.
+ AdRule ad_rule = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // Optional. The list of fields to update.
+ google.protobuf.FieldMask update_mask = 2
+ [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Request object for `BatchUpdateAdRules` method.
+message BatchUpdateAdRulesRequest {
+ // Required. The parent resource where `AdRules` will be updated.
+ // Format: `networks/{network_code}`
+ // The parent field in the UpdateAdRuleRequest must match this
+ // field.
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The `AdRule` objects to update.
+ // A maximum of 100 objects can be updated in a batch.
+ repeated UpdateAdRuleRequest requests = 2
+ [(google.api.field_behavior) = REQUIRED];
+}
+
+// Response object for `BatchUpdateAdRules` method.
+message BatchUpdateAdRulesResponse {
+ // The `AdRule` objects updated.
+ repeated AdRule ad_rules = 1;
+}
+
+// Request object for `BatchActivateAdRules` method.
+message BatchActivateAdRulesRequest {
+ // Required. Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. Resource names for the AdRule.
+ // Format:
+ // `networks/{network_code}/adRules/{ad_rule}`
+ repeated string names = 2 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/AdRule"
+ }
+ ];
+}
+
+// Response object for `BatchActivateAdRules` method.
+message BatchActivateAdRulesResponse {}
+
+// Request object for `BatchDeactivateAdRules` method.
+message BatchDeactivateAdRulesRequest {
+ // Required. Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. Resource names for the AdRule.
+ // Format:
+ // `networks/{network_code}/adRules/{ad_rule}`
+ repeated string names = 2 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/AdRule"
+ }
+ ];
+}
+
+// Response object for `BatchDeactivateAdRules` method.
+message BatchDeactivateAdRulesResponse {}
+
+// Request object for `BatchDeleteAdRules` method.
+message BatchDeleteAdRulesRequest {
+ // Required. Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. Resource names for the AdRule.
+ // Format:
+ // `networks/{network_code}/adRules/{ad_rule}`
+ repeated string names = 2 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/AdRule"
+ }
+ ];
+}
diff --git a/google/ads/admanager/v1/ad_rule_slot_behavior_enum.proto b/google/ads/admanager/v1/ad_rule_slot_behavior_enum.proto
new file mode 100644
index 0000000000..f9b65ac697
--- /dev/null
+++ b/google/ads/admanager/v1/ad_rule_slot_behavior_enum.proto
@@ -0,0 +1,45 @@
+// 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.admanager.v1;
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "AdRuleSlotBehaviorEnumProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Wrapper message for
+// [AdRuleSlotBehavior][google.ads.admanager.v1.AdRuleSlotBehaviorEnum.AdRuleSlotBehavior]
+message AdRuleSlotBehaviorEnum {
+ // The types of behaviors for ads within a BaseAdRuleSlot ad rule slot.
+ enum AdRuleSlotBehavior {
+ // Default value. This value is unused.
+ AD_RULE_SLOT_BEHAVIOR_UNSPECIFIED = 0;
+
+ // This ad rule always includes this slot's ads.
+ ALWAYS_SHOW = 1;
+
+ // Defer to lower priority rules. This ad rule doesn't specify guidelines
+ // for this slot's ads.
+ DEFER = 2;
+
+ // This ad rule never includes this slot's ads.
+ NEVER_SHOW = 3;
+ }
+}
diff --git a/google/ads/admanager/v1/ad_rule_slot_bumper_enum.proto b/google/ads/admanager/v1/ad_rule_slot_bumper_enum.proto
new file mode 100644
index 0000000000..9178c86991
--- /dev/null
+++ b/google/ads/admanager/v1/ad_rule_slot_bumper_enum.proto
@@ -0,0 +1,47 @@
+// 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.admanager.v1;
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "AdRuleSlotBumperEnumProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Wrapper message for
+// [AdRuleSlotBumper][google.ads.admanager.v1.AdRuleSlotBumperEnum.AdRuleSlotBumper]
+message AdRuleSlotBumperEnum {
+ // Types of bumper ads on an ad rule slot.
+ enum AdRuleSlotBumper {
+ // Default value. This value is unused.
+ AD_RULE_SLOT_BUMPER_UNSPECIFIED = 0;
+
+ // Show a bumper ad after the slot's other ads.
+ AFTER = 1;
+
+ // Show a bumper ad before the slot's other ads.
+ BEFORE = 2;
+
+ // Show a bumper before and after the slot's other ads.
+ BEFORE_AND_AFTER = 3;
+
+ // Do not show a bumper ad.
+ NONE = 4;
+ }
+}
diff --git a/google/ads/admanager/v1/ad_rule_slot_midroll_frequency_type_enum.proto b/google/ads/admanager/v1/ad_rule_slot_midroll_frequency_type_enum.proto
new file mode 100644
index 0000000000..87042e4ea7
--- /dev/null
+++ b/google/ads/admanager/v1/ad_rule_slot_midroll_frequency_type_enum.proto
@@ -0,0 +1,62 @@
+// 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.admanager.v1;
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "AdRuleSlotMidrollFrequencyTypeEnumProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Wrapper message for
+// [AdRuleSlotMidrollFrequencyType][google.ads.admanager.v1.AdRuleSlotMidrollFrequencyTypeEnum.AdRuleSlotMidrollFrequencyType]
+message AdRuleSlotMidrollFrequencyTypeEnum {
+ // Frequency types for mid-roll BaseAdRuleSlot ad rule slots.
+ enum AdRuleSlotMidrollFrequencyType {
+ // Default value. This value is unused.
+ AD_RULE_SLOT_MIDROLL_FREQUENCY_TYPE_UNSPECIFIED = 0;
+
+ // MidrollFrequency is a cue point interval and is a single integer value,
+ // such as "5", which means "play a mid-roll every 5th cue point".
+ EVERY_N_CUEPOINTS = 1;
+
+ // MidrollFrequency is a time interval and mentioned as a single numeric
+ // value in seconds. For example, "100" would mean "play a mid-roll every
+ // 100 seconds".
+ EVERY_N_SECONDS = 2;
+
+ // Same as `FIXED_TIME`, except the values represent the ordinal cue
+ // points ("1,3,5", for example).
+ FIXED_CUE_POINTS = 3;
+
+ // MidrollFrequency is a comma-delimited list of points in time
+ // (in seconds) when an ad should play. For example, "100,300" would mean
+ // "play an ad at 100 seconds and 300 seconds".
+ FIXED_TIME = 4;
+
+ // The ad rule slot is not a mid-roll and MidrollFrequency
+ // should be ignored.
+ NONE = 5;
+
+ // After all other frequency type is applied and the number of midrolls are
+ // settled, this slot setting will override the mid-roll defined by
+ // ReverseMidrollIndex.
+ REVERSE_MIDROLL_INDEX = 6;
+ }
+}
diff --git a/google/ads/admanager/v1/ad_spot_messages.proto b/google/ads/admanager/v1/ad_spot_messages.proto
new file mode 100644
index 0000000000..5a9df52046
--- /dev/null
+++ b/google/ads/admanager/v1/ad_spot_messages.proto
@@ -0,0 +1,112 @@
+// 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.admanager.v1;
+
+import "google/ads/admanager/v1/ad_spot_targeting_type_enum.proto";
+import "google/ads/admanager/v1/line_item_enums.proto";
+import "google/api/field_behavior.proto";
+import "google/api/resource.proto";
+import "google/protobuf/duration.proto";
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "AdSpotMessagesProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// An AdSpot is a targetable entity used in the creation of AdRule objects. A ad
+// spot contains a variable number of ads and has constraints (ad duration,
+// reservation type, etc) on the ads that can appear in it.
+message AdSpot {
+ option (google.api.resource) = {
+ type: "admanager.googleapis.com/AdSpot"
+ pattern: "networks/{network_code}/adSpots/{ad_spot}"
+ plural: "adSpots"
+ singular: "adSpot"
+ };
+
+ // Identifier. The resource name of the `AdSpot`.
+ // Format: `networks/{network_code}/adSpots/{ad_spot_id}`
+ string name = 1 [(google.api.field_behavior) = IDENTIFIER];
+
+ // Optional. Name of the AdSpot. The name is case insensitive and can be
+ // referenced in ad tags. This value is required if `customSpot` is true, and
+ // cannot be set otherwise. You can use alphanumeric characters and symbols
+ // other than the following: ", ', =, !, +, #, , ~, ;, ^, (, ), <, >, [, ],
+ // the white space character.
+ optional string canonical_display_name = 2
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Descriptive name for the `AdSpot`.This value is optional if
+ // `customSpot` is true, and cannot be set otherwise.
+ optional string display_name = 3 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Whether this ad spot is a custom spot. This field is optional and
+ // defaults to false. Custom spots can be reused and targeted in the targeting
+ // picker.
+ optional bool custom_spot = 4 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Whether this ad spot is a flexible spot. This field is optional
+ // and defaults to false. Flexible spots are allowed to have no max number of
+ // ads.
+ optional bool flexible = 5 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The maximum total duration for this AdSpot. This field is
+ // optional, defaults to 0, and supports precision to the nearest second.
+ optional google.protobuf.Duration max_duration = 6
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The minimum allowed duration for ads in the AdSpot. This field is
+ // optional and defaults to 0.
+ optional google.protobuf.Duration min_ad_duration = 12
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Required. The maximum allowed duration for ads in the `AdSpot`. This field
+ // is required and must be greater than
+ // [min_ad_duration][google.ads.admanager.v1.AdSpot.min_ad_duration].
+ optional google.protobuf.Duration max_ad_duration = 13
+ [(google.api.field_behavior) = REQUIRED];
+
+ // Optional. The maximum number of ads allowed in the AdSpot. This field is
+ // optional and defaults to 0. A value of 0 means that there is no maximum for
+ // the number of ads in the ad spot. No max ads is only supported for ad spots
+ // that have flexible set to true.
+ optional int32 max_ads = 7 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The AdSpot TargetingType determines how this ad spot can be
+ // targeted. This field is required.
+ optional AdSpotTargetingTypeEnum.AdSpotTargetingType targeting_type = 8
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Whether backfill is blocked in this ad spot. This field is
+ // optional and defaults to false.
+ optional bool backfill_blocked = 9 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The set of line item types that may appear in the ad spot. This
+ // field is optional and defaults to an empty set, which means that all types
+ // are allowed. Note, backfill reservation types are controlled by the
+ // `backfillBlocked` field.
+ repeated LineItemTypeEnum.LineItemType allowed_line_item_types = 10
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Whether inventory sharing is blocked in this ad spot. This field
+ // is optional and defaults to false.
+ optional bool inventory_sharing_blocked = 11
+ [(google.api.field_behavior) = OPTIONAL];
+}
diff --git a/google/ads/admanager/v1/ad_spot_service.proto b/google/ads/admanager/v1/ad_spot_service.proto
new file mode 100644
index 0000000000..3ff7f30fe2
--- /dev/null
+++ b/google/ads/admanager/v1/ad_spot_service.proto
@@ -0,0 +1,254 @@
+// 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.admanager.v1;
+
+import "google/ads/admanager/v1/ad_spot_messages.proto";
+import "google/api/annotations.proto";
+import "google/api/client.proto";
+import "google/api/field_behavior.proto";
+import "google/api/resource.proto";
+import "google/protobuf/field_mask.proto";
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "AdSpotServiceProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Provides methods for handling `AdSpot` objects.
+service AdSpotService {
+ option (google.api.default_host) = "admanager.googleapis.com";
+ option (google.api.oauth_scopes) =
+ "https://www.googleapis.com/auth/admanager,"
+ "https://www.googleapis.com/auth/admanager.readonly";
+
+ // Retrieves an `AdSpot` object.
+ rpc GetAdSpot(GetAdSpotRequest) returns (AdSpot) {
+ option (google.api.http) = {
+ get: "/v1/{name=networks/*/adSpots/*}"
+ };
+ option (google.api.method_signature) = "name";
+ }
+
+ // Lists `AdSpot` objects.
+ rpc ListAdSpots(ListAdSpotsRequest) returns (ListAdSpotsResponse) {
+ option (google.api.http) = {
+ get: "/v1/{parent=networks/*}/adSpots"
+ };
+ option (google.api.method_signature) = "parent";
+ }
+
+ // Creates an `AdSpot` object.
+ rpc CreateAdSpot(CreateAdSpotRequest) returns (AdSpot) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/adSpots"
+ body: "ad_spot"
+ };
+ option (google.api.method_signature) = "parent,ad_spot";
+ }
+
+ // Batch creates `AdSpot` objects.
+ rpc BatchCreateAdSpots(BatchCreateAdSpotsRequest)
+ returns (BatchCreateAdSpotsResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/adSpots:batchCreate"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,requests";
+ }
+
+ // Updates an `AdSpot` object.
+ rpc UpdateAdSpot(UpdateAdSpotRequest) returns (AdSpot) {
+ option (google.api.http) = {
+ patch: "/v1/{ad_spot.name=networks/*/adSpots/*}"
+ body: "ad_spot"
+ };
+ option (google.api.method_signature) = "ad_spot,update_mask";
+ }
+
+ // Batch updates `AdSpot` objects.
+ rpc BatchUpdateAdSpots(BatchUpdateAdSpotsRequest)
+ returns (BatchUpdateAdSpotsResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/adSpots:batchUpdate"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,requests";
+ }
+}
+
+// Request object for `GetAdSpot` method.
+message GetAdSpotRequest {
+ // Required. The resource name of the AdSpot.
+ // Format: `networks/{network_code}/adSpots/{ad_spot_id}`
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/AdSpot"
+ }
+ ];
+}
+
+// Request object for `ListAdSpots` method.
+message ListAdSpotsRequest {
+ // Required. The parent, which owns this collection of AdSpots.
+ // Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Optional. The maximum number of `AdSpots` to return. The service may return
+ // fewer than this value. If unspecified, at most 50 `AdSpots` will be
+ // returned. The maximum value is 1000; values greater than 1000 will be
+ // coerced to 1000.
+ int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. A page token, received from a previous `ListAdSpots` call.
+ // Provide this to retrieve the subsequent page.
+ //
+ // When paginating, all other parameters provided to `ListAdSpots` must match
+ // the call that provided the page token.
+ string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Expression to filter the response.
+ // See syntax details at
+ // https://developers.google.com/ad-manager/api/beta/filters
+ //
+ // Filterable fields:
+ //
+ // canonicalDisplayName
+ // customSpot
+ // displayName
+ // flexible
+ // name
+ //
+ string filter = 4 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Expression to specify sorting order.
+ // See syntax details at
+ // https://developers.google.com/ad-manager/api/beta/filters#order
+ string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Number of individual resources to skip while paginating.
+ int32 skip = 6 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Response object for `ListAdSpotsRequest` containing matching `AdSpot`
+// objects.
+message ListAdSpotsResponse {
+ // The `AdSpot` objects from the specified network.
+ repeated AdSpot ad_spots = 1;
+
+ // A token, which can be sent as `page_token` to retrieve the next page.
+ // If this field is omitted, there are no subsequent pages.
+ string next_page_token = 2;
+
+ // Total number of `AdSpot` objects.
+ // If a filter was included in the request, this reflects the total number
+ // after the filtering is applied.
+ //
+ // `total_size` won't be calculated in the response unless it has been
+ // included in a response field mask. The response field mask can be provided
+ // to the method by using the URL parameter `$fields` or `fields`, or by using
+ // the HTTP/gRPC header `X-Goog-FieldMask`.
+ //
+ // For more information, see
+ // https://developers.google.com/ad-manager/api/beta/field-masks
+ int32 total_size = 3;
+}
+
+// Request object for `CreateAdSpot` method.
+message CreateAdSpotRequest {
+ // Required. The parent resource where this `AdSpot` will be created.
+ // Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The `AdSpot` to create.
+ AdSpot ad_spot = 2 [(google.api.field_behavior) = REQUIRED];
+}
+
+// Request object for `BatchCreateAdSpots` method.
+message BatchCreateAdSpotsRequest {
+ // Required. The parent resource where `AdSpots` will be created.
+ // Format: `networks/{network_code}`
+ // The parent field in the CreateAdSpotRequest must match this
+ // field.
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The `AdSpot` objects to create.
+ // A maximum of 100 objects can be created in a batch.
+ repeated CreateAdSpotRequest requests = 2
+ [(google.api.field_behavior) = REQUIRED];
+}
+
+// Response object for `BatchCreateAdSpots` method.
+message BatchCreateAdSpotsResponse {
+ // The `AdSpot` objects created.
+ repeated AdSpot ad_spots = 1;
+}
+
+// Request object for `UpdateAdSpot` method.
+message UpdateAdSpotRequest {
+ // Required. The `AdSpot` to update.
+ //
+ // The `AdSpot`'s `name` is used to identify the `AdSpot` to update.
+ AdSpot ad_spot = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // Optional. The list of fields to update.
+ google.protobuf.FieldMask update_mask = 2
+ [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Request object for `BatchUpdateAdSpots` method.
+message BatchUpdateAdSpotsRequest {
+ // Required. The parent resource where `AdSpots` will be updated.
+ // Format: `networks/{network_code}`
+ // The parent field in the UpdateAdSpotRequest must match this
+ // field.
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The `AdSpot` objects to update.
+ // A maximum of 100 objects can be updated in a batch.
+ repeated UpdateAdSpotRequest requests = 2
+ [(google.api.field_behavior) = REQUIRED];
+}
+
+// Response object for `BatchUpdateAdSpots` method.
+message BatchUpdateAdSpotsResponse {
+ // The `AdSpot` objects updated.
+ repeated AdSpot ad_spots = 1;
+}
diff --git a/google/ads/admanager/v1/ad_spot_targeting_type_enum.proto b/google/ads/admanager/v1/ad_spot_targeting_type_enum.proto
new file mode 100644
index 0000000000..e6285e3217
--- /dev/null
+++ b/google/ads/admanager/v1/ad_spot_targeting_type_enum.proto
@@ -0,0 +1,47 @@
+// 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.admanager.v1;
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "AdSpotTargetingTypeEnumProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Wrapper message for
+// [AdSpotTargetingType][google.ads.admanager.v1.AdSpotTargetingTypeEnum.AdSpotTargetingType]
+message AdSpotTargetingTypeEnum {
+ // Defines the targeting behavior of an ad spot.
+ enum AdSpotTargetingType {
+ // Default value. This value is unused.
+ AD_SPOT_TARGETING_TYPE_UNSPECIFIED = 0;
+
+ // Only line items targeting this ad spots explicitly may serve in it
+ EXPLICITLY_TARGETED = 1;
+
+ // If house ads are an allowed reservation type, they may serve in the ad
+ // spot regardless of whether they explicitly target it. Ads of other
+ // reservation types (whose type is allowed in the ad spot), may serve in
+ // the ad spot only if explicitly targeted.
+ EXPLICITLY_TARGETED_EXCEPT_HOUSE = 2;
+
+ // Line items not targeting this ad spot explicitly may serve in it.
+ NOT_REQUIRED = 3;
+ }
+}
diff --git a/google/ads/admanager/v1/ad_unit_service.proto b/google/ads/admanager/v1/ad_unit_service.proto
index 8ada6a24e4..689ded163b 100644
--- a/google/ads/admanager/v1/ad_unit_service.proto
+++ b/google/ads/admanager/v1/ad_unit_service.proto
@@ -38,7 +38,7 @@ service AdUnitService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve an AdUnit object.
+ // Retrieves an `AdUnit` object.
rpc GetAdUnit(GetAdUnitRequest) returns (AdUnit) {
option (google.api.http) = {
get: "/v1/{name=networks/*/adUnits/*}"
@@ -46,7 +46,7 @@ service AdUnitService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of AdUnit objects.
+ // Lists `AdUnit` objects.
rpc ListAdUnits(ListAdUnitsRequest) returns (ListAdUnitsResponse) {
option (google.api.http) = {
get: "/v1/{parent=networks/*}/adUnits"
@@ -54,7 +54,7 @@ service AdUnitService {
option (google.api.method_signature) = "parent";
}
- // API to retrieve a list of AdUnitSize objects.
+ // Lists `AdUnitSize` objects.
rpc ListAdUnitSizes(ListAdUnitSizesRequest)
returns (ListAdUnitSizesResponse) {
option (google.api.http) = {
@@ -63,7 +63,7 @@ service AdUnitService {
option (google.api.method_signature) = "parent";
}
- // API to create an `AdUnit` object.
+ // Creates an `AdUnit` object.
rpc CreateAdUnit(CreateAdUnitRequest) returns (AdUnit) {
option (google.api.http) = {
post: "/v1/{parent=networks/*}/adUnits"
@@ -72,7 +72,7 @@ service AdUnitService {
option (google.api.method_signature) = "parent,ad_unit";
}
- // API to update an `AdUnit` object.
+ // Updates an `AdUnit` object.
rpc UpdateAdUnit(UpdateAdUnitRequest) returns (AdUnit) {
option (google.api.http) = {
patch: "/v1/{ad_unit.name=networks/*/adUnits/*}"
@@ -81,7 +81,7 @@ service AdUnitService {
option (google.api.method_signature) = "ad_unit,update_mask";
}
- // API to batch create `AdUnit` objects.
+ // Creates `AdUnit` objects.
rpc BatchCreateAdUnits(BatchCreateAdUnitsRequest)
returns (BatchCreateAdUnitsResponse) {
option (google.api.http) = {
@@ -91,7 +91,7 @@ service AdUnitService {
option (google.api.method_signature) = "parent,requests";
}
- // API to batch update `AdUnit` objects.
+ // Batch updates `AdUnit` objects.
rpc BatchUpdateAdUnits(BatchUpdateAdUnitsRequest)
returns (BatchUpdateAdUnitsResponse) {
option (google.api.http) = {
@@ -101,7 +101,7 @@ service AdUnitService {
option (google.api.method_signature) = "parent,requests";
}
- // API to batch activate `AdUnit` objects.
+ // Batch activates `AdUnit` objects.
rpc BatchActivateAdUnits(BatchActivateAdUnitsRequest)
returns (BatchActivateAdUnitsResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/admanager_v1.yaml b/google/ads/admanager/v1/admanager_v1.yaml
index faf0b8b7ad..2bb39037b9 100644
--- a/google/ads/admanager/v1/admanager_v1.yaml
+++ b/google/ads/admanager/v1/admanager_v1.yaml
@@ -6,12 +6,15 @@ title: Google Ad Manager API
apis:
- name: google.ads.admanager.v1.AdBreakService
- name: google.ads.admanager.v1.AdReviewCenterAdService
+- name: google.ads.admanager.v1.AdRuleService
+- name: google.ads.admanager.v1.AdSpotService
- name: google.ads.admanager.v1.AdUnitService
- name: google.ads.admanager.v1.ApplicationService
- name: google.ads.admanager.v1.AudienceSegmentService
- name: google.ads.admanager.v1.BandwidthGroupService
- name: google.ads.admanager.v1.BrowserLanguageService
- name: google.ads.admanager.v1.BrowserService
+- name: google.ads.admanager.v1.CdnConfigService
- name: google.ads.admanager.v1.CmsMetadataKeyService
- name: google.ads.admanager.v1.CmsMetadataValueService
- name: google.ads.admanager.v1.CompanyService
@@ -31,6 +34,7 @@ apis:
- name: google.ads.admanager.v1.LabelService
- name: google.ads.admanager.v1.LineItemService
- name: google.ads.admanager.v1.LinkedDeviceService
+- name: google.ads.admanager.v1.LiveStreamService
- name: google.ads.admanager.v1.McmEarningsService
- name: google.ads.admanager.v1.MobileCarrierService
- name: google.ads.admanager.v1.MobileDeviceService
@@ -47,8 +51,11 @@ apis:
- name: google.ads.admanager.v1.RichMediaAdsCompanyService
- name: google.ads.admanager.v1.RoleService
- name: google.ads.admanager.v1.SiteService
+- name: google.ads.admanager.v1.SuggestedAdUnitService
+- name: google.ads.admanager.v1.TargetingPresetService
- name: google.ads.admanager.v1.TaxonomyCategoryService
- name: google.ads.admanager.v1.TeamService
+- name: google.ads.admanager.v1.ThirdPartyCompanyService
- name: google.ads.admanager.v1.UserService
- name: google.longrunning.Operations
@@ -105,6 +112,34 @@ authentication:
canonical_scopes: |-
https://www.googleapis.com/auth/admanager,
https://www.googleapis.com/auth/admanager.readonly
+ - selector: 'google.ads.admanager.v1.AdRuleService.*'
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/admanager
+ - selector: google.ads.admanager.v1.AdRuleService.GetAdRule
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/admanager,
+ https://www.googleapis.com/auth/admanager.readonly
+ - selector: google.ads.admanager.v1.AdRuleService.ListAdRules
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/admanager,
+ https://www.googleapis.com/auth/admanager.readonly
+ - selector: 'google.ads.admanager.v1.AdSpotService.*'
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/admanager
+ - selector: google.ads.admanager.v1.AdSpotService.GetAdSpot
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/admanager,
+ https://www.googleapis.com/auth/admanager.readonly
+ - selector: google.ads.admanager.v1.AdSpotService.ListAdSpots
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/admanager,
+ https://www.googleapis.com/auth/admanager.readonly
- selector: 'google.ads.admanager.v1.AdUnitService.*'
oauth:
canonical_scopes: |-
@@ -173,6 +208,20 @@ authentication:
canonical_scopes: |-
https://www.googleapis.com/auth/admanager,
https://www.googleapis.com/auth/admanager.readonly
+ - selector: 'google.ads.admanager.v1.CdnConfigService.*'
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/admanager
+ - selector: google.ads.admanager.v1.CdnConfigService.GetCdnConfig
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/admanager,
+ https://www.googleapis.com/auth/admanager.readonly
+ - selector: google.ads.admanager.v1.CdnConfigService.ListCdnConfigs
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/admanager,
+ https://www.googleapis.com/auth/admanager.readonly
- selector: google.ads.admanager.v1.CmsMetadataKeyService.BatchActivateCmsMetadataKeys
oauth:
canonical_scopes: |-
@@ -301,6 +350,10 @@ authentication:
canonical_scopes: |-
https://www.googleapis.com/auth/admanager,
https://www.googleapis.com/auth/admanager.readonly
+ - selector: 'google.ads.admanager.v1.CustomTargetingValueService.*'
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/admanager
- selector: google.ads.admanager.v1.CustomTargetingValueService.GetCustomTargetingValue
oauth:
canonical_scopes: |-
@@ -399,6 +452,20 @@ authentication:
canonical_scopes: |-
https://www.googleapis.com/auth/admanager,
https://www.googleapis.com/auth/admanager.readonly
+ - selector: 'google.ads.admanager.v1.LiveStreamService.*'
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/admanager
+ - selector: google.ads.admanager.v1.LiveStreamService.GetLiveStream
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/admanager,
+ https://www.googleapis.com/auth/admanager.readonly
+ - selector: google.ads.admanager.v1.LiveStreamService.ListLiveStreams
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/admanager,
+ https://www.googleapis.com/auth/admanager.readonly
- selector: google.ads.admanager.v1.McmEarningsService.FetchMcmEarnings
oauth:
canonical_scopes: |-
@@ -581,6 +648,34 @@ authentication:
canonical_scopes: |-
https://www.googleapis.com/auth/admanager,
https://www.googleapis.com/auth/admanager.readonly
+ - selector: google.ads.admanager.v1.SuggestedAdUnitService.BatchApproveSuggestedAdUnits
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/admanager
+ - selector: google.ads.admanager.v1.SuggestedAdUnitService.GetSuggestedAdUnit
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/admanager,
+ https://www.googleapis.com/auth/admanager.readonly
+ - selector: google.ads.admanager.v1.SuggestedAdUnitService.ListSuggestedAdUnits
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/admanager,
+ https://www.googleapis.com/auth/admanager.readonly
+ - selector: 'google.ads.admanager.v1.TargetingPresetService.*'
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/admanager
+ - selector: google.ads.admanager.v1.TargetingPresetService.GetTargetingPreset
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/admanager,
+ https://www.googleapis.com/auth/admanager.readonly
+ - selector: google.ads.admanager.v1.TargetingPresetService.ListTargetingPresets
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/admanager,
+ https://www.googleapis.com/auth/admanager.readonly
- selector: google.ads.admanager.v1.TaxonomyCategoryService.GetTaxonomyCategory
oauth:
canonical_scopes: |-
@@ -605,6 +700,16 @@ authentication:
canonical_scopes: |-
https://www.googleapis.com/auth/admanager,
https://www.googleapis.com/auth/admanager.readonly
+ - selector: google.ads.admanager.v1.ThirdPartyCompanyService.GetThirdPartyCompany
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/admanager,
+ https://www.googleapis.com/auth/admanager.readonly
+ - selector: google.ads.admanager.v1.ThirdPartyCompanyService.ListThirdPartyCompanies
+ oauth:
+ canonical_scopes: |-
+ https://www.googleapis.com/auth/admanager,
+ https://www.googleapis.com/auth/admanager.readonly
- selector: google.ads.admanager.v1.UserService.GetUser
oauth:
canonical_scopes: |-
diff --git a/google/ads/admanager/v1/application_service.proto b/google/ads/admanager/v1/application_service.proto
index b14ea6ebe9..5a42fc8ed7 100644
--- a/google/ads/admanager/v1/application_service.proto
+++ b/google/ads/admanager/v1/application_service.proto
@@ -38,7 +38,7 @@ service ApplicationService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `Application` object.
+ // Retrieves a `Application` object.
rpc GetApplication(GetApplicationRequest) returns (Application) {
option (google.api.http) = {
get: "/v1/{name=networks/*/applications/*}"
@@ -46,7 +46,7 @@ service ApplicationService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `Application` objects.
+ // Lists `Application` objects.
rpc ListApplications(ListApplicationsRequest)
returns (ListApplicationsResponse) {
option (google.api.http) = {
@@ -55,7 +55,7 @@ service ApplicationService {
option (google.api.method_signature) = "parent";
}
- // API to create a `Application` object.
+ // Creates a `Application` object.
rpc CreateApplication(CreateApplicationRequest) returns (Application) {
option (google.api.http) = {
post: "/v1/{parent=networks/*}/applications"
@@ -64,7 +64,7 @@ service ApplicationService {
option (google.api.method_signature) = "parent,application";
}
- // API to batch create `Application` objects.
+ // Creates `Application` objects.
rpc BatchCreateApplications(BatchCreateApplicationsRequest)
returns (BatchCreateApplicationsResponse) {
option (google.api.http) = {
@@ -74,7 +74,7 @@ service ApplicationService {
option (google.api.method_signature) = "parent,requests";
}
- // API to update a `Application` object.
+ // Updates a `Application` object.
rpc UpdateApplication(UpdateApplicationRequest) returns (Application) {
option (google.api.http) = {
patch: "/v1/{application.name=networks/*/applications/*}"
@@ -83,7 +83,7 @@ service ApplicationService {
option (google.api.method_signature) = "application,update_mask";
}
- // API to batch update `Application` objects.
+ // Batch updates `Application` objects.
rpc BatchUpdateApplications(BatchUpdateApplicationsRequest)
returns (BatchUpdateApplicationsResponse) {
option (google.api.http) = {
@@ -93,7 +93,7 @@ service ApplicationService {
option (google.api.method_signature) = "parent,requests";
}
- // / API to batch archive `Application` objects.
+ // Batch archives `Application` objects.
rpc BatchArchiveApplications(BatchArchiveApplicationsRequest)
returns (BatchArchiveApplicationsResponse) {
option (google.api.http) = {
@@ -103,7 +103,7 @@ service ApplicationService {
option (google.api.method_signature) = "parent,names";
}
- // / API to batch unarchive `Application` objects.
+ // Batch unarchives `Application` objects.
rpc BatchUnarchiveApplications(BatchUnarchiveApplicationsRequest)
returns (BatchUnarchiveApplicationsResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/bandwidth_group_service.proto b/google/ads/admanager/v1/bandwidth_group_service.proto
index b093e1fd01..276903704e 100644
--- a/google/ads/admanager/v1/bandwidth_group_service.proto
+++ b/google/ads/admanager/v1/bandwidth_group_service.proto
@@ -37,7 +37,7 @@ service BandwidthGroupService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `BandwidthGroup` object.
+ // Retrieves a `BandwidthGroup` object.
rpc GetBandwidthGroup(GetBandwidthGroupRequest) returns (BandwidthGroup) {
option (google.api.http) = {
get: "/v1/{name=networks/*/bandwidthGroups/*}"
@@ -45,7 +45,7 @@ service BandwidthGroupService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `BandwidthGroup` objects.
+ // Lists `BandwidthGroup` objects.
rpc ListBandwidthGroups(ListBandwidthGroupsRequest)
returns (ListBandwidthGroupsResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/browser_language_service.proto b/google/ads/admanager/v1/browser_language_service.proto
index 332e0f8352..395b9d54aa 100644
--- a/google/ads/admanager/v1/browser_language_service.proto
+++ b/google/ads/admanager/v1/browser_language_service.proto
@@ -37,7 +37,7 @@ service BrowserLanguageService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `BrowserLanguage` object.
+ // Retrieves a `BrowserLanguage` object.
rpc GetBrowserLanguage(GetBrowserLanguageRequest) returns (BrowserLanguage) {
option (google.api.http) = {
get: "/v1/{name=networks/*/browserLanguages/*}"
@@ -45,7 +45,7 @@ service BrowserLanguageService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `BrowserLanguage` objects.
+ // Lists `BrowserLanguage` objects.
rpc ListBrowserLanguages(ListBrowserLanguagesRequest)
returns (ListBrowserLanguagesResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/browser_service.proto b/google/ads/admanager/v1/browser_service.proto
index cc8686ee65..bfb8568528 100644
--- a/google/ads/admanager/v1/browser_service.proto
+++ b/google/ads/admanager/v1/browser_service.proto
@@ -37,7 +37,7 @@ service BrowserService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `Browser` object.
+ // Retrieves a `Browser` object.
rpc GetBrowser(GetBrowserRequest) returns (Browser) {
option (google.api.http) = {
get: "/v1/{name=networks/*/browsers/*}"
@@ -45,7 +45,7 @@ service BrowserService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `Browser` objects.
+ // Lists `Browser` objects.
rpc ListBrowsers(ListBrowsersRequest) returns (ListBrowsersResponse) {
option (google.api.http) = {
get: "/v1/{parent=networks/*}/browsers"
diff --git a/google/ads/admanager/v1/cdn_config_messages.proto b/google/ads/admanager/v1/cdn_config_messages.proto
new file mode 100644
index 0000000000..a00275df5d
--- /dev/null
+++ b/google/ads/admanager/v1/cdn_config_messages.proto
@@ -0,0 +1,209 @@
+// 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.admanager.v1;
+
+import "google/ads/admanager/v1/cdn_config_status_enum.proto";
+import "google/ads/admanager/v1/cdn_config_type_enum.proto";
+import "google/ads/admanager/v1/cdn_security_policy_enum.proto";
+import "google/ads/admanager/v1/cdn_security_policy_origin_forwarding_enum.proto";
+import "google/api/field_behavior.proto";
+import "google/api/resource.proto";
+import "google/protobuf/duration.proto";
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "CdnConfigMessagesProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// A CdnConfig encapsulates information about where and how to ingest and
+// deliver content enabled for DAI (Dynamic Ad Insertion).
+message CdnConfig {
+ option (google.api.resource) = {
+ type: "admanager.googleapis.com/CdnConfig"
+ pattern: "networks/{network_code}/cdnConfigs/{cdn_config}"
+ plural: "cdnConfigs"
+ singular: "cdnConfig"
+ };
+
+ // Identifier. The resource name of the `CdnConfig`.
+ // Format: `networks/{network_code}/cdnConfigs/{cdn_config_id}`
+ string name = 1 [(google.api.field_behavior) = IDENTIFIER];
+
+ // Required. The name of the CdnConfig. This value is required to create a CDN
+ // config and has a maximum length of 255 characters.
+ optional string display_name = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The type of CDN config represented by this CdnConfig.
+ optional CdnConfigTypeEnum.CdnConfigType cdn_config_type = 3
+ [(google.api.field_behavior) = REQUIRED];
+
+ // Optional. Parameters about this CDN config as a source of content. This
+ // facilitates fetching the original content for conditioning and delivering
+ // the original content as part of a modified stream.
+ SourceContentConfig source_content_config = 4
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Config of CDN to deliver ad media.
+ AdMediaDeliveryConfig ad_media_delivery_config = 6
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Output only. The status of the CDN config.
+ optional CdnConfigStatusEnum.CdnConfigStatus cdn_config_status = 7
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+}
+
+// A set of security requirements to authenticate against in order to access
+// video content. Different locations (e.g. different CDNs) can have different
+// security policies.
+message CdnSecurityPolicy {
+ // Required. Type of security policy. This determines which other fields
+ // should be populated. This value is required for a valid security policy.
+ optional CdnSecurityPolicyTypeEnum.CdnSecurityPolicyType
+ security_policy_type = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // Optional. Shared security key used to generate the Akamai HMAC token for
+ // authenticating requests. Only applicable when the value of
+ // `CdnSecurityPolicyType` is equal to `CdnSecurityPolicyType.AKAMAI` and will
+ // be set to null otherwise. Required when the `CdnConfig.cdnConfigType` is
+ // equal to `CdnConfigType.LIVE_STREAM_SOURCE_CONTENT` and this
+ // `CdnSecurityPolicy` is being configured for
+ // `SourceContentConfig.ingestSettings`.
+ optional string token_authentication_key = 2
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Whether the segment URLs should be signed using the
+ // #tokenAuthenticationKey on the server. This is only applicable for delivery
+ // media locations that have token authentication enabled.
+ optional bool server_side_url_signing_disabled = 3
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The type of origin forwarding used to support Akamai
+ // authentication policies for the parent playlist. Not applicable to ingest
+ // locations, and is only applicable to delivery media locations with the
+ // `securityPolicyType` set to `CdnSecurityPolicyType.AKAMAI`. If set
+ // elsewhere it will be reset to null.
+ optional
+ CdnSecurityPolicyOriginForwardingEnum.CdnSecurityPolicyOriginForwarding
+ origin_forwarding_type = 5 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The origin path prefix provided by the publisher for the parent
+ // playlist. Only applicable for delivery media locations with the value of
+ // `originForwardingType` set to
+ // `CdnSecurityPolicyOriginForwarding.CONVENTIONAL`, and will be set to null
+ // otherwise.
+ optional string origin_path_prefix = 6
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The type of origin forwarding used to support Akamai
+ // authentication policies for media playlists. This setting can only be used
+ // with CDN configs with a `cdnConfigType` of
+ // `CdnConfigType.LIVE_STREAM_SOURCE_CONTENT`, is not applicable to ingest
+ // locations, and is only applicable to delivery media locations with the
+ // `CdnSecurityPolicyType` set to `CdnSecurityPolicyType.AKAMAI`. Valid
+ // options are `CdnSecurityPolicyOriginForwarding.NONE` or
+ // `CdnSecurityPolicyOriginForwarding.ORIGIN_PATH`. This setting can only be
+ // used with CDN configs with a `cdnConfigType` of
+ // `CdnConfigType.LIVE_STREAM_SOURCE_CONTENT`.
+ optional
+ CdnSecurityPolicyOriginForwardingEnum.CdnSecurityPolicyOriginForwarding
+ media_playlist_origin_forwarding_type = 7
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The origin path prefix provided by the publisher for the media
+ // playlists. Only applicable for delivery media locations with the value of
+ // `mediaPlaylistOriginForwardingType` set to
+ // `CdnSecurityPolicyOriginForwarding.CONVENTIONAL`, and will be set to null
+ // otherwise.
+ optional string media_playlist_origin_path_prefix = 8
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The name of the EdgeCacheKeyset on the Media CDN config that will
+ // be used to validate signed requests from DAI to ingest content.
+ optional string keyset = 10 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The duration for which a request signed with a short token
+ // will be valid. Only required if `signedRequestMaximumExpirationTtl` has
+ // been set in the Media CDN config.
+ optional google.protobuf.Duration signed_request_expiration_ttl = 11
+ [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Parameters about this CDN config of a CDN used for delivering ad media.
+message AdMediaDeliveryConfig {
+ // Optional. Whether to override the default delivery CDN. If false,
+ // `deliverySettings` must be null.
+ optional bool override_default_delivery_settings = 4
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Config for the delivery location that will override the default.
+ // From MediaLocationDto, the URL prefix field represents the hostname of the
+ // external CDN and the security policy will be ignored. Null if
+ // `overrideDefaultDeliverySettings` is false.
+ MediaLocation delivery_settings = 5 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. List of additional delivery locations. From MediaLocationDto, the
+ // URL prefix field represents the hostname of the external CDN and the
+ // security policy will be ignored. In your stream create request, you can set
+ // the value of the `dai-dlid` parameter to the name of the MediaLocation you
+ // want to use.
+ repeated MediaLocation additional_delivery_settings = 3
+ [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Parameters about this CDN config as a source of content. This
+// facilitates fetching the original content for conditioning and delivering the
+// original content as part of a modified stream.
+message SourceContentConfig {
+ // Required. Config for how DAI should ingest media. At ingest time, we match
+ // the URL prefix of media in a stream's playlist with an ingest location and
+ // use the authentication credentials from the corresponding ingest settings
+ // to download the media. This value is required for a valid source content
+ // config.
+ MediaLocation ingest_settings = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. Default config for how DAI should deliver the non-modified media
+ // segments. At delivery time, we replace the ingest location's URL prefix
+ // with the delivery location's URL prefix and use the security policy from
+ // the delivery settings to determine how DAI needs to deliver the media so
+ // that users can access it. This value is required for a valid source content
+ // config.
+ MediaLocation default_delivery_settings = 2
+ [(google.api.field_behavior) = REQUIRED];
+}
+
+// Config that associates a media location with a security policy and the
+// authentication credentials needed to access the content.
+message MediaLocation {
+ // Output only. The name of the media location. This value is read-only and is
+ // assigned by Google.
+ optional string display_name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Required. The URL prefix of the media location. This value is required for
+ // a valid media location.
+ optional string url_prefix = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // Optional. The security policy and authentication credentials needed to
+ // access the content in this media location. Optional; if omitted, no
+ // security policy will be applied (indicating a public/unprotected location).
+ // Must NOT be configured for ad media delivery locations (doing so will
+ // trigger a validation error).
+ CdnSecurityPolicy security_policy = 3
+ [(google.api.field_behavior) = OPTIONAL];
+}
diff --git a/google/ads/admanager/v1/cdn_config_service.proto b/google/ads/admanager/v1/cdn_config_service.proto
new file mode 100644
index 0000000000..afa26a72ff
--- /dev/null
+++ b/google/ads/admanager/v1/cdn_config_service.proto
@@ -0,0 +1,321 @@
+// 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.admanager.v1;
+
+import "google/ads/admanager/v1/cdn_config_messages.proto";
+import "google/api/annotations.proto";
+import "google/api/client.proto";
+import "google/api/field_behavior.proto";
+import "google/api/resource.proto";
+import "google/protobuf/field_mask.proto";
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "CdnConfigServiceProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Provides methods for handling `CdnConfig` objects.
+service CdnConfigService {
+ option (google.api.default_host) = "admanager.googleapis.com";
+ option (google.api.oauth_scopes) =
+ "https://www.googleapis.com/auth/admanager,"
+ "https://www.googleapis.com/auth/admanager.readonly";
+
+ // Retrieves a `CdnConfig` object.
+ rpc GetCdnConfig(GetCdnConfigRequest) returns (CdnConfig) {
+ option (google.api.http) = {
+ get: "/v1/{name=networks/*/cdnConfigs/*}"
+ };
+ option (google.api.method_signature) = "name";
+ }
+
+ // Lists `CdnConfig` objects.
+ rpc ListCdnConfigs(ListCdnConfigsRequest) returns (ListCdnConfigsResponse) {
+ option (google.api.http) = {
+ get: "/v1/{parent=networks/*}/cdnConfigs"
+ };
+ option (google.api.method_signature) = "parent";
+ }
+
+ // Creates a `CdnConfig` object.
+ rpc CreateCdnConfig(CreateCdnConfigRequest) returns (CdnConfig) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/cdnConfigs"
+ body: "cdn_config"
+ };
+ option (google.api.method_signature) = "parent,cdn_config";
+ }
+
+ // Batch creates `CdnConfig` objects.
+ rpc BatchCreateCdnConfigs(BatchCreateCdnConfigsRequest)
+ returns (BatchCreateCdnConfigsResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/cdnConfigs:batchCreate"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,requests";
+ }
+
+ // Updates a `CdnConfig` object.
+ rpc UpdateCdnConfig(UpdateCdnConfigRequest) returns (CdnConfig) {
+ option (google.api.http) = {
+ patch: "/v1/{cdn_config.name=networks/*/cdnConfigs/*}"
+ body: "cdn_config"
+ };
+ option (google.api.method_signature) = "cdn_config,update_mask";
+ }
+
+ // Batch updates `CdnConfig` objects.
+ rpc BatchUpdateCdnConfigs(BatchUpdateCdnConfigsRequest)
+ returns (BatchUpdateCdnConfigsResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/cdnConfigs:batchUpdate"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,requests";
+ }
+
+ // Batch activates `CdnConfig` objects.
+ rpc BatchActivateCdnConfigs(BatchActivateCdnConfigsRequest)
+ returns (BatchActivateCdnConfigsResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/cdnConfigs:batchActivate"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,names";
+ }
+
+ // Batch archives `CdnConfig` objects.
+ rpc BatchArchiveCdnConfigs(BatchArchiveCdnConfigsRequest)
+ returns (BatchArchiveCdnConfigsResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/cdnConfigs:batchArchive"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,names";
+ }
+}
+
+// Request object for `GetCdnConfig` method.
+message GetCdnConfigRequest {
+ // Required. The resource name of the CdnConfig.
+ // Format: `networks/{network_code}/cdnConfigs/{cdn_config_id}`
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/CdnConfig"
+ }
+ ];
+}
+
+// Request object for `ListCdnConfigs` method.
+message ListCdnConfigsRequest {
+ // Required. The parent, which owns this collection of CdnConfigs.
+ // Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Optional. The maximum number of `CdnConfigs` to return. The service may
+ // return fewer than this value. If unspecified, at most 50 `CdnConfigs` will
+ // be returned. The maximum value is 1000; values greater than 1000 will be
+ // coerced to 1000.
+ int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. A page token, received from a previous `ListCdnConfigs` call.
+ // Provide this to retrieve the subsequent page.
+ //
+ // When paginating, all other parameters provided to `ListCdnConfigs`
+ // must match the call that provided the page token.
+ string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Expression to filter the response.
+ // See syntax details at
+ // https://developers.google.com/ad-manager/api/beta/filters
+ //
+ // Filterable fields:
+ //
+ // cdnConfigStatus
+ // cdnConfigType
+ // displayName
+ // name
+ // sourceContentConfig.ingestSettings.urlPrefix
+ //
+ string filter = 4 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Expression to specify sorting order.
+ // See syntax details at
+ // https://developers.google.com/ad-manager/api/beta/filters#order
+ string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Number of individual resources to skip while paginating.
+ int32 skip = 6 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Response object for `ListCdnConfigsRequest` containing matching
+// `CdnConfig` objects.
+message ListCdnConfigsResponse {
+ // The `CdnConfig` objects from the specified network.
+ repeated CdnConfig cdn_configs = 1;
+
+ // A token, which can be sent as `page_token` to retrieve the next page.
+ // If this field is omitted, there are no subsequent pages.
+ string next_page_token = 2;
+
+ // Total number of `CdnConfig` objects.
+ // If a filter was included in the request, this reflects the total number
+ // after the filtering is applied.
+ //
+ // `total_size` won't be calculated in the response unless it has been
+ // included in a response field mask. The response field mask can be provided
+ // to the method by using the URL parameter `$fields` or `fields`, or by using
+ // the HTTP/gRPC header `X-Goog-FieldMask`.
+ //
+ // For more information, see
+ // https://developers.google.com/ad-manager/api/beta/field-masks
+ int32 total_size = 3;
+}
+
+// Request object for `CreateCdnConfig` method.
+message CreateCdnConfigRequest {
+ // Required. The parent resource where this `CdnConfig` will be created.
+ // Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The `CdnConfig` to create.
+ CdnConfig cdn_config = 2 [(google.api.field_behavior) = REQUIRED];
+}
+
+// Request object for `BatchCreateCdnConfigs` method.
+message BatchCreateCdnConfigsRequest {
+ // Required. The parent resource where `CdnConfigs` will be created.
+ // Format: `networks/{network_code}`
+ // The parent field in the CreateCdnConfigRequest must match this
+ // field.
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The `CdnConfig` objects to create.
+ // A maximum of 100 objects can be created in a batch.
+ repeated CreateCdnConfigRequest requests = 2
+ [(google.api.field_behavior) = REQUIRED];
+}
+
+// Response object for `BatchCreateCdnConfigs` method.
+message BatchCreateCdnConfigsResponse {
+ // The `CdnConfig` objects created.
+ repeated CdnConfig cdn_configs = 1;
+}
+
+// Request object for `UpdateCdnConfig` method.
+message UpdateCdnConfigRequest {
+ // Required. The `CdnConfig` to update.
+ //
+ // The `CdnConfig`'s `name` is used to identify the `CdnConfig`
+ // to update.
+ CdnConfig cdn_config = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // Optional. The list of fields to update.
+ google.protobuf.FieldMask update_mask = 2
+ [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Request object for `BatchUpdateCdnConfigs` method.
+message BatchUpdateCdnConfigsRequest {
+ // Required. The parent resource where `CdnConfigs` will be updated.
+ // Format: `networks/{network_code}`
+ // The parent field in the UpdateCdnConfigRequest must match this
+ // field.
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The `CdnConfig` objects to update.
+ // A maximum of 100 objects can be updated in a batch.
+ repeated UpdateCdnConfigRequest requests = 2
+ [(google.api.field_behavior) = REQUIRED];
+}
+
+// Response object for `BatchUpdateCdnConfigs` method.
+message BatchUpdateCdnConfigsResponse {
+ // The `CdnConfig` objects updated.
+ repeated CdnConfig cdn_configs = 1;
+}
+
+// Request message to activate `CdnConfig` objects.
+message BatchActivateCdnConfigsRequest {
+ // Required. Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The resource names of the `CdnConfig` objects to activate.
+ // Format: `networks/{network_code}/cdnConfigs/{cdn_config_id}`
+ repeated string names = 2 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/CdnConfig"
+ }
+ ];
+}
+
+// Response message for `BatchActivateCdnConfigs` method.
+message BatchActivateCdnConfigsResponse {}
+
+// Request message to archive `CdnConfig` objects.
+message BatchArchiveCdnConfigsRequest {
+ // Required. Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The resource names of the `CdnConfig` objects to archive.
+ // Format: `networks/{network_code}/cdnConfigs/{cdn_config_id}`
+ repeated string names = 2 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/CdnConfig"
+ }
+ ];
+}
+
+// Response object for `BatchArchiveCdnConfigs` method.
+message BatchArchiveCdnConfigsResponse {}
diff --git a/google/ads/admanager/v1/cdn_config_status_enum.proto b/google/ads/admanager/v1/cdn_config_status_enum.proto
new file mode 100644
index 0000000000..6b45cd265e
--- /dev/null
+++ b/google/ads/admanager/v1/cdn_config_status_enum.proto
@@ -0,0 +1,41 @@
+// 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.admanager.v1;
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "CdnConfigStatusEnumProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Wrapper message for
+// [CdnConfigStatus][google.ads.admanager.v1.CdnConfigStatusEnum.CdnConfigStatus]
+message CdnConfigStatusEnum {
+ // Indicates the status of the CdnConfiguration.
+ enum CdnConfigStatus {
+ // Default value. This value is unused.
+ CDN_CONFIG_STATUS_UNSPECIFIED = 0;
+
+ // The CDN configuration is in use.
+ ACTIVE = 1;
+
+ // The CDN configuration is no longer used.
+ ARCHIVED = 2;
+ }
+}
diff --git a/google/ads/admanager/v1/cdn_config_type_enum.proto b/google/ads/admanager/v1/cdn_config_type_enum.proto
new file mode 100644
index 0000000000..4461eb897d
--- /dev/null
+++ b/google/ads/admanager/v1/cdn_config_type_enum.proto
@@ -0,0 +1,51 @@
+// 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.admanager.v1;
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "CdnConfigTypeEnumProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Wrapper message for
+// [CdnConfigType][google.ads.admanager.v1.CdnConfigTypeEnum.CdnConfigType]
+message CdnConfigTypeEnum {
+ // Indicates the type of CDN configuration for CdnConfiguration.
+ enum CdnConfigType {
+ // Default value. This value is unused.
+ CDN_CONFIG_TYPE_UNSPECIFIED = 0;
+
+ // A configuration that specifies a publisher-provided CDN for delivering ad
+ // media.
+ AD_MEDIA_DELIVERY = 1;
+
+ // A configuration that specifies where and how `LiveStreamEvent`
+ // content should be ingested and delivered.
+ LIVE_STREAM_SOURCE_CONTENT = 2;
+
+ // A configuration that specifies where and how split content should be
+ // uploaded and delivered.
+ MIDROLL = 3;
+
+ // A configuration that specifies where and how video on demand content
+ // should be ingested and delivered.
+ VOD_SOURCE_CONTENT = 4;
+ }
+}
diff --git a/google/ads/admanager/v1/cdn_security_policy_enum.proto b/google/ads/admanager/v1/cdn_security_policy_enum.proto
new file mode 100644
index 0000000000..f3e577c888
--- /dev/null
+++ b/google/ads/admanager/v1/cdn_security_policy_enum.proto
@@ -0,0 +1,46 @@
+// 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.admanager.v1;
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "CdnSecurityPolicyEnumProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Wrapper message for
+// [CdnSecurityPolicy][google.ads.admanager.v1.CdnSecurityPolicy]
+message CdnSecurityPolicyTypeEnum {
+ // Indicates the type of security policy associated with access to a CDN.
+ // Different security policies require different parameters in a
+ // SecurityPolicy.
+ enum CdnSecurityPolicyType {
+ // Default value. This value is unused.
+ CDN_SECURITY_POLICY_TYPE_UNSPECIFIED = 0;
+
+ // Security policy for accessing content on the Akamai CDN.
+ AKAMAI = 1;
+
+ // Security policy for access content on Google Cloud Media CDN.
+ CLOUD_MEDIA = 2;
+
+ // Indicates that no authentication is necessary.
+ NONE = 3;
+ }
+}
diff --git a/google/ads/admanager/v1/cdn_security_policy_origin_forwarding_enum.proto b/google/ads/admanager/v1/cdn_security_policy_origin_forwarding_enum.proto
new file mode 100644
index 0000000000..2006f4f95e
--- /dev/null
+++ b/google/ads/admanager/v1/cdn_security_policy_origin_forwarding_enum.proto
@@ -0,0 +1,46 @@
+// 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.admanager.v1;
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "CdnSecurityPolicyOriginForwardingEnumProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Wrapper message for
+// [CdnSecurityPolicyOriginForwarding][google.ads.admanager.v1.CdnSecurityPolicyOriginForwardingEnum.CdnSecurityPolicyOriginForwarding]
+message CdnSecurityPolicyOriginForwardingEnum {
+ // Indicates the type of origin forwarding used to support Akamai
+ // authentication policies for `LiveStreamEvent`.
+ enum CdnSecurityPolicyOriginForwarding {
+ // Default value. This value is unused.
+ CDN_SECURITY_POLICY_ORIGIN_FORWARDING_UNSPECIFIED = 0;
+
+ // Indicates that conventional origin forwarding is used.
+ CONVENTIONAL = 1;
+
+ // Indicates that origin forwarding is not being used.
+ NONE = 2;
+
+ // Indicates that origin forwarding is set up by passing an origin path
+ // query string parameter (necessary for Akamai dynamic packaging to work).
+ ORIGIN_PATH = 3;
+ }
+}
diff --git a/google/ads/admanager/v1/cms_metadata_key_service.proto b/google/ads/admanager/v1/cms_metadata_key_service.proto
index 07c7862f85..dbafae5bfb 100644
--- a/google/ads/admanager/v1/cms_metadata_key_service.proto
+++ b/google/ads/admanager/v1/cms_metadata_key_service.proto
@@ -37,7 +37,7 @@ service CmsMetadataKeyService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `CmsMetadataKey` object.
+ // Retrieves a `CmsMetadataKey` object.
rpc GetCmsMetadataKey(GetCmsMetadataKeyRequest) returns (CmsMetadataKey) {
option (google.api.http) = {
get: "/v1/{name=networks/*/cmsMetadataKeys/*}"
@@ -45,7 +45,7 @@ service CmsMetadataKeyService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `CmsMetadataKey` objects.
+ // Lists `CmsMetadataKey` objects.
rpc ListCmsMetadataKeys(ListCmsMetadataKeysRequest)
returns (ListCmsMetadataKeysResponse) {
option (google.api.http) = {
@@ -54,7 +54,7 @@ service CmsMetadataKeyService {
option (google.api.method_signature) = "parent";
}
- // API to activate a list of `CmsMetadataKey` objects.
+ // Activates a list of `CmsMetadataKey` objects.
rpc BatchActivateCmsMetadataKeys(BatchActivateCmsMetadataKeysRequest)
returns (BatchActivateCmsMetadataKeysResponse) {
option (google.api.http) = {
@@ -64,7 +64,7 @@ service CmsMetadataKeyService {
option (google.api.method_signature) = "parent,names";
}
- // API to deactivate a list of `CmsMetadataKey` objects.
+ // Deactivates a list of `CmsMetadataKey` objects.
rpc BatchDeactivateCmsMetadataKeys(BatchDeactivateCmsMetadataKeysRequest)
returns (BatchDeactivateCmsMetadataKeysResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/cms_metadata_value_service.proto b/google/ads/admanager/v1/cms_metadata_value_service.proto
index 9572853042..b286144607 100644
--- a/google/ads/admanager/v1/cms_metadata_value_service.proto
+++ b/google/ads/admanager/v1/cms_metadata_value_service.proto
@@ -37,7 +37,7 @@ service CmsMetadataValueService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `CmsMetadataValue` object.
+ // Retrieves a `CmsMetadataValue` object.
rpc GetCmsMetadataValue(GetCmsMetadataValueRequest)
returns (CmsMetadataValue) {
option (google.api.http) = {
@@ -46,7 +46,7 @@ service CmsMetadataValueService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `CmsMetadataValue` objects.
+ // Lists `CmsMetadataValue` objects.
rpc ListCmsMetadataValues(ListCmsMetadataValuesRequest)
returns (ListCmsMetadataValuesResponse) {
option (google.api.http) = {
@@ -55,7 +55,7 @@ service CmsMetadataValueService {
option (google.api.method_signature) = "parent";
}
- // API to activate a list of `CmsMetadataValue` objects.
+ // Activates a list of `CmsMetadataValue` objects.
rpc BatchActivateCmsMetadataValues(BatchActivateCmsMetadataValuesRequest)
returns (BatchActivateCmsMetadataValuesResponse) {
option (google.api.http) = {
@@ -65,7 +65,7 @@ service CmsMetadataValueService {
option (google.api.method_signature) = "parent,names";
}
- // API to deactivate a list of `CmsMetadataValue` objects.
+ // Deactivates a list of `CmsMetadataValue` objects.
rpc BatchDeactivateCmsMetadataValues(BatchDeactivateCmsMetadataValuesRequest)
returns (BatchDeactivateCmsMetadataValuesResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/content_bundle_enums.proto b/google/ads/admanager/v1/content_bundle_enums.proto
new file mode 100644
index 0000000000..b6d57a8044
--- /dev/null
+++ b/google/ads/admanager/v1/content_bundle_enums.proto
@@ -0,0 +1,44 @@
+// 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.admanager.v1;
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "ContentBundleEnumsProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Wrapper message for
+// [ContentBundleStatus][google.ads.admanager.v1.ContentBundleStatusEnum.ContentBundleStatus]
+message ContentBundleStatusEnum {
+ // Status for ContentBundle objects.
+ enum ContentBundleStatus {
+ // Default value. This value is unused.
+ CONTENT_BUNDLE_STATUS_UNSPECIFIED = 0;
+
+ // The object is active and stats are collected.
+ ACTIVE = 1;
+
+ // The object has been archived.
+ ARCHIVED = 2;
+
+ // The object is no longer active and no stats collected.
+ INACTIVE = 3;
+ }
+}
diff --git a/google/ads/admanager/v1/content_bundle_messages.proto b/google/ads/admanager/v1/content_bundle_messages.proto
index 7ab09f8614..ef457a5f84 100644
--- a/google/ads/admanager/v1/content_bundle_messages.proto
+++ b/google/ads/admanager/v1/content_bundle_messages.proto
@@ -16,8 +16,10 @@ syntax = "proto3";
package google.ads.admanager.v1;
+import "google/ads/admanager/v1/content_bundle_enums.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
+import "google/protobuf/timestamp.proto";
option csharp_namespace = "Google.Ads.AdManager.V1";
option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
@@ -50,4 +52,14 @@ message ContentBundle {
// [ContentBundle][google.ads.admanager.v1.ContentBundle]. This attribute is
// required and has a maximum length of 255 characters.
string display_name = 3 [(google.api.field_behavior) = REQUIRED];
+
+ // Output only. The ContentBundleStatus of the
+ // [ContentBundle][google.ads.admanager.v1.ContentBundle]. This attribute is
+ // read-only and defaults to [ContentBundleStatus.INACTIVE][].
+ ContentBundleStatusEnum.ContentBundleStatus status = 4
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The time the `ContentBundle` was last modified.
+ google.protobuf.Timestamp update_time = 7
+ [(google.api.field_behavior) = OUTPUT_ONLY];
}
diff --git a/google/ads/admanager/v1/content_bundle_service.proto b/google/ads/admanager/v1/content_bundle_service.proto
index 52dee13e7c..0316ea4365 100644
--- a/google/ads/admanager/v1/content_bundle_service.proto
+++ b/google/ads/admanager/v1/content_bundle_service.proto
@@ -37,7 +37,7 @@ service ContentBundleService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `ContentBundle` object.
+ // Retrieves a `ContentBundle` object.
rpc GetContentBundle(GetContentBundleRequest) returns (ContentBundle) {
option (google.api.http) = {
get: "/v1/{name=networks/*/contentBundles/*}"
@@ -45,7 +45,7 @@ service ContentBundleService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `ContentBundle` objects.
+ // Lists `ContentBundle` objects.
rpc ListContentBundles(ListContentBundlesRequest)
returns (ListContentBundlesResponse) {
option (google.api.http) = {
@@ -99,6 +99,8 @@ message ListContentBundlesRequest {
//
// displayName
// name
+ // status
+ // updateTime
//
string filter = 4 [(google.api.field_behavior) = OPTIONAL];
diff --git a/google/ads/admanager/v1/content_enums.proto b/google/ads/admanager/v1/content_enums.proto
new file mode 100644
index 0000000000..849709b0db
--- /dev/null
+++ b/google/ads/admanager/v1/content_enums.proto
@@ -0,0 +1,376 @@
+// 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.admanager.v1;
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "ContentEnumsProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Wrapper message for
+// [ContentStatus][google.ads.admanager.v1.ContentStatusEnum.ContentStatus]
+message ContentStatusEnum {
+ // Describes the status of a
+ // [Content][google.ads.admanager.v1.Content] object.
+ enum ContentStatus {
+ // Default value. This value is unused.
+ CONTENT_STATUS_UNSPECIFIED = 0;
+
+ // Indicates the `Content` has been created and is eligible to have ads
+ // served against it.
+ ACTIVE = 1;
+
+ // Indicates the `Content` has been deactivated and cannot have ads served
+ // against it.
+ INACTIVE = 2;
+
+ // Indicates the `Content` has been archived; user-visible.
+ ARCHIVED = 3;
+
+ // Indicates the `Content` has been removed from an external CMS.
+ DELETED = 4;
+
+ // Indicates the `Content` is a duplicate of another piece of content.
+ DUPLICATED = 5;
+ }
+}
+
+// Wrapper message for
+// [ContentStatusSource][google.ads.admanager.v1.ContentStatusSourceEnum.ContentStatusSource]
+message ContentStatusSourceEnum {
+ // Describes who defined the status of the
+ // [Content][google.ads.admanager.v1.Content] object.
+ enum ContentStatusSource {
+ // Default value. This value is unused.
+ CONTENT_STATUS_SOURCE_UNSPECIFIED = 0;
+
+ // Indicates that the status of the `Content` is defined by the CMS.
+ CMS = 1;
+
+ // Indicates that the status of the `Content` is defined by the user.
+ USER = 2;
+ }
+}
+
+// Wrapper message for
+// [DaiIngestStatus][google.ads.admanager.v1.DaiIngestStatusEnum.DaiIngestStatus]
+message DaiIngestStatusEnum {
+ // The status of the Dynamic Ad Insertion (DAI) ingestion process. Only
+ // [Content][google.ads.admanager.v1.Content] with a status of
+ // SUCCESS will be available for DAI.
+ enum DaiIngestStatus {
+ // Default value. This value is unused.
+ DAI_INGEST_STATUS_UNSPECIFIED = 0;
+
+ // The `Content` was successfully ingested for DAI.
+ SUCCESS = 1;
+
+ // There was a non-fatal issue during the DAI ingestion process.
+ WARNING = 2;
+
+ // The preconditioned `Content` was successfully ingested for DAI.
+ INGESTED = 3;
+
+ // There was a non-fatal issue during the DAI ingestion process on
+ // preconditioned `Content`.
+ INGESTED_WITH_WARNINGS = 4;
+
+ // The unconditioned `Content` was successfully conditioned for DAI.
+ CONDITIONED = 5;
+
+ // There was a non-fatal issue during the DAI conditioning process on
+ // originally unconditioned `Content`.
+ CONDITIONED_WITH_WARNINGS = 6;
+
+ // There was a non-fatal issue during the DAI ingestion process and the
+ // `Content` is not available for dynamic ad insertion.
+ FAILURE = 7;
+ }
+}
+
+// Wrapper message for
+// [DaiIngestErrorReason][google.ads.admanager.v1.DaiIngestErrorReasonEnum.DaiIngestErrorReason]
+message DaiIngestErrorReasonEnum {
+ // Represents an error associated with a Dynamic Ad Insertion (DAI)
+ // [Content's][google.ads.admanager.v1.Content] status.
+ enum DaiIngestErrorReason {
+ // Default value. This value is unused.
+ DAI_INGEST_ERROR_REASON_UNSPECIFIED = 0;
+
+ // The ingest URL provided in the publisher's `Content` source feed is
+ // invalid. The trigger for this error is the ingest URL specified in the
+ // publisher's feed.
+ INVALID_INGEST_URL = 1;
+
+ // The closed caption URL provided in the publisher's `Content` source feed
+ // is invalid.
+ INVALID_CLOSED_CAPTION_URL = 2;
+
+ // There is no closed caption URL for a `Content` in the publisher's
+ // `Content` source feed. There is no trigger for this error.
+ MISSING_CLOSED_CAPTION_URL = 3;
+
+ // There was an error while trying to fetch the HLS from the specified
+ // ingest URL. The trigger for this error is the ingest URL specified in the
+ // publisher's feed.
+ COULD_NOT_FETCH_HLS = 4;
+
+ // There was an error while trying to fetch the subtitles from the specified
+ // closed caption url. The trigger for this error is the closed caption URL
+ // specified in the publisher's feed.
+ COULD_NOT_FETCH_SUBTITLES = 5;
+
+ // One of the subtitles from the closed caption URL is missing a language.
+ // The trigger for this error is the closed caption URL that does not have a
+ // language associated with it.
+ MISSING_SUBTITLE_LANGUAGE = 6;
+
+ // Error fetching the media files from the URLs specified in the master HLS
+ // playlist. The trigger for this error is a media playlist URL within the
+ // publisher's HLS playlist that could not be fetched.
+ COULD_NOT_FETCH_MEDIA = 7;
+
+ // The media from the publisher's CDN is malformed and cannot be
+ // conditioned. The trigger for this error is a media playlist URL within
+ // the publisher's HLS playlist that is malformed.
+ MALFORMED_MEDIA_BYTES = 8;
+
+ // A chapter time for the `Content` is outside of the range of the
+ // `Content`'s duration. The trigger for this error is the chapter time (a
+ // parsable long representing the time in ms) that is out of bounds.
+ CHAPTER_TIME_OUT_OF_BOUNDS = 9;
+
+ // An internal error occurred. There is no trigger for this error.
+ INTERNAL_ERROR = 10;
+
+ // The `Content` has chapter times but the `Content`'s source has no CDN
+ // settings for midrolls. There is no trigger for this error.
+ CONTENT_HAS_CHAPTER_TIMES_BUT_NO_MIDROLL_SETTINGS = 11;
+
+ // There is bad/missing/malformed data in a media playlist. The trigger for
+ // this error is the URL that points to the malformed media playlist.
+ MALFORMED_MEDIA_PLAYLIST = 12;
+
+ // Multiple ways of denoting ad breaks were detected in a media playlist
+ // (e.g. placement opportunity tags, cue markers, etc.)
+ MIXED_AD_BREAK_TAGS = 13;
+
+ // The ad break tags in the preconditioned `Content` are not in the same
+ // locations across all variant playlists.
+ AD_BREAK_TAGS_INCONSISTENT_ACROSS_VARIANTS = 14;
+
+ // There is bad/missing/malformed data in a subtitles file. The trigger for
+ // this error is the URL that points to the malformed subtitles.
+ MALFORMED_SUBTITLES = 15;
+
+ // The subtitles sent to DAI are too large. The trigger for this error is
+ // the URL that points to the master playlist.
+ SUBTITLES_TOO_LARGE = 16;
+
+ // A playlist item has a URL that does not begin with the ingest common path
+ // provided in the DAI settings. The trigger for this error is the playlist
+ // item URL.
+ PLAYLIST_ITEM_URL_DOES_NOT_MATCH_INGEST_COMMON_PATH = 17;
+
+ // Uploading split media segments failed due to an authentication error.
+ COULD_NOT_UPLOAD_SPLIT_MEDIA_AUTHENTICATION_FAILED = 18;
+
+ // Uploading spit media segments failed due to a connection error.
+ COULD_NOT_UPLOAD_SPLIT_MEDIA_CONNECTION_FAILED = 19;
+
+ // Uploading split media segments failed due to a write error.
+ COULD_NOT_UPLOAD_SPLIT_MEDIA_WRITE_FAILED = 20;
+
+ // Variants in a playlist do not have the same number of discontinuities.
+ // The trigger for this error is the master playlist URI.
+ PLAYLISTS_HAVE_DIFFERENT_NUMBER_OF_DISCONTINUITIES = 21;
+
+ // The playlist does not have a starting PTS value. The trigger for this
+ // error is the master playlist URI.
+ PLAYLIST_HAS_NO_STARTING_PTS_VALUE = 22;
+
+ // The PTS at a discontinuity varies too much between the different
+ // variants. The trigger for this error is the master playlist URI.
+ PLAYLIST_DISCONTINUITY_PTS_VALUES_DIFFER_TOO_MUCH = 23;
+
+ // A media segment has no PTS. The trigger for this error is the segment
+ // data URI.
+ SEGMENT_HAS_NO_PTS = 24;
+
+ // The language in the subtitles file does not match the language specified
+ // in the feed. The trigger for this error is the feed language and the
+ // parsed language separated by a semi-colon, e.g. "en;sp".
+ SUBTITLE_LANGUAGE_DOES_NOT_MATCH_LANGUAGE_IN_FEED = 25;
+
+ // There are multiple subtitles files at the closed caption URI, and none of
+ // them match the language defined in the feed.
+ CANNOT_DETERMINE_CORRECT_SUBTITLES_FOR_LANGUAGE = 26;
+
+ // No CDN configuration found for the `Content`. The trigger for this error
+ // is the `Content`'s master playlist URI.
+ NO_CDN_CONFIG_FOUND = 27;
+
+ // The `Content` has midrolls but there was no split `Content` config on the
+ // CDN configuration for that `Content` so the `Content` was not
+ // conditioned. There is no trigger for this error.
+ CONTENT_HAS_MIDROLLS_BUT_NO_SPLIT_CONTENT_CONFIG = 28;
+
+ // The `Content` has midrolls but the source the `Content` was ingested from
+ // has mid-rolls disabled, so the `Content` was not conditioned. There is no
+ // trigger for this error.
+ CONTENT_HAS_MIDROLLS_BUT_SOURCE_HAS_MIDROLLS_DISABLED = 29;
+
+ // Error parsing ADTS while splitting the `Content`. The trigger for this
+ // error is the variant URL and the cue-point separated by a semi-colon,
+ // e.g. "www.variant2.com;5000".
+ ADTS_PARSE_ERROR = 30;
+
+ // Error splitting an AAC segment. The trigger for this error is the variant
+ // URL and the cue-point separated by a semi-colon, e.g.
+ // "www.variant2.com;5000".
+ AAC_SPLIT_ERROR = 31;
+
+ // Error parsing an AAC file while splitting the `Content`. The trigger for
+ // this error is the variant URL and the cue-point separated by a
+ // semi-colon, e.g. "www.variant2.com;5000".
+ AAC_PARSE_ERROR = 32;
+
+ // Error parsing a TS file while splitting the `Content`. The trigger for
+ // this error is the variant URL and the cue-point separated by a
+ // semi-colon, e.g. "www.variant2.com;5000".
+ TS_PARSE_ERROR = 33;
+
+ // Error splitting a TS file while splitting the `Content`. The trigger for
+ // this error is the variant URL and the cue-point separated by a
+ // semi-colon, e.g. "www.variant2.com;5000".
+ TS_SPLIT_ERROR = 34;
+
+ // Encountered an unsupported container format while splitting the
+ // `Content`. The trigger for this error is the variant URL and the
+ // cue-point separated by a semi-colon, e.g. "www.variant2.com;5000".
+ UNSUPPORTED_CONTAINER_FORMAT = 35;
+
+ // Encountered multiple elementary streams of the same media type (audio,
+ // video) within a transport stream. The trigger for this error is the
+ // variant URL and the cue-point separated by a semi-colon, e.g.
+ // "www.variant2.com;5000".
+ MULTIPLE_ELEMENTARY_STREAMS_OF_SAME_MEDIA_TYPE_IN_TS = 36;
+
+ // Encountered an unsupported TS media format while splitting the `Content`.
+ // The trigger for this error is the variant URL and the cue-point separated
+ // by a semi-colon, e.g. "www.variant2.com;5000".
+ UNSUPPORTED_TS_MEDIA_FORMAT = 37;
+
+ // Error splitting because there were no i-frames near the target split
+ // point. The trigger for this error is the variant URL and the cue-point
+ // separated by a semi-colon, e.g. "www.variant2.com;5000".
+ NO_IFRAMES_NEAR_CUE_POINT = 38;
+
+ // Error splitting an AC-3 segment. The trigger for this error is the
+ // variant URL and the cue-point separated by a semi-colon, e.g.
+ // "www.variant2.com;5000".
+ AC3_SPLIT_ERROR = 39;
+
+ // Error parsing an AC-3 file while splitting the `Content`. The trigger for
+ // this error is the variant URL and the cue-point separated by a
+ // semi-colon, e.g. "www.variant2.com;5000".
+ AC3_PARSE_ERROR = 40;
+
+ // Error splitting an E-AC-3 segment. The trigger for this error is the
+ // variant URL and the cue-point separated by a semi-colon, e.g.
+ // "www.variant2.com;5000".
+ EAC3_SPLIT_ERROR = 41;
+
+ // Error caused by an invalid encryption key. The trigger for this error is
+ // a media playlist URL within the publisher's HLS playlist that has the
+ // invalid encryption key.
+ INVALID_ENCRYPTION_KEY = 42;
+
+ // Error parsing an E-AC-3 file while splitting the `Content`. The trigger
+ // for this error is the variant URL and the cue-point separated by a
+ // semi-colon, e.g. "www.variant2.com;5000".
+ EAC3_PARSE_ERROR = 43;
+
+ // Error caused by the number of PTS being a different value than the number
+ // of cue points + 1.
+ CUE_POINT_COUNT_DOES_NOT_MATCH_PTS_COUNT = 44;
+
+ // Error caused by the number of PTS being a different value than the number
+ // of discontinuity tags + 1.
+ DISCONTINUITY_COUNT_DOES_NOT_MATCH_PTS_COUNT = 45;
+
+ // The DASH `Content` has cue points but they do not match the Event
+ // durations from the DASH manifest EventStream, if present.
+ DASH_CUE_POINT_EVENT_MISMATCH = 46;
+
+ // The DASH manifest cannot be conditioned for midrolls.
+ DASH_MANIFEST_CONDITIONING_FAILED = 47;
+
+ // The DASH manifest cannot be conditioned for midrolls because one or more
+ // of the cue points do not lie on a media segment boundary.
+ DASH_MANIFEST_CONDITIONING_SEGMENT_BOUNDARY_ERROR = 48;
+
+ // The subtitle language code should not contain "$$$$$".
+ CLOSED_CAPTION_LANGUAGE_VALUE_INVALID = 49;
+
+ // The subtitle name should not contain "$$$$$".
+ CLOSED_CAPTION_NAME_VALUE_INVALID = 50;
+
+ // The common subtitle characteristics values listed in the HLS spec are:
+ // 1)"public.accessibility.transcribes-spoken-dialog",
+ // 2)"public.accessibility.describes-music-and-sound",
+ // 3)"public.easy-to-read";
+ CLOSED_CAPTION_CHARACTERISTICS_VALUE_UNEXPECTED = 51;
+
+ // Closed captions for a `Content` should be unique by 'language + name'.
+ CLOSED_CAPTIONS_WITH_DUPLICATE_KEYS = 52;
+
+ // Subtitles are defined in the `Content` source feed as well as inside the
+ // stream manifest. Only feed subtitles will be ingested.
+ SUBTITLES_PRESENT_IN_FEED_AND_MANIFEST = 53;
+
+ // The media profile is invalid due to missing data.
+ INVALID_MEDIA_PROFILE = 54;
+
+ // Error caused when the PTS values do not align across chapters.
+ CHAPTER_PTS_MISMATCH = 55;
+
+ // Error occurred while chaptering renditions in the `Content`.
+ CHAPTER_RENDITION_ERROR = 56;
+
+ // Error during notification processing: invalid transcoding request.
+ INVALID_TRANSCODING_REQUEST = 57;
+
+ // Error during notification processing: transcode failed.
+ TRANSCODE_FAILED = 58;
+
+ // Error during playlist generation.
+ PLAYLIST_GENERATION_FAILED = 59;
+
+ // Error during DASH ingest: could not fetch DASH manifest.
+ COULD_NOT_FETCH_DASH = 60;
+
+ // Error during DASH ingest: malformed DASH manifest.
+ MALFORMED_DASH = 61;
+
+ // Error during DASH ingest: DASH conditioning not supported.
+ DASH_CONDITIONING_NOT_SUPPORTED = 62;
+ }
+}
diff --git a/google/ads/admanager/v1/content_label_service.proto b/google/ads/admanager/v1/content_label_service.proto
index 019e9f0920..c57f43181b 100644
--- a/google/ads/admanager/v1/content_label_service.proto
+++ b/google/ads/admanager/v1/content_label_service.proto
@@ -37,7 +37,7 @@ service ContentLabelService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `ContentLabel` object.
+ // Retrieves a `ContentLabel` object.
rpc GetContentLabel(GetContentLabelRequest) returns (ContentLabel) {
option (google.api.http) = {
get: "/v1/{name=networks/*/contentLabels/*}"
@@ -45,7 +45,7 @@ service ContentLabelService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `ContentLabel` objects.
+ // Lists `ContentLabel` objects.
rpc ListContentLabels(ListContentLabelsRequest)
returns (ListContentLabelsResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/content_messages.proto b/google/ads/admanager/v1/content_messages.proto
index e71514be33..8c46311113 100644
--- a/google/ads/admanager/v1/content_messages.proto
+++ b/google/ads/admanager/v1/content_messages.proto
@@ -16,8 +16,11 @@ syntax = "proto3";
package google.ads.admanager.v1;
+import "google/ads/admanager/v1/content_enums.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
+import "google/protobuf/duration.proto";
+import "google/protobuf/timestamp.proto";
option csharp_namespace = "Google.Ads.AdManager.V1";
option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
@@ -26,6 +29,12 @@ option java_outer_classname = "ContentMessagesProto";
option java_package = "com.google.ads.admanager.v1";
option php_namespace = "Google\\Ads\\AdManager\\V1";
option ruby_package = "Google::Ads::AdManager::V1";
+option (google.api.resource_definition) = {
+ type: "admanager.googleapis.com/ContentSource"
+ pattern: "networks/{network_code}/contentSources/{content_source}"
+ plural: "contentSources"
+ singular: "contentSource"
+};
// A piece of `Content` from a Publisher's CMS.
message Content {
@@ -42,4 +51,130 @@ message Content {
// Output only. The name of the `Content`.
optional string display_name = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The status of this `Content`.
+ optional ContentStatusEnum.ContentStatus status = 3
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. Whether the content status was defined by the user, or by the
+ // source CMS from which the `Content` was ingested.
+ optional ContentStatusSourceEnum.ContentStatusSource content_status_source = 4
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The current DAI ingest status of the HLS media for the
+ // `Content`. This attribute is unset if the `Content` is not eligible for
+ // dynamic ad insertion or if the `Content` does not have HLS media.
+ optional DaiIngestStatusEnum.DaiIngestStatus hls_ingest_status = 5
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The list of any errors that occurred during the most recent
+ // DAI ingestion process of the HLS media. This attribute will be empty if the
+ // hlsIngestStatus is [DaiIngestStatus.SUCCESS][] or if the `Content` is
+ // not eligible for dynamic ad insertion or if the `Content` does not have
+ // HLS media.
+ repeated DaiIngestError hls_ingest_errors = 6
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The timestamp at which this `Content`'s HLS media was last
+ // ingested for DAI. This attribute will be unset if the `Content` is not
+ // eligible for dynamic ad insertion or if the `Content` does not have HLS
+ // media.
+ optional google.protobuf.Timestamp last_hls_ingest_time = 7
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The current DAI ingest status of the DASH media for the
+ // `Content`. This attribute is unset if the `Content` is not eligible for
+ // dynamic ad insertion or if the `Content` does not have DASH media.
+ optional DaiIngestStatusEnum.DaiIngestStatus dash_ingest_status = 8
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The list of any errors that occurred during the most recent
+ // DAI ingestion process of the DASH media. This attribute will be empty if
+ // the hlsIngestStatus is [DaiIngestStatus.SUCCESS][] or if the `Content` is
+ // not eligible for dynamic ad insertion or if the `Content` does not have
+ // DASH media.
+ repeated DaiIngestError dash_ingest_errors = 9
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The timestamp at which this `Content`'s DASH media was last
+ // ingested for DAI. This attribute will be unset if the `Content` is not
+ // eligible for dynamic ad insertion or if the `Content` does not have DASH
+ // media.
+ optional google.protobuf.Timestamp last_dash_ingest_time = 10
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The timestamp at which this `Content` was published.
+ optional google.protobuf.Timestamp import_time = 11
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The timestamp at which this `Content` was last modified.
+ // The last modified date time will always be updated when a
+ // [ContentBundle][google.ads.admanager.v1.ContentBundle]
+ // association is changed, but will not always be updated when a
+ // [CmsMetadataValue][google.ads.admanager.v1.CmsMetadataValue]
+ // value is changed.
+ optional google.protobuf.Timestamp update_time = 12
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. Information about the `Content` from the CMS it was ingested
+ // from.
+ repeated CmsContent cms_sources = 13
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The resource names of the
+ // [ContentBundles][google.ads.admanager.v1.ContentBundle] of
+ // which this `Content` is a member.
+ repeated string content_bundles = 14 [
+ (google.api.field_behavior) = OUTPUT_ONLY,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/ContentBundle"
+ }
+ ];
+
+ // Output only. The resource names of the [CmsMetadataValues]
+ // [google.ads.admanager.v1.CmsMetadataValue] that
+ // are associated with this `Content`.
+ repeated string cms_metadata_values = 15 [
+ (google.api.field_behavior) = OUTPUT_ONLY,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/CmsMetadataValue"
+ }
+ ];
+
+ // Output only. The duration of the `Content`.
+ optional google.protobuf.Duration duration = 16
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+}
+
+// Represents an error associated with a Dynamic Ad Insertion (DAI) `Content`'s
+// status.
+message DaiIngestError {
+ // The error associated with the content.
+ optional DaiIngestErrorReasonEnum.DaiIngestErrorReason reason = 1;
+
+ // Output only. The field, if any, that triggered the error.
+ optional string trigger = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
+}
+
+// Contains information about the `Content` from the CMS it was ingested from.
+message CmsContent {
+ // Output only. The resource name of the
+ // [ContentSource][google.ads.admanager.v1.ContentSource] this
+ // content was ingested from.
+ optional string content_source = 1 [
+ (google.api.field_behavior) = OUTPUT_ONLY,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/ContentSource"
+ }
+ ];
+
+ // Output only. The display name of the
+ // [ContentSource][google.ads.admanager.v1.ContentSource] this
+ // content was ingested from.
+ optional string content_source_display_name = 2
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // The ID of the `Content` in the CMS. This ID will be a 3rd party ID,
+ // usually the ID of the content in a CMS (Content Management System).
+ optional string cms_content_id = 3;
}
diff --git a/google/ads/admanager/v1/content_service.proto b/google/ads/admanager/v1/content_service.proto
index fb5dc04832..b61de5f4ae 100644
--- a/google/ads/admanager/v1/content_service.proto
+++ b/google/ads/admanager/v1/content_service.proto
@@ -37,7 +37,7 @@ service ContentService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `Content` object.
+ // Retrieves a `Content` object.
rpc GetContent(GetContentRequest) returns (Content) {
option (google.api.http) = {
get: "/v1/{name=networks/*/content/*}"
@@ -45,7 +45,7 @@ service ContentService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `Content` objects.
+ // Lists `Content` objects.
rpc ListContent(ListContentRequest) returns (ListContentResponse) {
option (google.api.http) = {
get: "/v1/{parent=networks/*}/content"
@@ -96,8 +96,21 @@ message ListContentRequest {
//
// Filterable fields:
//
+ // cmsMetadataValues
+ // cmsSources.contentSource
+ // cmsSources.contentSourceDisplayName
+ // contentBundles
+ // contentStatusSource
+ // dashIngestStatus
// displayName
+ // duration
+ // hlsIngestStatus
+ // importTime
+ // lastDashIngestTime
+ // lastHlsIngestTime
// name
+ // status
+ // updateTime
//
string filter = 4 [(google.api.field_behavior) = OPTIONAL];
diff --git a/google/ads/admanager/v1/creative_template_service.proto b/google/ads/admanager/v1/creative_template_service.proto
index 2e460bf042..c6c910888a 100644
--- a/google/ads/admanager/v1/creative_template_service.proto
+++ b/google/ads/admanager/v1/creative_template_service.proto
@@ -37,7 +37,7 @@ service CreativeTemplateService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `CreativeTemplate` object.
+ // Retrieves a `CreativeTemplate` object.
rpc GetCreativeTemplate(GetCreativeTemplateRequest)
returns (CreativeTemplate) {
option (google.api.http) = {
@@ -46,7 +46,7 @@ service CreativeTemplateService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `CreativeTemplate` objects.
+ // Lists `CreativeTemplate` objects.
rpc ListCreativeTemplates(ListCreativeTemplatesRequest)
returns (ListCreativeTemplatesResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/custom_field_service.proto b/google/ads/admanager/v1/custom_field_service.proto
index 48359427e8..c62a5b0ca6 100644
--- a/google/ads/admanager/v1/custom_field_service.proto
+++ b/google/ads/admanager/v1/custom_field_service.proto
@@ -38,7 +38,7 @@ service CustomFieldService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `CustomField` object.
+ // Retrieves a `CustomField` object.
rpc GetCustomField(GetCustomFieldRequest) returns (CustomField) {
option (google.api.http) = {
get: "/v1/{name=networks/*/customFields/*}"
@@ -46,7 +46,7 @@ service CustomFieldService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `CustomField` objects.
+ // Lists `CustomField` objects.
rpc ListCustomFields(ListCustomFieldsRequest)
returns (ListCustomFieldsResponse) {
option (google.api.http) = {
@@ -55,7 +55,7 @@ service CustomFieldService {
option (google.api.method_signature) = "parent";
}
- // API to create a `CustomField` object.
+ // Creates a `CustomField` object.
rpc CreateCustomField(CreateCustomFieldRequest) returns (CustomField) {
option (google.api.http) = {
post: "/v1/{parent=networks/*}/customFields"
@@ -64,7 +64,7 @@ service CustomFieldService {
option (google.api.method_signature) = "parent,custom_field";
}
- // API to batch create `CustomField` objects.
+ // Creates `CustomField` objects.
rpc BatchCreateCustomFields(BatchCreateCustomFieldsRequest)
returns (BatchCreateCustomFieldsResponse) {
option (google.api.http) = {
@@ -74,7 +74,7 @@ service CustomFieldService {
option (google.api.method_signature) = "parent,requests";
}
- // API to update a `CustomField` object.
+ // Updates a `CustomField` object.
rpc UpdateCustomField(UpdateCustomFieldRequest) returns (CustomField) {
option (google.api.http) = {
patch: "/v1/{custom_field.name=networks/*/customFields/*}"
@@ -83,7 +83,7 @@ service CustomFieldService {
option (google.api.method_signature) = "custom_field,update_mask";
}
- // API to batch update `CustomField` objects.
+ // Batch updates `CustomField` objects.
rpc BatchUpdateCustomFields(BatchUpdateCustomFieldsRequest)
returns (BatchUpdateCustomFieldsResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/custom_targeting_key_service.proto b/google/ads/admanager/v1/custom_targeting_key_service.proto
index 2caed59513..30f3ba91da 100644
--- a/google/ads/admanager/v1/custom_targeting_key_service.proto
+++ b/google/ads/admanager/v1/custom_targeting_key_service.proto
@@ -38,7 +38,7 @@ service CustomTargetingKeyService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `CustomTargetingKey` object.
+ // Retrieves a `CustomTargetingKey` object.
rpc GetCustomTargetingKey(GetCustomTargetingKeyRequest)
returns (CustomTargetingKey) {
option (google.api.http) = {
@@ -47,7 +47,7 @@ service CustomTargetingKeyService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `CustomTargetingKey` objects.
+ // Lists `CustomTargetingKey` objects.
rpc ListCustomTargetingKeys(ListCustomTargetingKeysRequest)
returns (ListCustomTargetingKeysResponse) {
option (google.api.http) = {
@@ -56,7 +56,7 @@ service CustomTargetingKeyService {
option (google.api.method_signature) = "parent";
}
- // API to create a `CustomTargetingKey` object.
+ // Creates a `CustomTargetingKey` object.
rpc CreateCustomTargetingKey(CreateCustomTargetingKeyRequest)
returns (CustomTargetingKey) {
option (google.api.http) = {
@@ -66,7 +66,7 @@ service CustomTargetingKeyService {
option (google.api.method_signature) = "parent,custom_targeting_key";
}
- // API to batch create `CustomTargetingKey` objects.
+ // Creates `CustomTargetingKey` objects.
rpc BatchCreateCustomTargetingKeys(BatchCreateCustomTargetingKeysRequest)
returns (BatchCreateCustomTargetingKeysResponse) {
option (google.api.http) = {
@@ -76,7 +76,7 @@ service CustomTargetingKeyService {
option (google.api.method_signature) = "parent,requests";
}
- // API to update a `CustomTargetingKey` object.
+ // Updates a `CustomTargetingKey` object.
rpc UpdateCustomTargetingKey(UpdateCustomTargetingKeyRequest)
returns (CustomTargetingKey) {
option (google.api.http) = {
@@ -86,7 +86,7 @@ service CustomTargetingKeyService {
option (google.api.method_signature) = "custom_targeting_key,update_mask";
}
- // API to batch update `CustomTargetingKey` objects.
+ // Batch updates `CustomTargetingKey` objects.
rpc BatchUpdateCustomTargetingKeys(BatchUpdateCustomTargetingKeysRequest)
returns (BatchUpdateCustomTargetingKeysResponse) {
option (google.api.http) = {
@@ -96,7 +96,7 @@ service CustomTargetingKeyService {
option (google.api.method_signature) = "parent,requests";
}
- // API to batch activate `CustomTargetingKey` objects.
+ // Batch activates `CustomTargetingKey` objects.
rpc BatchActivateCustomTargetingKeys(BatchActivateCustomTargetingKeysRequest)
returns (BatchActivateCustomTargetingKeysResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/custom_targeting_value_service.proto b/google/ads/admanager/v1/custom_targeting_value_service.proto
index d4a8acc7ed..90b85e2615 100644
--- a/google/ads/admanager/v1/custom_targeting_value_service.proto
+++ b/google/ads/admanager/v1/custom_targeting_value_service.proto
@@ -21,6 +21,7 @@ import "google/api/annotations.proto";
import "google/api/client.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
+import "google/protobuf/field_mask.proto";
option csharp_namespace = "Google.Ads.AdManager.V1";
option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
@@ -37,7 +38,7 @@ service CustomTargetingValueService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `CustomTargetingValue` object.
+ // Retrieves a `CustomTargetingValue` object.
rpc GetCustomTargetingValue(GetCustomTargetingValueRequest)
returns (CustomTargetingValue) {
option (google.api.http) = {
@@ -49,7 +50,7 @@ service CustomTargetingValueService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `CustomTargetingValue` objects.
+ // Lists `CustomTargetingValue` objects.
rpc ListCustomTargetingValues(ListCustomTargetingValuesRequest)
returns (ListCustomTargetingValuesResponse) {
option (google.api.http) = {
@@ -60,6 +61,68 @@ service CustomTargetingValueService {
};
option (google.api.method_signature) = "parent";
}
+
+ // Creates a `CustomTargetingValue` object.
+ rpc CreateCustomTargetingValue(CreateCustomTargetingValueRequest)
+ returns (CustomTargetingValue) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/customTargetingValues"
+ body: "custom_targeting_value"
+ };
+ option (google.api.method_signature) = "parent,custom_targeting_value";
+ }
+
+ // Creates `CustomTargetingValue` objects.
+ rpc BatchCreateCustomTargetingValues(BatchCreateCustomTargetingValuesRequest)
+ returns (BatchCreateCustomTargetingValuesResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/customTargetingValues:batchCreate"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,requests";
+ }
+
+ // Updates a `CustomTargetingValue` object.
+ rpc UpdateCustomTargetingValue(UpdateCustomTargetingValueRequest)
+ returns (CustomTargetingValue) {
+ option (google.api.http) = {
+ patch: "/v1/{custom_targeting_value.name=networks/*/customTargetingValues/*}"
+ body: "custom_targeting_value"
+ };
+ option (google.api.method_signature) = "custom_targeting_value,update_mask";
+ }
+
+ // Batch updates `CustomTargetingValue` objects.
+ rpc BatchUpdateCustomTargetingValues(BatchUpdateCustomTargetingValuesRequest)
+ returns (BatchUpdateCustomTargetingValuesResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/customTargetingValues:batchUpdate"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,requests";
+ }
+
+ // Batch activates `CustomTargetingValue` objects.
+ rpc BatchActivateCustomTargetingValues(
+ BatchActivateCustomTargetingValuesRequest)
+ returns (BatchActivateCustomTargetingValuesResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/customTargetingValues:batchActivate"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,requests";
+ }
+
+ // Deactivates a list of `CustomTargetingValue` objects.
+ rpc BatchDeactivateCustomTargetingValues(
+ BatchDeactivateCustomTargetingValuesRequest)
+ returns (BatchDeactivateCustomTargetingValuesResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/customTargetingValues:batchDeactivate"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,requests";
+ }
}
// Request object for `GetCustomTargetingValue` method.
@@ -149,3 +212,149 @@ message ListCustomTargetingValuesResponse {
// https://developers.google.com/ad-manager/api/beta/field-masks
int32 total_size = 3;
}
+
+// Request object for `CreateCustomTargetingValue` method.
+message CreateCustomTargetingValueRequest {
+ // Required. The parent, which owns this collection of CustomTargetingValues.
+ // Format:
+ // `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The `CustomTargetingValue` to create.
+ CustomTargetingValue custom_targeting_value = 2
+ [(google.api.field_behavior) = REQUIRED];
+}
+
+// Request object for `BatchCreateCustomTargetingValues` method.
+message BatchCreateCustomTargetingValuesRequest {
+ // Required. The parent, which owns this collection of CustomTargetingValues.
+ // Format:
+ // `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The `CustomTargetingValue` objects to create.
+ // A maximum of 100 objects can be created in a batch.
+ repeated CreateCustomTargetingValueRequest requests = 2
+ [(google.api.field_behavior) = REQUIRED];
+}
+
+// Response object for `BatchCreateCustomTargetingValues` method.
+message BatchCreateCustomTargetingValuesResponse {
+ // The `CustomTargetingValue` objects created.
+ repeated CustomTargetingValue custom_targeting_values = 1;
+}
+
+// Request object for `UpdateCustomTargetingValue` method.
+message UpdateCustomTargetingValueRequest {
+ // Required. The `CustomTargetingValue` to update.
+ //
+ // The `CustomTargetingValue`'s `name` is used to identify the
+ // `CustomTargetingValue` to update.
+ CustomTargetingValue custom_targeting_value = 1
+ [(google.api.field_behavior) = REQUIRED];
+
+ // Optional. The list of fields to update.
+ google.protobuf.FieldMask update_mask = 2
+ [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Request object for `BatchUpdateCustomTargetingValues` method.
+message BatchUpdateCustomTargetingValuesRequest {
+ // Required. The parent, which owns this collection of CustomTargetingValues.
+ // Format:
+ // `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The `CustomTargetingValue` objects to update.
+ // A maximum of 100 objects can be updated in a batch.
+ repeated UpdateCustomTargetingValueRequest requests = 2
+ [(google.api.field_behavior) = REQUIRED];
+}
+
+// Response object for `BatchUpdateCustomTargetingValues` method.
+message BatchUpdateCustomTargetingValuesResponse {
+ // The `CustomTargetingValue` objects updated.
+ repeated CustomTargetingValue custom_targeting_values = 1;
+}
+
+// Request message to activate a CustomTargetingValue.
+message ActivateCustomTargetingValueRequest {
+ // Required. The resource name of the CustomTargetingValue.
+ // Format:
+ // `networks/{network_code}/customTargetingValues/{custom_targeting_value_id}`
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/CustomTargetingValue"
+ }
+ ];
+}
+
+// Request object for `BatchActivateCustomTargetingValues` method.
+message BatchActivateCustomTargetingValuesRequest {
+ // Required. The parent, which owns this collection of CustomTargetingValues.
+ // Format:
+ // `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The `CustomTargetingValue` objects to activate.
+ // A maximum of 100 objects can be activated in a batch.
+ repeated ActivateCustomTargetingValueRequest requests = 2
+ [(google.api.field_behavior) = REQUIRED];
+}
+
+// Response object for `BatchActivateCustomTargetingValues` method.
+message BatchActivateCustomTargetingValuesResponse {}
+
+// Request message to deactivate a CustomTargetingValue.
+message DeactivateCustomTargetingValueRequest {
+ // Required. The resource name of the CustomTargetingValue.
+ // Format:
+ // `networks/{network_code}/customTargetingValues/{custom_targeting_value_id}`
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/CustomTargetingValue"
+ }
+ ];
+}
+
+// Request message for `BatchDeactivateCustomTargetingValues` method.
+message BatchDeactivateCustomTargetingValuesRequest {
+ // Required. The parent, which owns this collection of CustomTargetingValues.
+ // Format:
+ // `networks/{network_code}/`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The `CustomTargetingValue` objects to deactivate.
+ repeated DeactivateCustomTargetingValueRequest requests = 2
+ [(google.api.field_behavior) = REQUIRED];
+}
+
+// Response object for `BatchDeactivateCustomTargetingValues` method.
+message BatchDeactivateCustomTargetingValuesResponse {}
diff --git a/google/ads/admanager/v1/deal_priority_tier_enum.proto b/google/ads/admanager/v1/deal_priority_tier_enum.proto
new file mode 100644
index 0000000000..ad410021d0
--- /dev/null
+++ b/google/ads/admanager/v1/deal_priority_tier_enum.proto
@@ -0,0 +1,65 @@
+// 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.admanager.v1;
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "DealPriorityTierEnumProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Wrapper message for
+// [DealPriorityTier][google.ads.admanager.v1.DealPriorityTierEnum.DealPriorityTier].
+message DealPriorityTierEnum {
+ // Priority tier of non guaranteed deal products.
+ enum DealPriorityTier {
+ // No value specified.
+ DEAL_PRIORITY_TIER_UNSPECIFIED = 0;
+
+ // Tier 1
+ TIER1 = 1;
+
+ // Tier 2
+ TIER2 = 2;
+
+ // Tier 3
+ TIER3 = 3;
+
+ // Tier 4
+ TIER4 = 4;
+
+ // Tier 5
+ TIER5 = 5;
+
+ // Tier 6
+ TIER6 = 6;
+
+ // Tier 7
+ TIER7 = 7;
+
+ // Tier 8
+ TIER8 = 8;
+
+ // Tier 9
+ TIER9 = 9;
+
+ // Open Auction optimized tier
+ OPTIMIZED = 1000;
+ }
+}
diff --git a/google/ads/admanager/v1/device_capability_service.proto b/google/ads/admanager/v1/device_capability_service.proto
index 77069efaad..722202cfe2 100644
--- a/google/ads/admanager/v1/device_capability_service.proto
+++ b/google/ads/admanager/v1/device_capability_service.proto
@@ -37,7 +37,7 @@ service DeviceCapabilityService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `DeviceCapability` object.
+ // Retrieves a `DeviceCapability` object.
rpc GetDeviceCapability(GetDeviceCapabilityRequest)
returns (DeviceCapability) {
option (google.api.http) = {
@@ -46,7 +46,7 @@ service DeviceCapabilityService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `DeviceCapability` objects.
+ // Lists `DeviceCapability` objects.
rpc ListDeviceCapabilities(ListDeviceCapabilitiesRequest)
returns (ListDeviceCapabilitiesResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/device_category_service.proto b/google/ads/admanager/v1/device_category_service.proto
index 3ac69a3bf4..b3082ab3b6 100644
--- a/google/ads/admanager/v1/device_category_service.proto
+++ b/google/ads/admanager/v1/device_category_service.proto
@@ -37,7 +37,7 @@ service DeviceCategoryService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `DeviceCategory` object.
+ // Retrieves a `DeviceCategory` object.
rpc GetDeviceCategory(GetDeviceCategoryRequest) returns (DeviceCategory) {
option (google.api.http) = {
get: "/v1/{name=networks/*/deviceCategories/*}"
@@ -45,7 +45,7 @@ service DeviceCategoryService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `DeviceCategory` objects.
+ // Lists `DeviceCategory` objects.
rpc ListDeviceCategories(ListDeviceCategoriesRequest)
returns (ListDeviceCategoriesResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/device_manufacturer_service.proto b/google/ads/admanager/v1/device_manufacturer_service.proto
index f3f19f9db5..2db2d658a8 100644
--- a/google/ads/admanager/v1/device_manufacturer_service.proto
+++ b/google/ads/admanager/v1/device_manufacturer_service.proto
@@ -37,7 +37,7 @@ service DeviceManufacturerService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `DeviceManufacturer` object.
+ // Retrieves a `DeviceManufacturer` object.
rpc GetDeviceManufacturer(GetDeviceManufacturerRequest)
returns (DeviceManufacturer) {
option (google.api.http) = {
@@ -46,7 +46,7 @@ service DeviceManufacturerService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `DeviceManufacturer` objects.
+ // Lists `DeviceManufacturer` objects.
rpc ListDeviceManufacturers(ListDeviceManufacturersRequest)
returns (ListDeviceManufacturersResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/geo_target_service.proto b/google/ads/admanager/v1/geo_target_service.proto
index 9df4c5b83d..86a769253c 100644
--- a/google/ads/admanager/v1/geo_target_service.proto
+++ b/google/ads/admanager/v1/geo_target_service.proto
@@ -37,7 +37,7 @@ service GeoTargetService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `GeoTarget` object.
+ // Retrieves a `GeoTarget` object.
rpc GetGeoTarget(GetGeoTargetRequest) returns (GeoTarget) {
option (google.api.http) = {
get: "/v1/{name=networks/*/geoTargets/*}"
@@ -45,7 +45,7 @@ service GeoTargetService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `GeoTarget` objects.
+ // Lists `GeoTarget` objects.
rpc ListGeoTargets(ListGeoTargetsRequest) returns (ListGeoTargetsResponse) {
option (google.api.http) = {
get: "/v1/{parent=networks/*}/geoTargets"
diff --git a/google/ads/admanager/v1/label_service.proto b/google/ads/admanager/v1/label_service.proto
index 0630c76b9f..9a2a6c4098 100644
--- a/google/ads/admanager/v1/label_service.proto
+++ b/google/ads/admanager/v1/label_service.proto
@@ -38,7 +38,7 @@ service LabelService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `Label` object.
+ // Retrieves a `Label` object.
rpc GetLabel(GetLabelRequest) returns (Label) {
option (google.api.http) = {
get: "/v1/{name=networks/*/labels/*}"
@@ -46,7 +46,7 @@ service LabelService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `Label` objects.
+ // Lists `Label` objects.
rpc ListLabels(ListLabelsRequest) returns (ListLabelsResponse) {
option (google.api.http) = {
get: "/v1/{parent=networks/*}/labels"
@@ -54,7 +54,7 @@ service LabelService {
option (google.api.method_signature) = "parent";
}
- // API to create a `Label` object.
+ // Creates a `Label` object.
rpc CreateLabel(CreateLabelRequest) returns (Label) {
option (google.api.http) = {
post: "/v1/{parent=networks/*}/labels"
@@ -63,7 +63,7 @@ service LabelService {
option (google.api.method_signature) = "parent,label";
}
- // API to batch create `Label` objects.
+ // Creates `Label` objects.
rpc BatchCreateLabels(BatchCreateLabelsRequest)
returns (BatchCreateLabelsResponse) {
option (google.api.http) = {
@@ -73,7 +73,7 @@ service LabelService {
option (google.api.method_signature) = "parent,requests";
}
- // API to update a `Label` object.
+ // Updates a `Label` object.
rpc UpdateLabel(UpdateLabelRequest) returns (Label) {
option (google.api.http) = {
patch: "/v1/{label.name=networks/*/labels/*}"
@@ -82,7 +82,7 @@ service LabelService {
option (google.api.method_signature) = "label,update_mask";
}
- // API to batch update `Label` objects.
+ // Batch updates `Label` objects.
rpc BatchUpdateLabels(BatchUpdateLabelsRequest)
returns (BatchUpdateLabelsResponse) {
option (google.api.http) = {
@@ -92,7 +92,7 @@ service LabelService {
option (google.api.method_signature) = "parent,requests";
}
- // API to activate `Label` objects.
+ // Activates `Label` objects.
rpc BatchActivateLabels(BatchActivateLabelsRequest)
returns (BatchActivateLabelsResponse) {
option (google.api.http) = {
@@ -102,7 +102,7 @@ service LabelService {
option (google.api.method_signature) = "parent,names";
}
- // API to deactivate `Label` objects.
+ // Deactivates `Label` objects.
rpc BatchDeactivateLabels(BatchDeactivateLabelsRequest)
returns (BatchDeactivateLabelsResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/line_item_service.proto b/google/ads/admanager/v1/line_item_service.proto
index ea95c799ea..d7a73936f5 100644
--- a/google/ads/admanager/v1/line_item_service.proto
+++ b/google/ads/admanager/v1/line_item_service.proto
@@ -37,7 +37,7 @@ service LineItemService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `LineItem` object.
+ // Retrieves a `LineItem` object.
rpc GetLineItem(GetLineItemRequest) returns (LineItem) {
option (google.api.http) = {
get: "/v1/{name=networks/*/lineItems/*}"
@@ -45,7 +45,7 @@ service LineItemService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `LineItem` objects.
+ // Lists `LineItem` objects.
rpc ListLineItems(ListLineItemsRequest) returns (ListLineItemsResponse) {
option (google.api.http) = {
get: "/v1/{parent=networks/*}/lineItems"
diff --git a/google/ads/admanager/v1/live_stream_event_enums.proto b/google/ads/admanager/v1/live_stream_event_enums.proto
new file mode 100644
index 0000000000..4ef795c157
--- /dev/null
+++ b/google/ads/admanager/v1/live_stream_event_enums.proto
@@ -0,0 +1,195 @@
+// 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.admanager.v1;
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "LiveStreamEventEnumsProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Wrapper message for
+// [LiveStreamEventStatus][google.ads.admanager.v1.LiveStreamEventStatusEnum.LiveStreamEventStatus]
+message LiveStreamEventStatusEnum {
+ // Describes the status of a LiveStreamEvent object.
+ enum LiveStreamEventStatus {
+ // Default value. This value is unused.
+ LIVE_STREAM_EVENT_STATUS_UNSPECIFIED = 0;
+
+ // Indicates the LiveStreamEvent has been created and is eligible
+ // for streaming.
+ ACTIVE = 1;
+
+ // Indicates that the stream is still being served, but ad insertion should
+ // be paused temporarily.
+ ADS_PAUSED = 2;
+
+ // Indicates the LiveStreamEvent has been archived.
+ ARCHIVED = 3;
+
+ // Indicates the LiveStreamEvent has been paused. This
+ // can be made #ACTIVE at later time.
+ PAUSED = 4;
+ }
+}
+
+// Wrapper message for
+// [AdBreakMarkupType][google.ads.admanager.v1.AdBreakMarkupTypeEnum.AdBreakMarkupType]
+message AdBreakMarkupTypeEnum {
+ // Describes the SCTE ad break markups for a LiveStreamEvent.
+ enum AdBreakMarkupType {
+ // Default value. This value is unused.
+ AD_BREAK_MARKUP_TYPE_UNSPECIFIED = 0;
+
+ // The DATERANGE ad break marker type. This mark up type is only
+ // applicable for HLS live streams.
+ HLS_DATERANGE_SPLICE = 1;
+
+ // The CUE-OUT/CUE-IN ad break marker type. This mark up type is only
+ // applicable for HLS live streams.
+ HLS_EXT_CUE = 2;
+
+ // The CUE (Adobe/Azure Prime Time) ad break marker type. This mark up type
+ // is only applicable for HLS live streams.
+ HLS_PRIMETIME_SPLICE = 3;
+
+ // The SCTE35 Binary Time Signal: Break Start/End ad break marker type. This
+ // mark up type is only applicable for HLS and DASH live streams.
+ SCTE35_BINARY_BREAK_START_END = 4;
+
+ // The SCTE35 Binary Time Signal: Provider Ad Start/End ad break marker
+ // type. This mark up type is only applicable for HLS and DASH live streams.
+ SCTE35_BINARY_PROVIDER_AD_START_END = 5;
+
+ // The SCTE35 Binary Time Signal: Provider Placement Opportunity Start/End
+ // ad break marker type. This mark up type is only applicable for HLS and
+ // DASH live streams.
+ SCTE35_BINARY_PROVIDER_PLACEMENT_OP_START_END = 6;
+
+ // The SCTE35 Binary Splice Insert ad break marker type. This mark up type
+ // is only applicable for HLS and DASH live streams.
+ SCTE35_BINARY_SPLICE_INSERT = 7;
+
+ // The SCTE35 XML Splice In/Out ad break marker type. This markup type is
+ // only applicable for DASH live streams.
+ SCTE35_XML_SPLICE_INSERT = 11;
+ }
+}
+
+// Wrapper message for
+// [LiveStreamEventStreamingFormat][google.ads.admanager.v1.LiveStreamEventStreamingFormatEnum.LiveStreamEventStreamingFormat]
+message LiveStreamEventStreamingFormatEnum {
+ // The LiveStreamEvent streaming format.
+ enum LiveStreamEventStreamingFormat {
+ // Default value. This value is unused.
+ LIVE_STREAM_EVENT_STREAMING_FORMAT_UNSPECIFIED = 0;
+
+ // The format of the live stream media is MPEG-DASH.
+ DASH = 1;
+
+ // The format of the live stream media is HTTP Live Streaming.
+ HLS = 2;
+ }
+}
+
+// Wrapper message for
+// [DynamicAdInsertionType][google.ads.admanager.v1.DynamicAdInsertionTypeEnum.DynamicAdInsertionType]
+message DynamicAdInsertionTypeEnum {
+ // Describes how the live stream will have ads dynamically inserted into
+ // playlists.
+ enum DynamicAdInsertionType {
+ // Default value. This value is unused.
+ DYNAMIC_AD_INSERTION_TYPE_UNSPECIFIED = 0;
+
+ // Content manifest is served by Google DAI. Content and ads are stitched
+ // together into a unique video manifest per user.
+ LINEAR = 1;
+
+ // Ads manifest is served by Google DAI, containing unique ad pod segments
+ // for the video player to switch to from the content stream, or for the
+ // partner to stitch directly into the user content manifest.
+ POD_SERVING_MANIFEST = 2;
+
+ // Content manifest is served by the partner, embedding Google DAI ad
+ // segment URLs which redirect to unique Google DAI ad segments per user.
+ POD_SERVING_REDIRECT = 3;
+ }
+}
+
+// Wrapper message for
+// [HlsSettingsPlaylistType][google.ads.admanager.v1.HlsSettingsPlaylistTypeEnum.HlsSettingsPlaylistType]
+message HlsSettingsPlaylistTypeEnum {
+ // Describes the type of the playlist associated with this live stream. This
+ // is analogous to the EXT-X-PLAYLIST-TYPE HLS tag. Use
+ // HlsSettingsPlaylistType.EVENT for streams with the value
+ // "#EXT-X-PLAYLIST-TYPE:EVENT" and use HlsSettingsPlaylistType.LIVE for
+ // streams without the tag.
+ enum HlsSettingsPlaylistType {
+ // Default value. This value is unused.
+ HLS_SETTINGS_PLAYLIST_TYPE_UNSPECIFIED = 0;
+
+ // The playlist is an event, which means that media segments can only be
+ // added to the end of the playlist. This allows viewers to scrub back to
+ // the beginning of the playlist.
+ EVENT = 1;
+
+ // The playlist is a live stream and there are no restrictions on whether
+ // media segments can be removed from the beginning of the playlist.
+ LIVE = 2;
+ }
+}
+
+// Wrapper message for
+// [HlsMasterPlaylistRefreshType][google.ads.admanager.v1.HlsMasterPlaylistRefreshTypeEnum.HlsMasterPlaylistRefreshType]
+message HlsMasterPlaylistRefreshTypeEnum {
+ // Enumerates the different ways an HLS master playlist on a live stream will
+ // can be refreshed.
+ enum HlsMasterPlaylistRefreshType {
+ // Default value. This value is unused.
+ HLS_MASTER_PLAYLIST_REFRESH_TYPE_UNSPECIFIED = 0;
+
+ // The master playlist will automatically be refreshed.
+ AUTOMATIC = 1;
+
+ // The master playlist will only be refreshed when requested.
+ MANUAL = 2;
+ }
+}
+
+// Wrapper message for
+// [AdBreakFillType][google.ads.admanager.v1.AdBreakFillTypeEnum.AdBreakFillType]
+message AdBreakFillTypeEnum {
+ // Describes what should be used to fill an empty or underfilled ad break
+ // during a live stream.
+ enum AdBreakFillType {
+ // Default value. This value is unused.
+ AD_BREAK_FILL_TYPE_UNSPECIFIED = 0;
+
+ // Ad break should be filled with mostly underlying content. When ad content
+ // can't be aligned with underlying content during transition, the gap will
+ // be bridged with slate to maintain the timeline.
+ MINIMIZE_SLATE = 1;
+
+ // Ad break should be filled with slate.
+ SLATE = 2;
+
+ // Ad break should be filled with underlying content.
+ UNDERLYING_CONTENT = 3;
+ }
+}
diff --git a/google/ads/admanager/v1/live_stream_messages.proto b/google/ads/admanager/v1/live_stream_messages.proto
new file mode 100644
index 0000000000..14bb629340
--- /dev/null
+++ b/google/ads/admanager/v1/live_stream_messages.proto
@@ -0,0 +1,342 @@
+// 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.admanager.v1;
+
+import "google/ads/admanager/v1/live_stream_event_enums.proto";
+import "google/api/field_behavior.proto";
+import "google/api/resource.proto";
+import "google/protobuf/duration.proto";
+import "google/protobuf/timestamp.proto";
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "LiveStreamMessagesProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// A LiveStream encapsulates all the information necessary to enable DAI
+// (Dynamic Ad Insertion) into a live video stream. This includes information
+// such as the start and expected end time of the live stream, the URL of the
+// actual content for Ad Manager to pull and insert ads into, as well as the
+// metadata necessary to generate ad requests during the live stream.
+message LiveStream {
+ option (google.api.resource) = {
+ type: "admanager.googleapis.com/LiveStream"
+ pattern: "networks/{network_code}/liveStreams/{live_stream}"
+ plural: "liveStreams"
+ singular: "liveStream"
+ };
+
+ // Identifier. The resource name of the `LiveStream`.
+ // Format: `networks/{network_code}/liveStreams/{live_stream_id}`
+ string name = 1 [(google.api.field_behavior) = IDENTIFIER];
+
+ // Required. The name of the LiveStream. This value has a maximum length of
+ // 255 characters.
+ optional string display_name = 2 [(google.api.field_behavior) = REQUIRED];
+
+ // Output only. The status of this LiveStream. Live stream events are created
+ // in the
+ // [PAUSED][google.ads.admanager.v1.LiveStreamEventStatusEnum.LiveStreamEventStatus.PAUSED]
+ // state.
+ optional LiveStreamEventStatusEnum.LiveStreamEventStatus status = 3
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The date and time this LiveStream was created.
+ google.protobuf.Timestamp create_time = 4
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The date and time this LiveStream was last modified.
+ google.protobuf.Timestamp update_time = 5
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Optional. The start date and time of this LiveStream. Modifying this
+ // attribute for an active live stream can impact traffic.
+ google.protobuf.Timestamp start_time = 6
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The scheduled end date and time of this LiveStream. This
+ // attribute is required if `unlimitedEndDateTime` is false and ignored if
+ // `unlimitedEndDateTime` is true. Modifying this attribute for an active live
+ // stream can impact traffic.
+ google.protobuf.Timestamp end_time = 7
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Whether the LiveStream has an end time. Defaults to false. If
+ // this field is true, `endDateTime` is ignored.
+ optional bool end_time_unlimited = 8 [(google.api.field_behavior) = OPTIONAL];
+
+ // Required. The list of URLs pointing to the live stream content in Content
+ // Delivery Network. Can be modified when the live stream is in a
+ // [PAUSED][google.ads.admanager.v1.LiveStreamEventStatusEnum.LiveStreamEventStatus.PAUSED]
+ // state.
+ repeated string content_urls = 9 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The list of Ad Manager ad tag URLs generated by the Ad Manager
+ // trafficking workflow that are associated with this live stream. Currently,
+ // the list includes only one element: the master ad tag.
+ repeated string ad_tags = 10 [(google.api.field_behavior) = REQUIRED];
+
+ // Output only. The code used in constructing a live stream master playlist
+ // URL.
+ optional string asset_key = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Optional. Whether the live stream's requests to the IMA SDK API will be
+ // authenticated using the DAI authentication keys.
+ optional bool enable_dai_authentication_keys = 14
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The type of content that should be used to fill an empty ad
+ // break. Defaults to
+ // [SLATE][google.ads.admanager.v1.AdBreakFillTypeEnum.AdBreakFillType.SLATE].
+ optional AdBreakFillTypeEnum.AdBreakFillType ad_break_fill_type = 15
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The type of content that should be used to fill the time
+ // remaining in the ad break when there are not enough ads to fill the entire
+ // break. Defaults to
+ // [SLATE][google.ads.admanager.v1.AdBreakFillTypeEnum.AdBreakFillType.SLATE].
+ // To set this field a network needs to have the "Live stream ad break
+ // underfill type" feature enabled.
+ optional AdBreakFillTypeEnum.AdBreakFillType underfill_ad_break_fill_type = 16
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The duration, starting from the time the user enters the DAI
+ // stream, for which mid-roll decisioning will be skipped. This field is only
+ // applicable when an ad holiday is requested in the stream create request.
+ // Defaults to 0.
+ optional google.protobuf.Duration ad_holiday_duration = 17
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Whether there will be max filler duration in this live stream. If
+ // true, maxFillerDuration should be specified. Defaults to false.
+ optional bool enable_max_filler_duration = 18
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The maximum duration that can be used to fill this ad pod, either
+ // with a slate or underlying content, depending on your settings. If more
+ // time needs to be filled, the ad pod will instead be dropped and the
+ // underlying content will be served.
+ optional google.protobuf.Duration max_filler_duration = 19
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The duration that can be used when stitching ads for each
+ // livestream event. This attribute is only available for Pod Serving HLS
+ // Segment Redirect and Pod Serving Dash Segment Redirect.
+ optional google.protobuf.Duration pod_serving_segment_duration = 20
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Whether there will be durationless ad breaks in this live stream.
+ // If true, `defaultAdBreakDuration` should be specified. Defaults to false.
+ optional bool enable_durationless_ad_breaks = 21
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The default ad pod duration that will be requested when an ad
+ // break cue-out does not specify a duration. Defaults to 0.
+ optional google.protobuf.Duration default_ad_break_duration = 22
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The list of CdnConfigurations that provide settings for ingesting
+ // and delivering the videos associated with this source. Modifying settings
+ // for an active live stream may break the stream for some users. Exercise
+ // caution.
+ // Format: "networks/{network_code}/cdnConfigs/{cdn_config_id}"
+ repeated string source_content_configurations = 26 [
+ (google.api.field_behavior) = OPTIONAL,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/CdnConfig"
+ }
+ ];
+
+ // Optional. The CdnConfiguration that provide settings for delivering ad
+ // media associated with this source. Format:
+ // "networks/{network_code}/cdnConfigs/{cdn_config_id}"
+ optional string ad_media_delivery_config = 27 [
+ (google.api.field_behavior) = OPTIONAL,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/CdnConfig"
+ }
+ ];
+
+ // Optional. The settings specific to Preroll ad breaks. If
+ // null, this livestream does not have prerolls enabled.
+ PrerollSettings preroll_settings = 28
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The settings that are specific to HTTPS live streaming (HLS)
+ // protocol. If it is not set will use the default HLS settings.
+ HlsSettings hls_settings = 29 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Whether specific allowlisted IP addresses should be used to
+ // access this live stream. Will default to false. To set this field a network
+ // needs to have the "Video live allowlisted IPS enabled" feature enabled.
+ // Modifying this field for an active live stream can impact traffic.
+ optional bool allowlisted_ips_enabled = 30
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Immutable. The method of dynamic ad insertion that is used to insert ads
+ // into this live stream. Defaults to DynamicAdInsertionType.LINEAR.
+ optional DynamicAdInsertionTypeEnum.DynamicAdInsertionType
+ dynamic_ad_insertion_type = 31 [(google.api.field_behavior) = IMMUTABLE];
+
+ // Optional. Whether the served playlists can include relative URLs. Defaults
+ // to false. To set this field a network needs to have the "Video live stream
+ // relative playlist URLs" feature enabled. This field can be modified when
+ // the live stream is in a LiveStreamEventStatus#PAUSED state.
+ optional bool relative_playlist_delivery_enabled = 33
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Immutable. The streaming format of the LiveStream media.
+ optional LiveStreamEventStreamingFormatEnum.LiveStreamEventStreamingFormat
+ streaming_format = 34 [(google.api.field_behavior) = IMMUTABLE];
+
+ // Optional. Indicates whether the option to prefetch ad requests is enabled.
+ optional bool prefetch_enabled = 35 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The information needed to prefetch ad requests for an ad break.
+ PrefetchSettings prefetch_settings = 36
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Whether live stream placement opportunities without `#EXT-CUE-IN`
+ // markers should be force closed. Defaults to false. To set this field a
+ // network needs to have the "Video live stream forced cue in" feature
+ // enabled.
+ optional bool forced_cue_in_enabled = 37
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Whether segments shorter than 1 second at the end of an ad pod
+ // should be dropped. Defaults to false. To set this field a network needs to
+ // have the "Video live stream short segment dropping" feature enabled.
+ optional bool short_segment_dropping_enabled = 38
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Immutable. An additional code that can be used in constructing live stream
+ // event URLs. Can only be set for pod serving live streams. The custom asset
+ // key may be at most 64 characters and can contain alphanumeric characters
+ // and symbols other than the following:
+ // ", ', =, !, +, #, *, ~, ;, ^, (, ), <, >, [, ], the white space character.
+ optional string custom_asset_key = 39
+ [(google.api.field_behavior) = IMMUTABLE];
+
+ // Optional. The formats that will be recognized as ad break start/end
+ // markers. This field is ignored if `adBreakMarkupTypesEnabled` is false.
+ repeated AdBreakMarkupTypeEnum.AdBreakMarkupType ad_break_markups = 42
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Whether this LiveStream is specifying a subset of supported
+ // `adBreakMarkups`. If this field is false, all supported formats will be
+ // treated as ad break start/end markers.
+ optional bool ad_break_markup_types_enabled = 43
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The conditioning to apply to this LiveStream.
+ LiveStreamConditioning live_stream_conditioning = 46
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Indicates whether multi-break scheduling via Early Break
+ // Notification (EBN) is enabled for this LiveStream.
+ optional bool early_break_notification_multi_break_scheduling_enabled = 54
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. The maximum amount of time by which a stitched ad pod is
+ // allowed to be trimmed before whole ads are dropped instead.
+ google.protobuf.Duration ad_pod_trim_tolerance = 55
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Output only. The effective asset key of the live stream. This is the
+ // user-defined custom_asset_key if specified; otherwise, it falls back to the
+ // autogenerated asset_key.
+ optional string effective_asset_key = 56
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Optional. The auxiliary ad tag settings for this live stream.
+ AuxiliaryAdSettings auxiliary_ad_settings = 57
+ [(google.api.field_behavior) = OPTIONAL];
+}
+
+// The information needed to prefetch ad requests for an ad break.
+message PrefetchSettings {
+ // Optional. The duration of the part of the break to be prefetched.
+ optional google.protobuf.Duration stage_one_ad_request_duration = 1
+ [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Settings to specify all types of conditioning to apply to the associated
+// LiveStream.
+message LiveStreamConditioning {
+ // Optional. Specifies DASH Bridge single-period to multi-period MPD
+ // conditioning.
+ DashBridge dash_bridge = 1 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// LiveStream settings that are specific to the HTTP live streaming (HLS)
+// protocol.
+message HlsSettings {
+ // Immutable. Indicates the type of the playlist associated with this live
+ // stream. The playlist type is analogous to the `EXT-X-PLAYLIST-TYPE` HLS
+ // tag. Will default to
+ // [LIVE][google.ads.admanager.v1.HlsSettingsPlaylistTypeEnum.HlsSettingsPlaylistType.LIVE].
+ optional HlsSettingsPlaylistTypeEnum.HlsSettingsPlaylistType playlist_type = 1
+ [(google.api.field_behavior) = IMMUTABLE];
+
+ // Optional. The settings for the master playlist. If it is
+ // not set will default to a `MasterPlaylistSettings` with a refresh type of
+ // [AUTOMATIC][google.ads.admanager.v1.HlsMasterPlaylistRefreshTypeEnum.HlsMasterPlaylistRefreshType.AUTOMATIC].
+ MasterPlaylistSettings master_playlist_settings = 2
+ [(google.api.field_behavior) = OPTIONAL];
+}
+
+// A DashBridge is used to decide when to apply DASH Bridge single-period to
+// multi-period MPD conditioning. This should always be enabled when the DASH
+// manifest type is single-period.
+message DashBridge {
+ // Optional. Specifies whether to apply DASH Bridge single-period to
+ // multi-period MPD conditioning.
+ optional bool enabled = 2 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Settings for ad breaks on a livestream that are specific to preroll.
+message PrerollSettings {
+ // Required. The Ad Manager ad tag URL generated by the Ad Manager trafficking
+ // workflow that is associated with this live stream.
+ optional string ad_tag = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. The maximum duration for an ad break.
+ optional google.protobuf.Duration max_ad_pod_duration = 2
+ [(google.api.field_behavior) = REQUIRED];
+}
+
+// Settings for auxiliary ads (e.g. pause ads) on a live stream.
+message AuxiliaryAdSettings {
+ // Required. The ad tag URL used to request auxiliary ads (such as pause ads).
+ // This can be a Google Ad Manager ad tag or a third-party ad tag.
+ // Publishers are responsible for ensuring the correctness of the URL.
+ optional string ad_tag_url = 1 [(google.api.field_behavior) = REQUIRED];
+}
+
+// Settings for the HLS (HTTP Live Streaming) master playlist.
+message MasterPlaylistSettings {
+ // Optional. Indicates how the master playlist gets refreshed. Defaults to
+ // [AUTOMATIC][google.ads.admanager.v1.HlsMasterPlaylistRefreshTypeEnum.HlsMasterPlaylistRefreshType.AUTOMATIC].
+ // This field can only be modified when the live stream is in a
+ // [PAUSED][google.ads.admanager.v1.LiveStreamEventStatusEnum.LiveStreamEventStatus.PAUSED]
+ // state.
+ optional HlsMasterPlaylistRefreshTypeEnum.HlsMasterPlaylistRefreshType
+ refresh_type = 1 [(google.api.field_behavior) = OPTIONAL];
+}
diff --git a/google/ads/admanager/v1/live_stream_service.proto b/google/ads/admanager/v1/live_stream_service.proto
new file mode 100644
index 0000000000..96683cdf16
--- /dev/null
+++ b/google/ads/admanager/v1/live_stream_service.proto
@@ -0,0 +1,428 @@
+// 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.admanager.v1;
+
+import "google/ads/admanager/v1/live_stream_messages.proto";
+import "google/api/annotations.proto";
+import "google/api/client.proto";
+import "google/api/field_behavior.proto";
+import "google/api/resource.proto";
+import "google/protobuf/field_mask.proto";
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "LiveStreamServiceProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Provides methods for handling `LiveStream` objects.
+service LiveStreamService {
+ option (google.api.default_host) = "admanager.googleapis.com";
+ option (google.api.oauth_scopes) =
+ "https://www.googleapis.com/auth/admanager,"
+ "https://www.googleapis.com/auth/admanager.readonly";
+
+ // Retrieves a `LiveStream` object.
+ rpc GetLiveStream(GetLiveStreamRequest) returns (LiveStream) {
+ option (google.api.http) = {
+ get: "/v1/{name=networks/*/liveStreams/*}"
+ };
+ option (google.api.method_signature) = "name";
+ }
+
+ // Lists `LiveStream` objects.
+ rpc ListLiveStreams(ListLiveStreamsRequest)
+ returns (ListLiveStreamsResponse) {
+ option (google.api.http) = {
+ get: "/v1/{parent=networks/*}/liveStreams"
+ };
+ option (google.api.method_signature) = "parent";
+ }
+
+ // Creates a `LiveStream` object.
+ rpc CreateLiveStream(CreateLiveStreamRequest) returns (LiveStream) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/liveStreams"
+ body: "live_stream"
+ };
+ option (google.api.method_signature) = "parent,live_stream";
+ }
+
+ // Batch creates `LiveStream` objects.
+ rpc BatchCreateLiveStreams(BatchCreateLiveStreamsRequest)
+ returns (BatchCreateLiveStreamsResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/liveStreams:batchCreate"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,requests";
+ }
+
+ // Updates a `LiveStream` object.
+ rpc UpdateLiveStream(UpdateLiveStreamRequest) returns (LiveStream) {
+ option (google.api.http) = {
+ patch: "/v1/{live_stream.name=networks/*/liveStreams/*}"
+ body: "live_stream"
+ };
+ option (google.api.method_signature) = "live_stream,update_mask";
+ }
+
+ // Batch updates `LiveStream` objects.
+ rpc BatchUpdateLiveStreams(BatchUpdateLiveStreamsRequest)
+ returns (BatchUpdateLiveStreamsResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/liveStreams:batchUpdate"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,requests";
+ }
+
+ // Batch activates `LiveStream` objects.
+ rpc BatchActivateLiveStreams(BatchActivateLiveStreamsRequest)
+ returns (BatchActivateLiveStreamsResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/liveStreams:batchActivate"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,names";
+ }
+
+ // Batch pauses `LiveStream` objects.
+ rpc BatchPauseLiveStreams(BatchPauseLiveStreamsRequest)
+ returns (BatchPauseLiveStreamsResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/liveStreams:batchPause"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,names";
+ }
+
+ // Batch archives `LiveStream` objects.
+ rpc BatchArchiveLiveStreams(BatchArchiveLiveStreamsRequest)
+ returns (BatchArchiveLiveStreamsResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/liveStreams:batchArchive"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,names";
+ }
+
+ // Batch pauses ads on `LiveStream` objects.
+ rpc BatchPauseAdsLiveStreams(BatchPauseAdsLiveStreamsRequest)
+ returns (BatchPauseAdsLiveStreamsResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/liveStreams:batchPauseAds"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,names";
+ }
+
+ // Batch refreshes master playlists on `LiveStream` objects.
+ rpc BatchRefreshMasterPlaylists(BatchRefreshMasterPlaylistsRequest)
+ returns (BatchRefreshMasterPlaylistsResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/liveStreams:batchRefreshMasterPlaylists"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,names";
+ }
+}
+
+// Request object for `GetLiveStream` method.
+message GetLiveStreamRequest {
+ // Required. The resource name of the LiveStream.
+ // Format: `networks/{network_code}/liveStreams/{live_stream_id}`
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/LiveStream"
+ }
+ ];
+}
+
+// Request object for `ListLiveStreams` method.
+message ListLiveStreamsRequest {
+ // Required. The parent, which owns this collection of LiveStreams.
+ // Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Optional. The maximum number of `LiveStreams` to return. The service may
+ // return fewer than this value. If unspecified, at most 50 `LiveStreams` will
+ // be returned. The maximum value is 1000; values greater than 1000 will be
+ // coerced to 1000.
+ int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. A page token, received from a previous `ListLiveStreams` call.
+ // Provide this to retrieve the subsequent page.
+ //
+ // When paginating, all other parameters provided to `ListLiveStreams` must
+ // match the call that provided the page token.
+ string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Expression to filter the response.
+ // See syntax details at
+ // https://developers.google.com/ad-manager/api/beta/filters
+ //
+ // Filterable fields:
+ //
+ // assetKey
+ // createTime
+ // customAssetKey
+ // displayName
+ // dynamicAdInsertionType
+ // effectiveAssetKey
+ // endTime
+ // sourceContentConfigurations
+ // startTime
+ // status
+ // streamingFormat
+ // updateTime
+ //
+ string filter = 4 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Expression to specify sorting order.
+ // See syntax details at
+ // https://developers.google.com/ad-manager/api/beta/filters#order
+ string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Number of individual resources to skip while paginating.
+ int32 skip = 6 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Response object for `ListLiveStreamsRequest` containing matching `LiveStream`
+// objects.
+message ListLiveStreamsResponse {
+ // The `LiveStream` objects from the specified network.
+ repeated LiveStream live_streams = 1;
+
+ // A token, which can be sent as `page_token` to retrieve the next page.
+ // If this field is omitted, there are no subsequent pages.
+ string next_page_token = 2;
+
+ // Total number of `LiveStream` objects.
+ // If a filter was included in the request, this reflects the total number
+ // after the filtering is applied.
+ //
+ // `total_size` won't be calculated in the response unless it has been
+ // included in a response field mask. The response field mask can be provided
+ // to the method by using the URL parameter `$fields` or `fields`, or by using
+ // the HTTP/gRPC header `X-Goog-FieldMask`.
+ //
+ // For more information, see
+ // https://developers.google.com/ad-manager/api/beta/field-masks
+ int32 total_size = 3;
+}
+
+// Request object for `CreateLiveStream` method.
+message CreateLiveStreamRequest {
+ // Required. The parent resource where this `LiveStream` will be created.
+ // Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The `LiveStream` to create.
+ LiveStream live_stream = 2 [(google.api.field_behavior) = REQUIRED];
+}
+
+// Request object for `BatchCreateLiveStreams` method.
+message BatchCreateLiveStreamsRequest {
+ // Required. The parent resource where `LiveStreams` will be created.
+ // Format: `networks/{network_code}`
+ // The parent field in the CreateLiveStreamRequest must match this
+ // field.
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The `LiveStream` objects to create.
+ // A maximum of 100 objects can be created in a batch.
+ repeated CreateLiveStreamRequest requests = 2
+ [(google.api.field_behavior) = REQUIRED];
+}
+
+// Response object for `BatchCreateLiveStreams` method.
+message BatchCreateLiveStreamsResponse {
+ // The `LiveStream` objects created.
+ repeated LiveStream live_streams = 1;
+}
+
+// Request object for `UpdateLiveStream` method.
+message UpdateLiveStreamRequest {
+ // Required. The `LiveStream` to update.
+ //
+ // The `LiveStream`'s `name` is used to identify the `LiveStream` to update.
+ LiveStream live_stream = 1 [(google.api.field_behavior) = REQUIRED];
+
+ // Optional. The list of fields to update.
+ google.protobuf.FieldMask update_mask = 2
+ [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Request object for `BatchUpdateLiveStreams` method.
+message BatchUpdateLiveStreamsRequest {
+ // Required. The parent resource where `LiveStreams` will be updated.
+ // Format: `networks/{network_code}`
+ // The parent field in the UpdateLiveStreamRequest must match this
+ // field.
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The `LiveStream` objects to update.
+ // A maximum of 100 objects can be updated in a batch.
+ repeated UpdateLiveStreamRequest requests = 2
+ [(google.api.field_behavior) = REQUIRED];
+}
+
+// Response object for `BatchUpdateLiveStreams` method.
+message BatchUpdateLiveStreamsResponse {
+ // The `LiveStream` objects updated.
+ repeated LiveStream live_streams = 1;
+}
+
+// Request object for `BatchActivateLiveStreams` method.
+message BatchActivateLiveStreamsRequest {
+ // Required. Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The resource names of the `LiveStream`s to activate.
+ // Format: `networks/{network_code}/liveStreams/{live_stream_id}`
+ repeated string names = 2 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/LiveStream"
+ }
+ ];
+}
+
+// Response object for `BatchActivateLiveStreams` method.
+message BatchActivateLiveStreamsResponse {}
+
+// Request object for `BatchPauseLiveStreams` method.
+message BatchPauseLiveStreamsRequest {
+ // Required. Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The resource names of the `LiveStream`s to pause.
+ // Format: `networks/{network_code}/liveStreams/{live_stream_id}`
+ repeated string names = 2 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/LiveStream"
+ }
+ ];
+}
+
+// Response object for `BatchPauseLiveStreams` method.
+message BatchPauseLiveStreamsResponse {}
+
+// Request object for `BatchArchiveLiveStreams` method.
+message BatchArchiveLiveStreamsRequest {
+ // Required. Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The resource names of the `LiveStream`s to archive.
+ // Format: `networks/{network_code}/liveStreams/{live_stream_id}`
+ repeated string names = 2 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/LiveStream"
+ }
+ ];
+}
+
+// Response object for `BatchArchiveLiveStreams` method.
+message BatchArchiveLiveStreamsResponse {}
+
+// Request object for `BatchPauseAdsLiveStreams` method.
+message BatchPauseAdsLiveStreamsRequest {
+ // Required. Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The resource names of the `LiveStream`s to pause ads on.
+ // Format: `networks/{network_code}/liveStreams/{live_stream_id}`
+ repeated string names = 2 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/LiveStream"
+ }
+ ];
+}
+
+// Response object for `BatchPauseAdsLiveStreams` method.
+message BatchPauseAdsLiveStreamsResponse {}
+
+// Request object for `BatchRefreshMasterPlaylists` method.
+message BatchRefreshMasterPlaylistsRequest {
+ // Required. Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The resource names of the `LiveStream`s to refresh master
+ // playlists on. Format:
+ // `networks/{network_code}/liveStreams/{live_stream_id}`
+ repeated string names = 2 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/LiveStream"
+ }
+ ];
+}
+
+// Response object for `BatchRefreshMasterPlaylists` method.
+message BatchRefreshMasterPlaylistsResponse {}
diff --git a/google/ads/admanager/v1/mobile_carrier_service.proto b/google/ads/admanager/v1/mobile_carrier_service.proto
index afc5e5c227..3f52b2c8cd 100644
--- a/google/ads/admanager/v1/mobile_carrier_service.proto
+++ b/google/ads/admanager/v1/mobile_carrier_service.proto
@@ -37,7 +37,7 @@ service MobileCarrierService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `MobileCarrier` object.
+ // Retrieves a `MobileCarrier` object.
rpc GetMobileCarrier(GetMobileCarrierRequest) returns (MobileCarrier) {
option (google.api.http) = {
get: "/v1/{name=networks/*/mobileCarriers/*}"
@@ -45,7 +45,7 @@ service MobileCarrierService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `MobileCarrier` objects.
+ // Lists `MobileCarrier` objects.
rpc ListMobileCarriers(ListMobileCarriersRequest)
returns (ListMobileCarriersResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/mobile_device_service.proto b/google/ads/admanager/v1/mobile_device_service.proto
index 5c5dd22af2..2dbcd45e55 100644
--- a/google/ads/admanager/v1/mobile_device_service.proto
+++ b/google/ads/admanager/v1/mobile_device_service.proto
@@ -37,7 +37,7 @@ service MobileDeviceService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `MobileDevice` object.
+ // Retrieves a `MobileDevice` object.
rpc GetMobileDevice(GetMobileDeviceRequest) returns (MobileDevice) {
option (google.api.http) = {
get: "/v1/{name=networks/*/mobileDevices/*}"
@@ -45,7 +45,7 @@ service MobileDeviceService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `MobileDevice` objects.
+ // Lists `MobileDevice` objects.
rpc ListMobileDevices(ListMobileDevicesRequest)
returns (ListMobileDevicesResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/mobile_device_submodel_service.proto b/google/ads/admanager/v1/mobile_device_submodel_service.proto
index 4ea1767f1b..5a31da24fc 100644
--- a/google/ads/admanager/v1/mobile_device_submodel_service.proto
+++ b/google/ads/admanager/v1/mobile_device_submodel_service.proto
@@ -37,7 +37,7 @@ service MobileDeviceSubmodelService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `MobileDeviceSubmodel` object.
+ // Retrieves a `MobileDeviceSubmodel` object.
rpc GetMobileDeviceSubmodel(GetMobileDeviceSubmodelRequest)
returns (MobileDeviceSubmodel) {
option (google.api.http) = {
@@ -46,7 +46,7 @@ service MobileDeviceSubmodelService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `MobileDeviceSubmodel` objects.
+ // Lists `MobileDeviceSubmodel` objects.
rpc ListMobileDeviceSubmodels(ListMobileDeviceSubmodelsRequest)
returns (ListMobileDeviceSubmodelsResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/non_guaranteed_deal_priority.proto b/google/ads/admanager/v1/non_guaranteed_deal_priority.proto
new file mode 100644
index 0000000000..2646a57db5
--- /dev/null
+++ b/google/ads/admanager/v1/non_guaranteed_deal_priority.proto
@@ -0,0 +1,37 @@
+// 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.admanager.v1;
+
+import "google/ads/admanager/v1/deal_priority_tier_enum.proto";
+import "google/api/field_behavior.proto";
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "NonGuaranteedDealPriorityProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Represents the priority settings to apply to non-guaranteed deals,
+// independently of their types.
+message NonGuaranteedDealPriority {
+ // Required. Enables publishers to favor certain deals, even if their default
+ // priorities are lower. For example, allowing a PA deal to beat a PD deal.
+ optional DealPriorityTierEnum.DealPriorityTier priority_tier = 1
+ [(google.api.field_behavior) = REQUIRED];
+}
diff --git a/google/ads/admanager/v1/operating_system_service.proto b/google/ads/admanager/v1/operating_system_service.proto
index 22934b3bb4..0e595fc466 100644
--- a/google/ads/admanager/v1/operating_system_service.proto
+++ b/google/ads/admanager/v1/operating_system_service.proto
@@ -37,7 +37,7 @@ service OperatingSystemService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `OperatingSystem` object.
+ // Retrieves a `OperatingSystem` object.
rpc GetOperatingSystem(GetOperatingSystemRequest) returns (OperatingSystem) {
option (google.api.http) = {
get: "/v1/{name=networks/*/operatingSystems/*}"
@@ -45,7 +45,7 @@ service OperatingSystemService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `OperatingSystem` objects.
+ // Lists `OperatingSystem` objects.
rpc ListOperatingSystems(ListOperatingSystemsRequest)
returns (ListOperatingSystemsResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/operating_system_version_service.proto b/google/ads/admanager/v1/operating_system_version_service.proto
index fdd049478c..c6fb47b305 100644
--- a/google/ads/admanager/v1/operating_system_version_service.proto
+++ b/google/ads/admanager/v1/operating_system_version_service.proto
@@ -37,7 +37,7 @@ service OperatingSystemVersionService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `OperatingSystemVersion` object.
+ // Retrieves a `OperatingSystemVersion` object.
rpc GetOperatingSystemVersion(GetOperatingSystemVersionRequest)
returns (OperatingSystemVersion) {
option (google.api.http) = {
@@ -46,7 +46,7 @@ service OperatingSystemVersionService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `OperatingSystemVersion` objects.
+ // Lists `OperatingSystemVersion` objects.
rpc ListOperatingSystemVersions(ListOperatingSystemVersionsRequest)
returns (ListOperatingSystemVersionsResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/order_service.proto b/google/ads/admanager/v1/order_service.proto
index 754b30896e..46f52b946d 100644
--- a/google/ads/admanager/v1/order_service.proto
+++ b/google/ads/admanager/v1/order_service.proto
@@ -37,7 +37,7 @@ service OrderService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve an Order object.
+ // Retrieves an `Order` object.
rpc GetOrder(GetOrderRequest) returns (Order) {
option (google.api.http) = {
get: "/v1/{name=networks/*/orders/*}"
@@ -45,7 +45,7 @@ service OrderService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `Order` objects.
+ // Lists `Order` objects.
//
// Fields used for literal matching in filter string:
// * `order_id`
diff --git a/google/ads/admanager/v1/placement_service.proto b/google/ads/admanager/v1/placement_service.proto
index 24bedc0c0c..d1361f2f8f 100644
--- a/google/ads/admanager/v1/placement_service.proto
+++ b/google/ads/admanager/v1/placement_service.proto
@@ -38,7 +38,7 @@ service PlacementService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `Placement` object.
+ // Retrieves a `Placement` object.
rpc GetPlacement(GetPlacementRequest) returns (Placement) {
option (google.api.http) = {
get: "/v1/{name=networks/*/placements/*}"
@@ -46,7 +46,7 @@ service PlacementService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `Placement` objects.
+ // Lists `Placement` objects.
rpc ListPlacements(ListPlacementsRequest) returns (ListPlacementsResponse) {
option (google.api.http) = {
get: "/v1/{parent=networks/*}/placements"
@@ -54,7 +54,7 @@ service PlacementService {
option (google.api.method_signature) = "parent";
}
- // API to create an `Placement` object.
+ // Creates an `Placement` object.
rpc CreatePlacement(CreatePlacementRequest) returns (Placement) {
option (google.api.http) = {
post: "/v1/{parent=networks/*}/placements"
@@ -63,7 +63,7 @@ service PlacementService {
option (google.api.method_signature) = "parent,placement";
}
- // API to update an `Placement` object.
+ // Updates an `Placement` object.
rpc UpdatePlacement(UpdatePlacementRequest) returns (Placement) {
option (google.api.http) = {
patch: "/v1/{placement.name=networks/*/placements/*}"
@@ -72,7 +72,7 @@ service PlacementService {
option (google.api.method_signature) = "placement,update_mask";
}
- // API to batch create `Placement` objects.
+ // Creates `Placement` objects.
rpc BatchCreatePlacements(BatchCreatePlacementsRequest)
returns (BatchCreatePlacementsResponse) {
option (google.api.http) = {
@@ -82,7 +82,7 @@ service PlacementService {
option (google.api.method_signature) = "parent,requests";
}
- // API to batch update `Placement` objects.
+ // Batch updates `Placement` objects.
rpc BatchUpdatePlacements(BatchUpdatePlacementsRequest)
returns (BatchUpdatePlacementsResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/private_auction_deal_messages.proto b/google/ads/admanager/v1/private_auction_deal_messages.proto
index cf8ada9127..7e9d1e5afa 100644
--- a/google/ads/admanager/v1/private_auction_deal_messages.proto
+++ b/google/ads/admanager/v1/private_auction_deal_messages.proto
@@ -17,6 +17,7 @@ syntax = "proto3";
package google.ads.admanager.v1;
import "google/ads/admanager/v1/deal_buyer_permission_type_enum.proto";
+import "google/ads/admanager/v1/non_guaranteed_deal_priority.proto";
import "google/ads/admanager/v1/private_marketplace_enums.proto";
import "google/ads/admanager/v1/size.proto";
import "google/ads/admanager/v1/targeting.proto";
@@ -108,6 +109,10 @@ message PrivateAuctionDeal {
// Optional. The buyer data required by the Marketplace API.
optional BuyerData buyer_data = 14 [(google.api.field_behavior) = OPTIONAL];
+ // Optional. The priority of the deal across all non-guaranteed deals.
+ optional NonGuaranteedDealPriority deal_priority = 22
+ [(google.api.field_behavior) = OPTIONAL];
+
// Output only. The instant at which the `PrivateAuctionDeal` was created.
optional google.protobuf.Timestamp create_time = 15
[(google.api.field_behavior) = OUTPUT_ONLY];
diff --git a/google/ads/admanager/v1/private_auction_deal_service.proto b/google/ads/admanager/v1/private_auction_deal_service.proto
index f414d07da3..973fad10f0 100644
--- a/google/ads/admanager/v1/private_auction_deal_service.proto
+++ b/google/ads/admanager/v1/private_auction_deal_service.proto
@@ -38,7 +38,7 @@ service PrivateAuctionDealService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `PrivateAuctionDeal` object.
+ // Retrieves a `PrivateAuctionDeal` object.
rpc GetPrivateAuctionDeal(GetPrivateAuctionDealRequest)
returns (PrivateAuctionDeal) {
option (google.api.http) = {
@@ -47,7 +47,7 @@ service PrivateAuctionDealService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `PrivateAuctionDeal` objects.
+ // Lists `PrivateAuctionDeal` objects.
rpc ListPrivateAuctionDeals(ListPrivateAuctionDealsRequest)
returns (ListPrivateAuctionDealsResponse) {
option (google.api.http) = {
@@ -56,7 +56,7 @@ service PrivateAuctionDealService {
option (google.api.method_signature) = "parent";
}
- // API to create a `PrivateAuctionDeal` object.
+ // Creates a `PrivateAuctionDeal` object.
rpc CreatePrivateAuctionDeal(CreatePrivateAuctionDealRequest)
returns (PrivateAuctionDeal) {
option (google.api.http) = {
@@ -66,7 +66,7 @@ service PrivateAuctionDealService {
option (google.api.method_signature) = "parent,private_auction_deal";
}
- // API to update a `PrivateAuctionDeal` object.
+ // Updates a `PrivateAuctionDeal` object.
rpc UpdatePrivateAuctionDeal(UpdatePrivateAuctionDealRequest)
returns (PrivateAuctionDeal) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/private_auction_service.proto b/google/ads/admanager/v1/private_auction_service.proto
index d38858d993..33bbbb2aab 100644
--- a/google/ads/admanager/v1/private_auction_service.proto
+++ b/google/ads/admanager/v1/private_auction_service.proto
@@ -38,7 +38,7 @@ service PrivateAuctionService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `PrivateAuction` object.
+ // Retrieves a `PrivateAuction` object.
rpc GetPrivateAuction(GetPrivateAuctionRequest) returns (PrivateAuction) {
option (google.api.http) = {
get: "/v1/{name=networks/*/privateAuctions/*}"
@@ -46,7 +46,7 @@ service PrivateAuctionService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `PrivateAuction` objects.
+ // Lists `PrivateAuction` objects.
rpc ListPrivateAuctions(ListPrivateAuctionsRequest)
returns (ListPrivateAuctionsResponse) {
option (google.api.http) = {
@@ -55,7 +55,7 @@ service PrivateAuctionService {
option (google.api.method_signature) = "parent";
}
- // API to create a `PrivateAuction` object.
+ // Creates a `PrivateAuction` object.
rpc CreatePrivateAuction(CreatePrivateAuctionRequest)
returns (PrivateAuction) {
option (google.api.http) = {
@@ -65,7 +65,7 @@ service PrivateAuctionService {
option (google.api.method_signature) = "parent,private_auction";
}
- // API to update a `PrivateAuction` object.
+ // Updates a `PrivateAuction` object.
rpc UpdatePrivateAuction(UpdatePrivateAuctionRequest)
returns (PrivateAuction) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/programmatic_buyer_service.proto b/google/ads/admanager/v1/programmatic_buyer_service.proto
index bbf0e68867..372c37f610 100644
--- a/google/ads/admanager/v1/programmatic_buyer_service.proto
+++ b/google/ads/admanager/v1/programmatic_buyer_service.proto
@@ -37,7 +37,7 @@ service ProgrammaticBuyerService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `ProgrammaticBuyer` object.
+ // Retrieves a `ProgrammaticBuyer` object.
rpc GetProgrammaticBuyer(GetProgrammaticBuyerRequest)
returns (ProgrammaticBuyer) {
option (google.api.http) = {
@@ -46,7 +46,7 @@ service ProgrammaticBuyerService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `ProgrammaticBuyer` objects.
+ // Lists `ProgrammaticBuyer` objects.
rpc ListProgrammaticBuyers(ListProgrammaticBuyersRequest)
returns (ListProgrammaticBuyersResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/report_definition.proto b/google/ads/admanager/v1/report_definition.proto
index 56fe5833cd..6161a77828 100644
--- a/google/ads/admanager/v1/report_definition.proto
+++ b/google/ads/admanager/v1/report_definition.proto
@@ -500,7 +500,7 @@ message ReportDefinition {
//
//
//
- // Corresponds to "Advertiser domain" in the Ad Manager UI.
+ // Corresponds to "Landing page domain" in the Ad Manager UI.
//
// Compatible with the following report types: `HISTORICAL`
//
@@ -2512,7 +2512,8 @@ message ReportDefinition {
// Corresponds to "Creative or creative set value" in the Ad Manager UI
// (when showing API fields).
//
- // Compatible with the following report types: `HISTORICAL`
+ // Compatible with the following report types: `HISTORICAL`,
+ // `REAL_TIME_VIDEO`
//
// Data format: `ENUM`
CREATIVE_OR_CREATIVE_SET = 682;
@@ -2524,7 +2525,8 @@ message ReportDefinition {
//
// Corresponds to "Creative or creative set" in the Ad Manager UI.
//
- // Compatible with the following report types: `HISTORICAL`
+ // Compatible with the following report types: `HISTORICAL`,
+ // `REAL_TIME_VIDEO`
//
// Data format: `STRING`
CREATIVE_OR_CREATIVE_SET_NAME = 683;
@@ -2929,6 +2931,17 @@ message ReportDefinition {
// Data format: `STRING`
DEAL_NAME = 437;
+ // The declared domain of the advertiser.
+ //
+ //
+ //
+ // Corresponds to "Declared advertiser domain" in the Ad Manager UI.
+ //
+ // Compatible with the following report types: `HISTORICAL`
+ //
+ // Data format: `STRING`
+ DECLARED_ADVERTISER_DOMAIN = 796;
+
// The ID of the secure signals that were sent to the bidder who won the
// impression.
//
@@ -3684,7 +3697,8 @@ message ReportDefinition {
//
// Corresponds to "Key-values ID" in the Ad Manager UI.
//
- // Compatible with the following report types: `HISTORICAL`
+ // Compatible with the following report types: `HISTORICAL`,
+ // `FUTURE_SELL_THROUGH`
//
// Data format: `IDENTIFIER`
KEY_VALUES_ID = 214;
@@ -3695,7 +3709,8 @@ message ReportDefinition {
//
// Corresponds to "Key-values" in the Ad Manager UI.
//
- // Compatible with the following report types: `HISTORICAL`
+ // Compatible with the following report types: `HISTORICAL`,
+ // `FUTURE_SELL_THROUGH`
//
// Data format: `STRING`
KEY_VALUES_NAME = 215;
@@ -3706,7 +3721,7 @@ message ReportDefinition {
//
// Corresponds to "Key-values" in the Ad Manager UI.
//
- // Compatible with the following report types: `FUTURE_SELL_THROUGH`
+ // Compatible with the following report types:
//
// Data format: `STRING_LIST`
KEY_VALUES_SET = 713;
@@ -6407,7 +6422,7 @@ message ReportDefinition {
// Data format: `STRING`
VIDEO_FALLBACK_POSITION = 530;
- // The duration of the ad break in seconds for a live stream event.
+ // The expected duration of the ad break in seconds for a live stream event.
//
//
//
diff --git a/google/ads/admanager/v1/rich_media_ads_company_service.proto b/google/ads/admanager/v1/rich_media_ads_company_service.proto
index d3c0131b90..2f63fa967f 100644
--- a/google/ads/admanager/v1/rich_media_ads_company_service.proto
+++ b/google/ads/admanager/v1/rich_media_ads_company_service.proto
@@ -37,7 +37,7 @@ service RichMediaAdsCompanyService {
"https://www.googleapis.com/auth/admanager,"
"https://www.googleapis.com/auth/admanager.readonly";
- // API to retrieve a `RichMediaAdsCompany` object.
+ // Retrieves a `RichMediaAdsCompany` object.
rpc GetRichMediaAdsCompany(GetRichMediaAdsCompanyRequest)
returns (RichMediaAdsCompany) {
option (google.api.http) = {
@@ -46,7 +46,7 @@ service RichMediaAdsCompanyService {
option (google.api.method_signature) = "name";
}
- // API to retrieve a list of `RichMediaAdsCompany` objects.
+ // Lists `RichMediaAdsCompany` objects.
rpc ListRichMediaAdsCompanies(ListRichMediaAdsCompaniesRequest)
returns (ListRichMediaAdsCompaniesResponse) {
option (google.api.http) = {
diff --git a/google/ads/admanager/v1/suggested_ad_unit_messages.proto b/google/ads/admanager/v1/suggested_ad_unit_messages.proto
new file mode 100644
index 0000000000..90679991e3
--- /dev/null
+++ b/google/ads/admanager/v1/suggested_ad_unit_messages.proto
@@ -0,0 +1,89 @@
+// 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.admanager.v1;
+
+import "google/ads/admanager/v1/ad_unit_enums.proto";
+import "google/ads/admanager/v1/ad_unit_messages.proto";
+import "google/ads/admanager/v1/target_platform_enum.proto";
+import "google/api/field_behavior.proto";
+import "google/api/resource.proto";
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "SuggestedAdUnitMessagesProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// A read-only suggestion for a new ad unit based on an ad tag that has served
+// 10+ times in the past week for an undefined ad unit.
+message SuggestedAdUnit {
+ option (google.api.resource) = {
+ type: "admanager.googleapis.com/SuggestedAdUnit"
+ pattern: "networks/{network_code}/suggestedAdUnits/{suggested_ad_unit}"
+ plural: "suggestedAdUnits"
+ singular: "suggestedAdUnit"
+ };
+
+ // Identifier. Resource name of the `SuggestedAdUnit`.
+ // Format: `networks/{network_code}/suggestedAdUnits/{suggested_ad_unit_id}`
+ string name = 1 [(google.api.field_behavior) = IDENTIFIER];
+
+ // Output only. Number of times the ad tag has been served in the past week.
+ optional int64 weekly_request_count = 2
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. Path of suggested ad unit codes from the closest existing
+ // ancestor ad unit that will all be created as ad units when the suggestion
+ // is approved.
+ //
+ // Example:
+ // If a -> b -> c are existing ad units with parent-child
+ // relationships, and the suggested ad unit x is a child of c, the
+ // `new_code_path` is (x).
+ // If x is the grandchild of c, the `new_code_path` is (y, x)
+ // where y is an ad unit that would be created as the parent ad unit of x (and
+ // the child of c) if the suggestion is approved.
+ repeated string new_code_path = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. Code path of ad units leading up to and including the parent
+ // of the first suggested ad unit. Combined with the `new_code_path` field,
+ // this represents the full path for the suggested ad unit if approved.
+ //
+ // Example:
+ // If a -> b -> c are existing ad units with parent-child relationships, and
+ // the suggested ad unit x is a child of c, the `existing_code_path` is (a,
+ // b, c). If x is the grandchild of c, the `existing_code_path` is also (a,
+ // b, c).
+ repeated AdUnitParent existing_code_path = 4
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. Target window of the underlying ad tag which will be used in
+ // the ad unit if the suggestion is approved.
+ optional TargetWindowEnum.TargetWindow target_window = 5
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. Target platform for the browser that clicked the underlying ad
+ // tag.
+ optional TargetPlatformEnum.TargetPlatform target_platform = 6
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. Sizes associated with this suggested ad unit.
+ repeated AdUnitSize ad_unit_sizes = 7
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+}
diff --git a/google/ads/admanager/v1/suggested_ad_unit_service.proto b/google/ads/admanager/v1/suggested_ad_unit_service.proto
new file mode 100644
index 0000000000..cd67ff8ac4
--- /dev/null
+++ b/google/ads/admanager/v1/suggested_ad_unit_service.proto
@@ -0,0 +1,177 @@
+// 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.admanager.v1;
+
+import "google/ads/admanager/v1/suggested_ad_unit_messages.proto";
+import "google/api/annotations.proto";
+import "google/api/client.proto";
+import "google/api/field_behavior.proto";
+import "google/api/resource.proto";
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "SuggestedAdUnitServiceProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Provides methods for handling `SuggestedAdUnit` objects.
+service SuggestedAdUnitService {
+ option (google.api.default_host) = "admanager.googleapis.com";
+ option (google.api.oauth_scopes) =
+ "https://www.googleapis.com/auth/admanager,"
+ "https://www.googleapis.com/auth/admanager.readonly";
+
+ // Get a `SuggestedAdUnit` object.
+ rpc GetSuggestedAdUnit(GetSuggestedAdUnitRequest) returns (SuggestedAdUnit) {
+ option (google.api.http) = {
+ get: "/v1/{name=networks/*/suggestedAdUnits/*}"
+ };
+ option (google.api.method_signature) = "name";
+ }
+
+ // Retrieve a list of `SuggestedAdUnit` objects.
+ rpc ListSuggestedAdUnits(ListSuggestedAdUnitsRequest)
+ returns (ListSuggestedAdUnitsResponse) {
+ option (google.api.http) = {
+ get: "/v1/{parent=networks/*}/suggestedAdUnits"
+ };
+ option (google.api.method_signature) = "parent";
+ }
+
+ // Bulk approve `SuggestedAdUnit` objects.
+ rpc BatchApproveSuggestedAdUnits(BatchApproveSuggestedAdUnitsRequest)
+ returns (BatchApproveSuggestedAdUnitsResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/suggestedAdUnit:batchApprove"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,names";
+ }
+}
+
+// Request object for `GetSuggestedAdUnit` method.
+message GetSuggestedAdUnitRequest {
+ // Required. The resource name of the `SuggestedAdUnit`.
+ // Format: `networks/{network_code}/suggestedAdUnits/{suggested_ad_unit_id}`
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/SuggestedAdUnit"
+ }
+ ];
+}
+
+// Request object for `ListSuggestedAdUnits` method.
+message ListSuggestedAdUnitsRequest {
+ // Required. The parent, which owns this collection of SuggestedAdUnits.
+ // Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Optional. The maximum number of `SuggestedAdUnits` to return. The service
+ // may return fewer than this value. If unspecified, at most 50
+ // `SuggestedAdUnits` will be returned. The maximum value is 1000; values
+ // greater than 1000 will be coerced to 1000.
+ int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. A page token, received from a previous `ListSuggestedAdUnits`
+ // call. Provide this to retrieve the subsequent page.
+ //
+ // When paginating, all other parameters provided to `ListSuggestedAdUnits`
+ // must match the call that provided the page token.
+ string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Expression to filter the response.
+ // See syntax details at
+ // https://developers.google.com/ad-manager/api/beta/filters
+ //
+ // Filterable fields:
+ //
+ // name
+ // newCodePath
+ // weeklyRequestCount
+ //
+ string filter = 4 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Expression to specify sorting order.
+ // See syntax details at
+ // https://developers.google.com/ad-manager/api/beta/filters#order
+ string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Number of individual resources to skip while paginating.
+ int32 skip = 6 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Response object for `ListSuggestedAdUnitsRequest` containing matching
+// `SuggestedAdUnit` objects.
+message ListSuggestedAdUnitsResponse {
+ // The `SuggestedAdUnit` objects from the specified network.
+ repeated SuggestedAdUnit suggested_ad_units = 1;
+
+ // A token, which can be sent as `page_token` to retrieve the next page.
+ // If this field is omitted, there are no subsequent pages.
+ string next_page_token = 2;
+
+ // Total number of `SuggestedAdUnit` objects.
+ // If a filter was included in the request, this reflects the total number
+ // after the filtering is applied.
+ //
+ // `total_size` won't be calculated in the response unless it has been
+ // included in a response field mask. The response field mask can be provided
+ // to the method by using the URL parameter `$fields` or `fields`, or by using
+ // the HTTP/gRPC header `X-Goog-FieldMask`.
+ //
+ // For more information, see
+ // https://developers.google.com/ad-manager/api/beta/field-masks
+ int32 total_size = 3;
+}
+
+// Request message for `BatchApproveSuggestedAdUnits` method.
+message BatchApproveSuggestedAdUnitsRequest {
+ // Required. Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. Resource names for the `SuggestedAdUnit` objects to approve.
+ // Format: `networks/{network_code}/suggestedAdUnits/{suggested_ad_unit_id}`
+ repeated string names = 2 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/SuggestedAdUnit"
+ }
+ ];
+}
+
+// Response message for `BatchApproveSuggestedAdUnits` method.
+message BatchApproveSuggestedAdUnitsResponse {
+ // The resource names of the AdUnits that were created as part of the
+ // approval. The order of the ad units in the response is not guaranteed to be
+ // the same as the order of the suggestions in the request.
+ repeated string created_ad_units = 1 [(google.api.resource_reference) = {
+ type: "admanager.googleapis.com/AdUnit"
+ }];
+}
diff --git a/google/ads/admanager/v1/target_platform_enum.proto b/google/ads/admanager/v1/target_platform_enum.proto
new file mode 100644
index 0000000000..325f41dfa9
--- /dev/null
+++ b/google/ads/admanager/v1/target_platform_enum.proto
@@ -0,0 +1,44 @@
+// 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.admanager.v1;
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "TargetPlatformEnumProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Wrapper message for
+// [TargetPlatform][google.ads.admanager.v1.TargetPlatformEnum.TargetPlatform]
+message TargetPlatformEnum {
+ // The target platform of a line item.
+ enum TargetPlatform {
+ // Default value. This value is unused.
+ TARGET_PLATFORM_UNSPECIFIED = 0;
+
+ // A universal target platform that combines mobile and desktop features.
+ ANY = 1;
+
+ // Mobile devices.
+ MOBILE = 2;
+
+ // The desktop web.
+ WEB = 3;
+ }
+}
diff --git a/google/ads/admanager/v1/targeting.proto b/google/ads/admanager/v1/targeting.proto
index 23e703ef5e..2d81b37bce 100644
--- a/google/ads/admanager/v1/targeting.proto
+++ b/google/ads/admanager/v1/targeting.proto
@@ -64,6 +64,10 @@ message Targeting {
DataSegmentTargeting data_segment_targeting = 13
[(google.api.field_behavior) = OPTIONAL];
+ // Optional. Used to target inventory formats.
+ RequestFormatTargeting request_format_targeting = 14
+ [(google.api.field_behavior) = OPTIONAL];
+
// Optional. Used to target content.
ContentTargeting content_targeting = 15
[(google.api.field_behavior) = OPTIONAL];
@@ -561,6 +565,59 @@ message DataSegmentTargeting {
[(google.api.field_behavior) = OUTPUT_ONLY];
}
+// Request Format Targeting
+//
+// This message specifies inclusion or exclusion of various request formats for
+// targeting. Each optional boolean field controls the targeting of a specific
+// request format:
+//
+// - If set to `true`, the corresponding format is **included** in targeting.
+// - If set to `false`, the corresponding format is **excluded** from targeting.
+// - If unset, the format is neither explicitly included nor excluded.
+//
+message RequestFormatTargeting {
+ // Optional. Controls app open format targeting. Set to `true` to include,
+ // `false` to exclude, or leave unset for neither.
+ optional bool app_open_enabled = 1 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Controls rewarded format targeting. Set to `true` to include,
+ // `false` to exclude, or leave unset for neither.
+ optional bool rewarded_enabled = 2 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Controls rewarded interstitial format targeting. Set to `true` to
+ // include, `false` to exclude, or leave unset for neither.
+ optional bool rewarded_interstitial_enabled = 3
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Controls interstitial format targeting. Set to `true` to include,
+ // `false` to exclude, or leave unset for neither.
+ optional bool interstitial_enabled = 4
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Controls anchor format targeting. Set to `true` to include,
+ // `false` to exclude, or leave unset for neither.
+ optional bool anchor_enabled = 5 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Controls banner format targeting. Set to `true` to include,
+ // `false` to exclude, or leave unset for neither.
+ optional bool banner_enabled = 6 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Controls instream video format targeting. Set to `true` to
+ // include, `false` to exclude, or leave unset for neither.
+ optional bool instream_video_enabled = 7
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Controls instream audio format targeting. Set to `true` to
+ // include, `false` to exclude, or leave unset for neither.
+ optional bool instream_audio_enabled = 8
+ [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Controls native advanced format targeting. Set to `true` to
+ // include, `false` to exclude, or leave unset for neither.
+ optional bool native_advanced_enabled = 9
+ [(google.api.field_behavior) = OPTIONAL];
+}
+
// Content Targeting
//
// Targeted/excluded content entities and bundles.
diff --git a/google/ads/admanager/v1/targeting_preset_enums.proto b/google/ads/admanager/v1/targeting_preset_enums.proto
new file mode 100644
index 0000000000..d952105a0b
--- /dev/null
+++ b/google/ads/admanager/v1/targeting_preset_enums.proto
@@ -0,0 +1,41 @@
+// 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.admanager.v1;
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "TargetingPresetEnumsProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Wrapper message for
+// [TargetingPresetStatus][google.ads.admanager.main.TargetingPresetStatusEnum.TargetingPresetStatus]
+message TargetingPresetStatusEnum {
+ // The status of a targeting preset.
+ enum TargetingPresetStatus {
+ // Default value. This value is unused.
+ TARGETING_PRESET_STATUS_UNSPECIFIED = 0;
+
+ // The targeting preset is active.
+ ACTIVE = 1;
+
+ // The targeting preset is inactive.
+ INACTIVE = 2;
+ }
+}
diff --git a/google/ads/admanager/v1/targeting_preset_messages.proto b/google/ads/admanager/v1/targeting_preset_messages.proto
new file mode 100644
index 0000000000..3f9c00f87f
--- /dev/null
+++ b/google/ads/admanager/v1/targeting_preset_messages.proto
@@ -0,0 +1,56 @@
+// 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.admanager.v1;
+
+import "google/ads/admanager/v1/targeting.proto";
+import "google/ads/admanager/v1/targeting_preset_enums.proto";
+import "google/api/field_behavior.proto";
+import "google/api/resource.proto";
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "TargetingPresetMessagesProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// User-defined preset targeting criteria.
+message TargetingPreset {
+ option (google.api.resource) = {
+ type: "admanager.googleapis.com/TargetingPreset"
+ pattern: "networks/{network_code}/targetingPresets/{targeting_preset}"
+ plural: "targetingPresets"
+ singular: "targetingPreset"
+ };
+
+ // Identifier. The resource name of the `TargetingPreset`.
+ // Format: `networks/{network_code}/targetingPresets/{targeting_preset_id}`
+ string name = 1 [(google.api.field_behavior) = IDENTIFIER];
+
+ // Required. The name of the TargetingPreset. This attribute has a maximum
+ // length of 255 characters.
+ optional string display_name = 3 [(google.api.field_behavior) = REQUIRED];
+
+ // Required. Contains the targeting criteria for the TargetingPreset. If not
+ // provided, empty targeting will be used as a default.
+ optional Targeting targeting = 4 [(google.api.field_behavior) = REQUIRED];
+
+ // Output only. The status of the TargetingPreset.
+ optional TargetingPresetStatusEnum.TargetingPresetStatus status = 5
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+}
diff --git a/google/ads/admanager/v1/targeting_preset_service.proto b/google/ads/admanager/v1/targeting_preset_service.proto
new file mode 100644
index 0000000000..d7929895ef
--- /dev/null
+++ b/google/ads/admanager/v1/targeting_preset_service.proto
@@ -0,0 +1,247 @@
+// 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.admanager.v1;
+
+import "google/ads/admanager/v1/targeting_preset_messages.proto";
+import "google/api/annotations.proto";
+import "google/api/client.proto";
+import "google/api/field_behavior.proto";
+import "google/api/resource.proto";
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "TargetingPresetServiceProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Provides methods for handling `TargetingPreset` objects.
+service TargetingPresetService {
+ option (google.api.default_host) = "admanager.googleapis.com";
+ option (google.api.oauth_scopes) =
+ "https://www.googleapis.com/auth/admanager,"
+ "https://www.googleapis.com/auth/admanager.readonly";
+
+ // Retrieves a `TargetingPreset` object.
+ // Note: Deactivated targeting presets are "logically deleted" (filtered out)
+ // by the get logic in the manager layer, so they will not be returned by the
+ // `GetTargetingPreset` RPC.
+ rpc GetTargetingPreset(GetTargetingPresetRequest) returns (TargetingPreset) {
+ option (google.api.http) = {
+ get: "/v1/{name=networks/*/targetingPresets/*}"
+ };
+ option (google.api.method_signature) = "name";
+ }
+
+ // Lists `TargetingPreset` objects.
+ rpc ListTargetingPresets(ListTargetingPresetsRequest)
+ returns (ListTargetingPresetsResponse) {
+ option (google.api.http) = {
+ get: "/v1/{parent=networks/*}/targetingPresets"
+ };
+ option (google.api.method_signature) = "parent";
+ }
+
+ // Creates a `TargetingPreset` object.
+ rpc CreateTargetingPreset(CreateTargetingPresetRequest)
+ returns (TargetingPreset) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/targetingPresets"
+ body: "targeting_preset"
+ };
+ option (google.api.method_signature) = "parent,targeting_preset";
+ }
+
+ // Creates `TargetingPreset` objects.
+ rpc BatchCreateTargetingPresets(BatchCreateTargetingPresetsRequest)
+ returns (BatchCreateTargetingPresetsResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/targetingPresets:batchCreate"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,requests";
+ }
+
+ // Batch deactivates `TargetingPreset` objects.
+ rpc BatchDeactivateTargetingPresets(BatchDeactivateTargetingPresetsRequest)
+ returns (BatchDeactivateTargetingPresetsResponse) {
+ option (google.api.http) = {
+ post: "/v1/{parent=networks/*}/targetingPreset:batchDeactivate"
+ body: "*"
+ };
+ option (google.api.method_signature) = "parent,requests";
+ }
+}
+
+// Request object for `GetTargetingPreset` method.
+message GetTargetingPresetRequest {
+ // Required. The resource name of the TargetingPreset.
+ // Format: `networks/{network_code}/targetingPresets/{targeting_preset_id}`
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/TargetingPreset"
+ }
+ ];
+}
+
+// Request object for `ListTargetingPresets` method.
+message ListTargetingPresetsRequest {
+ // Required. The parent, which owns this collection of TargetingPresets.
+ // Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Optional. The maximum number of `TargetingPresets` to return. The service
+ // may return fewer than this value. If unspecified, at most 50
+ // `TargetingPresets` will be returned. The maximum value is 1000; values
+ // greater than 1000 will be coerced to 1000.
+ int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. A page token, received from a previous `ListTargetingPresets`
+ // call. Provide this to retrieve the subsequent page.
+ //
+ // When paginating, all other parameters provided to `ListTargetingPresets`
+ // must match the call that provided the page token.
+ string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Expression to filter the response.
+ // See syntax details at
+ // https://developers.google.com/ad-manager/api/beta/filters
+ //
+ // Filterable fields:
+ //
+ // displayName
+ // name
+ // status
+ //
+ string filter = 4 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Expression to specify sorting order.
+ // See syntax details at
+ // https://developers.google.com/ad-manager/api/beta/filters#order
+ string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Number of individual resources to skip while paginating.
+ int32 skip = 6 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Response object for `ListTargetingPresetsRequest` containing matching
+// `TargetingPreset` objects.
+message ListTargetingPresetsResponse {
+ // The `TargetingPreset` objects from the specified network.
+ repeated TargetingPreset targeting_presets = 1;
+
+ // A token, which can be sent as `page_token` to retrieve the next page.
+ // If this field is omitted, there are no subsequent pages.
+ string next_page_token = 2;
+
+ // Total number of `TargetingPreset` objects.
+ // If a filter was included in the request, this reflects the total number
+ // after the filtering is applied.
+ //
+ // `total_size` won't be calculated in the response unless it has been
+ // included in a response field mask. The response field mask can be provided
+ // to the method by using the URL parameter `$fields` or `fields`, or by using
+ // the HTTP/gRPC header `X-Goog-FieldMask`.
+ //
+ // For more information, see
+ // https://developers.google.com/ad-manager/api/beta/field-masks
+ int32 total_size = 3;
+}
+
+// Request object for `CreateTargetingPreset` method.
+message CreateTargetingPresetRequest {
+ // Required. The parent resource where this `TargetingPreset` will be created.
+ // Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The `TargetingPreset` to create.
+ TargetingPreset targeting_preset = 2 [(google.api.field_behavior) = REQUIRED];
+}
+
+// Request object for `BatchCreateTargetingPresets` method.
+message BatchCreateTargetingPresetsRequest {
+ // Required. The parent resource where `TargetingPresets` will be created.
+ // Format: `networks/{network_code}`
+ // The parent field in the CreateTargetingPresetRequest must match this
+ // field.
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The `TargetingPreset` objects to create.
+ // A maximum of 100 objects can be created in a batch.
+ repeated CreateTargetingPresetRequest requests = 2
+ [(google.api.field_behavior) = REQUIRED];
+}
+
+// Response object for `BatchCreateTargetingPresets` method.
+message BatchCreateTargetingPresetsResponse {
+ // The `TargetingPreset` objects created.
+ repeated TargetingPreset targeting_presets = 1;
+}
+
+// Request object for `DeactivateTargetingPreset` method.
+message DeactivateTargetingPresetRequest {
+ // Required. Resource name for the TargetingPreset.
+ // Format: `networks/{network_code}/targetingPreset/{targeting_preset_id}`
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/TargetingPreset"
+ }
+ ];
+
+ // Required. TargetingPreset ID to deactivate.
+ int64 targeting_preset_id = 2 [(google.api.field_behavior) = REQUIRED];
+}
+
+// Request message for `BatchDeactivateTargetingPresets` method.
+message BatchDeactivateTargetingPresetsRequest {
+ // Required. Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Required. The `TargetingPreset` objects to deactivate.
+ repeated DeactivateTargetingPresetRequest requests = 2
+ [(google.api.field_behavior) = REQUIRED];
+}
+
+// Response message for `DeactivateTargetingPresets` method.
+message BatchDeactivateTargetingPresetsResponse {
+ // The number of objects that were deactivated as a result of performing the
+ // action.
+ int64 change_count = 1;
+}
diff --git a/google/ads/admanager/v1/third_party_company_enums.proto b/google/ads/admanager/v1/third_party_company_enums.proto
new file mode 100644
index 0000000000..76cc12d473
--- /dev/null
+++ b/google/ads/admanager/v1/third_party_company_enums.proto
@@ -0,0 +1,60 @@
+// 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.admanager.v1;
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "ThirdPartyCompanyEnumsProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Wrapper message for
+// [ThirdPartyCompanyStatus][google.ads.admanager.v1.ThirdPartyCompanyStatusEnum.ThirdPartyCompanyStatus]
+message ThirdPartyCompanyStatusEnum {
+ // Status of a third party company.
+ enum ThirdPartyCompanyStatus {
+ // No value specified
+ THIRD_PARTY_COMPANY_STATUS_UNSPECIFIED = 0;
+
+ // The third party company is active.
+ ACTIVE = 1;
+
+ // The third party company is inactive.
+ INACTIVE = 2;
+ }
+}
+
+// Wrapper message for
+// [ThirdPartyCompanyType][google.ads.admanager.v1.ThirdPartyCompanyTypeEnum.ThirdPartyCompanyType]
+message ThirdPartyCompanyTypeEnum {
+ // The type of a third party company.
+ enum ThirdPartyCompanyType {
+ // No value specified
+ THIRD_PARTY_COMPANY_TYPE_UNSPECIFIED = 0;
+
+ // A company representing multiple advertisers and agencies.
+ AD_NETWORK = 1;
+
+ // An organization that provides ad serving technology.
+ AD_SERVER = 2;
+
+ // A company that provides video technology.
+ VIDEO_TECHNOLOGY_PARTNER = 3;
+ }
+}
diff --git a/google/ads/admanager/v1/third_party_company_messages.proto b/google/ads/admanager/v1/third_party_company_messages.proto
new file mode 100644
index 0000000000..397e6655cb
--- /dev/null
+++ b/google/ads/admanager/v1/third_party_company_messages.proto
@@ -0,0 +1,58 @@
+// 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.admanager.v1;
+
+import "google/ads/admanager/v1/third_party_company_enums.proto";
+import "google/api/field_behavior.proto";
+import "google/api/resource.proto";
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "ThirdPartyCompanyMessagesProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Represents a third-party company recognized by Google Ad Manager, which can
+// be an ad network, ad server, or video technology partner.
+message ThirdPartyCompany {
+ option (google.api.resource) = {
+ type: "admanager.googleapis.com/ThirdPartyCompany"
+ pattern: "networks/{network_code}/thirdPartyCompanies/{third_party_company}"
+ plural: "thirdPartyCompanies"
+ singular: "thirdPartyCompany"
+ };
+
+ // Identifier. The resource name of the `ThirdPartyCompany`.
+ // Format:
+ // `networks/{network_code}/thirdPartyCompanies/{third_party_company_id}`
+ string name = 1 [(google.api.field_behavior) = IDENTIFIER];
+
+ // Output only. The display name of the ThirdPartyCompany. This field must be
+ // unique among all ThirdPartyCompanies for this network.
+ optional string display_name = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The status of the ThirdPartyCompany. ThirdPartyCompanies are
+ // set to inactive rather than deleting them.
+ optional ThirdPartyCompanyStatusEnum.ThirdPartyCompanyStatus status = 3
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+
+ // Output only. The type of the ThirdPartyCompany.
+ optional ThirdPartyCompanyTypeEnum.ThirdPartyCompanyType type = 4
+ [(google.api.field_behavior) = OUTPUT_ONLY];
+}
diff --git a/google/ads/admanager/v1/third_party_company_service.proto b/google/ads/admanager/v1/third_party_company_service.proto
new file mode 100644
index 0000000000..6290b821b9
--- /dev/null
+++ b/google/ads/admanager/v1/third_party_company_service.proto
@@ -0,0 +1,141 @@
+// 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.admanager.v1;
+
+import "google/ads/admanager/v1/third_party_company_messages.proto";
+import "google/api/annotations.proto";
+import "google/api/client.proto";
+import "google/api/field_behavior.proto";
+import "google/api/resource.proto";
+
+option csharp_namespace = "Google.Ads.AdManager.V1";
+option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
+option java_multiple_files = true;
+option java_outer_classname = "ThirdPartyCompanyServiceProto";
+option java_package = "com.google.ads.admanager.v1";
+option php_namespace = "Google\\Ads\\AdManager\\V1";
+option ruby_package = "Google::Ads::AdManager::V1";
+
+// Service to retrieve and list recognized third-party companies in Google Ad
+// Manager.
+service ThirdPartyCompanyService {
+ option (google.api.default_host) = "admanager.googleapis.com";
+ option (google.api.oauth_scopes) =
+ "https://www.googleapis.com/auth/admanager,"
+ "https://www.googleapis.com/auth/admanager.readonly";
+
+ // API to retrieve a `ThirdPartyCompany` object.
+ rpc GetThirdPartyCompany(GetThirdPartyCompanyRequest)
+ returns (ThirdPartyCompany) {
+ option (google.api.http) = {
+ get: "/v1/{name=networks/*/thirdPartyCompanies/*}"
+ };
+ option (google.api.method_signature) = "name";
+ }
+
+ // API to retrieve a list of `ThirdPartyCompany` objects.
+ rpc ListThirdPartyCompanies(ListThirdPartyCompaniesRequest)
+ returns (ListThirdPartyCompaniesResponse) {
+ option (google.api.http) = {
+ get: "/v1/{parent=networks/*}/thirdPartyCompanies"
+ };
+ option (google.api.method_signature) = "parent";
+ }
+}
+
+// Request object for `GetThirdPartyCompany` method.
+message GetThirdPartyCompanyRequest {
+ // Required. The resource name of the ThirdPartyCompany.
+ // Format:
+ // `networks/{network_code}/thirdPartyCompanies/{third_party_company_id}`
+ string name = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/ThirdPartyCompany"
+ }
+ ];
+}
+
+// Request object for `ListThirdPartyCompanies` method.
+message ListThirdPartyCompaniesRequest {
+ // Required. The parent, which owns this collection of ThirdPartyCompanies.
+ // Format: `networks/{network_code}`
+ string parent = 1 [
+ (google.api.field_behavior) = REQUIRED,
+ (google.api.resource_reference) = {
+ type: "admanager.googleapis.com/Network"
+ }
+ ];
+
+ // Optional. The maximum number of `ThirdPartyCompanies` to return. The
+ // service may return fewer than this value. If unspecified, at most 50
+ // `ThirdPartyCompanies` will be returned. The maximum value is 1000; values
+ // greater than 1000 will be coerced to 1000.
+ int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. A page token, received from a previous `ListThirdPartyCompanies`
+ // call. Provide this to retrieve the subsequent page.
+ //
+ // When paginating, all other parameters provided to `ListThirdPartyCompanies`
+ // must match the call that provided the page token.
+ string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Expression to filter the response.
+ // See syntax details at
+ // https://developers.google.com/ad-manager/api/beta/filters
+ //
+ // Filterable fields:
+ //
+ // displayName
+ // name
+ // status
+ // type
+ //
+ string filter = 4 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Expression to specify sorting order.
+ // See syntax details at
+ // https://developers.google.com/ad-manager/api/beta/filters#order
+ string order_by = 5 [(google.api.field_behavior) = OPTIONAL];
+
+ // Optional. Number of individual resources to skip while paginating.
+ int32 skip = 6 [(google.api.field_behavior) = OPTIONAL];
+}
+
+// Response object for `ListThirdPartyCompaniesRequest` containing matching
+// `ThirdPartyCompany` objects.
+message ListThirdPartyCompaniesResponse {
+ // The `ThirdPartyCompany` objects from the specified network.
+ repeated ThirdPartyCompany third_party_companies = 1;
+
+ // A token, which can be sent as `page_token` to retrieve the next page.
+ // If this field is omitted, there are no subsequent pages.
+ string next_page_token = 2;
+
+ // Total number of `ThirdPartyCompany` objects.
+ // If a filter was included in the request, this reflects the total number
+ // after the filtering is applied.
+ //
+ // `total_size` won't be calculated in the response unless it has been
+ // included in a response field mask. The response field mask can be provided
+ // to the method by using the URL parameter `$fields` or `fields`, or by using
+ // the HTTP/gRPC header `X-Goog-FieldMask`.
+ //
+ // For more information, see
+ // https://developers.google.com/ad-manager/api/beta/field-masks
+ int32 total_size = 3;
+}