// Copyright 2021 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/analytics/admin/v1alpha/resources.proto"; import "google/api/annotations.proto"; import "google/api/client.proto"; import "google/api/field_behavior.proto"; import "google/api/resource.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/field_mask.proto"; import "google/protobuf/timestamp.proto"; option go_package = "google.golang.org/genproto/googleapis/analytics/admin/v1alpha;admin"; option java_multiple_files = true; option java_outer_classname = "AnalyticsAdminProto"; option java_package = "com.google.analytics.admin.v1alpha"; // Service Interface for the Analytics Admin API (GA4). service AnalyticsAdminService { option (google.api.default_host) = "analyticsadmin.googleapis.com"; option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/analytics.edit," "https://www.googleapis.com/auth/analytics.manage.users," "https://www.googleapis.com/auth/analytics.manage.users.readonly," "https://www.googleapis.com/auth/analytics.readonly"; // Lookup for a single Account. rpc GetAccount(GetAccountRequest) returns (Account) { option (google.api.http) = { get: "/v1alpha/{name=accounts/*}" }; option (google.api.method_signature) = "name"; } // Returns all accounts accessible by the caller. // // Note that these accounts might not currently have GA4 properties. // Soft-deleted (ie: "trashed") accounts are excluded by default. // Returns an empty list if no relevant accounts are found. rpc ListAccounts(ListAccountsRequest) returns (ListAccountsResponse) { option (google.api.http) = { get: "/v1alpha/accounts" }; } // Marks target Account as soft-deleted (ie: "trashed") and returns it. // // This API does not have a method to restore soft-deleted accounts. // However, they can be restored using the Trash Can UI. // // If the accounts are not restored before the expiration time, the account // and all child resources (eg: Properties, GoogleAdsLinks, Streams, // UserLinks) will be permanently purged. // https://support.google.com/analytics/answer/6154772 // // Returns an error if the target is not found. rpc DeleteAccount(DeleteAccountRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1alpha/{name=accounts/*}" }; option (google.api.method_signature) = "name"; } // Updates an account. rpc UpdateAccount(UpdateAccountRequest) returns (Account) { option (google.api.http) = { patch: "/v1alpha/{account.name=accounts/*}" body: "account" }; option (google.api.method_signature) = "account,update_mask"; } // Requests a ticket for creating an account. rpc ProvisionAccountTicket(ProvisionAccountTicketRequest) returns (ProvisionAccountTicketResponse) { option (google.api.http) = { post: "/v1alpha/accounts:provisionAccountTicket" body: "*" }; } // Returns summaries of all accounts accessible by the caller. rpc ListAccountSummaries(ListAccountSummariesRequest) returns (ListAccountSummariesResponse) { option (google.api.http) = { get: "/v1alpha/accountSummaries" }; } // Lookup for a single "GA4" Property. rpc GetProperty(GetPropertyRequest) returns (Property) { option (google.api.http) = { get: "/v1alpha/{name=properties/*}" }; option (google.api.method_signature) = "name"; } // Returns child Properties under the specified parent Account. // // Only "GA4" properties will be returned. // Properties will be excluded if the caller does not have access. // Soft-deleted (ie: "trashed") properties are excluded by default. // Returns an empty list if no relevant properties are found. rpc ListProperties(ListPropertiesRequest) returns (ListPropertiesResponse) { option (google.api.http) = { get: "/v1alpha/properties" }; } // Creates an "GA4" property with the specified location and attributes. rpc CreateProperty(CreatePropertyRequest) returns (Property) { option (google.api.http) = { post: "/v1alpha/properties" body: "property" }; option (google.api.method_signature) = "property"; } // Marks target Property as soft-deleted (ie: "trashed") and returns it. // // This API does not have a method to restore soft-deleted properties. // However, they can be restored using the Trash Can UI. // // If the properties are not restored before the expiration time, the Property // and all child resources (eg: GoogleAdsLinks, Streams, UserLinks) // will be permanently purged. // https://support.google.com/analytics/answer/6154772 // // Returns an error if the target is not found, or is not an GA4 Property. rpc DeleteProperty(DeletePropertyRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1alpha/{name=properties/*}" }; option (google.api.method_signature) = "name"; } // Updates a property. rpc UpdateProperty(UpdatePropertyRequest) returns (Property) { option (google.api.http) = { patch: "/v1alpha/{property.name=properties/*}" body: "property" }; option (google.api.method_signature) = "property,update_mask"; } // Gets information about a user's link to an account or property. rpc GetUserLink(GetUserLinkRequest) returns (UserLink) { option (google.api.http) = { get: "/v1alpha/{name=accounts/*/userLinks/*}" additional_bindings { get: "/v1alpha/{name=properties/*/userLinks/*}" } }; option (google.api.method_signature) = "name"; } // Gets information about multiple users' links to an account or property. rpc BatchGetUserLinks(BatchGetUserLinksRequest) returns (BatchGetUserLinksResponse) { option (google.api.http) = { get: "/v1alpha/{parent=accounts/*}/userLinks:batchGet" additional_bindings { get: "/v1alpha/{parent=properties/*}/userLinks:batchGet" } }; } // Lists all user links on an account or property. rpc ListUserLinks(ListUserLinksRequest) returns (ListUserLinksResponse) { option (google.api.http) = { get: "/v1alpha/{parent=accounts/*}/userLinks" additional_bindings { get: "/v1alpha/{parent=properties/*}/userLinks" } }; option (google.api.method_signature) = "parent"; } // Lists all user links on an account or property, including implicit ones // that come from effective permissions granted by groups or organization // admin roles. // // If a returned user link does not have direct permissions, they cannot // be removed from the account or property directly with the DeleteUserLink // command. They have to be removed from the group/etc that gives them // permissions, which is currently only usable/discoverable in the GA or GMP // UIs. rpc AuditUserLinks(AuditUserLinksRequest) returns (AuditUserLinksResponse) { option (google.api.http) = { post: "/v1alpha/{parent=accounts/*}/userLinks:audit" body: "*" additional_bindings { post: "/v1alpha/{parent=properties/*}/userLinks:audit" body: "*" } }; } // Creates a user link on an account or property. // // If the user with the specified email already has permissions on the // account or property, then the user's existing permissions will be unioned // with the permissions specified in the new UserLink. rpc CreateUserLink(CreateUserLinkRequest) returns (UserLink) { option (google.api.http) = { post: "/v1alpha/{parent=accounts/*}/userLinks" body: "user_link" additional_bindings { post: "/v1alpha/{parent=properties/*}/userLinks" body: "user_link" } }; option (google.api.method_signature) = "parent,user_link"; } // Creates information about multiple users' links to an account or property. // // This method is transactional. If any UserLink cannot be created, none of // the UserLinks will be created. rpc BatchCreateUserLinks(BatchCreateUserLinksRequest) returns (BatchCreateUserLinksResponse) { option (google.api.http) = { post: "/v1alpha/{parent=accounts/*}/userLinks:batchCreate" body: "*" additional_bindings { post: "/v1alpha/{parent=properties/*}/userLinks:batchCreate" body: "*" } }; } // Updates a user link on an account or property. rpc UpdateUserLink(UpdateUserLinkRequest) returns (UserLink) { option (google.api.http) = { patch: "/v1alpha/{user_link.name=accounts/*/userLinks/*}" body: "user_link" additional_bindings { patch: "/v1alpha/{user_link.name=properties/*/userLinks/*}" body: "user_link" } }; option (google.api.method_signature) = "user_link"; } // Updates information about multiple users' links to an account or property. rpc BatchUpdateUserLinks(BatchUpdateUserLinksRequest) returns (BatchUpdateUserLinksResponse) { option (google.api.http) = { post: "/v1alpha/{parent=accounts/*}/userLinks:batchUpdate" body: "*" additional_bindings { post: "/v1alpha/{parent=properties/*}/userLinks:batchUpdate" body: "*" } }; } // Deletes a user link on an account or property. rpc DeleteUserLink(DeleteUserLinkRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1alpha/{name=accounts/*/userLinks/*}" additional_bindings { delete: "/v1alpha/{name=properties/*/userLinks/*}" } }; option (google.api.method_signature) = "name"; } // Deletes information about multiple users' links to an account or property. rpc BatchDeleteUserLinks(BatchDeleteUserLinksRequest) returns (google.protobuf.Empty) { option (google.api.http) = { post: "/v1alpha/{parent=accounts/*}/userLinks:batchDelete" body: "*" additional_bindings { post: "/v1alpha/{parent=properties/*}/userLinks:batchDelete" body: "*" } }; } // Lookup for a single WebDataStream rpc GetWebDataStream(GetWebDataStreamRequest) returns (WebDataStream) { option (google.api.http) = { get: "/v1alpha/{name=properties/*/webDataStreams/*}" }; option (google.api.method_signature) = "name"; } // Deletes a web stream on a property. rpc DeleteWebDataStream(DeleteWebDataStreamRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1alpha/{name=properties/*/webDataStreams/*}" }; option (google.api.method_signature) = "name"; } // Updates a web stream on a property. rpc UpdateWebDataStream(UpdateWebDataStreamRequest) returns (WebDataStream) { option (google.api.http) = { patch: "/v1alpha/{web_data_stream.name=properties/*/webDataStreams/*}" body: "web_data_stream" }; option (google.api.method_signature) = "web_data_stream,update_mask"; } // Creates a web stream with the specified location and attributes. rpc CreateWebDataStream(CreateWebDataStreamRequest) returns (WebDataStream) { option (google.api.http) = { post: "/v1alpha/{parent=properties/*}/webDataStreams" body: "web_data_stream" }; option (google.api.method_signature) = "parent,web_data_stream"; } // Returns child web data streams under the specified parent property. // // Web data streams will be excluded if the caller does not have access. // Returns an empty list if no relevant web data streams are found. rpc ListWebDataStreams(ListWebDataStreamsRequest) returns (ListWebDataStreamsResponse) { option (google.api.http) = { get: "/v1alpha/{parent=properties/*}/webDataStreams" }; option (google.api.method_signature) = "parent"; } // Lookup for a single IosAppDataStream rpc GetIosAppDataStream(GetIosAppDataStreamRequest) returns (IosAppDataStream) { option (google.api.http) = { get: "/v1alpha/{name=properties/*/iosAppDataStreams/*}" }; option (google.api.method_signature) = "name"; } // Deletes an iOS app stream on a property. rpc DeleteIosAppDataStream(DeleteIosAppDataStreamRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1alpha/{name=properties/*/iosAppDataStreams/*}" }; option (google.api.method_signature) = "name"; } // Updates an iOS app stream on a property. rpc UpdateIosAppDataStream(UpdateIosAppDataStreamRequest) returns (IosAppDataStream) { option (google.api.http) = { patch: "/v1alpha/{ios_app_data_stream.name=properties/*/iosAppDataStreams/*}" body: "ios_app_data_stream" }; option (google.api.method_signature) = "ios_app_data_stream,update_mask"; } // Creates an iOS app stream with the specified location and attributes. // // Note that an iOS app stream must be linked to a Firebase app to receive // traffic. // // To create a working app stream, make sure your property is linked to a // Firebase project. Then, use the Firebase API to create a Firebase app, // which will also create an appropriate data stream in Analytics (may take up // to 24 hours). rpc CreateIosAppDataStream(CreateIosAppDataStreamRequest) returns (IosAppDataStream) { option (google.api.http) = { post: "/v1alpha/{parent=properties/*}/iosAppDataStreams" body: "ios_app_data_stream" }; option (google.api.method_signature) = "parent,ios_app_data_stream"; } // Returns child iOS app data streams under the specified parent property. // // iOS app data streams will be excluded if the caller does not have access. // Returns an empty list if no relevant iOS app data streams are found. rpc ListIosAppDataStreams(ListIosAppDataStreamsRequest) returns (ListIosAppDataStreamsResponse) { option (google.api.http) = { get: "/v1alpha/{parent=properties/*}/iosAppDataStreams" }; option (google.api.method_signature) = "parent"; } // Lookup for a single AndroidAppDataStream rpc GetAndroidAppDataStream(GetAndroidAppDataStreamRequest) returns (AndroidAppDataStream) { option (google.api.http) = { get: "/v1alpha/{name=properties/*/androidAppDataStreams/*}" }; option (google.api.method_signature) = "name"; } // Deletes an android app stream on a property. rpc DeleteAndroidAppDataStream(DeleteAndroidAppDataStreamRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1alpha/{name=properties/*/androidAppDataStreams/*}" }; option (google.api.method_signature) = "name"; } // Updates an android app stream on a property. rpc UpdateAndroidAppDataStream(UpdateAndroidAppDataStreamRequest) returns (AndroidAppDataStream) { option (google.api.http) = { patch: "/v1alpha/{android_app_data_stream.name=properties/*/androidAppDataStreams/*}" body: "android_app_data_stream" }; option (google.api.method_signature) = "android_app_data_stream,update_mask"; } // Creates an Android app stream with the specified location and attributes. // // Note that an Android app stream must be linked to a Firebase app to receive // traffic. // // To create a working app stream, make sure your property is linked to a // Firebase project. Then, use the Firebase API to create a Firebase app, // which will also create an appropriate data stream in Analytics (may take up // to 24 hours). rpc CreateAndroidAppDataStream(CreateAndroidAppDataStreamRequest) returns (AndroidAppDataStream) { option (google.api.http) = { post: "/v1alpha/{parent=properties/*}/androidAppDataStreams" body: "android_app_data_stream" }; option (google.api.method_signature) = "parent,android_app_data_stream"; } // Returns child android app streams under the specified parent property. // // Android app streams will be excluded if the caller does not have access. // Returns an empty list if no relevant android app streams are found. rpc ListAndroidAppDataStreams(ListAndroidAppDataStreamsRequest) returns (ListAndroidAppDataStreamsResponse) { option (google.api.http) = { get: "/v1alpha/{parent=properties/*}/androidAppDataStreams" }; option (google.api.method_signature) = "parent"; } // Returns the singleton enhanced measurement settings for this web stream. // Note that the stream must enable enhanced measurement for these settings to // take effect. rpc GetEnhancedMeasurementSettings(GetEnhancedMeasurementSettingsRequest) returns (EnhancedMeasurementSettings) { option (google.api.http) = { get: "/v1alpha/{name=properties/*/webDataStreams/*/enhancedMeasurementSettings}" }; option (google.api.method_signature) = "name"; } // Updates the singleton enhanced measurement settings for this web stream. // Note that the stream must enable enhanced measurement for these settings to // take effect. rpc UpdateEnhancedMeasurementSettings(UpdateEnhancedMeasurementSettingsRequest) returns (EnhancedMeasurementSettings) { option (google.api.http) = { patch: "/v1alpha/{enhanced_measurement_settings.name=properties/*/webDataStreams/*/enhancedMeasurementSettings}" body: "enhanced_measurement_settings" }; option (google.api.method_signature) = "enhanced_measurement_settings,update_mask"; } // Creates a FirebaseLink. // // Properties can have at most one FirebaseLink. rpc CreateFirebaseLink(CreateFirebaseLinkRequest) returns (FirebaseLink) { option (google.api.http) = { post: "/v1alpha/{parent=properties/*}/firebaseLinks" body: "firebase_link" }; option (google.api.method_signature) = "parent,firebase_link"; } // Updates a FirebaseLink on a property rpc UpdateFirebaseLink(UpdateFirebaseLinkRequest) returns (FirebaseLink) { option (google.api.http) = { patch: "/v1alpha/{firebase_link.name=properties/*/firebaseLinks/*}" body: "firebase_link" }; option (google.api.method_signature) = "firebase_link,update_mask"; } // Deletes a FirebaseLink on a property rpc DeleteFirebaseLink(DeleteFirebaseLinkRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1alpha/{name=properties/*/firebaseLinks/*}" }; option (google.api.method_signature) = "name"; } // Lists FirebaseLinks on a property. // Properties can have at most one FirebaseLink. rpc ListFirebaseLinks(ListFirebaseLinksRequest) returns (ListFirebaseLinksResponse) { option (google.api.http) = { get: "/v1alpha/{parent=properties/*}/firebaseLinks" }; option (google.api.method_signature) = "parent"; } // Returns the Site Tag for the specified web stream. // Site Tags are immutable singletons. rpc GetGlobalSiteTag(GetGlobalSiteTagRequest) returns (GlobalSiteTag) { option (google.api.http) = { get: "/v1alpha/{name=properties/*/webDataStreams/*/globalSiteTag}" }; option (google.api.method_signature) = "name"; } // Creates a GoogleAdsLink. rpc CreateGoogleAdsLink(CreateGoogleAdsLinkRequest) returns (GoogleAdsLink) { option (google.api.http) = { post: "/v1alpha/{parent=properties/*}/googleAdsLinks" body: "google_ads_link" }; option (google.api.method_signature) = "parent,google_ads_link"; } // Updates a GoogleAdsLink on a property rpc UpdateGoogleAdsLink(UpdateGoogleAdsLinkRequest) returns (GoogleAdsLink) { option (google.api.http) = { patch: "/v1alpha/{google_ads_link.name=properties/*/googleAdsLinks/*}" body: "google_ads_link" }; option (google.api.method_signature) = "google_ads_link,update_mask"; } // Deletes a GoogleAdsLink on a property rpc DeleteGoogleAdsLink(DeleteGoogleAdsLinkRequest) returns (google.protobuf.Empty) { option (google.api.http) = { delete: "/v1alpha/{name=properties/*/googleAdsLinks/*}" }; option (google.api.method_signature) = "name"; } // Lists GoogleAdsLinks on a property. rpc ListGoogleAdsLinks(ListGoogleAdsLinksRequest) returns (ListGoogleAdsLinksResponse) { option (google.api.http) = { get: "/v1alpha/{parent=properties/*}/googleAdsLinks" }; option (google.api.method_signature) = "parent"; } // Get data sharing settings on an account. // Data sharing settings are singletons. rpc GetDataSharingSettings(GetDataSharingSettingsRequest) returns (DataSharingSettings) { option (google.api.http) = { get: "/v1alpha/{name=accounts/*/dataSharingSettings}" }; option (google.api.method_signature) = "name"; } } // Request message for GetAccount RPC. message GetAccountRequest { // Required. The name of the account to lookup. // Format: accounts/{account} // Example: "accounts/100" string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "analyticsadmin.googleapis.com/Account" } ]; } // Request message for ListAccounts RPC. message ListAccountsRequest { // The maximum number of resources to return. The service may return // fewer than this value, even if there are additional pages. // If unspecified, at most 50 resources will be returned. // The maximum value is 200; (higher values will be coerced to the maximum) int32 page_size = 1; // A page token, received from a previous `ListAccounts` call. // Provide this to retrieve the subsequent page. // When paginating, all other parameters provided to `ListAccounts` must // match the call that provided the page token. string page_token = 2; // Whether to include soft-deleted (ie: "trashed") Accounts in the // results. Accounts can be inspected to determine whether they are deleted or // not. bool show_deleted = 3; } // Request message for ListAccounts RPC. message ListAccountsResponse { // Results that were accessible to the caller. repeated Account accounts = 1; // A token, which can be sent as `page_token` to retrieve the next page. // If this field is omitted, there are no subsequent pages. string next_page_token = 2; } // Request message for DeleteAccount RPC. message DeleteAccountRequest { // Required. The name of the Account to soft-delete. // Format: accounts/{account} // Example: "accounts/100" string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "analyticsadmin.googleapis.com/Account" } ]; } // Request message for UpdateAccount RPC. message UpdateAccountRequest { // Required. The account to update. // The account's `name` field is used to identify the account. Account account = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The list of fields to be updated. Field names must be in snake case // (e.g., "field_to_update"). Omitted fields will not be updated. To replace // the entire entity, use one path with the string "*" to match all fields. google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED]; } // Request message for ProvisionAccountTicket RPC. message ProvisionAccountTicketRequest { // The account to create. Account account = 1; // Redirect URI where the user will be sent after accepting Terms of Service. // Must be configured in Developers Console as a Redirect URI string redirect_uri = 2; } // Response message for ProvisionAccountTicket RPC. message ProvisionAccountTicketResponse { // The param to be passed in the ToS link. string account_ticket_id = 1; } // Request message for GetProperty RPC. message GetPropertyRequest { // Required. The name of the property to lookup. // Format: properties/{property_id} // Example: "properties/1000" string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "analyticsadmin.googleapis.com/Property" } ]; } // Request message for ListProperties RPC. message ListPropertiesRequest { // Required. An expression for filtering the results of the request. // Fields eligible for filtering are: // `parent:`(The resource name of the parent account) or // `firebase_project:`(The id or number of the linked firebase project). // Some examples of filters: // // ``` // | Filter | Description | // |-----------------------------|-------------------------------------------| // | parent:accounts/123 | The account with account id: 123. | // | firebase_project:project-id | The firebase project with id: project-id. | // | firebase_project:123 | The firebase project with number: 123. | // ``` string filter = 1 [(google.api.field_behavior) = REQUIRED]; // The maximum number of resources to return. The service may return // fewer than this value, even if there are additional pages. // If unspecified, at most 50 resources will be returned. // The maximum value is 200; (higher values will be coerced to the maximum) int32 page_size = 2; // A page token, received from a previous `ListProperties` call. // Provide this to retrieve the subsequent page. // When paginating, all other parameters provided to `ListProperties` must // match the call that provided the page token. string page_token = 3; // Whether to include soft-deleted (ie: "trashed") Properties in the // results. Properties can be inspected to determine whether they are deleted // or not. bool show_deleted = 4; } // Response message for ListProperties RPC. message ListPropertiesResponse { // Results that matched the filter criteria and were accessible to the caller. repeated Property properties = 1; // A token, which can be sent as `page_token` to retrieve the next page. // If this field is omitted, there are no subsequent pages. string next_page_token = 2; } // Request message for UpdateProperty RPC. message UpdatePropertyRequest { // Required. The property to update. // The property's `name` field is used to identify the property to be // updated. Property property = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The list of fields to be updated. Field names must be in snake case // (e.g., "field_to_update"). Omitted fields will not be updated. To replace // the entire entity, use one path with the string "*" to match all fields. google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED]; } // Request message for CreateProperty RPC. message CreatePropertyRequest { // Required. The property to create. // Note: the supplied property must specify its parent. Property property = 1 [(google.api.field_behavior) = REQUIRED]; } // Request message for DeleteProperty RPC. message DeletePropertyRequest { // Required. The name of the Property to soft-delete. // Format: properties/{property_id} // Example: "properties/1000" string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "analyticsadmin.googleapis.com/Property" } ]; } // Request message for GetUserLink RPC. message GetUserLinkRequest { // Required. Example format: accounts/1234/userLinks/5678 string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "analyticsadmin.googleapis.com/UserLink" } ]; } // Request message for BatchGetUserLinks RPC. message BatchGetUserLinksRequest { // Required. The account or property that all user links in the request are // for. The parent of all provided values for the 'names' field must match // this field. // Example format: accounts/1234 string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "analyticsadmin.googleapis.com/UserLink" } ]; // Required. The names of the user links to retrieve. // A maximum of 1000 user links can be retrieved in a batch. // Format: accounts/{accountId}/userLinks/{userLinkId} repeated string names = 2 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "analyticsadmin.googleapis.com/UserLink" } ]; } // Response message for BatchGetUserLinks RPC. message BatchGetUserLinksResponse { // The requested user links. repeated UserLink user_links = 1; } // Request message for ListUserLinks RPC. message ListUserLinksRequest { // Required. Example format: accounts/1234 string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "analyticsadmin.googleapis.com/UserLink" } ]; // The maximum number of user links to return. // The service may return fewer than this value. // If unspecified, at most 200 user links will be returned. // The maximum value is 500; values above 500 will be coerced to 500. int32 page_size = 2; // A page token, received from a previous `ListUserLinks` call. // Provide this to retrieve the subsequent page. // When paginating, all other parameters provided to `ListUserLinks` must // match the call that provided the page token. string page_token = 3; } // Response message for ListUserLinks RPC. message ListUserLinksResponse { // List of UserLinks. These will be ordered stably, but in an arbitrary order. repeated UserLink user_links = 1; // A token, which can be sent as `page_token` to retrieve the next page. // If this field is omitted, there are no subsequent pages. string next_page_token = 2; } // Request message for AuditUserLinks RPC. message AuditUserLinksRequest { // Required. Example format: accounts/1234 string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "analyticsadmin.googleapis.com/UserLink" } ]; // The maximum number of user links to return. // The service may return fewer than this value. // If unspecified, at most 1000 user links will be returned. // The maximum value is 5000; values above 5000 will be coerced to 5000. int32 page_size = 2; // A page token, received from a previous `AuditUserLinks` call. // Provide this to retrieve the subsequent page. // When paginating, all other parameters provided to `AuditUserLinks` must // match the call that provided the page token. string page_token = 3; } // Response message for AuditUserLinks RPC. message AuditUserLinksResponse { // List of AuditUserLinks. These will be ordered stably, but in an arbitrary // order. repeated AuditUserLink user_links = 1; // A token, which can be sent as `page_token` to retrieve the next page. // If this field is omitted, there are no subsequent pages. string next_page_token = 2; } // Request message for CreateUserLink RPC. // // Users can have multiple email addresses associated with their Google // account, and one of these email addresses is the "primary" email address. // Any of the email addresses associated with a Google account may be used // for a new UserLink, but the returned UserLink will always contain the // "primary" email address. As a result, the input and output email address // for this request may differ. message CreateUserLinkRequest { // Required. Example format: accounts/1234 string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "analyticsadmin.googleapis.com/UserLink" } ]; // Optional. If set, then email the new user notifying them that they've been granted // permissions to the resource. bool notify_new_user = 2 [(google.api.field_behavior) = OPTIONAL]; // Required. The user link to create. UserLink user_link = 3 [(google.api.field_behavior) = REQUIRED]; } // Request message for BatchCreateUserLinks RPC. message BatchCreateUserLinksRequest { // Required. The account or property that all user links in the request are for. // This field is required. The parent field in the CreateUserLinkRequest // messages must either be empty or match this field. // Example format: accounts/1234 string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "analyticsadmin.googleapis.com/UserLink" } ]; // Optional. If set, then email the new users notifying them that they've been granted // permissions to the resource. Regardless of whether this is set or not, // notify_new_user field inside each individual request is ignored. bool notify_new_users = 2 [(google.api.field_behavior) = OPTIONAL]; // Required. The requests specifying the user links to create. // A maximum of 1000 user links can be created in a batch. repeated CreateUserLinkRequest requests = 3 [(google.api.field_behavior) = REQUIRED]; } // Response message for BatchCreateUserLinks RPC. message BatchCreateUserLinksResponse { // The user links created. repeated UserLink user_links = 1; } // Request message for UpdateUserLink RPC. message UpdateUserLinkRequest { // Required. The user link to update. UserLink user_link = 1 [(google.api.field_behavior) = REQUIRED]; } // Request message for BatchUpdateUserLinks RPC. message BatchUpdateUserLinksRequest { // Required. The account or property that all user links in the request are // for. The parent field in the UpdateUserLinkRequest messages must either be // empty or match this field. // Example format: accounts/1234 string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "analyticsadmin.googleapis.com/UserLink" } ]; // Required. The requests specifying the user links to update. // A maximum of 1000 user links can be updated in a batch. repeated UpdateUserLinkRequest requests = 2 [(google.api.field_behavior) = REQUIRED]; } // Response message for BatchUpdateUserLinks RPC. message BatchUpdateUserLinksResponse { // The user links updated. repeated UserLink user_links = 1; } // Request message for DeleteUserLink RPC. message DeleteUserLinkRequest { // Required. Example format: accounts/1234/userLinks/5678 string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "analyticsadmin.googleapis.com/UserLink" } ]; } // Request message for BatchDeleteUserLinks RPC. message BatchDeleteUserLinksRequest { // Required. The account or property that all user links in the request are // for. The parent of all values for user link names to delete must match this // field. // Example format: accounts/1234 string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "analyticsadmin.googleapis.com/UserLink" } ]; // Required. The requests specifying the user links to update. // A maximum of 1000 user links can be updated in a batch. repeated DeleteUserLinkRequest requests = 2 [(google.api.field_behavior) = REQUIRED]; } // Request message for GetWebDataStream RPC. message GetWebDataStreamRequest { // Required. The name of the web data stream to lookup. // Format: properties/{property_id}/webDataStreams/{stream_id} // Example: "properties/123/webDataStreams/456" string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "analyticsadmin.googleapis.com/WebDataStream" } ]; } // Request message for DeleteWebDataStream RPC. message DeleteWebDataStreamRequest { // Required. The name of the web data stream to delete. // Format: properties/{property_id}/webDataStreams/{stream_id} // Example: "properties/123/webDataStreams/456" string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "analyticsadmin.googleapis.com/WebDataStream" } ]; } // Request message for UpdateWebDataStream RPC. message UpdateWebDataStreamRequest { // Required. The web stream to update. // The `name` field is used to identify the web stream to be updated. WebDataStream web_data_stream = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The list of fields to be updated. Field names must be in snake case // (e.g., "field_to_update"). Omitted fields will not be updated. To replace // the entire entity, use one path with the string "*" to match all fields. google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED]; } // Request message for CreateWebDataStream RPC. message CreateWebDataStreamRequest { // Required. The web stream to create. WebDataStream web_data_stream = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The parent resource where this web data stream will be created. // Format: properties/123 string parent = 2 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "analyticsadmin.googleapis.com/WebDataStream" } ]; } // Request message for ListWebDataStreams RPC. message ListWebDataStreamsRequest { // Required. The name of the parent property. // For example, to list results of web streams under the property with Id // 123: "properties/123" string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "analyticsadmin.googleapis.com/WebDataStream" } ]; // The maximum number of resources to return. // If unspecified, at most 50 resources will be returned. // The maximum value is 200; (higher values will be coerced to the maximum) int32 page_size = 2; // A page token, received from a previous `ListWebDataStreams` call. // Provide this to retrieve the subsequent page. // When paginating, all other parameters provided to `ListWebDataStreams` must // match the call that provided the page token. string page_token = 3; } // Request message for ListWebDataStreams RPC. message ListWebDataStreamsResponse { // Results that matched the filter criteria and were accessible to the caller. repeated WebDataStream web_data_streams = 1; // A token, which can be sent as `page_token` to retrieve the next page. // If this field is omitted, there are no subsequent pages. string next_page_token = 2; } // Request message for GetIosAppDataStream RPC. message GetIosAppDataStreamRequest { // Required. The name of the iOS app data stream to lookup. // Format: properties/{property_id}/iosAppDataStreams/{stream_id} // Example: "properties/123/iosAppDataStreams/456" string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "analyticsadmin.googleapis.com/IosAppDataStream" } ]; } // Request message for DeleteIosAppDataStream RPC. message DeleteIosAppDataStreamRequest { // Required. The name of the iOS app data stream to delete. // Format: properties/{property_id}/iosAppDataStreams/{stream_id} // Example: "properties/123/iosAppDataStreams/456" string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "analyticsadmin.googleapis.com/IosAppDataStream" } ]; } // Request message for UpdateIosAppDataStream RPC. message UpdateIosAppDataStreamRequest { // Required. The iOS app stream to update. // The `name` field is used to identify the iOS app stream to be updated. IosAppDataStream ios_app_data_stream = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The list of fields to be updated. Field names must be in snake case // (e.g., "field_to_update"). Omitted fields will not be updated. To replace // the entire entity, use one path with the string "*" to match all fields. google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED]; } // Request message for CreateIosAppDataStream RPC. message CreateIosAppDataStreamRequest { // Required. The iOS app data stream to create. IosAppDataStream ios_app_data_stream = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The parent resource where this ios app data stream will be created. // Format: properties/123 string parent = 2 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "analyticsadmin.googleapis.com/IosAppDataStream" } ]; } // Request message for ListIosAppDataStreams RPC. message ListIosAppDataStreamsRequest { // Required. The name of the parent property. // For example, to list results of app streams under the property with Id // 123: "properties/123" string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "analyticsadmin.googleapis.com/IosAppDataStream" } ]; // The maximum number of resources to return. // If unspecified, at most 50 resources will be returned. // The maximum value is 200; (higher values will be coerced to the maximum) int32 page_size = 2; // A page token, received from a previous `ListIosAppDataStreams` // call. Provide this to retrieve the subsequent page. // When paginating, all other parameters provided to `ListIosAppDataStreams` // must match the call that provided the page token. string page_token = 3; } // Request message for ListIosAppDataStreams RPC. message ListIosAppDataStreamsResponse { // Results that matched the filter criteria and were accessible to the caller. repeated IosAppDataStream ios_app_data_streams = 1; // A token, which can be sent as `page_token` to retrieve the next page. // If this field is omitted, there are no subsequent pages. string next_page_token = 2; } // Request message for GetAndroidAppDataStream RPC. message GetAndroidAppDataStreamRequest { // Required. The name of the android app data stream to lookup. // Format: properties/{property_id}/androidAppDataStreams/{stream_id} // Example: "properties/123/androidAppDataStreams/456" string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "analyticsadmin.googleapis.com/AndroidAppDataStream" } ]; } // Request message for DeleteAndroidAppDataStream RPC. message DeleteAndroidAppDataStreamRequest { // Required. The name of the android app data stream to delete. // Format: properties/{property_id}/androidAppDataStreams/{stream_id} // Example: "properties/123/androidAppDataStreams/456" string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "analyticsadmin.googleapis.com/AndroidAppDataStream" } ]; } // Request message for UpdateAndroidAppDataStream RPC. message UpdateAndroidAppDataStreamRequest { // Required. The android app stream to update. // The `name` field is used to identify the android app stream to be updated. AndroidAppDataStream android_app_data_stream = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The list of fields to be updated. Field names must be in snake case // (e.g., "field_to_update"). Omitted fields will not be updated. To replace // the entire entity, use one path with the string "*" to match all fields. google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED]; } // Request message for CreateAndroidAppDataStream RPC. message CreateAndroidAppDataStreamRequest { // Required. The android app stream to create. AndroidAppDataStream android_app_data_stream = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The parent resource where this android app data stream will be created. // Format: properties/123 string parent = 2 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "analyticsadmin.googleapis.com/AndroidAppDataStream" } ]; } // Request message for ListAndroidAppDataStreams RPC. message ListAndroidAppDataStreamsRequest { // Required. The name of the parent property. // For example, to limit results to app streams under the property with Id // 123: "properties/123" string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "analyticsadmin.googleapis.com/AndroidAppDataStream" } ]; // The maximum number of resources to return. // // If unspecified, at most 50 resources will be returned. // The maximum value is 200; (higher values will be coerced to the maximum) int32 page_size = 2; // A page token, received from a previous call. Provide this to // retrieve the subsequent page. // When paginating, all other parameters provided to // `ListAndroidAppDataStreams` must match the call that provided the page // token. string page_token = 3; } // Request message for ListAndroidDataStreams RPC. message ListAndroidAppDataStreamsResponse { // Results that matched the filter criteria and were accessible to the caller. repeated AndroidAppDataStream android_app_data_streams = 1; // A token, which can be sent as `page_token` to retrieve the next page. // If this field is omitted, there are no subsequent pages. string next_page_token = 2; } // Request message for GetEnhancedMeasurementSettings RPC. message GetEnhancedMeasurementSettingsRequest { // Required. The name of the settings to lookup. // Format: // properties/{property_id}/webDataStreams/{stream_id}/enhancedMeasurementSettings // Example: "properties/1000/webDataStreams/2000/enhancedMeasurementSettings" string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "analyticsadmin.googleapis.com/EnhancedMeasurementSettings" } ]; } // Request message for UpdateEnhancedMeasurementSettings RPC. message UpdateEnhancedMeasurementSettingsRequest { // Required. The settings to update. // The `name` field is used to identify the settings to be updated. EnhancedMeasurementSettings enhanced_measurement_settings = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The list of fields to be updated. Field names must be in snake case // (e.g., "field_to_update"). Omitted fields will not be updated. To replace // the entire entity, use one path with the string "*" to match all fields. google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED]; } // Request message for CreateFirebaseLink RPC message CreateFirebaseLinkRequest { // Required. Format: properties/{property_id} // Example: properties/1234 string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "analyticsadmin.googleapis.com/FirebaseLink" } ]; // Required. The Firebase link to create. FirebaseLink firebase_link = 2 [(google.api.field_behavior) = REQUIRED]; } // Request message for UpdateFirebaseLink RPC message UpdateFirebaseLinkRequest { // Required. The Firebase link to update. FirebaseLink firebase_link = 1 [(google.api.field_behavior) = REQUIRED]; // Required. The list of fields to be updated. Field names must be in snake case // (e.g., "field_to_update"). Omitted fields will not be updated. To replace // the entire entity, use one path with the string "*" to match all fields. google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED]; } // Request message for DeleteFirebaseLink RPC message DeleteFirebaseLinkRequest { // Required. Format: properties/{property_id}/firebaseLinks/{firebase_link_id} // Example: properties/1234/firebaseLinks/5678 string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "analyticsadmin.googleapis.com/FirebaseLink" } ]; } // Request message for ListFirebaseLinks RPC message ListFirebaseLinksRequest { // Required. Format: properties/{property_id} // Example: properties/1234 string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "analyticsadmin.googleapis.com/FirebaseLink" } ]; // The maximum number of resources to return. The service may return // fewer than this value, even if there are additional pages. // If unspecified, at most 50 resources will be returned. // The maximum value is 200; (higher values will be coerced to the maximum) int32 page_size = 2; // A page token, received from a previous `ListFirebaseLinks` call. // Provide this to retrieve the subsequent page. // When paginating, all other parameters provided to `ListProperties` must // match the call that provided the page token. string page_token = 3; } // Response message for ListFirebaseLinks RPC message ListFirebaseLinksResponse { // List of FirebaseLinks. This will have at most one value. repeated FirebaseLink firebase_links = 1; // A token, which can be sent as `page_token` to retrieve the next page. // If this field is omitted, there are no subsequent pages. // Currently, Google Analytics supports only one FirebaseLink per property, // so this will never be populated. string next_page_token = 2; } // Request message for GetGlobalSiteTag RPC. message GetGlobalSiteTagRequest { // Required. The name of the site tag to lookup. // Note that site tags are singletons and do not have unique IDs. // Format: properties/{property_id}/webDataStreams/{stream_id}/globalSiteTag // Example: "properties/123/webDataStreams/456/globalSiteTag" string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "analyticsadmin.googleapis.com/GlobalSiteTag" } ]; } // Request message for CreateGoogleAdsLink RPC message CreateGoogleAdsLinkRequest { // Required. Example format: properties/1234 string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "analyticsadmin.googleapis.com/GoogleAdsLink" } ]; // Required. The GoogleAdsLink to create. GoogleAdsLink google_ads_link = 2 [(google.api.field_behavior) = REQUIRED]; } // Request message for UpdateGoogleAdsLink RPC message UpdateGoogleAdsLinkRequest { // The GoogleAdsLink to update GoogleAdsLink google_ads_link = 1; // Required. The list of fields to be updated. Field names must be in snake case // (e.g., "field_to_update"). Omitted fields will not be updated. To replace // the entire entity, use one path with the string "*" to match all fields. google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED]; } // Request message for DeleteGoogleAdsLink RPC. message DeleteGoogleAdsLinkRequest { // Required. Example format: properties/1234/googleAdsLinks/5678 string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "analyticsadmin.googleapis.com/GoogleAdsLink" } ]; } // Request message for ListGoogleAdsLinks RPC. message ListGoogleAdsLinksRequest { // Required. Example format: properties/1234 string parent = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { child_type: "analyticsadmin.googleapis.com/GoogleAdsLink" } ]; // The maximum number of resources to return. // If unspecified, at most 50 resources will be returned. // The maximum value is 200 (higher values will be coerced to the maximum). int32 page_size = 2; // A page token, received from a previous `ListGoogleAdsLinks` call. // Provide this to retrieve the subsequent page. // // When paginating, all other parameters provided to `ListGoogleAdsLinks` must // match the call that provided the page token. string page_token = 3; } // Response message for ListGoogleAdsLinks RPC. message ListGoogleAdsLinksResponse { // List of GoogleAdsLinks. repeated GoogleAdsLink google_ads_links = 1; // A token, which can be sent as `page_token` to retrieve the next page. // If this field is omitted, there are no subsequent pages. string next_page_token = 2; } // Request message for GetDataSharingSettings RPC. message GetDataSharingSettingsRequest { // Required. The name of the settings to lookup. // Format: accounts/{account}/dataSharingSettings // Example: "accounts/1000/dataSharingSettings" string name = 1 [ (google.api.field_behavior) = REQUIRED, (google.api.resource_reference) = { type: "analyticsadmin.googleapis.com/DataSharingSettings" } ]; } // Request message for ListAccountSummaries RPC. message ListAccountSummariesRequest { // The maximum number of AccountSummary resources to return. The service may // return fewer than this value, even if there are additional pages. // If unspecified, at most 50 resources will be returned. // The maximum value is 200; (higher values will be coerced to the maximum) int32 page_size = 1; // A page token, received from a previous `ListAccountSummaries` call. // Provide this to retrieve the subsequent page. // When paginating, all other parameters provided to `ListAccountSummaries` // must match the call that provided the page token. string page_token = 2; } // Response message for ListAccountSummaries RPC. message ListAccountSummariesResponse { // Account summaries of all accounts the caller has access to. repeated AccountSummary account_summaries = 1; // A token, which can be sent as `page_token` to retrieve the next page. // If this field is omitted, there are no subsequent pages. string next_page_token = 2; }