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