feat: Adds tracking_url_template, final_url_suffix, final_mobile_urls, url_custom_parameters, final_urls to asset, ads, ad group, ad group criterion

feat!: Fixes resource name for CampaignEffectiveLabel, AdGroupEffectiveLabel, CriterionEffectiveLabel and AdGroupAdEffectiveLabel to correctly contain the customer ID that actually owns the label

PiperOrigin-RevId: 824548841
This commit is contained in:
Google APIs 2025-10-27 09:22:08 -07:00 committed by Copybara-Service
parent b8a4d56335
commit ec4e787904
21 changed files with 334 additions and 22 deletions

View file

@ -0,0 +1,46 @@
// Copyright 2025 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.searchads360.v0.common;
import "google/ads/searchads360/v0/enums/app_url_operating_system_type.proto";
option csharp_namespace = "Google.Ads.SearchAds360.V0.Common";
option go_package = "google.golang.org/genproto/googleapis/ads/searchads360/v0/common;common";
option java_multiple_files = true;
option java_outer_classname = "FinalAppUrlProto";
option java_package = "com.google.ads.searchads360.v0.common";
option objc_class_prefix = "GASA360";
option php_namespace = "Google\\Ads\\SearchAds360\\V0\\Common";
option ruby_package = "Google::Ads::SearchAds360::V0::Common";
// Proto file FinalAppUrl type.
// A URL for deep linking into an app for the given operating system.
message FinalAppUrl {
// The operating system targeted by this URL. Required.
google.ads.searchads360.v0.enums.AppUrlOperatingSystemTypeEnum
.AppUrlOperatingSystemType os_type = 1;
// The app deep link URL. Deep links specify a location in an app that
// corresponds to the content you'd like to show, and should be of the form
// {scheme}://{host_path}
// The scheme identifies which app to open. For your app, you can use a custom
// scheme that starts with the app's name. The host and path specify the
// unique location in the app where your content exists.
// Example: "exampleapp://productid_1234". Required.
optional string url = 3;
}

View file

@ -0,0 +1,46 @@
// Copyright 2025 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.searchads360.v0.enums;
option csharp_namespace = "Google.Ads.SearchAds360.V0.Enums";
option go_package = "google.golang.org/genproto/googleapis/ads/searchads360/v0/enums;enums";
option java_multiple_files = true;
option java_outer_classname = "AppUrlOperatingSystemTypeProto";
option java_package = "com.google.ads.searchads360.v0.enums";
option objc_class_prefix = "GASA360";
option php_namespace = "Google\\Ads\\SearchAds360\\V0\\Enums";
option ruby_package = "Google::Ads::SearchAds360::V0::Enums";
// Proto file describing operating system for a deeplink app URL.
// The possible OS types for a deeplink AppUrl.
message AppUrlOperatingSystemTypeEnum {
// Operating System
enum AppUrlOperatingSystemType {
// Not specified.
UNSPECIFIED = 0;
// Used for return value only. Represents value unknown in this version.
UNKNOWN = 1;
// The Apple IOS operating system.
IOS = 2;
// The Android operating system.
ANDROID = 3;
}
}

View file

