// Copyright 2020 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.analytics.admin.v1alpha; import "google/api/field_behavior.proto"; import "google/api/resource.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; option go_package = "google.golang.org/genproto/googleapis/analytics/admin/v1alpha;admin"; option java_multiple_files = true; option java_outer_classname = "ResourcesProto"; option java_package = "com.google.analytics.admin.v1alpha"; // Maximum access settings that Firebase user receive on the linked Analytics // property. enum MaximumUserAccess { // Unspecified maximum user access. MAXIMUM_USER_ACCESS_UNSPECIFIED = 0; // Firebase users have no access to the Analytics property. NO_ACCESS = 1; // Firebase users have Read & Analyze access to the Analytics property. READ_AND_ANALYZE = 2; // Firebase users have edit access to the Analytics property, but may not // manage the Firebase link. EDITOR_WITHOUT_LINK_MANAGEMENT = 3; // Firebase users have edit access to the Analytics property and may manage // the Firebase link. EDITOR_INCLUDING_LINK_MANAGEMENT = 4; } // The category selected for this property, used for industry benchmarking. enum IndustryCategory { // Industry category unspecified INDUSTRY_CATEGORY_UNSPECIFIED = 0; // Automotive AUTOMOTIVE = 1; // Business and industrial markets BUSINESS_AND_INDUSTRIAL_MARKETS = 2; // Finance FINANCE = 3; // Healthcare HEALTHCARE = 4; // Technology TECHNOLOGY = 5; // Travel TRAVEL = 6; // Other OTHER = 7; // Arts and entertainment ARTS_AND_ENTERTAINMENT = 8; // Beauty and fitness BEAUTY_AND_FITNESS = 9; // Books and literature BOOKS_AND_LITERATURE = 10; // Food and drink FOOD_AND_DRINK = 11; // Games GAMES = 12; // Hobbies and leisure HOBBIES_AND_LEISURE = 13; // Home and garden HOME_AND_GARDEN = 14; // Internet and telecom INTERNET_AND_TELECOM = 15; // Law and government LAW_AND_GOVERNMENT = 16; // News NEWS = 17; // Online communities ONLINE_COMMUNITIES = 18; // People and society PEOPLE_AND_SOCIETY = 19; // Pets and animals PETS_AND_ANIMALS = 20; // Real estate REAL_ESTATE = 21; // Reference REFERENCE = 22; // Science SCIENCE = 23; // Sports SPORTS = 24; // Jobs and education JOBS_AND_EDUCATION = 25; // Shopping SHOPPING = 26; } // A resource message representing a Google Analytics account. message Account { option (google.api.resource) = { type: "analyticsadmin.googleapis.com/Account" pattern: "accounts/{account}" }; // Output only. Resource name of this account. // Format: accounts/{account} // Example: "accounts/100" string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Time when this account was originally created. google.protobuf.Timestamp create_time = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Time when account payload fields were last updated. google.protobuf.Timestamp update_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Required. Human-readable display name for this account. string display_name = 4 [(google.api.field_behavior) = REQUIRED]; // Country of business. Must be a Unicode CLDR region code. string region_code = 5; // Output only. Indicates whether this Account is soft-deleted or not. Deleted // accounts are excluded from List results unless specifically requested. bool deleted = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; } // A resource message representing a Google Analytics GA4 property. message Property { option (google.api.resource) = { type: "analyticsadmin.googleapis.com/Property" pattern: "properties/{property}" }; // Output only. Resource name of this property. // Format: properties/{property_id} // Example: "properties/1000" string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Time when the entity was originally created. google.protobuf.Timestamp create_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Time when entity payload fields were last updated. google.protobuf.Timestamp update_time = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Immutable. Resource name of this property's logical parent. // // Note: The Property-Moving UI can be used to change the parent. // Format: accounts/{account} // Example: "accounts/100" string parent = 2 [(google.api.field_behavior) = IMMUTABLE]; // Required. Human-readable display name for this property. // // The max allowed display name length is 100 UTF-16 code units. string display_name = 5 [(google.api.field_behavior) = REQUIRED]; // Industry associated with this property // Example: AUTOMOTIVE, FOOD_AND_DRINK IndustryCategory industry_category = 6; // Reporting Time Zone, used as the day boundary for reports, regardless of // where the data originates. If the time zone honors DST, Analytics will // automatically adjust for the changes. // // NOTE: Changing the time zone only affects data going forward, and is not // applied retroactively. // // Format: https://www.iana.org/time-zones // Example: "America/Los_Angeles" string time_zone = 7; // The currency type used in reports involving monetary values. // // // Format: https://en.wikipedia.org/wiki/ISO_4217 // Examples: "USD", "EUR", "JPY" string currency_code = 8; // Output only. Indicates whether this Property is soft-deleted or not. Deleted properties // are excluded from List results unless specifically requested. bool deleted = 9 [(google.api.field_behavior) = OUTPUT_ONLY]; } // A resource message representing a Google Analytics Android app stream. message AndroidAppDataStream { option (google.api.resource) = { type: "analyticsadmin.googleapis.com/AndroidAppDataStream" pattern: "properties/{property}/androidAppDataStreams/{android_app_data_stream}" }; // Output only. Resource name of this Data Stream. // Format: properties/{property_id}/androidAppDataStreams/{stream_id} // Example: "properties/1000/androidAppDataStreams/2000" string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. ID of the corresponding Android app in Firebase, if any. // This ID can change if the Android app is deleted and recreated. string firebase_app_id = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Time when this stream was originally created. google.protobuf.Timestamp create_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Time when stream payload fields were last updated. google.protobuf.Timestamp update_time = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Immutable. The package name for the app being measured. // Example: "com.example.myandroidapp" string package_name = 5 [(google.api.field_behavior) = IMMUTABLE]; // Human-readable display name for the Data Stream. // // The max allowed display name length is 255 UTF-16 code units. string display_name = 6; } // A resource message representing a Google Analytics IOS app stream. message IosAppDataStream { option (google.api.resource) = { type: "analyticsadmin.googleapis.com/IosAppDataStream" pattern: "properties/{property}/iosAppDataStreams/{ios_app_data_stream}" }; // Output only. Resource name of this Data Stream. // Format: properties/{property_id}/iosAppDataStreams/{stream_id} // Example: "properties/1000/iosAppDataStreams/2000" string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. ID of the corresponding iOS app in Firebase, if any. // This ID can change if the iOS app is deleted and recreated. string firebase_app_id = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Time when this stream was originally created. google.protobuf.Timestamp create_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Time when stream payload fields were last updated. google.protobuf.Timestamp update_time = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Required. Immutable. The Apple App Store Bundle ID for the app // Example: "com.example.myiosapp" string bundle_id = 5 [ (google.api.field_behavior) = IMMUTABLE, (google.api.field_behavior) = REQUIRED ]; // Human-readable display name for the Data Stream. // // The max allowed display name length is 255 UTF-16 code units. string display_name = 6; } // A resource message representing a Google Analytics web stream. message WebDataStream { option (google.api.resource) = { type: "analyticsadmin.googleapis.com/WebDataStream" pattern: "properties/{property}/webDataStreams/{web_data_stream}" }; // Output only. Resource name of this Data Stream. // Format: properties/{property_id}/webDataStreams/{stream_id} // Example: "properties/1000/webDataStreams/2000" string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Analytics "Measurement ID", without the "G-" prefix. // Example: "G-1A2BCD345E" would just be "1A2BCD345E" string measurement_id = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. ID of the corresponding web app in Firebase, if any. // This ID can change if the web app is deleted and recreated. string firebase_app_id = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Time when this stream was originally created. google.protobuf.Timestamp create_time = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Time when stream payload fields were last updated. google.protobuf.Timestamp update_time = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; // Immutable. Domain name of the web app being measured, or empty. // Example: "http://www.google.com", "https://www.google.com" string default_uri = 6 [(google.api.field_behavior) = IMMUTABLE]; // Required. Human-readable display name for the Data Stream. // // The max allowed display name length is 100 UTF-16 code units. string display_name = 7 [(google.api.field_behavior) = REQUIRED]; } // A resource message representing a user's permissions on an Account or // Property resource. message UserLink { option (google.api.resource) = { type: "analyticsadmin.googleapis.com/UserLink" pattern: "accounts/{account}/userLinks/{user_link}" pattern: "properties/{property}/userLinks/{user_link}" }; // Example format: properties/1234/userLinks/5678 string name = 1; // Email address of the user to link string email_address = 2; // Roles directly assigned to this user for this account or property. // // Valid values: // predefinedRoles/read // predefinedRoles/collaborate // predefinedRoles/edit // predefinedRoles/manage-users // // Excludes roles that are inherited from a higher-level entity, group, // or organization admin role. // // A UserLink that is updated to have an empty list of direct_roles will be // deleted. repeated string direct_roles = 3; } // Read-only resource used to summarize a principal's effective roles. message AuditUserLink { // Example format: properties/1234/userLinks/5678 string name = 1; // Email address of the linked user string email_address = 2; // Roles directly assigned to this user for this entity. // // Format: predefinedRoles/read // // Excludes roles that are inherited from an account (if this is for a // property), group, or organization admin role. repeated string direct_roles = 3; // Union of all permissions a user has at this account or property (includes // direct permissions, group-inherited permissions, etc.). // // Format: predefinedRoles/read repeated string effective_roles = 4; } // Singleton resource under a WebDataStream, configuring measurement of // additional site interactions and content. message EnhancedMeasurementSettings { option (google.api.resource) = { type: "analyticsadmin.googleapis.com/EnhancedMeasurementSettings" pattern: "properties/{property}/webDataStreams/{web_data_stream}/enhancedMeasurementSettings" }; // Output only. Resource name of this Data Stream. // Format: // properties/{property_id}/webDataStreams/{stream_id}/enhancedMeasurementSettings // Example: "properties/1000/webDataStreams/2000/enhancedMeasurementSettings" string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Indicates whether Enhanced Measurement Settings will be used to // automatically measure interactions and content on this web stream. // // Changing this value does not affect the settings themselves, but determines // whether they are respected. bool stream_enabled = 2; // Output only. If enabled, capture a page view event each time a page loads or the // website changes the browser history state. bool page_views_enabled = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // If enabled, capture scroll events each time a visitor gets to the bottom of // a page. bool scrolls_enabled = 4; // If enabled, capture an outbound click event each time a visitor clicks a // link that leads them away from your domain. bool outbound_clicks_enabled = 5; // If enabled, capture a view search results event each time a visitor // performs a search on your site (based on a query parameter). bool site_search_enabled = 7; // If enabled, capture video play, progress, and complete events as visitors // view embedded videos on your site. bool video_engagement_enabled = 9; // If enabled, capture a file download event each time a link is clicked with // a common document, compressed file, application, video, or audio extension. bool file_downloads_enabled = 10; // Output only. If enabled, capture a page view event each time a page loads. bool page_loads_enabled = 12 [(google.api.field_behavior) = OUTPUT_ONLY]; // If enabled, capture a page view event each time the website changes the // browser history state. bool page_changes_enabled = 13; // Required. URL query parameters to interpret as site search parameters. // Max length is 1024 characters. Must not be empty. string search_query_parameter = 16 [(google.api.field_behavior) = REQUIRED]; // Additional URL query parameters. // Max length is 1024 characters. string uri_query_parameter = 17; } // A link between an GA4 property and a Firebase project. message FirebaseLink { option (google.api.resource) = { type: "analyticsadmin.googleapis.com/FirebaseLink" pattern: "properties/{property}/firebaseLinks/{firebase_link}" }; // Output only. Example format: properties/1234/firebaseLinks/5678 string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Immutable. Firebase project resource name. When creating a FirebaseLink, you may // provide this resource name using either a project number or project ID. // Once this resource has been created, returned FirebaseLinks will always // have a project_name that contains a project number. // // Format: 'projects/{project number}' // Example: 'projects/1234' string project = 2 [(google.api.field_behavior) = IMMUTABLE]; // Output only. Time when this FirebaseLink was originally created. google.protobuf.Timestamp create_time = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; // Maximum user access to the GA4 property allowed to admins of // the linked Firebase project. MaximumUserAccess maximum_user_access = 4; } // Read-only resource with the tag for sending data from a website to a // WebDataStream. message GlobalSiteTag { option (google.api.resource) = { type: "analyticsadmin.googleapis.com/GlobalSiteTag" pattern: "properties/{property}/globalSiteTag" }; // Output only. Resource name for this GlobalSiteTag resource. // Format: properties/{propertyId}/globalSiteTag string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Immutable. JavaScript code snippet to be pasted as the first item into the head tag of // every webpage to measure. string snippet = 2 [(google.api.field_behavior) = IMMUTABLE]; } // A link between an GA4 property and a Google Ads account. message GoogleAdsLink { option (google.api.resource) = { type: "analyticsadmin.googleapis.com/GoogleAdsLink" pattern: "properties/{property}/googleAdsLinks/{google_ads_link}" }; // Output only. Format: properties/{propertyId}/googleAdsLinks/{googleAdsLinkId} // // Note: googleAdsLinkId is not the Google Ads customer ID. string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Immutable. Google Ads customer ID. string customer_id = 3 [(google.api.field_behavior) = IMMUTABLE]; // Output only. If true, this link is for a Google Ads manager account. bool can_manage_clients = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; // Enable personalized advertising features with this integration. // Automatically publish my Google Analytics audience lists and Google // Analytics remarketing events/parameters to the linked Google Ads account. // If this field is not set on create/update it will be defaulted to true. google.protobuf.BoolValue ads_personalization_enabled = 5; // Output only. Email address of the user that created the link. // An empty string will be returned if the email address can't be retrieved. string email_address = 6 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Time when this link was originally created. google.protobuf.Timestamp create_time = 7 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Time when this link was last updated. google.protobuf.Timestamp update_time = 8 [(google.api.field_behavior) = OUTPUT_ONLY]; } // A resource message representing data sharing settings of a Google Analytics // account. message DataSharingSettings { option (google.api.resource) = { type: "analyticsadmin.googleapis.com/DataSharingSettings" pattern: "accounts/{account}/dataSharingSettings" }; // Output only. Resource name. // Format: accounts/{account}/dataSharingSettings // Example: "accounts/1000/dataSharingSettings" string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; // Allows Google support to access the data in order to help troubleshoot // issues. bool sharing_with_google_support_enabled = 2; // Allows Google sales teams that are assigned to the customer to access the // data in order to suggest configuration changes to improve results. // Sales team restrictions still apply when enabled. bool sharing_with_google_assigned_sales_enabled = 3; // Allows any of Google sales to access the data in order to suggest // configuration changes to improve results. bool sharing_with_google_any_sales_enabled = 4; // Allows Google to use the data to improve other Google products or services. bool sharing_with_google_products_enabled = 5; // Allows Google to share the data anonymously in aggregate form with others. bool sharing_with_others_enabled = 6; } // A virtual resource representing an overview of an account and // all its child GA4 properties. message AccountSummary { option (google.api.resource) = { type: "analyticsadmin.googleapis.com/AccountSummary" pattern: "accountSummaries/{account_summary}" }; // Resource name for this account summary. // Format: accountSummaries/{account_id} // Example: "accountSummaries/1000" string name = 1; // Resource name of account referred to by this account summary // Format: accounts/{account_id} // Example: "accounts/1000" string account = 2 [(google.api.resource_reference) = { type: "analyticsadmin.googleapis.com/Account" }]; // Display name for the account referred to in this account summary. string display_name = 3; // List of summaries for child accounts of this account. repeated PropertySummary property_summaries = 4; } // A virtual resource representing metadata for an GA4 property. message PropertySummary { // Resource name of property referred to by this property summary // Format: properties/{property_id} // Example: "properties/1000" string property = 1 [(google.api.resource_reference) = { type: "analyticsadmin.googleapis.com/Property" }]; // Display name for the property referred to in this account summary. string display_name = 2; }