xref: /aosp_15_r20/external/googleapis/google/analytics/admin/v1alpha/resources.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1// Copyright 2023 Google LLC
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15syntax = "proto3";
16
17package google.analytics.admin.v1alpha;
18
19import "google/analytics/admin/v1alpha/audience.proto";
20import "google/analytics/admin/v1alpha/channel_group.proto";
21import "google/analytics/admin/v1alpha/event_create_and_edit.proto";
22import "google/analytics/admin/v1alpha/expanded_data_set.proto";
23import "google/api/field_behavior.proto";
24import "google/api/resource.proto";
25import "google/protobuf/timestamp.proto";
26import "google/protobuf/wrappers.proto";
27
28option go_package = "cloud.google.com/go/analytics/admin/apiv1alpha/adminpb;adminpb";
29option java_multiple_files = true;
30option java_outer_classname = "ResourcesProto";
31option java_package = "com.google.analytics.admin.v1alpha";
32
33// The category selected for this property, used for industry benchmarking.
34enum IndustryCategory {
35  // Industry category unspecified
36  INDUSTRY_CATEGORY_UNSPECIFIED = 0;
37
38  // Automotive
39  AUTOMOTIVE = 1;
40
41  // Business and industrial markets
42  BUSINESS_AND_INDUSTRIAL_MARKETS = 2;
43
44  // Finance
45  FINANCE = 3;
46
47  // Healthcare
48  HEALTHCARE = 4;
49
50  // Technology
51  TECHNOLOGY = 5;
52
53  // Travel
54  TRAVEL = 6;
55
56  // Other
57  OTHER = 7;
58
59  // Arts and entertainment
60  ARTS_AND_ENTERTAINMENT = 8;
61
62  // Beauty and fitness
63  BEAUTY_AND_FITNESS = 9;
64
65  // Books and literature
66  BOOKS_AND_LITERATURE = 10;
67
68  // Food and drink
69  FOOD_AND_DRINK = 11;
70
71  // Games
72  GAMES = 12;
73
74  // Hobbies and leisure
75  HOBBIES_AND_LEISURE = 13;
76
77  // Home and garden
78  HOME_AND_GARDEN = 14;
79
80  // Internet and telecom
81  INTERNET_AND_TELECOM = 15;
82
83  // Law and government
84  LAW_AND_GOVERNMENT = 16;
85
86  // News
87  NEWS = 17;
88
89  // Online communities
90  ONLINE_COMMUNITIES = 18;
91
92  // People and society
93  PEOPLE_AND_SOCIETY = 19;
94
95  // Pets and animals
96  PETS_AND_ANIMALS = 20;
97
98  // Real estate
99  REAL_ESTATE = 21;
100
101  // Reference
102  REFERENCE = 22;
103
104  // Science
105  SCIENCE = 23;
106
107  // Sports
108  SPORTS = 24;
109
110  // Jobs and education
111  JOBS_AND_EDUCATION = 25;
112
113  // Shopping
114  SHOPPING = 26;
115}
116
117// Various levels of service for Google Analytics.
118enum ServiceLevel {
119  // Service level not specified or invalid.
120  SERVICE_LEVEL_UNSPECIFIED = 0;
121
122  // The standard version of Google Analytics.
123  GOOGLE_ANALYTICS_STANDARD = 1;
124
125  // The paid, premium version of Google Analytics.
126  GOOGLE_ANALYTICS_360 = 2;
127}
128
129// Different kinds of actors that can make changes to Google Analytics
130// resources.
131enum ActorType {
132  // Unknown or unspecified actor type.
133  ACTOR_TYPE_UNSPECIFIED = 0;
134
135  // Changes made by the user specified in actor_email.
136  USER = 1;
137
138  // Changes made by the Google Analytics system.
139  SYSTEM = 2;
140
141  // Changes made by Google Analytics support team staff.
142  SUPPORT = 3;
143}
144
145// Types of actions that may change a resource.
146enum ActionType {
147  // Action type unknown or not specified.
148  ACTION_TYPE_UNSPECIFIED = 0;
149
150  // Resource was created in this change.
151  CREATED = 1;
152
153  // Resource was updated in this change.
154  UPDATED = 2;
155
156  // Resource was deleted in this change.
157  DELETED = 3;
158}
159
160// Types of resources whose changes may be returned from change history.
161enum ChangeHistoryResourceType {
162  // Resource type unknown or not specified.
163  CHANGE_HISTORY_RESOURCE_TYPE_UNSPECIFIED = 0;
164
165  // Account resource
166  ACCOUNT = 1;
167
168  // Property resource
169  PROPERTY = 2;
170
171  // FirebaseLink resource
172  FIREBASE_LINK = 6;
173
174  // GoogleAdsLink resource
175  GOOGLE_ADS_LINK = 7;
176
177  // GoogleSignalsSettings resource
178  GOOGLE_SIGNALS_SETTINGS = 8;
179
180  // ConversionEvent resource
181  CONVERSION_EVENT = 9;
182
183  // MeasurementProtocolSecret resource
184  MEASUREMENT_PROTOCOL_SECRET = 10;
185
186  // CustomDimension resource
187  CUSTOM_DIMENSION = 11;
188
189  // CustomMetric resource
190  CUSTOM_METRIC = 12;
191
192  // DataRetentionSettings resource
193  DATA_RETENTION_SETTINGS = 13;
194
195  // DisplayVideo360AdvertiserLink resource
196  DISPLAY_VIDEO_360_ADVERTISER_LINK = 14;
197
198  // DisplayVideo360AdvertiserLinkProposal resource
199  DISPLAY_VIDEO_360_ADVERTISER_LINK_PROPOSAL = 15;
200
201  // SearchAds360Link resource
202  SEARCH_ADS_360_LINK = 16;
203
204  // DataStream resource
205  DATA_STREAM = 18;
206
207  // AttributionSettings resource
208  ATTRIBUTION_SETTINGS = 20;
209
210  // ExpandedDataSet resource
211  EXPANDED_DATA_SET = 21;
212
213  // ChannelGroup resource
214  CHANNEL_GROUP = 22;
215
216  // EnhancedMeasurementSettings resource
217  ENHANCED_MEASUREMENT_SETTINGS = 24;
218
219  // DataRedactionSettings resource
220  DATA_REDACTION_SETTINGS = 25;
221
222  // SKAdNetworkConversionValueSchema resource
223  SKADNETWORK_CONVERSION_VALUE_SCHEMA = 26;
224
225  // AdSenseLink resource
226  ADSENSE_LINK = 27;
227
228  // Audience resource
229  AUDIENCE = 28;
230
231  // EventCreateRule resource
232  EVENT_CREATE_RULE = 29;
233
234  // CalculatedMetric resource
235  CALCULATED_METRIC = 31;
236}
237
238// Status of the Google Signals settings.
239enum GoogleSignalsState {
240  // Google Signals status defaults to GOOGLE_SIGNALS_STATE_UNSPECIFIED to
241  // represent that the user has not made an explicit choice.
242  GOOGLE_SIGNALS_STATE_UNSPECIFIED = 0;
243
244  // Google Signals is enabled.
245  GOOGLE_SIGNALS_ENABLED = 1;
246
247  // Google Signals is disabled.
248  GOOGLE_SIGNALS_DISABLED = 2;
249}
250
251// Consent field of the Google Signals settings.
252enum GoogleSignalsConsent {
253  // Google Signals consent value defaults to
254  // GOOGLE_SIGNALS_CONSENT_UNSPECIFIED.  This will be treated as
255  // GOOGLE_SIGNALS_CONSENT_NOT_CONSENTED.
256  GOOGLE_SIGNALS_CONSENT_UNSPECIFIED = 0;
257
258  // Terms of service have been accepted
259  GOOGLE_SIGNALS_CONSENT_CONSENTED = 2;
260
261  // Terms of service have not been accepted
262  GOOGLE_SIGNALS_CONSENT_NOT_CONSENTED = 1;
263}
264
265// An indication of which product the user initiated a link proposal from.
266enum LinkProposalInitiatingProduct {
267  // Unspecified product.
268  LINK_PROPOSAL_INITIATING_PRODUCT_UNSPECIFIED = 0;
269
270  // This proposal was created by a user from Google Analytics.
271  GOOGLE_ANALYTICS = 1;
272
273  // This proposal was created by a user from a linked product (not Google
274  // Analytics).
275  LINKED_PRODUCT = 2;
276}
277
278// The state of a link proposal resource.
279enum LinkProposalState {
280  // Unspecified state
281  LINK_PROPOSAL_STATE_UNSPECIFIED = 0;
282
283  // This proposal is awaiting review from a Google Analytics user. This
284  // proposal will automatically expire after some time.
285  AWAITING_REVIEW_FROM_GOOGLE_ANALYTICS = 1;
286
287  // This proposal is awaiting review from a user of a linked product. This
288  // proposal will automatically expire after some time.
289  AWAITING_REVIEW_FROM_LINKED_PRODUCT = 2;
290
291  // This proposal has been withdrawn by an admin on the initiating product.
292  // This proposal will be automatically deleted after some time.
293  WITHDRAWN = 3;
294
295  // This proposal has been declined by an admin on the receiving product. This
296  // proposal will be automatically deleted after some time.
297  DECLINED = 4;
298
299  // This proposal expired due to lack of response from an admin on the
300  // receiving product. This proposal will be automatically deleted after some
301  // time.
302  EXPIRED = 5;
303
304  // This proposal has become obsolete because a link was directly created to
305  // the same external product resource that this proposal specifies. This
306  // proposal will be automatically deleted after some time.
307  OBSOLETE = 6;
308}
309
310// Types of Property resources.
311enum PropertyType {
312  // Unknown or unspecified property type
313  PROPERTY_TYPE_UNSPECIFIED = 0;
314
315  // Ordinary GA4 property
316  PROPERTY_TYPE_ORDINARY = 1;
317
318  // GA4 subproperty
319  PROPERTY_TYPE_SUBPROPERTY = 2;
320
321  // GA4 rollup property
322  PROPERTY_TYPE_ROLLUP = 3;
323}
324
325// The coarse conversion value set on the updatePostbackConversionValue SDK call
326// when a ConversionValues.event_mappings conditions are satisfied. For
327// more information, see
328// [SKAdNetwork.CoarseConversionValue](https://developer.apple.com/documentation/storekit/skadnetwork/coarseconversionvalue).
329enum CoarseValue {
330  // Coarse value not specified.
331  COARSE_VALUE_UNSPECIFIED = 0;
332
333  // Coarse value of low.
334  COARSE_VALUE_LOW = 1;
335
336  // Coarse value of medium.
337  COARSE_VALUE_MEDIUM = 2;
338
339  // Coarse value of high.
340  COARSE_VALUE_HIGH = 3;
341}
342
343// A resource message representing a Google Analytics account.
344message Account {
345  option (google.api.resource) = {
346    type: "analyticsadmin.googleapis.com/Account"
347    pattern: "accounts/{account}"
348  };
349
350  // Output only. Resource name of this account.
351  // Format: accounts/{account}
352  // Example: "accounts/100"
353  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
354
355  // Output only. Time when this account was originally created.
356  google.protobuf.Timestamp create_time = 2
357      [(google.api.field_behavior) = OUTPUT_ONLY];
358
359  // Output only. Time when account payload fields were last updated.
360  google.protobuf.Timestamp update_time = 3
361      [(google.api.field_behavior) = OUTPUT_ONLY];
362
363  // Required. Human-readable display name for this account.
364  string display_name = 4 [(google.api.field_behavior) = REQUIRED];
365
366  // Country of business. Must be a Unicode CLDR region code.
367  string region_code = 5;
368
369  // Output only. Indicates whether this Account is soft-deleted or not. Deleted
370  // accounts are excluded from List results unless specifically requested.
371  bool deleted = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
372}
373
374// A resource message representing a Google Analytics GA4 property.
375message Property {
376  option (google.api.resource) = {
377    type: "analyticsadmin.googleapis.com/Property"
378    pattern: "properties/{property}"
379  };
380
381  // Output only. Resource name of this property.
382  // Format: properties/{property_id}
383  // Example: "properties/1000"
384  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
385
386  // Immutable. The property type for this Property resource. When creating a
387  // property, if the type is "PROPERTY_TYPE_UNSPECIFIED", then
388  // "ORDINARY_PROPERTY" will be implied.
389  PropertyType property_type = 14 [(google.api.field_behavior) = IMMUTABLE];
390
391  // Output only. Time when the entity was originally created.
392  google.protobuf.Timestamp create_time = 3
393      [(google.api.field_behavior) = OUTPUT_ONLY];
394
395  // Output only. Time when entity payload fields were last updated.
396  google.protobuf.Timestamp update_time = 4
397      [(google.api.field_behavior) = OUTPUT_ONLY];
398
399  // Immutable. Resource name of this property's logical parent.
400  //
401  // Note: The Property-Moving UI can be used to change the parent.
402  // Format: accounts/{account}, properties/{property}
403  // Example: "accounts/100", "properties/101"
404  string parent = 2 [(google.api.field_behavior) = IMMUTABLE];
405
406  // Required. Human-readable display name for this property.
407  //
408  // The max allowed display name length is 100 UTF-16 code units.
409  string display_name = 5 [(google.api.field_behavior) = REQUIRED];
410
411  // Industry associated with this property
412  // Example: AUTOMOTIVE, FOOD_AND_DRINK
413  IndustryCategory industry_category = 6;
414
415  // Required. Reporting Time Zone, used as the day boundary for reports,
416  // regardless of where the data originates. If the time zone honors DST,
417  // Analytics will automatically adjust for the changes.
418  //
419  // NOTE: Changing the time zone only affects data going forward, and is not
420  // applied retroactively.
421  //
422  // Format: https://www.iana.org/time-zones
423  // Example: "America/Los_Angeles"
424  string time_zone = 7 [(google.api.field_behavior) = REQUIRED];
425
426  // The currency type used in reports involving monetary values.
427  //
428  //
429  // Format: https://en.wikipedia.org/wiki/ISO_4217
430  // Examples: "USD", "EUR", "JPY"
431  string currency_code = 8;
432
433  // Output only. The Google Analytics service level that applies to this
434  // property.
435  ServiceLevel service_level = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
436
437  // Output only. If set, the time at which this property was trashed. If not
438  // set, then this property is not currently in the trash can.
439  google.protobuf.Timestamp delete_time = 11
440      [(google.api.field_behavior) = OUTPUT_ONLY];
441
442  // Output only. If set, the time at which this trashed property will be
443  // permanently deleted. If not set, then this property is not currently in the
444  // trash can and is not slated to be deleted.
445  google.protobuf.Timestamp expire_time = 12
446      [(google.api.field_behavior) = OUTPUT_ONLY];
447
448  // Immutable. The resource name of the parent account
449  // Format: accounts/{account_id}
450  // Example: "accounts/123"
451  string account = 13 [
452    (google.api.field_behavior) = IMMUTABLE,
453    (google.api.resource_reference) = {
454      type: "analyticsadmin.googleapis.com/Account"
455    }
456  ];
457}
458
459// A resource message representing a data stream.
460message DataStream {
461  option (google.api.resource) = {
462    type: "analyticsadmin.googleapis.com/DataStream"
463    pattern: "properties/{property}/dataStreams/{data_stream}"
464  };
465
466  // Data specific to web streams.
467  message WebStreamData {
468    // Output only. Analytics Measurement ID.
469    //
470    // Example: "G-1A2BCD345E"
471    string measurement_id = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
472
473    // Output only. ID of the corresponding web app in Firebase, if any.
474    // This ID can change if the web app is deleted and recreated.
475    string firebase_app_id = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
476
477    // Domain name of the web app being measured, or empty.
478    // Example: "http://www.google.com", "https://www.google.com"
479    string default_uri = 3;
480  }
481
482  // Data specific to Android app streams.
483  message AndroidAppStreamData {
484    // Output only. ID of the corresponding Android app in Firebase, if any.
485    // This ID can change if the Android app is deleted and recreated.
486    string firebase_app_id = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
487
488    // Immutable. The package name for the app being measured.
489    // Example: "com.example.myandroidapp"
490    string package_name = 2 [(google.api.field_behavior) = IMMUTABLE];
491  }
492
493  // Data specific to iOS app streams.
494  message IosAppStreamData {
495    // Output only. ID of the corresponding iOS app in Firebase, if any.
496    // This ID can change if the iOS app is deleted and recreated.
497    string firebase_app_id = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
498
499    // Required. Immutable. The Apple App Store Bundle ID for the app
500    // Example: "com.example.myiosapp"
501    string bundle_id = 2 [
502      (google.api.field_behavior) = IMMUTABLE,
503      (google.api.field_behavior) = REQUIRED
504    ];
505  }
506
507  // The type of the data stream.
508  enum DataStreamType {
509    // Type unknown or not specified.
510    DATA_STREAM_TYPE_UNSPECIFIED = 0;
511
512    // Web data stream.
513    WEB_DATA_STREAM = 1;
514
515    // Android app data stream.
516    ANDROID_APP_DATA_STREAM = 2;
517
518    // iOS app data stream.
519    IOS_APP_DATA_STREAM = 3;
520  }
521
522  // Data for specific data stream types. The message that will be
523  // set corresponds to the type of this stream.
524  oneof stream_data {
525    // Data specific to web streams. Must be populated if type is
526    // WEB_DATA_STREAM.
527    WebStreamData web_stream_data = 6;
528
529    // Data specific to Android app streams. Must be populated if type is
530    // ANDROID_APP_DATA_STREAM.
531    AndroidAppStreamData android_app_stream_data = 7;
532
533    // Data specific to iOS app streams. Must be populated if type is
534    // IOS_APP_DATA_STREAM.
535    IosAppStreamData ios_app_stream_data = 8;
536  }
537
538  // Output only. Resource name of this Data Stream.
539  // Format: properties/{property_id}/dataStreams/{stream_id}
540  // Example: "properties/1000/dataStreams/2000"
541  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
542
543  // Required. Immutable. The type of this DataStream resource.
544  DataStreamType type = 2 [
545    (google.api.field_behavior) = IMMUTABLE,
546    (google.api.field_behavior) = REQUIRED
547  ];
548
549  // Human-readable display name for the Data Stream.
550  //
551  // Required for web data streams.
552  //
553  // The max allowed display name length is 255 UTF-16 code units.
554  string display_name = 3;
555
556  // Output only. Time when this stream was originally created.
557  google.protobuf.Timestamp create_time = 4
558      [(google.api.field_behavior) = OUTPUT_ONLY];
559
560  // Output only. Time when stream payload fields were last updated.
561  google.protobuf.Timestamp update_time = 5
562      [(google.api.field_behavior) = OUTPUT_ONLY];
563}
564
565// A link between a GA4 property and a Firebase project.
566message FirebaseLink {
567  option (google.api.resource) = {
568    type: "analyticsadmin.googleapis.com/FirebaseLink"
569    pattern: "properties/{property}/firebaseLinks/{firebase_link}"
570  };
571
572  // Output only. Example format: properties/1234/firebaseLinks/5678
573  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
574
575  // Immutable. Firebase project resource name. When creating a FirebaseLink,
576  // you may provide this resource name using either a project number or project
577  // ID. Once this resource has been created, returned FirebaseLinks will always
578  // have a project_name that contains a project number.
579  //
580  // Format: 'projects/{project number}'
581  // Example: 'projects/1234'
582  string project = 2 [(google.api.field_behavior) = IMMUTABLE];
583
584  // Output only. Time when this FirebaseLink was originally created.
585  google.protobuf.Timestamp create_time = 3
586      [(google.api.field_behavior) = OUTPUT_ONLY];
587}
588
589// Read-only resource with the tag for sending data from a website to a
590// DataStream. Only present for web DataStream resources.
591message GlobalSiteTag {
592  option (google.api.resource) = {
593    type: "analyticsadmin.googleapis.com/GlobalSiteTag"
594    pattern: "properties/{property}/dataStreams/{data_stream}/globalSiteTag"
595  };
596
597  // Output only. Resource name for this GlobalSiteTag resource.
598  // Format: properties/{property_id}/dataStreams/{stream_id}/globalSiteTag
599  // Example: "properties/123/dataStreams/456/globalSiteTag"
600  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
601
602  // Immutable. JavaScript code snippet to be pasted as the first item into the
603  // head tag of every webpage to measure.
604  string snippet = 2 [(google.api.field_behavior) = IMMUTABLE];
605}
606
607// A link between a GA4 property and a Google Ads account.
608message GoogleAdsLink {
609  option (google.api.resource) = {
610    type: "analyticsadmin.googleapis.com/GoogleAdsLink"
611    pattern: "properties/{property}/googleAdsLinks/{google_ads_link}"
612  };
613
614  // Output only. Format:
615  // properties/{propertyId}/googleAdsLinks/{googleAdsLinkId}
616  //
617  // Note: googleAdsLinkId is not the Google Ads customer ID.
618  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
619
620  // Immutable. Google Ads customer ID.
621  string customer_id = 3 [(google.api.field_behavior) = IMMUTABLE];
622
623  // Output only. If true, this link is for a Google Ads manager account.
624  bool can_manage_clients = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
625
626  // Enable personalized advertising features with this integration.
627  // Automatically publish my Google Analytics audience lists and Google
628  // Analytics remarketing events/parameters to the linked Google Ads account.
629  // If this field is not set on create/update, it will be defaulted to true.
630  google.protobuf.BoolValue ads_personalization_enabled = 5;
631
632  // Output only. Time when this link was originally created.
633  google.protobuf.Timestamp create_time = 7
634      [(google.api.field_behavior) = OUTPUT_ONLY];
635
636  // Output only. Time when this link was last updated.
637  google.protobuf.Timestamp update_time = 8
638      [(google.api.field_behavior) = OUTPUT_ONLY];
639
640  // Output only. Email address of the user that created the link.
641  // An empty string will be returned if the email address can't be retrieved.
642  string creator_email_address = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
643}
644
645// A resource message representing data sharing settings of a Google Analytics
646// account.
647message DataSharingSettings {
648  option (google.api.resource) = {
649    type: "analyticsadmin.googleapis.com/DataSharingSettings"
650    pattern: "accounts/{account}/dataSharingSettings"
651  };
652
653  // Output only. Resource name.
654  // Format: accounts/{account}/dataSharingSettings
655  // Example: "accounts/1000/dataSharingSettings"
656  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
657
658  // Allows Google support to access the data in order to help troubleshoot
659  // issues.
660  bool sharing_with_google_support_enabled = 2;
661
662  // Allows Google sales teams that are assigned to the customer to access the
663  // data in order to suggest configuration changes to improve results.
664  // Sales team restrictions still apply when enabled.
665  bool sharing_with_google_assigned_sales_enabled = 3;
666
667  // Allows any of Google sales to access the data in order to suggest
668  // configuration changes to improve results.
669  bool sharing_with_google_any_sales_enabled = 4;
670
671  // Allows Google to use the data to improve other Google products or services.
672  bool sharing_with_google_products_enabled = 5;
673
674  // Allows Google to share the data anonymously in aggregate form with others.
675  bool sharing_with_others_enabled = 6;
676}
677
678// A virtual resource representing an overview of an account and
679// all its child GA4 properties.
680message AccountSummary {
681  option (google.api.resource) = {
682    type: "analyticsadmin.googleapis.com/AccountSummary"
683    pattern: "accountSummaries/{account_summary}"
684  };
685
686  // Resource name for this account summary.
687  // Format: accountSummaries/{account_id}
688  // Example: "accountSummaries/1000"
689  string name = 1;
690
691  // Resource name of account referred to by this account summary
692  // Format: accounts/{account_id}
693  // Example: "accounts/1000"
694  string account = 2 [(google.api.resource_reference) = {
695    type: "analyticsadmin.googleapis.com/Account"
696  }];
697
698  // Display name for the account referred to in this account summary.
699  string display_name = 3;
700
701  // List of summaries for child accounts of this account.
702  repeated PropertySummary property_summaries = 4;
703}
704
705// A virtual resource representing metadata for a GA4 property.
706message PropertySummary {
707  // Resource name of property referred to by this property summary
708  // Format: properties/{property_id}
709  // Example: "properties/1000"
710  string property = 1 [(google.api.resource_reference) = {
711    type: "analyticsadmin.googleapis.com/Property"
712  }];
713
714  // Display name for the property referred to in this property summary.
715  string display_name = 2;
716
717  // The property's property type.
718  PropertyType property_type = 3;
719
720  // Resource name of this property's logical parent.
721  //
722  // Note: The Property-Moving UI can be used to change the parent.
723  // Format: accounts/{account}, properties/{property}
724  // Example: "accounts/100", "properties/200"
725  string parent = 4;
726}
727
728// A secret value used for sending hits to Measurement Protocol.
729message MeasurementProtocolSecret {
730  option (google.api.resource) = {
731    type: "analyticsadmin.googleapis.com/MeasurementProtocolSecret"
732    pattern: "properties/{property}/dataStreams/{data_stream}/measurementProtocolSecrets/{measurement_protocol_secret}"
733  };
734
735  // Output only. Resource name of this secret. This secret may be a child of
736  // any type of stream. Format:
737  // properties/{property}/dataStreams/{dataStream}/measurementProtocolSecrets/{measurementProtocolSecret}
738  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
739
740  // Required. Human-readable display name for this secret.
741  string display_name = 2 [(google.api.field_behavior) = REQUIRED];
742
743  // Output only. The measurement protocol secret value. Pass this value to the
744  // api_secret field of the Measurement Protocol API when sending hits to this
745  // secret's parent property.
746  string secret_value = 3 [(google.api.field_behavior) = OUTPUT_ONLY];
747}
748
749// SKAdNetwork conversion value schema of an iOS stream.
750message SKAdNetworkConversionValueSchema {
751  option (google.api.resource) = {
752    type: "analyticsadmin.googleapis.com/SKAdNetworkConversionValueSchema"
753    pattern: "properties/{property}/dataStreams/{data_stream}/sKAdNetworkConversionValueSchema/{skadnetwork_conversion_value_schema}"
754  };
755
756  // Output only. Resource name of the schema. This will be child of ONLY an iOS
757  // stream, and there can be at most one such child under an iOS stream.
758  // Format:
759  // properties/{property}/dataStreams/{dataStream}/sKAdNetworkConversionValueSchema
760  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
761
762  // Required. The conversion value settings for the first postback window.
763  // These differ from values for postback window two and three in that they
764  // contain a "Fine" grained conversion value (a numeric value).
765  //
766  // Conversion values for this postback window must be set.  The other windows
767  // are optional and may inherit this window's settings if unset or disabled.
768  PostbackWindow postback_window_one = 2
769      [(google.api.field_behavior) = REQUIRED];
770
771  // The conversion value settings for the second postback window.
772  //
773  // This field should only be configured if there is a need to define different
774  // conversion values for this postback window.
775  //
776  // If enable_postback_window_settings is set to false for this postback
777  // window, the values from postback_window_one will be used.
778  PostbackWindow postback_window_two = 3;
779
780  // The conversion value settings for the third postback window.
781  //
782  // This field should only be set if the user chose to define different
783  // conversion values for this postback window. It is allowed to configure
784  // window 3 without setting window 2. In case window 1 & 2 settings are set
785  // and enable_postback_window_settings for this postback window is set to
786  // false, the schema will inherit settings from postback_window_two.
787  PostbackWindow postback_window_three = 4;
788
789  // If enabled, the GA SDK will set conversion values using this schema
790  // definition, and schema will be exported to any Google Ads accounts linked
791  // to this property. If disabled, the GA SDK will not automatically set
792  // conversion values, and also the schema will not be exported to Ads.
793  bool apply_conversion_values = 5;
794}
795
796// Settings for a SKAdNetwork conversion postback window.
797message PostbackWindow {
798  // Ordering of the repeated field will be used to prioritize the conversion
799  // value settings. Lower indexed entries are prioritized higher. The first
800  // conversion value setting that evaluates to true will be selected. It must
801  // have at least one entry if enable_postback_window_settings is set to
802  // true. It can have maximum of 128 entries.
803  repeated ConversionValues conversion_values = 1;
804
805  // If enable_postback_window_settings is true, conversion_values
806  // must be populated and will be used for determining when and how to set the
807  // Conversion Value on a client device and exporting schema to linked Ads
808  // accounts. If false, the settings are not used, but are retained in case
809  // they may be used in the future. This must always be true for
810  // postback_window_one.
811  bool postback_window_settings_enabled = 2;
812}
813
814// Conversion value settings for a postback window for SKAdNetwork conversion
815// value schema.
816message ConversionValues {
817  // Display name of the SKAdNetwork conversion value.
818  // The max allowed display name length is 50 UTF-16 code units.
819  string display_name = 1;
820
821  // The fine-grained conversion value.  This is applicable only to the first
822  // postback window. Its valid values are [0,63], both inclusive. It must be
823  // set for postback window 1, and must not be set for postback window 2 & 3.
824  // This value is not guaranteed to be unique.
825  //
826  // If the configuration for the first postback window is re-used for second or
827  // third postback windows this field has no effect.
828  optional int32 fine_value = 2;
829
830  // Required. A coarse grained conversion value.
831  //
832  // This value is not guaranteed to be unique.
833  CoarseValue coarse_value = 3 [(google.api.field_behavior) = REQUIRED];
834
835  // Event conditions that must be met for this Conversion Value to be achieved.
836  // The conditions in this list are ANDed together. It must have minimum of 1
837  // entry and maximum of 3 entries, if the postback window is enabled.
838  repeated EventMapping event_mappings = 4;
839
840  // If true, the SDK should lock to this conversion value for the current
841  // postback window.
842  bool lock_enabled = 5;
843}
844
845// Event setting conditions to match an event.
846message EventMapping {
847  // Required. Name of the GA4 event. It must always be set.
848  // The max allowed display name length is 40 UTF-16 code units.
849  string event_name = 1 [(google.api.field_behavior) = REQUIRED];
850
851  // At least one of the following four min/max values must be set. The
852  // values set will be ANDed together to qualify an event.
853  // The minimum number of times the event occurred. If not set, minimum event
854  // count won't be checked.
855  optional int64 min_event_count = 2;
856
857  // The maximum number of times the event occurred. If not set, maximum event
858  // count won't be checked.
859  optional int64 max_event_count = 3;
860
861  // The minimum revenue generated due to the event. Revenue currency will be
862  // defined at the property level. If not set, minimum event value won't be
863  // checked.
864  optional double min_event_value = 4;
865
866  // The maximum revenue generated due to the event. Revenue currency will be
867  // defined at the property level. If not set, maximum event value won't be
868  // checked.
869  optional double max_event_value = 5;
870}
871
872// A set of changes within a Google Analytics account or its child properties
873// that resulted from the same cause. Common causes would be updates made in the
874// Google Analytics UI, changes from customer support, or automatic Google
875// Analytics system changes.
876message ChangeHistoryEvent {
877  // ID of this change history event. This ID is unique across Google Analytics.
878  string id = 1;
879
880  // Time when change was made.
881  google.protobuf.Timestamp change_time = 2;
882
883  // The type of actor that made this change.
884  ActorType actor_type = 3;
885
886  // Email address of the Google account that made the change. This will be a
887  // valid email address if the actor field is set to USER, and empty otherwise.
888  // Google accounts that have been deleted will cause an error.
889  string user_actor_email = 4;
890
891  // If true, then the list of changes returned was filtered, and does not
892  // represent all changes that occurred in this event.
893  bool changes_filtered = 5;
894
895  // A list of changes made in this change history event that fit the filters
896  // specified in SearchChangeHistoryEventsRequest.
897  repeated ChangeHistoryChange changes = 6;
898}
899
900// A description of a change to a single Google Analytics resource.
901message ChangeHistoryChange {
902  // A snapshot of a resource as before or after the result of a change in
903  // change history.
904  message ChangeHistoryResource {
905    oneof resource {
906      // A snapshot of an Account resource in change history.
907      Account account = 1;
908
909      // A snapshot of a Property resource in change history.
910      Property property = 2;
911
912      // A snapshot of a FirebaseLink resource in change history.
913      FirebaseLink firebase_link = 6;
914
915      // A snapshot of a GoogleAdsLink resource in change history.
916      GoogleAdsLink google_ads_link = 7;
917
918      // A snapshot of a GoogleSignalsSettings resource in change history.
919      GoogleSignalsSettings google_signals_settings = 8;
920
921      // A snapshot of a DisplayVideo360AdvertiserLink resource in change
922      // history.
923      DisplayVideo360AdvertiserLink display_video_360_advertiser_link = 9;
924
925      // A snapshot of a DisplayVideo360AdvertiserLinkProposal resource in
926      // change history.
927      DisplayVideo360AdvertiserLinkProposal
928          display_video_360_advertiser_link_proposal = 10;
929
930      // A snapshot of a ConversionEvent resource in change history.
931      ConversionEvent conversion_event = 11;
932
933      // A snapshot of a MeasurementProtocolSecret resource in change history.
934      MeasurementProtocolSecret measurement_protocol_secret = 12;
935
936      // A snapshot of a CustomDimension resource in change history.
937      CustomDimension custom_dimension = 13;
938
939      // A snapshot of a CustomMetric resource in change history.
940      CustomMetric custom_metric = 14;
941
942      // A snapshot of a data retention settings resource in change history.
943      DataRetentionSettings data_retention_settings = 15;
944
945      // A snapshot of a SearchAds360Link resource in change history.
946      SearchAds360Link search_ads_360_link = 16;
947
948      // A snapshot of a DataStream resource in change history.
949      DataStream data_stream = 18;
950
951      // A snapshot of AttributionSettings resource in change history.
952      AttributionSettings attribution_settings = 20;
953
954      // A snapshot of an ExpandedDataSet resource in change history.
955      ExpandedDataSet expanded_data_set = 21;
956
957      // A snapshot of a ChannelGroup resource in change history.
958      ChannelGroup channel_group = 22;
959
960      // A snapshot of a BigQuery link resource in change history.
961      BigQueryLink bigquery_link = 23;
962
963      // A snapshot of EnhancedMeasurementSettings resource in change history.
964      EnhancedMeasurementSettings enhanced_measurement_settings = 24;
965
966      // A snapshot of DataRedactionSettings resource in change history.
967      DataRedactionSettings data_redaction_settings = 25;
968
969      // A snapshot of SKAdNetworkConversionValueSchema resource in change
970      // history.
971      SKAdNetworkConversionValueSchema skadnetwork_conversion_value_schema = 26;
972
973      // A snapshot of an AdSenseLink resource in change history.
974      AdSenseLink adsense_link = 27;
975
976      // A snapshot of an Audience resource in change history.
977      Audience audience = 28;
978
979      // A snapshot of an EventCreateRule resource in change history.
980      EventCreateRule event_create_rule = 29;
981
982      // A snapshot of a CalculatedMetric resource in change history.
983      CalculatedMetric calculated_metric = 31;
984    }
985  }
986
987  // Resource name of the resource whose changes are described by this entry.
988  string resource = 1;
989
990  // The type of action that changed this resource.
991  ActionType action = 2;
992
993  // Resource contents from before the change was made. If this resource was
994  // created in this change, this field will be missing.
995  ChangeHistoryResource resource_before_change = 3;
996
997  // Resource contents from after the change was made. If this resource was
998  // deleted in this change, this field will be missing.
999  ChangeHistoryResource resource_after_change = 4;
1000}
1001
1002// A link between a GA4 property and a Display & Video 360 advertiser.
1003message DisplayVideo360AdvertiserLink {
1004  option (google.api.resource) = {
1005    type: "analyticsadmin.googleapis.com/DisplayVideo360AdvertiserLink"
1006    pattern: "properties/{property}/displayVideo360AdvertiserLinks/{display_video_360_advertiser_link}"
1007  };
1008
1009  // Output only. The resource name for this DisplayVideo360AdvertiserLink
1010  // resource. Format:
1011  // properties/{propertyId}/displayVideo360AdvertiserLinks/{linkId}
1012  //
1013  // Note: linkId is not the Display & Video 360 Advertiser ID
1014  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1015
1016  // Immutable. The Display & Video 360 Advertiser's advertiser ID.
1017  string advertiser_id = 2 [(google.api.field_behavior) = IMMUTABLE];
1018
1019  // Output only. The display name of the Display & Video 360 Advertiser.
1020  string advertiser_display_name = 3
1021      [(google.api.field_behavior) = OUTPUT_ONLY];
1022
1023  // Enables personalized advertising features with this integration.
1024  // If this field is not set on create/update, it will be defaulted to true.
1025  google.protobuf.BoolValue ads_personalization_enabled = 4;
1026
1027  // Immutable. Enables the import of campaign data from Display & Video 360
1028  // into the GA4 property. After link creation, this can only be updated from
1029  // the Display & Video 360 product. If this field is not set on create, it
1030  // will be defaulted to true.
1031  google.protobuf.BoolValue campaign_data_sharing_enabled = 5
1032      [(google.api.field_behavior) = IMMUTABLE];
1033
1034  // Immutable. Enables the import of cost data from Display & Video 360 into
1035  // the GA4 property. This can only be enabled if campaign_data_sharing_enabled
1036  // is enabled. After link creation, this can only be updated from the Display
1037  // & Video 360 product. If this field is not set on create, it will be
1038  // defaulted to true.
1039  google.protobuf.BoolValue cost_data_sharing_enabled = 6
1040      [(google.api.field_behavior) = IMMUTABLE];
1041}
1042
1043// A proposal for a link between a GA4 property and a Display & Video 360
1044// advertiser.
1045//
1046// A proposal is converted to a DisplayVideo360AdvertiserLink once approved.
1047// Google Analytics admins approve inbound proposals while Display & Video 360
1048// admins approve outbound proposals.
1049message DisplayVideo360AdvertiserLinkProposal {
1050  option (google.api.resource) = {
1051    type: "analyticsadmin.googleapis.com/DisplayVideo360AdvertiserLinkProposal"
1052    pattern: "properties/{property}/displayVideo360AdvertiserLinkProposals/{display_video_360_advertiser_link_proposal}"
1053  };
1054
1055  // Output only. The resource name for this
1056  // DisplayVideo360AdvertiserLinkProposal resource. Format:
1057  // properties/{propertyId}/displayVideo360AdvertiserLinkProposals/{proposalId}
1058  //
1059  // Note: proposalId is not the Display & Video 360 Advertiser ID
1060  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1061
1062  // Immutable. The Display & Video 360 Advertiser's advertiser ID.
1063  string advertiser_id = 2 [(google.api.field_behavior) = IMMUTABLE];
1064
1065  // Output only. The status information for this link proposal.
1066  LinkProposalStatusDetails link_proposal_status_details = 3
1067      [(google.api.field_behavior) = OUTPUT_ONLY];
1068
1069  // Output only. The display name of the Display & Video Advertiser.
1070  // Only populated for proposals that originated from Display & Video 360.
1071  string advertiser_display_name = 4
1072      [(google.api.field_behavior) = OUTPUT_ONLY];
1073
1074  // Input only. On a proposal being sent to Display & Video 360, this field
1075  // must be set to the email address of an admin on the target advertiser. This
1076  // is used to verify that the Google Analytics admin is aware of at least one
1077  // admin on the Display & Video 360 Advertiser. This does not restrict
1078  // approval of the proposal to a single user. Any admin on the Display & Video
1079  // 360 Advertiser may approve the proposal.
1080  string validation_email = 5 [(google.api.field_behavior) = INPUT_ONLY];
1081
1082  // Immutable. Enables personalized advertising features with this integration.
1083  // If this field is not set on create, it will be defaulted to true.
1084  google.protobuf.BoolValue ads_personalization_enabled = 6
1085      [(google.api.field_behavior) = IMMUTABLE];
1086
1087  // Immutable. Enables the import of campaign data from Display & Video 360.
1088  // If this field is not set on create, it will be defaulted to true.
1089  google.protobuf.BoolValue campaign_data_sharing_enabled = 7
1090      [(google.api.field_behavior) = IMMUTABLE];
1091
1092  // Immutable. Enables the import of cost data from Display & Video 360.
1093  // This can only be enabled if campaign_data_sharing_enabled is enabled.
1094  // If this field is not set on create, it will be defaulted to true.
1095  google.protobuf.BoolValue cost_data_sharing_enabled = 8
1096      [(google.api.field_behavior) = IMMUTABLE];
1097}
1098
1099// A link between a GA4 property and a Search Ads 360 entity.
1100message SearchAds360Link {
1101  option (google.api.resource) = {
1102    type: "analyticsadmin.googleapis.com/SearchAds360Link"
1103    pattern: "properties/{property}/searchAds360Links/{search_ads_360_link}"
1104  };
1105
1106  // Output only. The resource name for this SearchAds360Link resource.
1107  // Format: properties/{propertyId}/searchAds360Links/{linkId}
1108  //
1109  // Note: linkId is not the Search Ads 360 advertiser ID
1110  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1111
1112  // Immutable. This field represents the Advertiser ID of the Search Ads 360
1113  // Advertiser. that has been linked.
1114  string advertiser_id = 2 [(google.api.field_behavior) = IMMUTABLE];
1115
1116  // Immutable. Enables the import of campaign data from Search Ads 360 into the
1117  // GA4 property. After link creation, this can only be updated from the Search
1118  // Ads 360 product.
1119  // If this field is not set on create, it will be defaulted to true.
1120  google.protobuf.BoolValue campaign_data_sharing_enabled = 3
1121      [(google.api.field_behavior) = IMMUTABLE];
1122
1123  // Immutable. Enables the import of cost data from Search Ads 360 to the GA4
1124  // property. This can only be enabled if campaign_data_sharing_enabled is
1125  // enabled. After link creation, this can only be updated from
1126  // the Search Ads 360 product.
1127  // If this field is not set on create, it will be defaulted to true.
1128  google.protobuf.BoolValue cost_data_sharing_enabled = 4
1129      [(google.api.field_behavior) = IMMUTABLE];
1130
1131  // Output only. The display name of the Search Ads 360 Advertiser.
1132  // Allows users to easily identify the linked resource.
1133  string advertiser_display_name = 5
1134      [(google.api.field_behavior) = OUTPUT_ONLY];
1135
1136  // Enables personalized advertising features with this integration.
1137  // If this field is not set on create, it will be defaulted to true.
1138  google.protobuf.BoolValue ads_personalization_enabled = 6;
1139
1140  // Enables export of site stats with this integration.
1141  // If this field is not set on create, it will be defaulted to true.
1142  google.protobuf.BoolValue site_stats_sharing_enabled = 7;
1143}
1144
1145// Status information for a link proposal.
1146message LinkProposalStatusDetails {
1147  // Output only. The source of this proposal.
1148  LinkProposalInitiatingProduct link_proposal_initiating_product = 1
1149      [(google.api.field_behavior) = OUTPUT_ONLY];
1150
1151  // Output only. The email address of the user that proposed this linkage.
1152  string requestor_email = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
1153
1154  // Output only. The state of this proposal.
1155  LinkProposalState link_proposal_state = 3
1156      [(google.api.field_behavior) = OUTPUT_ONLY];
1157}
1158
1159// A conversion event in a Google Analytics property.
1160message ConversionEvent {
1161  option (google.api.resource) = {
1162    type: "analyticsadmin.googleapis.com/ConversionEvent"
1163    pattern: "properties/{property}/conversionEvents/{conversion_event}"
1164  };
1165
1166  // Defines a default value/currency for a conversion event. Both value and
1167  // currency must be provided.
1168  message DefaultConversionValue {
1169    // This value will be used to populate the value for all conversions
1170    // of the specified event_name where the event "value" parameter is unset.
1171    optional double value = 1;
1172
1173    // When a conversion event for this event_name has no set currency,
1174    // this currency will be applied as the default. Must be in ISO 4217
1175    // currency code format. See https://en.wikipedia.org/wiki/ISO_4217 for
1176    // more information.
1177    optional string currency_code = 2;
1178  }
1179
1180  // The method by which conversions will be counted across multiple events
1181  // within a session.
1182  enum ConversionCountingMethod {
1183    // Counting method not specified.
1184    CONVERSION_COUNTING_METHOD_UNSPECIFIED = 0;
1185
1186    // Each Event instance is considered a Conversion.
1187    ONCE_PER_EVENT = 1;
1188
1189    // An Event instance is considered a Conversion at most once per session per
1190    // user.
1191    ONCE_PER_SESSION = 2;
1192  }
1193
1194  // Output only. Resource name of this conversion event.
1195  // Format: properties/{property}/conversionEvents/{conversion_event}
1196  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1197
1198  // Immutable. The event name for this conversion event.
1199  // Examples: 'click', 'purchase'
1200  string event_name = 2 [(google.api.field_behavior) = IMMUTABLE];
1201
1202  // Output only. Time when this conversion event was created in the property.
1203  google.protobuf.Timestamp create_time = 3
1204      [(google.api.field_behavior) = OUTPUT_ONLY];
1205
1206  // Output only. If set, this event can currently be deleted with
1207  // DeleteConversionEvent.
1208  bool deletable = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
1209
1210  // Output only. If set to true, this conversion event refers to a custom
1211  // event.  If set to false, this conversion event refers to a default event in
1212  // GA. Default events typically have special meaning in GA. Default events are
1213  // usually created for you by the GA system, but in some cases can be created
1214  // by property admins. Custom events count towards the maximum number of
1215  // custom conversion events that may be created per property.
1216  bool custom = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
1217
1218  // Optional. The method by which conversions will be counted across multiple
1219  // events within a session. If this value is not provided, it will be set to
1220  // `ONCE_PER_EVENT`.
1221  ConversionCountingMethod counting_method = 6
1222      [(google.api.field_behavior) = OPTIONAL];
1223
1224  // Optional. Defines a default value/currency for a conversion event.
1225  optional DefaultConversionValue default_conversion_value = 7
1226      [(google.api.field_behavior) = OPTIONAL];
1227}
1228
1229// Settings values for Google Signals.  This is a singleton resource.
1230message GoogleSignalsSettings {
1231  option (google.api.resource) = {
1232    type: "analyticsadmin.googleapis.com/GoogleSignalsSettings"
1233    pattern: "properties/{property}/googleSignalsSettings"
1234  };
1235
1236  // Output only. Resource name of this setting.
1237  // Format: properties/{property_id}/googleSignalsSettings
1238  // Example: "properties/1000/googleSignalsSettings"
1239  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1240
1241  // Status of this setting.
1242  GoogleSignalsState state = 3;
1243
1244  // Output only. Terms of Service acceptance.
1245  GoogleSignalsConsent consent = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
1246}
1247
1248// A definition for a CustomDimension.
1249message CustomDimension {
1250  option (google.api.resource) = {
1251    type: "analyticsadmin.googleapis.com/CustomDimension"
1252    pattern: "properties/{property}/customDimensions/{custom_dimension}"
1253  };
1254
1255  // Valid values for the scope of this dimension.
1256  enum DimensionScope {
1257    // Scope unknown or not specified.
1258    DIMENSION_SCOPE_UNSPECIFIED = 0;
1259
1260    // Dimension scoped to an event.
1261    EVENT = 1;
1262
1263    // Dimension scoped to a user.
1264    USER = 2;
1265
1266    // Dimension scoped to eCommerce items
1267    ITEM = 3;
1268  }
1269
1270  // Output only. Resource name for this CustomDimension resource.
1271  // Format: properties/{property}/customDimensions/{customDimension}
1272  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1273
1274  // Required. Immutable. Tagging parameter name for this custom dimension.
1275  //
1276  // If this is a user-scoped dimension, then this is the user property name.
1277  // If this is an event-scoped dimension, then this is the event parameter
1278  // name.
1279  //
1280  // If this is an item-scoped dimension, then this is the parameter
1281  // name found in the eCommerce items array.
1282  //
1283  // May only contain alphanumeric and underscore characters, starting with a
1284  // letter. Max length of 24 characters for user-scoped dimensions, 40
1285  // characters for event-scoped dimensions.
1286  string parameter_name = 2 [
1287    (google.api.field_behavior) = REQUIRED,
1288    (google.api.field_behavior) = IMMUTABLE
1289  ];
1290
1291  // Required. Display name for this custom dimension as shown in the Analytics
1292  // UI. Max length of 82 characters, alphanumeric plus space and underscore
1293  // starting with a letter. Legacy system-generated display names may contain
1294  // square brackets, but updates to this field will never permit square
1295  // brackets.
1296  string display_name = 3 [(google.api.field_behavior) = REQUIRED];
1297
1298  // Optional. Description for this custom dimension. Max length of 150
1299  // characters.
1300  string description = 4 [(google.api.field_behavior) = OPTIONAL];
1301
1302  // Required. Immutable. The scope of this dimension.
1303  DimensionScope scope = 5 [
1304    (google.api.field_behavior) = REQUIRED,
1305    (google.api.field_behavior) = IMMUTABLE
1306  ];
1307
1308  // Optional. If set to true, sets this dimension as NPA and excludes it from
1309  // ads personalization.
1310  //
1311  // This is currently only supported by user-scoped custom dimensions.
1312  bool disallow_ads_personalization = 6
1313      [(google.api.field_behavior) = OPTIONAL];
1314}
1315
1316// A definition for a custom metric.
1317message CustomMetric {
1318  option (google.api.resource) = {
1319    type: "analyticsadmin.googleapis.com/CustomMetric"
1320    pattern: "properties/{property}/customMetrics/{custom_metric}"
1321  };
1322
1323  // Possible types of representing the custom metric's value.
1324  //
1325  // Currency representation may change in the future, requiring a breaking API
1326  // change.
1327  enum MeasurementUnit {
1328    // MeasurementUnit unspecified or missing.
1329    MEASUREMENT_UNIT_UNSPECIFIED = 0;
1330
1331    // This metric uses default units.
1332    STANDARD = 1;
1333
1334    // This metric measures a currency.
1335    CURRENCY = 2;
1336
1337    // This metric measures feet.
1338    FEET = 3;
1339
1340    // This metric measures meters.
1341    METERS = 4;
1342
1343    // This metric measures kilometers.
1344    KILOMETERS = 5;
1345
1346    // This metric measures miles.
1347    MILES = 6;
1348
1349    // This metric measures milliseconds.
1350    MILLISECONDS = 7;
1351
1352    // This metric measures seconds.
1353    SECONDS = 8;
1354
1355    // This metric measures minutes.
1356    MINUTES = 9;
1357
1358    // This metric measures hours.
1359    HOURS = 10;
1360  }
1361
1362  // The scope of this metric.
1363  enum MetricScope {
1364    // Scope unknown or not specified.
1365    METRIC_SCOPE_UNSPECIFIED = 0;
1366
1367    // Metric scoped to an event.
1368    EVENT = 1;
1369  }
1370
1371  // Labels that mark the data in this custom metric as data that should be
1372  // restricted to specific users.
1373  enum RestrictedMetricType {
1374    // Type unknown or unspecified.
1375    RESTRICTED_METRIC_TYPE_UNSPECIFIED = 0;
1376
1377    // Metric reports cost data.
1378    COST_DATA = 1;
1379
1380    // Metric reports revenue data.
1381    REVENUE_DATA = 2;
1382  }
1383
1384  // Output only. Resource name for this CustomMetric resource.
1385  // Format: properties/{property}/customMetrics/{customMetric}
1386  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1387
1388  // Required. Immutable. Tagging name for this custom metric.
1389  //
1390  // If this is an event-scoped metric, then this is the event parameter
1391  // name.
1392  //
1393  // May only contain alphanumeric and underscore charactes, starting with a
1394  // letter. Max length of 40 characters for event-scoped metrics.
1395  string parameter_name = 2 [
1396    (google.api.field_behavior) = REQUIRED,
1397    (google.api.field_behavior) = IMMUTABLE
1398  ];
1399
1400  // Required. Display name for this custom metric as shown in the Analytics UI.
1401  // Max length of 82 characters, alphanumeric plus space and underscore
1402  // starting with a letter. Legacy system-generated display names may contain
1403  // square brackets, but updates to this field will never permit square
1404  // brackets.
1405  string display_name = 3 [(google.api.field_behavior) = REQUIRED];
1406
1407  // Optional. Description for this custom dimension.
1408  // Max length of 150 characters.
1409  string description = 4 [(google.api.field_behavior) = OPTIONAL];
1410
1411  // Required. The type for the custom metric's value.
1412  MeasurementUnit measurement_unit = 5 [(google.api.field_behavior) = REQUIRED];
1413
1414  // Required. Immutable. The scope of this custom metric.
1415  MetricScope scope = 6 [
1416    (google.api.field_behavior) = REQUIRED,
1417    (google.api.field_behavior) = IMMUTABLE
1418  ];
1419
1420  // Optional. Types of restricted data that this metric may contain. Required
1421  // for metrics with CURRENCY measurement unit. Must be empty for metrics with
1422  // a non-CURRENCY measurement unit.
1423  repeated RestrictedMetricType restricted_metric_type = 8
1424      [(google.api.field_behavior) = OPTIONAL];
1425}
1426
1427// A definition for a calculated metric.
1428message CalculatedMetric {
1429  option (google.api.resource) = {
1430    type: "analyticsadmin.googleapis.com/CalculatedMetric"
1431    pattern: "properties/{property}/calculatedMetrics/{calculated_metric}"
1432    plural: "calculatedMetrics"
1433    singular: "calculatedMetric"
1434  };
1435
1436  // Possible types of representing the calculated metric's value.
1437  enum MetricUnit {
1438    // MetricUnit unspecified or missing.
1439    METRIC_UNIT_UNSPECIFIED = 0;
1440
1441    // This metric uses default units.
1442    STANDARD = 1;
1443
1444    // This metric measures a currency.
1445    CURRENCY = 2;
1446
1447    // This metric measures feet.
1448    FEET = 3;
1449
1450    // This metric measures miles.
1451    MILES = 4;
1452
1453    // This metric measures meters.
1454    METERS = 5;
1455
1456    // This metric measures kilometers.
1457    KILOMETERS = 6;
1458
1459    // This metric measures milliseconds.
1460    MILLISECONDS = 7;
1461
1462    // This metric measures seconds.
1463    SECONDS = 8;
1464
1465    // This metric measures minutes.
1466    MINUTES = 9;
1467
1468    // This metric measures hours.
1469    HOURS = 10;
1470  }
1471
1472  // Labels that mark the data in calculated metric used in conjunction with
1473  // user roles that restrict access to cost and/or revenue metrics.
1474  enum RestrictedMetricType {
1475    // Type unknown or unspecified.
1476    RESTRICTED_METRIC_TYPE_UNSPECIFIED = 0;
1477
1478    // Metric reports cost data.
1479    COST_DATA = 1;
1480
1481    // Metric reports revenue data.
1482    REVENUE_DATA = 2;
1483  }
1484
1485  // Output only. Resource name for this CalculatedMetric.
1486  // Format: 'properties/{property_id}/calculatedMetrics/{calculated_metric_id}'
1487  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1488
1489  // Optional. Description for this calculated metric.
1490  // Max length of 4096 characters.
1491  string description = 2 [(google.api.field_behavior) = OPTIONAL];
1492
1493  // Required. Display name for this calculated metric as shown in the
1494  // Google Analytics UI. Max length 82 characters.
1495  string display_name = 3 [(google.api.field_behavior) = REQUIRED];
1496
1497  // Output only. The ID to use for the calculated metric. In the UI, this is
1498  // referred to as the "API name."
1499  //
1500  // The calculated_metric_id is used when referencing this calculated metric
1501  // from external APIs. For example, "calcMetric:{calculated_metric_id}".
1502  string calculated_metric_id = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
1503
1504  // Required. The type for the calculated metric's value.
1505  MetricUnit metric_unit = 5 [(google.api.field_behavior) = REQUIRED];
1506
1507  // Output only. Types of restricted data that this metric contains.
1508  repeated RestrictedMetricType restricted_metric_type = 6
1509      [(google.api.field_behavior) = OUTPUT_ONLY];
1510
1511  // Required. The calculated metric's definition. Maximum number of unique
1512  // referenced custom metrics is 5. Formulas supports the following operations:
1513  // + (addition),  - (subtraction), - (negative),  * (multiplication), /
1514  // (division), () (parenthesis). Any valid real numbers are acceptable that
1515  // fit in a Long (64bit integer) or a Double (64 bit floating point number).
1516  // Example formula:
1517  //   "( customEvent:parameter_name + cartPurchaseQuantity ) / 2.0"
1518  string formula = 7 [(google.api.field_behavior) = REQUIRED];
1519
1520  // Output only. If true, this calculated metric has a invalid metric
1521  // reference. Anything using a calculated metric with invalid_metric_reference
1522  // set to true may fail, produce warnings, or produce unexpected results.
1523  bool invalid_metric_reference = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
1524}
1525
1526// Settings values for data retention. This is a singleton resource.
1527message DataRetentionSettings {
1528  option (google.api.resource) = {
1529    type: "analyticsadmin.googleapis.com/DataRetentionSettings"
1530    pattern: "properties/{property}/dataRetentionSettings"
1531  };
1532
1533  // Valid values for the data retention duration.
1534  enum RetentionDuration {
1535    // Data retention time duration is not specified.
1536    RETENTION_DURATION_UNSPECIFIED = 0;
1537
1538    // The data retention time duration is 2 months.
1539    TWO_MONTHS = 1;
1540
1541    // The data retention time duration is 14 months.
1542    FOURTEEN_MONTHS = 3;
1543
1544    // The data retention time duration is 26 months.
1545    // Available to 360 properties only.
1546    TWENTY_SIX_MONTHS = 4;
1547
1548    // The data retention time duration is 38 months.
1549    // Available to 360 properties only.
1550    THIRTY_EIGHT_MONTHS = 5;
1551
1552    // The data retention time duration is 50 months.
1553    // Available to 360 properties only.
1554    FIFTY_MONTHS = 6;
1555  }
1556
1557  // Output only. Resource name for this DataRetentionSetting resource.
1558  // Format: properties/{property}/dataRetentionSettings
1559  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1560
1561  // The length of time that event-level data is retained.
1562  RetentionDuration event_data_retention = 2;
1563
1564  // If true, reset the retention period for the user identifier with every
1565  // event from that user.
1566  bool reset_user_data_on_new_activity = 3;
1567}
1568
1569// The attribution settings used for a given property. This is a singleton
1570// resource.
1571message AttributionSettings {
1572  option (google.api.resource) = {
1573    type: "analyticsadmin.googleapis.com/AttributionSettings"
1574    pattern: "properties/{property}/attributionSettings"
1575  };
1576
1577  // How far back in time events should be considered for inclusion in a
1578  // converting path which leads to the first install of an app or the first
1579  // visit to a site.
1580  enum AcquisitionConversionEventLookbackWindow {
1581    // Lookback window size unspecified.
1582    ACQUISITION_CONVERSION_EVENT_LOOKBACK_WINDOW_UNSPECIFIED = 0;
1583
1584    // 7-day lookback window.
1585    ACQUISITION_CONVERSION_EVENT_LOOKBACK_WINDOW_7_DAYS = 1;
1586
1587    // 30-day lookback window.
1588    ACQUISITION_CONVERSION_EVENT_LOOKBACK_WINDOW_30_DAYS = 2;
1589  }
1590
1591  // How far back in time events should be considered for inclusion in a
1592  // converting path for all conversions other than first app install/first site
1593  // visit.
1594  enum OtherConversionEventLookbackWindow {
1595    // Lookback window size unspecified.
1596    OTHER_CONVERSION_EVENT_LOOKBACK_WINDOW_UNSPECIFIED = 0;
1597
1598    // 30-day lookback window.
1599    OTHER_CONVERSION_EVENT_LOOKBACK_WINDOW_30_DAYS = 1;
1600
1601    // 60-day lookback window.
1602    OTHER_CONVERSION_EVENT_LOOKBACK_WINDOW_60_DAYS = 2;
1603
1604    // 90-day lookback window.
1605    OTHER_CONVERSION_EVENT_LOOKBACK_WINDOW_90_DAYS = 3;
1606  }
1607
1608  // The reporting attribution model used to calculate conversion credit in this
1609  // property's reports.
1610  enum ReportingAttributionModel {
1611    // Reporting attribution model unspecified.
1612    REPORTING_ATTRIBUTION_MODEL_UNSPECIFIED = 0;
1613
1614    // Data-driven attribution distributes credit for the conversion based on
1615    // data for each conversion event. Each Data-driven model is specific to
1616    // each advertiser and each conversion event.
1617    // Previously CROSS_CHANNEL_DATA_DRIVEN
1618    PAID_AND_ORGANIC_CHANNELS_DATA_DRIVEN = 1;
1619
1620    // Ignores direct traffic and attributes 100% of the conversion value to the
1621    // last channel that the customer clicked through (or engaged view through
1622    // for YouTube) before converting.
1623    // Previously CROSS_CHANNEL_LAST_CLICK
1624    PAID_AND_ORGANIC_CHANNELS_LAST_CLICK = 2;
1625
1626    // Attributes 100% of the conversion value to the last Google Paid channel
1627    // that the customer clicked through before converting.
1628    // Previously ADS_PREFERRED_LAST_CLICK
1629    GOOGLE_PAID_CHANNELS_LAST_CLICK = 7;
1630  }
1631
1632  // The Conversion Export Scope for data exported to linked Ads Accounts.
1633  enum AdsWebConversionDataExportScope {
1634    // Default value. This value is unused.
1635    ADS_WEB_CONVERSION_DATA_EXPORT_SCOPE_UNSPECIFIED = 0;
1636
1637    // No data export scope selected yet.
1638    // Export scope can never be changed back to this value.
1639    NOT_SELECTED_YET = 1;
1640
1641    // Paid and organic channels are eligible to receive conversion credit, but
1642    // only credit assigned to Google Ads channels will appear in your Ads
1643    // accounts. To learn more, see [Paid and Organic
1644    // channels](https://support.google.com/analytics/answer/10632359).
1645    PAID_AND_ORGANIC_CHANNELS = 2;
1646
1647    // Only Google Ads paid channels are eligible to receive conversion credit.
1648    // To learn more, see [Google Paid
1649    // channels](https://support.google.com/analytics/answer/10632359).
1650    GOOGLE_PAID_CHANNELS = 3;
1651  }
1652
1653  // Output only. Resource name of this attribution settings resource.
1654  // Format: properties/{property_id}/attributionSettings
1655  // Example: "properties/1000/attributionSettings"
1656  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1657
1658  // Required. The lookback window configuration for acquisition conversion
1659  // events. The default window size is 30 days.
1660  AcquisitionConversionEventLookbackWindow
1661      acquisition_conversion_event_lookback_window = 2
1662      [(google.api.field_behavior) = REQUIRED];
1663
1664  // Required. The lookback window for all other, non-acquisition conversion
1665  // events. The default window size is 90 days.
1666  OtherConversionEventLookbackWindow other_conversion_event_lookback_window = 3
1667      [(google.api.field_behavior) = REQUIRED];
1668
1669  // Required. The reporting attribution model used to calculate conversion
1670  // credit in this property's reports.
1671  //
1672  // Changing the attribution model will apply to both historical and future
1673  // data. These changes will be reflected in reports with conversion and
1674  // revenue data. User and session data will be unaffected.
1675  ReportingAttributionModel reporting_attribution_model = 4
1676      [(google.api.field_behavior) = REQUIRED];
1677
1678  // Required. The Conversion Export Scope for data exported to linked Ads
1679  // Accounts.
1680  AdsWebConversionDataExportScope ads_web_conversion_data_export_scope = 5
1681      [(google.api.field_behavior) = REQUIRED];
1682}
1683
1684// A binding of a user to a set of roles.
1685message AccessBinding {
1686  option (google.api.resource) = {
1687    type: "analyticsadmin.googleapis.com/AccessBinding"
1688    pattern: "accounts/{account}/accessBindings/{access_binding}"
1689    pattern: "properties/{property}/accessBindings/{access_binding}"
1690  };
1691
1692  // The target for which to set roles for.
1693  oneof access_target {
1694    // If set, the email address of the user to set roles for.
1695    // Format: "[email protected]"
1696    string user = 2;
1697  }
1698
1699  // Output only. Resource name of this binding.
1700  //
1701  // Format: accounts/{account}/accessBindings/{access_binding} or
1702  // properties/{property}/accessBindings/{access_binding}
1703  //
1704  // Example:
1705  // "accounts/100/accessBindings/200"
1706  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1707
1708  // A list of roles for to grant to the parent resource.
1709  //
1710  // Valid values:
1711  // predefinedRoles/viewer
1712  // predefinedRoles/analyst
1713  // predefinedRoles/editor
1714  // predefinedRoles/admin
1715  // predefinedRoles/no-cost-data
1716  // predefinedRoles/no-revenue-data
1717  //
1718  // For users, if an empty list of roles is set, this AccessBinding will be
1719  // deleted.
1720  repeated string roles = 3;
1721}
1722
1723// A link between a GA4 Property and BigQuery project.
1724message BigQueryLink {
1725  option (google.api.resource) = {
1726    type: "analyticsadmin.googleapis.com/BigQueryLink"
1727    pattern: "properties/{property}/bigQueryLinks/{bigquery_link}"
1728  };
1729
1730  // Output only. Resource name of this BigQuery link.
1731  // Format: 'properties/{property_id}/bigQueryLinks/{bigquery_link_id}'
1732  // Format: 'properties/1234/bigQueryLinks/abc567'
1733  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1734
1735  // Immutable. The linked Google Cloud project. When creating a BigQueryLink,
1736  // you may provide this resource name using either a project number or project
1737  // ID. Once this resource has been created, the returned project will always
1738  // have a project that contains a project number.
1739  // Format: 'projects/{project number}'
1740  // Example: 'projects/1234'
1741  string project = 2 [(google.api.field_behavior) = IMMUTABLE];
1742
1743  // Output only. Time when the link was created.
1744  google.protobuf.Timestamp create_time = 3
1745      [(google.api.field_behavior) = OUTPUT_ONLY];
1746
1747  // If set true, enables daily data export to the linked Google Cloud project.
1748  bool daily_export_enabled = 4;
1749
1750  // If set true, enables streaming export to the linked Google Cloud project.
1751  bool streaming_export_enabled = 5;
1752
1753  // If set true, enables fresh daily export to the linked Google Cloud project.
1754  bool fresh_daily_export_enabled = 9;
1755
1756  // If set true, exported data will include advertising identifiers for mobile
1757  // app streams.
1758  bool include_advertising_id = 6;
1759
1760  // The list of streams under the parent property for which data will be
1761  // exported.
1762  // Format: properties/{property_id}/dataStreams/{stream_id}
1763  // Example: ['properties/1000/dataStreams/2000']
1764  repeated string export_streams = 7;
1765
1766  // The list of event names that will be excluded from exports.
1767  repeated string excluded_events = 8;
1768}
1769
1770// Singleton resource under a web DataStream, configuring measurement of
1771// additional site interactions and content.
1772message EnhancedMeasurementSettings {
1773  option (google.api.resource) = {
1774    type: "analyticsadmin.googleapis.com/EnhancedMeasurementSettings"
1775    pattern: "properties/{property}/dataStreams/{data_stream}/enhancedMeasurementSettings"
1776  };
1777
1778  // Output only. Resource name of the Enhanced Measurement Settings.
1779  // Format:
1780  // properties/{property_id}/dataStreams/{data_stream}/enhancedMeasurementSettings
1781  // Example: "properties/1000/dataStreams/2000/enhancedMeasurementSettings"
1782  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1783
1784  // Indicates whether Enhanced Measurement Settings will be used to
1785  // automatically measure interactions and content on this web stream.
1786  //
1787  // Changing this value does not affect the settings themselves, but determines
1788  // whether they are respected.
1789  bool stream_enabled = 2;
1790
1791  // If enabled, capture scroll events each time a visitor gets to the bottom of
1792  // a page.
1793  bool scrolls_enabled = 3;
1794
1795  // If enabled, capture an outbound click event each time a visitor clicks a
1796  // link that leads them away from your domain.
1797  bool outbound_clicks_enabled = 4;
1798
1799  // If enabled, capture a view search results event each time a visitor
1800  // performs a search on your site (based on a query parameter).
1801  bool site_search_enabled = 5;
1802
1803  // If enabled, capture video play, progress, and complete events as visitors
1804  // view embedded videos on your site.
1805  bool video_engagement_enabled = 6;
1806
1807  // If enabled, capture a file download event each time a link is clicked with
1808  // a common document, compressed file, application, video, or audio extension.
1809  bool file_downloads_enabled = 7;
1810
1811  // If enabled, capture a page view event each time the website changes the
1812  // browser history state.
1813  bool page_changes_enabled = 8;
1814
1815  // If enabled, capture a form interaction event each time a visitor interacts
1816  // with a form on your website.
1817  // False by default.
1818  bool form_interactions_enabled = 9;
1819
1820  // Required. URL query parameters to interpret as site search parameters.
1821  // Max length is 1024 characters. Must not be empty.
1822  string search_query_parameter = 10 [(google.api.field_behavior) = REQUIRED];
1823
1824  // Additional URL query parameters.
1825  // Max length is 1024 characters.
1826  string uri_query_parameter = 11;
1827}
1828
1829// Configuration for a specific Connected Site Tag.
1830message ConnectedSiteTag {
1831  // Required. User-provided display name for the connected site tag. Must be
1832  // less than 256 characters.
1833  string display_name = 1 [(google.api.field_behavior) = REQUIRED];
1834
1835  // Required. "Tag ID to forward events to. Also known as the Measurement ID,
1836  // or the "G-ID"  (For example: G-12345).
1837  string tag_id = 2 [(google.api.field_behavior) = REQUIRED];
1838}
1839
1840// Settings for client-side data redaction. Singleton resource under a Web
1841// Stream.
1842message DataRedactionSettings {
1843  option (google.api.resource) = {
1844    type: "analyticsadmin.googleapis.com/DataRedactionSettings"
1845    pattern: "properties/{property}/dataStreams/{data_stream}/dataRedactionSettings"
1846  };
1847
1848  // Output only. Name of this Data Redaction Settings resource.
1849  // Format:
1850  // properties/{property_id}/dataStreams/{data_stream}/dataRedactionSettings
1851  // Example: "properties/1000/dataStreams/2000/dataRedactionSettings"
1852  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1853
1854  // If enabled, any event parameter or user property values that look like an
1855  // email will be redacted.
1856  bool email_redaction_enabled = 2;
1857
1858  // Query Parameter redaction removes the key and value portions of a
1859  // query parameter if it is in the configured set of query parameters.
1860  //
1861  // If enabled, URL query replacement logic will be run for the Stream. Any
1862  // query parameters defined in query_parameter_keys will be redacted.
1863  bool query_parameter_redaction_enabled = 3;
1864
1865  // The query parameter keys to apply redaction logic to if present in the URL.
1866  // Query parameter matching is case-insensitive.
1867  //
1868  // Must contain at least one element if query_parameter_replacement_enabled
1869  // is true. Keys cannot contain commas.
1870  repeated string query_parameter_keys = 4;
1871}
1872
1873// A link between a GA4 Property and an AdSense for Content ad client.
1874message AdSenseLink {
1875  option (google.api.resource) = {
1876    type: "analyticsadmin.googleapis.com/AdSenseLink"
1877    pattern: "properties/{property}/adSenseLinks/{adsense_link}"
1878  };
1879
1880  // Output only. The resource name for this AdSense Link resource.
1881  // Format: properties/{propertyId}/adSenseLinks/{linkId}
1882  // Example: properties/1234/adSenseLinks/6789
1883  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1884
1885  // Immutable. The AdSense ad client code that the GA4 property is linked to.
1886  // Example format: "ca-pub-1234567890"
1887  string ad_client_code = 2 [(google.api.field_behavior) = IMMUTABLE];
1888}
1889
1890// A link that references a source property under the parent rollup property.
1891message RollupPropertySourceLink {
1892  option (google.api.resource) = {
1893    type: "analyticsadmin.googleapis.com/RollupPropertySourceLink"
1894    pattern: "properties/{property}/rollupPropertySourceLinks/{rollup_property_source_link}"
1895    plural: "rollupPropertySourceLinks"
1896    singular: "rollupPropertySourceLink"
1897  };
1898
1899  // Output only. Resource name of this RollupPropertySourceLink.
1900  // Format:
1901  // 'properties/{property_id}/rollupPropertySourceLinks/{rollup_property_source_link}'
1902  // Format: 'properties/123/rollupPropertySourceLinks/456'
1903  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
1904
1905  // Immutable. Resource name of the source property.
1906  // Format: properties/{property_id}
1907  // Example: "properties/789"
1908  string source_property = 2 [(google.api.field_behavior) = IMMUTABLE];
1909}
1910