@ -29,7 +29,7 @@ option ruby_package = "Google::Ads::SearchAds360::V0::Enums";
// Container for enum describing possible Asset engine statuses.
message AssetEngineStatusEnum {
// Next ID = 11
// Enum describing possible Asset engine statuses.
enum AssetEngineStatus {
// Not specified.
UNSPECIFIED = 0;

View file

@ -0,0 +1,92 @@
// Copyright 2025 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.searchads360.v0.enums;
option csharp_namespace = "Google.Ads.SearchAds360.V0.Enums";
option go_package = "google.golang.org/genproto/googleapis/ads/searchads360/v0/enums;enums";
option java_multiple_files = true;
option java_outer_classname = "AssetSetTypeProto";
option java_package = "com.google.ads.searchads360.v0.enums";
option objc_class_prefix = "GASA360";
option php_namespace = "Google\\Ads\\SearchAds360\\V0\\Enums";
option ruby_package = "Google::Ads::SearchAds360::V0::Enums";
// Proto file describing asset set type.
// Container for enum describing possible types of an asset set.
message AssetSetTypeEnum {
// Possible types of an asset set.
enum AssetSetType {
// Not specified.
UNSPECIFIED = 0;
// Used for return value only. Represents value unknown in this version.
UNKNOWN = 1;
// Page asset set.
PAGE_FEED = 2;
// Dynamic education asset set.
DYNAMIC_EDUCATION = 3;
// Google Merchant Center asset set.
MERCHANT_CENTER_FEED = 4;
// Dynamic real estate asset set.
DYNAMIC_REAL_ESTATE = 5;
// Dynamic custom asset set.
DYNAMIC_CUSTOM = 6;
// Dynamic hotels and rentals asset set.
DYNAMIC_HOTELS_AND_RENTALS = 7;
// Dynamic flights asset set.
DYNAMIC_FLIGHTS = 8;
// Dynamic travel asset set.
DYNAMIC_TRAVEL = 9;
// Dynamic local asset set.
DYNAMIC_LOCAL = 10;
// Dynamic jobs asset set.
DYNAMIC_JOBS = 11;
// Location sync level asset set.
LOCATION_SYNC = 12;
// Business Profile location group asset set.
BUSINESS_PROFILE_DYNAMIC_LOCATION_GROUP = 13;
// Chain location group asset set which can be used for both owned
// locations and affiliate locations.
CHAIN_DYNAMIC_LOCATION_GROUP = 14;
// Static location group asset set which can be used for both owned
// locations and affiliate locations.
STATIC_LOCATION_GROUP = 15;
// Hotel Property asset set which is used to link a hotel property feed to
// Performance Max for travel goals campaigns.
HOTEL_PROPERTY = 16;
// Travel Feed asset set type. Can represent either a Hotel feed or a Things
// to Do (activities) feed.
TRAVEL_FEED = 17;
}
}

View file

@ -132,5 +132,8 @@ message ServedAssetFieldTypeEnum {
// The asset is used as a business logo.
BUSINESS_LOGO = 31;
// The asset is used as a description prefix.
DESCRIPTION_PREFIX = 32;
}
}

View file

@ -0,0 +1,74 @@
// Copyright 2025 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.searchads360.v0.errors;
option csharp_namespace = "Google.Ads.SearchAds360.V0.Errors";
option go_package = "google.golang.org/genproto/googleapis/ads/searchads360/v0/errors;errors";
option java_multiple_files = true;
option java_outer_classname = "ConversionCustomVariableErrorProto";
option java_package = "com.google.ads.searchads360.v0.errors";
option objc_class_prefix = "GASA360";
option php_namespace = "Google\\Ads\\SearchAds360\\V0\\Errors";
option ruby_package = "Google::Ads::SearchAds360::V0::Errors";
// Proto file describing conversion custom variable errors.
// Container for enum describing possible conversion custom variable errors.
message ConversionCustomVariableErrorEnum {
// Enum describing possible conversion custom variable errors.
enum ConversionCustomVariableError {
// Enum unspecified.
UNSPECIFIED = 0;
// The received error code is not known in this version.
UNKNOWN = 1;
// A conversion custom variable with the specified name already exists.
DUPLICATE_NAME = 2;
// A conversion custom variable with the specified tag already exists.
DUPLICATE_TAG = 3;
// A conversion custom variable with the specified tag is reserved for other
// uses.
RESERVED_TAG = 4;
// The conversion custom variable is not found.
NOT_FOUND = 5;
// The conversion custom variable is not available for use.
NOT_AVAILABLE = 6;
// The conversion custom variable requested is incompatible with the current
// request.
INCOMPATIBLE_TYPE = 7;
// The conversion custom variable requested is not of type METRIC.
INVALID_METRIC = 8;
// The conversion custom variable's cardinality exceeds the segmentation
// limit.
EXCEEDS_CARDINALITY_LIMIT = 9;
// The conversion custom variable requested is not of type DIMENSION.
INVALID_DIMENSION = 10;
// The conversion custom variable requested is incompatible with the
// selected resource.
INCOMPATIBLE_WITH_SELECTED_RESOURCE = 11;
}
}

View file

@ -19,6 +19,7 @@ package google.ads.searchads360.v0.errors;
import "google/ads/searchads360/v0/common/value.proto";
import "google/ads/searchads360/v0/errors/authentication_error.proto";
import "google/ads/searchads360/v0/errors/authorization_error.proto";
import "google/ads/searchads360/v0/errors/conversion_custom_variable_error.proto";
import "google/ads/searchads360/v0/errors/custom_column_error.proto";
import "google/ads/searchads360/v0/errors/date_error.proto";
import "google/ads/searchads360/v0/errors/date_range_error.proto";
@ -103,6 +104,10 @@ message ErrorCode {
// The reasons for the distinct error
DistinctErrorEnum.DistinctError distinct_error = 35;
// The reasons for the conversion custom variable error
ConversionCustomVariableErrorEnum.ConversionCustomVariableError
conversion_custom_variable_error = 143;
// The reasons for the header error.
HeaderErrorEnum.HeaderError header_error = 66;

View file

@ -17,6 +17,7 @@ syntax = "proto3";
package google.ads.searchads360.v0.resources;
import "google/ads/searchads360/v0/common/ad_type_infos.proto";
import "google/ads/searchads360/v0/common/final_app_url.proto";
import "google/ads/searchads360/v0/enums/ad_type.proto";
import "google/api/field_behavior.proto";
import "google/api/resource.proto";
@ -55,6 +56,20 @@ message Ad {
// ad.
repeated string final_urls = 41;
// A list of final app URLs that will be used on mobile if the user has the
// specific app installed.
repeated google.ads.searchads360.v0.common.FinalAppUrl final_app_urls = 35;
// The list of possible final mobile URLs after all cross-domain redirects
// for the ad.
repeated string final_mobile_urls = 42;
// The URL template for constructing a tracking URL.
optional string tracking_url_template = 43;
// The suffix to use when constructing a final URL.
optional string final_url_suffix = 44;
// The URL that appears in the ad description for some ad formats.
optional string display_url = 45;
@ -63,9 +78,7 @@ message Ad {
[(google.api.field_behavior) = OUTPUT_ONLY];
// Immutable. The name of the ad. This is only used to be able to identify the
// ad. It does not need to be unique and does not affect the served ad. The
// name field is currently only supported for DisplayUploadAd, ImageAd,
// ShoppingComparisonListingAd and VideoAd.
// ad. It does not need to be unique and does not affect the served ad.
optional string name = 47 [(google.api.field_behavior) = IMMUTABLE];
// Details pertinent to the ad type. Exactly one value must be set.

View file

@ -78,6 +78,9 @@ message AdGroup {
google.ads.searchads360.v0.enums.AdGroupAdRotationModeEnum
.AdGroupAdRotationMode ad_rotation_mode = 22;
// The URL template for constructing a tracking URL.
optional string tracking_url_template = 37;
// The maximum CPC (cost-per-click) bid.
optional int64 cpc_bid_micros = 39;
@ -90,6 +93,9 @@ message AdGroup {
.AdGroupEngineStatus engine_status = 61
[(google.api.field_behavior) = OUTPUT_ONLY];
// URL template for appending params to Final URL.
optional string final_url_suffix = 46;
// Setting for targeting related features.
google.ads.searchads360.v0.common.TargetingSetting targeting_setting = 25;

View file

@ -36,14 +36,14 @@ option ruby_package = "Google::Ads::SearchAds360::V0::Resources";
message AdGroupAdEffectiveLabel {
option (google.api.resource) = {
type: "searchads360.googleapis.com/AdGroupAdEffectiveLabel"
pattern: "customers/{customer_id}/adGroupAdEffectiveLabels/{ad_group_id}~{ad_id}~{label_id}"
pattern: "customers/{owner_customer_id}/adGroupAdEffectiveLabels/{ad_group_id}~{ad_id}~{label_id}"
plural: "adGroupAdEffectiveLabels"
singular: "adGroupAdEffectiveLabel"
};
// Immutable. The resource name of the ad group ad effective label.
// Ad group ad effective label resource names have the form:
// `customers/{customer_id}/adGroupAdEffectiveLabels/{ad_group_id}~{ad_id}~{label_id}`
// `customers/{owner_customer_id}/adGroupAdEffectiveLabels/{ad_group_id}~{ad_id}~{label_id}`
string resource_name = 1 [
(google.api.field_behavior) = IMMUTABLE,
(google.api.resource_reference) = {

View file

@ -34,12 +34,12 @@ option ruby_package = "Google::Ads::SearchAds360::V0::Resources";
message AdGroupAdLabel {
option (google.api.resource) = {
type: "searchads360.googleapis.com/AdGroupAdLabel"
pattern: "customers/{customer_id}/adGroupAdLabels/{ad_group_id}~{ad_id}~{entity_id}"
pattern: "customers/{owner_customer_id}/adGroupAdLabels/{ad_group_id}~{ad_id}~{label_id}"
};
// Immutable. The resource name of the ad group ad label.
// Ad group ad label resource names have the form:
// `customers/{customer_id}/adGroupAdLabels/{ad_group_id}~{ad_id}~{label_id}`
// `customers/{owner_customer_id}/adGroupAdLabels/{ad_group_id}~{ad_id}~{label_id}`
string resource_name = 1 [
(google.api.field_behavior) = IMMUTABLE,
(google.api.resource_reference) = {

View file

@ -17,6 +17,7 @@ syntax = "proto3";
package google.ads.searchads360.v0.resources;
import "google/ads/searchads360/v0/common/criteria.proto";
import "google/ads/searchads360/v0/common/custom_parameter.proto";
import "google/ads/searchads360/v0/enums/ad_group_criterion_engine_status.proto";
import "google/ads/searchads360/v0/enums/ad_group_criterion_status.proto";
import "google/ads/searchads360/v0/enums/criterion_type.proto";
@ -152,6 +153,9 @@ message AdGroupCriterion {
// ad.
repeated string final_urls = 70;
// The list of possible final mobile URLs after all cross-domain redirects.
repeated string final_mobile_urls = 71;
// Output only. The Engine Status for ad group criterion.
optional google.ads.searchads360.v0.enums.AdGroupCriterionEngineStatusEnum
.AdGroupCriterionEngineStatus engine_status = 80
@ -163,6 +167,11 @@ message AdGroupCriterion {
// The URL template for constructing a tracking URL.
optional string tracking_url_template = 73;
// The list of mappings used to substitute custom parameter tags in a
// `tracking_url_template`, `final_urls`, or `mobile_final_urls`.
repeated google.ads.searchads360.v0.common.CustomParameter
url_custom_parameters = 14;
// Output only. ID of the ad group criterion in the external engine account.
// This field is for non-Google Ads account only, for example, Yahoo Japan,
// Microsoft, Baidu etc. For Google Ads entity, use

View file

@ -36,14 +36,14 @@ option ruby_package = "Google::Ads::SearchAds360::V0::Resources";
message AdGroupCriterionEffectiveLabel {
option (google.api.resource) = {
type: "searchads360.googleapis.com/AdGroupCriterionEffectiveLabel"
pattern: "customers/{customer_id}/adGroupCriterionEffectiveLabels/{ad_group_id}~{criterion_id}~{label_id}"
pattern: "customers/{owner_customer_id}/adGroupCriterionEffectiveLabels/{ad_group_id}~{criterion_id}~{label_id}"
plural: "adGroupCriterionEffectiveLabels"
singular: "adGroupCriterionEffectiveLabel"
};
// Immutable. The resource name of the ad group criterion effective label.
// Ad group criterion effective label resource names have the form:
// `customers/{customer_id}/adGroupCriterionEffectiveLabels/{ad_group_id}~{criterion_id}~{label_id}`
// `customers/{owner_customer_id}/adGroupCriterionEffectiveLabels/{ad_group_id}~{criterion_id}~{label_id}`
string resource_name = 1 [
(google.api.field_behavior) = IMMUTABLE,
(google.api.resource_reference) = {

View file

@ -34,12 +34,12 @@ option ruby_package = "Google::Ads::SearchAds360::V0::Resources";
message AdGroupCriterionLabel {
option (google.api.resource) = {
type: "searchads360.googleapis.com/AdGroupCriterionLabel"
pattern: "customers/{customer_id}/adGroupCriterionLabels/{ad_group_id}~{criterion_id}~{entity_id}"
pattern: "customers/{owner_customer_id}/adGroupCriterionLabels/{ad_group_id}~{criterion_id}~{label_id}"
};
// Immutable. The resource name of the ad group criterion label.
// Ad group criterion label resource names have the form:
// `customers/{customer_id}/adGroupCriterionLabels/{ad_group_id}~{criterion_id}~{label_id}`
// `customers/{owner_customer_id}/adGroupCriterionLabels/{ad_group_id}~{criterion_id}~{label_id}`
string resource_name = 1 [
(google.api.field_behavior) = IMMUTABLE,
(google.api.resource_reference) = {

View file

@ -36,14 +36,14 @@ option ruby_package = "Google::Ads::SearchAds360::V0::Resources";
message AdGroupEffectiveLabel {
option (google.api.resource) = {
type: "searchads360.googleapis.com/AdGroupEffectiveLabel"
pattern: "customers/{customer_id}/adGroupEffectiveLabels/{ad_group_id}~{label_id}"
pattern: "customers/{owner_customer_id}/adGroupEffectiveLabels/{ad_group_id}~{label_id}"
plural: "adGroupEffectiveLabels"
singular: "adGroupEffectiveLabel"
};
// Immutable. The resource name of the ad group effective label.
// Ad group effective label resource names have the form:
// `customers/{customer_id}/adGroupEffectiveLabels/{ad_group_id}~{label_id}`
// `customers/{owner_customer_id}/adGroupEffectiveLabels/{ad_group_id}~{label_id}`
string resource_name = 1 [
(google.api.field_behavior) = IMMUTABLE,
(google.api.resource_reference) = {

View file

@ -34,12 +34,12 @@ option ruby_package = "Google::Ads::SearchAds360::V0::Resources";
message AdGroupLabel {
option (google.api.resource) = {
type: "searchads360.googleapis.com/AdGroupLabel"
pattern: "customers/{customer_id}/adGroupLabels/{ad_group_id}~{entity_id}"
pattern: "customers/{owner_customer_id}/adGroupLabels/{ad_group_id}~{label_id}"
};
// Immutable. The resource name of the ad group label.
// Ad group label resource names have the form:
// `customers/{customer_id}/adGroupLabels/{ad_group_id}~{label_id}`
// `customers/{owner_customer_id}/adGroupLabels/{ad_group_id}~{label_id}`
string resource_name = 1 [
(google.api.field_behavior) = IMMUTABLE,
(google.api.resource_reference) = {

View file

@ -17,6 +17,7 @@ syntax = "proto3";
package google.ads.searchads360.v0.resources;
import "google/ads/searchads360/v0/common/asset_types.proto";
import "google/ads/searchads360/v0/common/custom_parameter.proto";
import "google/ads/searchads360/v0/enums/asset_engine_status.proto";
import "google/ads/searchads360/v0/enums/asset_status.proto";
import "google/ads/searchads360/v0/enums/asset_type.proto";
@ -68,9 +69,21 @@ message Asset {
// A list of possible final URLs after all cross domain redirects.
repeated string final_urls = 14;
// A list of possible final mobile URLs after all cross domain redirects.
repeated string final_mobile_urls = 16;
// URL template for constructing a tracking URL.
optional string tracking_url_template = 17;
// A list of mappings to be used for substituting URL custom parameter tags in
// the tracking_url_template, final_urls, and/or final_mobile_urls.
repeated google.ads.searchads360.v0.common.CustomParameter
url_custom_parameters = 18;
// URL template for appending params to landing page URLs served with parallel
// tracking.
optional string final_url_suffix = 19;
// Output only. The status of the asset.
google.ads.searchads360.v0.enums.AssetStatusEnum.AssetStatus status = 42
[(google.api.field_behavior) = OUTPUT_ONLY];

View file

@ -24,6 +24,7 @@ import "google/ads/searchads360/v0/enums/ad_serving_optimization_status.proto";
import "google/ads/searchads360/v0/enums/advertising_channel_sub_type.proto";
import "google/ads/searchads360/v0/enums/advertising_channel_type.proto";
import "google/ads/searchads360/v0/enums/asset_field_type.proto";
import "google/ads/searchads360/v0/enums/asset_set_type.proto";
import "google/ads/searchads360/v0/enums/bidding_strategy_system_status.proto";
import "google/ads/searchads360/v0/enums/bidding_strategy_type.proto";
import "google/ads/searchads360/v0/enums/campaign_serving_status.proto";
@ -361,6 +362,10 @@ message Campaign {
// false.
optional bool url_expansion_opt_out = 72;
// Output only. Types of feeds that are attached directly to this campaign.
repeated google.ads.searchads360.v0.enums.AssetSetTypeEnum.AssetSetType
feed_types = 103 [(google.api.field_behavior) = OUTPUT_ONLY];
// The bidding strategy for the campaign.
//
// Must be either portfolio (created through BiddingStrategy service) or

View file

@ -36,14 +36,14 @@ option ruby_package = "Google::Ads::SearchAds360::V0::Resources";
message CampaignEffectiveLabel {
option (google.api.resource) = {
type: "searchads360.googleapis.com/CampaignEffectiveLabel"
pattern: "customers/{customer_id}/campaignEffectiveLabels/{campaign_id}~{label_id}"
pattern: "customers/{owner_customer_id}/campaignEffectiveLabels/{campaign_id}~{label_id}"
plural: "campaignEffectiveLabels"
singular: "campaignEffectiveLabel"
};
// Immutable. Name of the resource.
// CampaignEffectivelabel resource names have the form:
// `customers/{customer_id}/campaignEffectiveLabels/{campaign_id}~{label_id}`
// `customers/{owner_customer_id}/campaignEffectiveLabels/{campaign_id}~{label_id}`
string resource_name = 1 [
(google.api.field_behavior) = IMMUTABLE,
(google.api.resource_reference) = {

View file

@ -34,12 +34,12 @@ option ruby_package = "Google::Ads::SearchAds360::V0::Resources";
message CampaignLabel {
option (google.api.resource) = {
type: "searchads360.googleapis.com/CampaignLabel"
pattern: "customers/{customer_id}/campaignLabels/{campaign_id}~{entity_id}"
pattern: "customers/{owner_customer_id}/campaignLabels/{campaign_id}~{label_id}"
};
// Immutable. Name of the resource.
// Campaign label resource names have the form:
// `customers/{customer_id}/campaignLabels/{campaign_id}~{label_id}`
// `customers/{owner_customer_id}/campaignLabels/{campaign_id}~{label_id}`
string resource_name = 1 [
(google.api.field_behavior) = IMMUTABLE,
(google.api.resource_reference) = {

View file

@ -34,12 +34,12 @@ option ruby_package = "Google::Ads::SearchAds360::V0::Resources";
message Label {
option (google.api.resource) = {
type: "searchads360.googleapis.com/Label"
pattern: "customers/{customer_id}/labels/{label_id}"
pattern: "customers/{owner_customer_id}/labels/{label_id}"
};
// Immutable. Name of the resource.
// Label resource names have the form:
// `customers/{customer_id}/labels/{label_id}`
// `customers/{owner_customer_id}/labels/{label_id}`
string resource_name = 1 [
(google.api.field_behavior) = IMMUTABLE,
(google.api.resource_reference) = {