feat: Added AdSpotService

feat: Added CdnConfigService
feat: Added LiveStreamService
feat: Added TargetingPresetService
feat: Added SuggestedAdUnitService
feat: Added ThirdPartyCompanyService
feat: Added `status` and `updateTime` fields to ContentBundle
feat: Added write methods for CustomTargetingValue
feat: Added `DECLARED_ADVERTISER_DOMAIN` report Dimension
docs: Normalized documentation on standard methods

PiperOrigin-RevId: 948426632
This commit is contained in:
Google APIs 2026-07-15 10:50:31 -07:00 committed by Copybara-Service
parent 8ff1d42bd1
commit 9cbb0fd09b
71 changed files with 4978 additions and 126 deletions

View file

@ -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"],
)

View file

@ -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

View file

@ -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.

View file

@ -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;
}
}

View file

@ -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];
}

View file

@ -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
//
// <b>Filterable fields:</b>
// <ul style="list-style-type:none">
// <li><code>displayName</code></li>
// <li><code>name</code></li>
// <li><code>priority</code></li>
// <li><code>status</code></li>
// </ul>
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"
}
];
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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];
}

View file

@ -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
//
// <b>Filterable fields:</b>
// <ul style="list-style-type:none">
// <li><code>canonicalDisplayName</code></li>
// <li><code>customSpot</code></li>
// <li><code>displayName</code></li>
// <li><code>flexible</code></li>
// <li><code>name</code></li>
// </ul>
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;
}

View file

@ -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;
}
}

View file

@ -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) = {

View file

@ -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: |-

View file

@ -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) = {

View file

@ -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) = {

View file

@ -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) = {

View file

@ -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"

View file

@ -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];
}

View file

@ -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
//
// <b>Filterable fields:</b>
// <ul style="list-style-type:none">
// <li><code>cdnConfigStatus</code></li>
// <li><code>cdnConfigType</code></li>
// <li><code>displayName</code></li>
// <li><code>name</code></li>
// <li><code>sourceContentConfig.ingestSettings.urlPrefix</code></li>
// </ul>
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 {}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -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) = {

View file

@ -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) = {

View file

@ -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;
}
}

View file

@ -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];
}

View file

@ -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 {
// <ul style="list-style-type:none">
// <li><code>displayName</code></li>
// <li><code>name</code></li>
// <li><code>status</code></li>
// <li><code>updateTime</code></li>
// </ul>
string filter = 4 [(google.api.field_behavior) = OPTIONAL];

View file

@ -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;
}
}

View file

@ -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) = {

View file

@ -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;
}

View file

@ -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 {
//
// <b>Filterable fields:</b>
// <ul style="list-style-type:none">
// <li><code>cmsMetadataValues</code></li>
// <li><code>cmsSources.contentSource</code></li>
// <li><code>cmsSources.contentSourceDisplayName</code></li>
// <li><code>contentBundles</code></li>
// <li><code>contentStatusSource</code></li>
// <li><code>dashIngestStatus</code></li>
// <li><code>displayName</code></li>
// <li><code>duration</code></li>
// <li><code>hlsIngestStatus</code></li>
// <li><code>importTime</code></li>
// <li><code>lastDashIngestTime</code></li>
// <li><code>lastHlsIngestTime</code></li>
// <li><code>name</code></li>
// <li><code>status</code></li>
// <li><code>updateTime</code></li>
// </ul>
string filter = 4 [(google.api.field_behavior) = OPTIONAL];

View file

@ -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) = {

View file

@ -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) = {

View file

@ -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) = {

View file

@ -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 {}

View file

@ -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;
}
}

View file

@ -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) = {

View file

@ -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) = {

View file

@ -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) = {

View file

@ -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"

View file

@ -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) = {

View file

@ -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"

View file

@ -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;
}
}

View file

@ -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];
}

View file

@ -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
//
// <b>Filterable fields:</b>
// <ul style="list-style-type:none">
// <li><code>assetKey</code></li>
// <li><code>createTime</code></li>
// <li><code>customAssetKey</code></li>
// <li><code>displayName</code></li>
// <li><code>dynamicAdInsertionType</code></li>
// <li><code>effectiveAssetKey</code></li>
// <li><code>endTime</code></li>
// <li><code>sourceContentConfigurations</code></li>
// <li><code>startTime</code></li>
// <li><code>status</code></li>
// <li><code>streamingFormat</code></li>
// <li><code>updateTime</code></li>
// </ul>
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 {}

View file

@ -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) = {

View file

@ -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) = {

View file

@ -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) = {

View file

@ -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];
}

View file

@ -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) = {

View file

@ -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) = {

View file

@ -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`

View file

@ -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) = {

View file

@ -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];

View file

@ -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) = {

View file

@ -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) = {

View file

@ -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) = {

View file

@ -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.
//
//
//

View file

@ -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) = {

View file

@ -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];
}

View file

@ -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
//
// <b>Filterable fields:</b>
// <ul style="list-style-type:none">
// <li><code>name</code></li>
// <li><code>newCodePath</code></li>
// <li><code>weeklyRequestCount</code></li>
// </ul>
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"
}];
}

View file

@ -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;
}
}

View file

@ -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.

View file

@ -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;
}
}

View file

@ -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];
}

View file

@ -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
//
// <b>Filterable fields:</b>
// <ul style="list-style-type:none">
// <li><code>displayName</code></li>
// <li><code>name</code></li>
// <li><code>status</code></li>
// </ul>
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;
}

View file

@ -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;
}
}

View file

@ -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];
}

View file

@ -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
//
// <b>Filterable fields:</b>
// <ul style="list-style-type:none">
// <li><code>displayName</code></li>
// <li><code>name</code></li>
// <li><code>status</code></li>
// <li><code>type</code></li>
// </ul>
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;
}