Add protos and configs for the Google Analytics Data API v1 alpha.

PiperOrigin-RevId: 316832151
This commit is contained in:
Google APIs 2020-06-16 23:30:36 -07:00 committed by Copybara-Service
parent 3dcb344dd2
commit 1c25156bc8
6 changed files with 1355 additions and 0 deletions

View File

@ -0,0 +1,358 @@
# This file was automatically generated by BuildFileGenerator
# This is an API workspace, having public visibility by default makes perfect sense.
package(default_visibility = ["//visibility:public"])
##############################################################################
# Common
##############################################################################
load("@rules_proto//proto:defs.bzl", "proto_library")
load("@com_google_googleapis_imports//:imports.bzl", "proto_library_with_info")
proto_library(
name = "data_proto",
srcs = [
"analytics_data_api.proto",
"data.proto",
],
deps = [
"//google/api:annotations_proto",
"//google/api:client_proto",
],
)
proto_library_with_info(
name = "data_proto_with_info",
deps = [
":data_proto",
"//google/cloud:common_resources_proto",
],
)
##############################################################################
# Java
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"java_gapic_assembly_gradle_pkg",
"java_gapic_library",
"java_gapic_test",
"java_grpc_library",
"java_proto_library",
)
java_proto_library(
name = "data_java_proto",
deps = [":data_proto"],
)
java_grpc_library(
name = "data_java_grpc",
srcs = [":data_proto"],
deps = [":data_java_proto"],
)
java_gapic_library(
name = "data_java_gapic",
src = ":data_proto_with_info",
gapic_yaml = "analyticsdata_gapic.yaml",
grpc_service_config = "analytics_data_grpc_service_config.json",
package = "google.analytics.data.v1alpha",
service_yaml = "analyticsdata_v1alpha.yaml",
test_deps = [
":data_java_grpc",
],
deps = [
":data_java_proto",
],
)
java_gapic_test(
name = "data_java_gapic_test_suite",
test_classes = [
"com.google.analytics.data.v1alpha.AlphaAnalyticsDataClientTest",
],
runtime_deps = [":data_java_gapic_test"],
)
# Open Source Packages
java_gapic_assembly_gradle_pkg(
name = "analytics-data-v1alpha-java",
deps = [
":data_java_gapic",
":data_java_grpc",
":data_java_proto",
":data_proto",
],
)
##############################################################################
# Go
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"go_gapic_assembly_pkg",
"go_gapic_library",
"go_proto_library",
"go_test",
)
go_proto_library(
name = "data_go_proto",
compilers = ["@io_bazel_rules_go//proto:go_grpc"],
importpath = "google.golang.org/genproto/googleapis/analytics/data/v1alpha",
protos = [":data_proto"],
deps = [
"//google/api:annotations_go_proto",
],
)
go_gapic_library(
name = "data_go_gapic",
srcs = [":data_proto_with_info"],
grpc_service_config = "analytics_data_grpc_service_config.json",
importpath = "google.golang.org/google/analytics/data/v1alpha;data",
service_yaml = "analyticsdata_v1alpha.yaml",
deps = [
":data_go_proto",
],
)
go_test(
name = "data_go_gapic_test",
srcs = [":data_go_gapic_srcjar_test"],
embed = [":data_go_gapic"],
importpath = "google.golang.org/google/analytics/data/v1alpha",
)
# Open Source Packages
go_gapic_assembly_pkg(
name = "gapi-cloud-analytics-data-v1alpha-go",
deps = [
":data_go_gapic",
":data_go_gapic_srcjar-test.srcjar",
":data_go_proto",
],
)
##############################################################################
# Python
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"moved_proto_library",
"py_gapic_assembly_pkg",
"py_gapic_library",
"py_grpc_library",
"py_proto_library",
)
moved_proto_library(
name = "data_moved_proto",
srcs = [":data_proto"],
deps = [
"//google/api:annotations_proto",
"//google/api:client_proto",
],
)
py_proto_library(
name = "data_py_proto",
plugin = "@protoc_docs_plugin//:docs_plugin",
deps = [":data_moved_proto"],
)
py_grpc_library(
name = "data_py_grpc",
srcs = [":data_moved_proto"],
deps = [":data_py_proto"],
)
py_gapic_library(
name = "data_py_gapic",
src = ":data_proto_with_info",
gapic_yaml = "analyticsdata_gapic.yaml",
grpc_service_config = "analytics_data_grpc_service_config.json",
package = "google.analytics.data.v1alpha",
service_yaml = "analyticsdata_v1alpha.yaml",
deps = [
":data_py_grpc",
":data_py_proto",
],
)
# Open Source Packages
py_gapic_assembly_pkg(
name = "analytics-data-v1alpha-py",
deps = [
":data_py_gapic",
":data_py_grpc",
":data_py_proto",
],
)
##############################################################################
# PHP
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"php_gapic_assembly_pkg",
"php_gapic_library",
"php_grpc_library",
"php_proto_library",
)
php_proto_library(
name = "data_php_proto",
deps = [":data_proto"],
)
php_grpc_library(
name = "data_php_grpc",
srcs = [":data_proto"],
deps = [":data_php_proto"],
)
php_gapic_library(
name = "data_php_gapic",
src = ":data_proto_with_info",
gapic_yaml = "analyticsdata_gapic.yaml",
grpc_service_config = "analytics_data_grpc_service_config.json",
package = "google.analytics.data.v1alpha",
service_yaml = "analyticsdata_v1alpha.yaml",
deps = [
":data_php_grpc",
":data_php_proto",
],
)
# Open Source Packages
php_gapic_assembly_pkg(
name = "analytics-data-v1alpha-php",
deps = [
":data_php_gapic",
":data_php_grpc",
":data_php_proto",
],
)
##############################################################################
# Node.js
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"nodejs_gapic_assembly_pkg",
"nodejs_gapic_library",
)
nodejs_gapic_library(
name = "data_nodejs_gapic",
src = ":data_proto_with_info",
grpc_service_config = "analytics_data_grpc_service_config.json",
package = "google.analytics.data.v1alpha",
service_yaml = "analyticsdata_v1alpha.yaml",
deps = [],
)
nodejs_gapic_assembly_pkg(
name = "analytics-data-v1alpha-nodejs",
deps = [
":data_nodejs_gapic",
":data_proto",
],
)
##############################################################################
# Ruby
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"ruby_gapic_assembly_pkg",
"ruby_gapic_library",
"ruby_grpc_library",
"ruby_proto_library",
)
ruby_proto_library(
name = "data_ruby_proto",
deps = [":data_proto"],
)
ruby_grpc_library(
name = "data_ruby_grpc",
srcs = [":data_proto"],
deps = [":data_ruby_proto"],
)
ruby_gapic_library(
name = "data_ruby_gapic",
src = ":data_proto_with_info",
gapic_yaml = "analyticsdata_gapic.yaml",
grpc_service_config = "analytics_data_grpc_service_config.json",
package = "google.analytics.data.v1alpha",
service_yaml = "analyticsdata_v1alpha.yaml",
deps = [
":data_ruby_grpc",
":data_ruby_proto",
],
)
# Open Source Packages
ruby_gapic_assembly_pkg(
name = "analytics-data-v1alpha-ruby",
deps = [
":data_ruby_gapic",
":data_ruby_grpc",
":data_ruby_proto",
],
)
##############################################################################
# C#
##############################################################################
load(
"@com_google_googleapis_imports//:imports.bzl",
"csharp_gapic_assembly_pkg",
"csharp_gapic_library",
"csharp_grpc_library",
"csharp_proto_library",
)
csharp_proto_library(
name = "data_csharp_proto",
deps = [":data_proto"],
)
csharp_grpc_library(
name = "data_csharp_grpc",
srcs = [":data_proto"],
deps = [":data_csharp_proto"],
)
csharp_gapic_library(
name = "data_csharp_gapic",
src = ":data_proto_with_info",
gapic_yaml = "analyticsdata_gapic.yaml",
grpc_service_config = "analytics_data_grpc_service_config.json",
package = "google.analytics.data.v1alpha",
service_yaml = "analyticsdata_v1alpha.yaml",
deps = [
":data_csharp_grpc",
":data_csharp_proto",
],
)
# Open Source Packages
csharp_gapic_assembly_pkg(
name = "analytics-data-v1alpha-csharp",
deps = [
":data_csharp_gapic",
":data_csharp_grpc",
":data_csharp_proto",
],
)
##############################################################################
# C++
##############################################################################
# Put your C++ rules here

View File

@ -0,0 +1,306 @@
// 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.data.v1alpha;
import "google/analytics/data/v1alpha/data.proto";
import "google/api/annotations.proto";
import "google/api/client.proto";
option go_package = "google.golang.org/genproto/googleapis/analytics/data/v1alpha;data";
option java_multiple_files = true;
option java_outer_classname = "AnalyticsDataApiProto";
option java_package = "com.google.analytics.data.v1alpha";
// Google Analytics reporting data service.
service AlphaAnalyticsData {
option (google.api.default_host) = "analyticsdata.googleapis.com";
option (google.api.oauth_scopes) =
"https://www.googleapis.com/auth/analytics,"
"https://www.googleapis.com/auth/analytics.readonly";
// Returns a customized report of your Google Analytics event data. Reports
// contain statistics derived from data collected by the Google Analytics
// tracking code. The data returned from the API is as a table with columns
// for the requested dimensions and metrics. Metrics are individual
// measurements of user activity on your property, such as active users or
// event count. Dimensions break down metrics across some common criteria,
// such as country or event name.
rpc RunReport(RunReportRequest) returns (RunReportResponse) {
option (google.api.http) = {
post: "/v1alpha:runReport"
body: "*"
};
}
// Returns a customized pivot report of your Google Analytics event data.
// Pivot reports are more advanced and expressive formats than regular
// reports. In a pivot report, dimensions are only visible if they are
// included in a pivot. Multiple pivots can be specified to further dissect
// your data.
rpc RunPivotReport(RunPivotReportRequest) returns (RunPivotReportResponse) {
option (google.api.http) = {
post: "/v1alpha:runPivotReport"
body: "*"
};
}
// Returns multiple reports in a batch. All reports must be for the same
// Entity.
rpc BatchRunReports(BatchRunReportsRequest) returns (BatchRunReportsResponse) {
option (google.api.http) = {
post: "/v1alpha:batchRunReports"
body: "*"
};
}
// Returns multiple pivot reports in a batch. All reports must be for the same
// Entity.
rpc BatchRunPivotReports(BatchRunPivotReportsRequest) returns (BatchRunPivotReportsResponse) {
option (google.api.http) = {
post: "/v1alpha:batchRunPivotReports"
body: "*"
};
}
}
// The request to generate a report.
message RunReportRequest {
// A property whose events are tracked. Within a batch request, this entity
// should either be unspecified or consistent with the batch-level entity.
Entity entity = 1;
// The dimensions requested and displayed.
repeated Dimension dimensions = 2;
// The metrics requested and displayed.
repeated Metric metrics = 3;
// Date ranges of data to read. If multiple date ranges are requested, each
// response row will contain a zero based date range index. If two date
// ranges overlap, the event data for the overlapping days is included in the
// response rows for both date ranges.
repeated DateRange date_ranges = 4;
// The row count of the start row. The first row is counted as row 0.
int64 offset = 5;
// The number of rows to return.
// If zero or unspecified, all rows are returned.
int64 limit = 6;
// Aggregation of metrics. Aggregated metric values will be shown in rows
// where the dimension_values are set to "RESERVED_(MetricAggregation)".
repeated MetricAggregation metric_aggregations = 7;
// The filter clause of dimensions.
FilterExpression dimension_filter = 8;
// The filter clause of metrics. Applied at post aggregation phase, similar to
// SQL having-clause.
FilterExpression metric_filter = 9;
// Specifies how rows are ordered in the response.
repeated OrderBy order_bys = 10;
// A currency code in ISO4217 format, such as "AED", "USD", "JPY".
// If the field is empty, the report uses the entity's default currency.
string currency_code = 11;
// Cohort group associated with this request. If there is a cohort group
// in the request the 'cohort' dimension must be present.
CohortSpec cohort_spec = 12;
// If false, rows with metrics being 0 will not be returned.
bool keep_empty_rows = 13;
// Toggles whether to return the current state of this Analytics Property's
// quota. Quota is returned in [PropertyQuota](#PropertyQuota).
bool return_property_quota = 14;
}
// The response report table corresponding to a request.
message RunReportResponse {
// Describes metric columns.
repeated MetricHeader metric_headers = 1;
// Rows of dimension value combinations and metric values in the report.
repeated Row rows = 2;
// If requested, the totaled values of metrics.
repeated Row totals = 8;
// If requested, the maximum values of metrics.
repeated Row maximums = 9;
// If requested, the minimum values of metrics.
repeated Row minimums = 10;
// Metadata for the report.
ResponseMetaData metadata = 6;
// This Analytics Property's quota state including this request.
PropertyQuota property_quota = 7;
}
// The request to generate a pivot report.
message RunPivotReportRequest {
// A property whose events are tracked. Within a batch request, this entity
// should either be unspecified or consistent with the batch-level entity.
Entity entity = 1;
// The dimensions requested. All defined dimensions must be used by one of the
// following: dimension_expression, dimension_filter, pivots, order_bys.
repeated Dimension dimensions = 2;
// The metrics requested, at least one metric needs to be specified. All
// defined metrics must be used by one of the following: metric_expression,
// metric_filter, order_bys.
repeated Metric metrics = 3;
// The filter clause of dimensions. Requests are validated that all
// field_names in the dimension_filter are dimensions and are defined in
// Dimensions.
FilterExpression dimension_filter = 4;
// The filter clause of metrics. Applied at post aggregation phase, similar to
// SQL having-clause. Requests are validated that all field_names in the
// metric_filter are metrics and are defined in Metrics.
FilterExpression metric_filter = 5;
// Describes the visual format of the report's dimensions in columns or rows.
// The union of the fieldNames (dimension names) in all pivots must be a
// subset of dimension names defined in Dimensions. No two pivots can share a
// dimension. A dimension is only visible if it appears in a pivot.
repeated Pivot pivots = 6;
// The date range to retrieve event data for the report. If multiple date
// ranges are specified, event data from each date range is used in the
// report. A special dimension with field name "dateRange" can be included in
// a Pivot's field names; if included, the report compares between date
// ranges. This dateRanges field is not used in cohorts reports.
repeated DateRange date_ranges = 7;
// A currency code in ISO4217 format, such as "AED", "USD", "JPY".
// If the field is empty, the report uses the entity's default currency.
string currency_code = 8;
// Cohort group associated with this request. If there is a cohort group
// in the request the 'cohort' dimension must be present.
CohortSpec cohort_spec = 9;
// If false, rows with metrics being 0 will not be returned.
bool keep_empty_rows = 10;
// Toggles whether to return the current state of this Analytics Property's
// quota. Quota is returned in [PropertyQuota](#PropertyQuota).
bool return_property_quota = 11;
}
// The response pivot report table corresponding to a pivot request.
message RunPivotReportResponse {
// Summarizes the columns and rows created by a pivot. Each pivot in the
// request produces one header in the response. If we have a request like
// this:
//
// "pivots": [{
// "fieldNames": ["country",
// "city"]
// },
// {
// "fieldNames": "eventName"
// }]
//
// We will have the following `pivotHeaders` in the response:
//
// "pivotHeaders" : [{
// "dimensionHeaders": [{
// "dimensionValues": [
// { "value": "United Kingdom" },
// { "value": "London" }
// ]
// },
// {
// "dimensionValues": [
// { "value": "Japan" },
// { "value": "Osaka" }
// ]
// }]
// },
// {
// "dimensionHeaders": [{
// "dimensionValues": [{ "value": "session_start" }]
// },
// {
// "dimensionValues": [{ "value": "scroll" }]
// }]
// }]
repeated PivotHeader pivot_headers = 1;
// Describes metric columns.
repeated MetricHeader metric_headers = 2;
// Rows of dimension value combinations and metric values in the report.
repeated Row rows = 3;
// Aggregation of metric values. Can be totals, minimums, or maximums. The
// returned aggregations are controlled by the metric_aggregations in the
// pivot. The type of aggregation returned in each row is shown by the
// dimension_values which are set to "RESERVED_<MetricAggregation>".
repeated Row aggregates = 4;
// Metadata for the report.
ResponseMetaData metadata = 5;
// This Analytics Property's quota state including this request.
PropertyQuota property_quota = 6;
}
// The batch request containing multiple report requests.
message BatchRunReportsRequest {
// A property whose events are tracked. This entity must be specified for the
// batch. The entity within RunReportRequest may either be unspecified or
// consistent with this entity.
Entity entity = 1;
// Individual requests. Each request has a separate report response. Each
// batch request is allowed up to 5 requests.
repeated RunReportRequest requests = 2;
}
// The batch response containing multiple reports.
message BatchRunReportsResponse {
// Individual responses. Each response has a separate report request.
repeated RunReportResponse reports = 1;
}
// The batch request containing multiple pivot report requests.
message BatchRunPivotReportsRequest {
// A property whose events are tracked. This entity must be specified for the
// batch. The entity within RunPivotReportRequest may either be unspecified or
// consistent with this entity.
Entity entity = 1;
// Individual requests. Each request has a separate pivot report response.
// Each batch request is allowed up to 5 requests.
repeated RunPivotReportRequest requests = 2;
}
// The batch response containing multiple pivot reports.
message BatchRunPivotReportsResponse {
// Individual responses. Each response has a separate pivot report request.
repeated RunPivotReportResponse pivot_reports = 1;
}

View File

@ -0,0 +1,36 @@
{
"methodConfig": [
{
"name": [{"service": "google.analytics.data.v1alpha.AlphaAnalyticsData"}],
"timeout": "60s",
"retryPolicy": {
"maxAttempts": 5,
"initialBackoff": "1s",
"maxBackoff": "60s",
"backoffMultiplier": 1.3,
"retryableStatusCodes": ["UNKNOWN"]
}
},
{
"name": [
{
"service": "google.analytics.data.v1alpha.AlphaAnalyticsData",
"method": "RunReport"
},
{
"service": "google.analytics.data.v1alpha.AlphaAnalyticsData",
"method": "RunPivotReport"
},
{
"service": "google.analytics.data.v1alpha.AlphaAnalyticsData",
"method": "BatchRunReports"
},
{
"service": "google.analytics.data.v1alpha.AlphaAnalyticsData",
"method": "BatchRunPivotReports"
}
],
"timeout": "60s"
}
]
}

View File

@ -0,0 +1,18 @@
type: com.google.api.codegen.ConfigProto
config_schema_version: 2.0.0
language_settings:
java:
package_name: com.google.analytics.data.v1alpha
python:
package_name: google.analytics.data.v1alpha.gapic
go:
package_name: google.golang.org/api/analyticsdata/v1alpha
csharp:
package_name: Google.Analytics.Data.V1alpha
ruby:
package_name: Google::Analytics::Data::V1alpha
php:
package_name: Google\Analytics\Data\V1alpha
nodejs:
package_name: google.analytics.data.v1alpha
domain_layer_location: analyticsdata.google.com

View File

@ -0,0 +1,23 @@
type: google.api.Service
config_version: 3
name: analyticsdata.googleapis.com
title: Google Analytics Data API
apis:
- name: google.analytics.data.v1alpha.AlphaAnalyticsData
documentation:
summary: Accesses report data in Google Analytics.
backend:
rules:
- selector: 'google.analytics.data.v1alpha.AlphaAnalyticsData.*'
deadline: 180.0
authentication:
rules:
- selector: 'google.analytics.data.v1alpha.AlphaAnalyticsData.*'
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/analytics,
https://www.googleapis.com/auth/analytics.readonly

View File

@ -0,0 +1,614 @@
// 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.data.v1alpha;
option go_package = "google.golang.org/genproto/googleapis/analytics/data/v1alpha;data";
option java_multiple_files = true;
option java_outer_classname = "ReportingApiProto";
option java_package = "com.google.analytics.data.v1alpha";
// A contiguous set of days: startDate, startDate + 1, ..., endDate. Requests
// are allowed up to 4 date ranges, and the union of the ranges can cover up to
// 1 year.
message DateRange {
// The inclusive start date for the query in the format `YYYY-MM-DD`. Cannot
// be after `end_date`. The format `NdaysAgo`, `yesterday`, or `today` is also
// accepted, and in that case, the date is inferred based on the property's
// reporting time zone.
string start_date = 1;
// The inclusive end date for the query in the format `YYYY-MM-DD`. Cannot
// be before `start_date`. The format `NdaysAgo`, `yesterday`, or `today` is
// also accepted, and in that case, the date is inferred based on the
// property's reporting time zone.
string end_date = 2;
// Assigns a name to this date range. The dimension `dateRange` is valued to
// this name in a report response. If set, cannot begin with `date_range_` or
// `RESERVED_`. If not set, date ranges are named by their zero based index in
// the request: `date_range_0`, `date_range_1`, etc.
string name = 3;
}
// The unique identifier of the property whose events are tracked.
message Entity {
// A Google Analytics App + Web property id.
string property_id = 1;
}
// Dimensions are attributes of your data. For example, the dimension City
// indicates the city, for example, "Paris" or "New York", from which an event
// originates. Requests are allowed up to 8 dimensions.
message Dimension {
// The name of the dimension.
string name = 1;
// One dimension can be the result of an expression of multiple dimensions.
// For example, dimension "country, city": concatenate(country, ", ", city).
DimensionExpression dimension_expression = 2;
}
// Used to express a dimension which is the result of a formula of multiple
// dimensions. Example usages:
// 1) lower_case(dimension)
// 2) concatenate(dimension1, symbol, dimension2).
message DimensionExpression {
// Used to convert a dimension value to a single case.
message CaseExpression {
// Name of a dimension. The name must refer back to a name in dimensions
// field of the request.
string dimension_name = 1;
}
// Used to combine dimension values to a single dimension.
message ConcatenateExpression {
// Names of dimensions. The names must refer back to names in the dimensions
// field of the request.
repeated string dimension_names = 1;
// The delimiter placed between dimension names.
//
// Delimiters are often single characters such as "|" or "," but can be
// longer strings. If a dimension value contains the delimiter, both will be
// present in response with no distinction. For example if dimension 1 value
// = "US,FR", dimension 2 value = "JP", and delimiter = ",", then the
// response will contain "US,FR,JP".
string delimiter = 2;
}
// Specify one type of dimension expression for `DimensionExpression`.
oneof one_expression {
// Used to convert a dimension value to lower case.
CaseExpression lower_case = 4;
// Used to convert a dimension value to upper case.
CaseExpression upper_case = 5;
// Used to combine dimension values to a single dimension.
// For example, dimension "country, city": concatenate(country, ", ", city).
ConcatenateExpression concatenate = 6;
}
}
// The quantitative measurements of a report. For example, the metric eventCount
// is the total number of events. Requests are allowed up to 10 metrics.
message Metric {
// The name of the metric.
string name = 1;
// A mathematical expression for derived metrics. For example, the metric
// Event count per user is eventCount/totalUsers.
string expression = 2;
// Indicates if a metric is invisible.
// If a metric is invisible, the metric is not in the response, but can be
// used in filters, order_bys or being referred to in a metric expression.
bool invisible = 3;
}
// To express dimension or metric filters.
// The fields in the same FilterExpression need to be either all dimensions or
// all metrics.
message FilterExpression {
// Specify one type of filter expression for `FilterExpression`.
oneof expr {
// The FilterExpressions in and_group have an AND relationship.
FilterExpressionList and_group = 1;
// The FilterExpressions in or_group have an OR relationship.
FilterExpressionList or_group = 2;
// The FilterExpression is NOT of not_expression.
FilterExpression not_expression = 3;
// A primitive filter.
// All fields in filter in same FilterExpression needs to be either all
// dimensions or metrics.
Filter filter = 4;
}
}
// A list of filter expressions.
message FilterExpressionList {
// A list of filter expressions.
repeated FilterExpression expressions = 1;
}
// An expression to filter dimension or metric values.
message Filter {
// The filter for string
message StringFilter {
// The match type of a string filter
enum MatchType {
// Unspecified
MATCH_TYPE_UNSPECIFIED = 0;
// Exact match of the string value.
EXACT = 1;
// Begins with the string value.
BEGINS_WITH = 2;
// Ends with the string value.
ENDS_WITH = 3;
// Contains the string value.
CONTAINS = 4;
// Full regular expression match with the string value.
FULL_REGEXP = 5;
// Partial regular expression match with the string value.
PARTIAL_REGEXP = 6;
}
// The match type for this filter.
MatchType match_type = 1;
// The string value used for the matching.
string value = 2;
// If true, the string value is case sensitive.
bool case_sensitive = 3;
}
// The result needs to be in a list of string values.
message InListFilter {
// The list of string values.
// Must be non-empty.
repeated string values = 1;
// If true, the string value is case sensitive.
bool case_sensitive = 2;
}
// Filters for numeric or date values.
message NumericFilter {
// The operation applied to a numeric filter
enum Operation {
// Unspecified.
OPERATION_UNSPECIFIED = 0;
// Equal
EQUAL = 1;
// Less than
LESS_THAN = 2;
// Less than or equal
LESS_THAN_OR_EQUAL = 3;
// Greater than
GREATER_THAN = 4;
// Greater than or equal
GREATER_THAN_OR_EQUAL = 5;
}
// The operation type for this filter.
Operation operation = 1;
// A numeric value or a date value.
NumericValue value = 2;
}
// To express that the result needs to be between two numbers (inclusive).
message BetweenFilter {
// Begins with this number.
NumericValue from_value = 1;
// Ends with this number.
NumericValue to_value = 2;
}
// The dimension name or metric name. Must be a name defined in dimensions
// or metrics.
string field_name = 1;
// Specify one type of filter for `Filter`.
oneof one_filter {
// A filter for null values.
bool null_filter = 2;
// Strings related filter.
StringFilter string_filter = 3;
// A filter for in list values.
InListFilter in_list_filter = 4;
// A filter for numeric or date values.
NumericFilter numeric_filter = 5;
// A filter for two values.
BetweenFilter between_filter = 6;
}
}
// The sort options.
message OrderBy {
// Sorts by metric values.
message MetricOrderBy {
// A metric name in the request to order by.
string metric_name = 1;
}
// Sorts by dimension values.
message DimensionOrderBy {
// Rule to order the string dimension values by.
enum OrderType {
// Unspecified.
ORDER_TYPE_UNSPECIFIED = 0;
// Alphanumeric sort by Unicode code point. For example, "2" < "A" < "X" <
// "b" < "z".
ALPHANUMERIC = 1;
// Case insensitive alphanumeric sort by lower case Unicode code point.
// For example, "2" < "A" < "b" < "X" < "z".
CASE_INSENSITIVE_ALPHANUMERIC = 2;
// Dimension values are converted to numbers before sorting. For example
// in NUMERIC sort, "25" < "100", and in `ALPHANUMERIC` sort, "100" <
// "25". Non-numeric dimension values all have equal ordering value below
// all numeric values.
NUMERIC = 3;
}
// A dimension name in the request to order by.
string dimension_name = 1;
// Controls the rule for dimension value ordering.
OrderType order_type = 2;
}
// Sorts by a pivot column group.
message PivotOrderBy {
// A pair of dimension names and values. Rows with this dimension pivot pair
// are ordered by the metric's value.
//
// For example if pivots = {{"browser", "Chrome"}} and
// metric_name = "Sessions",
// then the rows will be sorted based on Sessions in Chrome.
//
// ---------|----------|----------------|----------|----------------
// | Chrome | Chrome | Safari | Safari
// ---------|----------|----------------|----------|----------------
// Country | Sessions | Pages/Sessions | Sessions | Pages/Sessions
// ---------|----------|----------------|----------|----------------
// US | 2 | 2 | 3 | 1
// ---------|----------|----------------|----------|----------------
// Canada | 3 | 1 | 4 | 1
// ---------|----------|----------------|----------|----------------
message PivotSelection {
// Must be a dimension name from the request.
string dimension_name = 1;
// Order by only when the named dimension is this value.
string dimension_value = 2;
}
// In the response to order by, order rows by this column. Must be a metric
// name from the request.
string metric_name = 1;
// Used to select a dimension name and value pivot. If multiple pivot
// selections are given, the sort occurs on rows where all pivot selection
// dimension name and value pairs match the row's dimension name and value
// pair.
repeated PivotSelection pivot_selections = 2;
}
// Specify one type of order by for `OrderBy`.
oneof one_order_by {
// Sorts results by a metric's values.
MetricOrderBy metric = 1;
// Sorts results by a dimension's values.
DimensionOrderBy dimension = 2;
// Sorts results by a metric's values within a pivot column group.
PivotOrderBy pivot = 3;
}
// If true, sorts by descending order.
bool desc = 4;
}
// Describes the visible dimension columns and rows in the report response.
message Pivot {
// Dimension names for visible columns in the report response. Including
// "dateRange" produces a date range column; for each row in the response,
// dimension values in the date range column will indicate the corresponding
// date range from the request.
repeated string field_names = 1;
// Specifies how dimensions are ordered in the pivot. In the first Pivot, the
// OrderBys determine Row and DimensionHeader ordering; in subsequent Pivots,
// the OrderBys determine only DimensionHeader ordering. Dimensions specified
// in these OrderBys must be a subset of Pivot.field_names.
repeated OrderBy order_bys = 2;
// The row count of the start row. The first row is counted as row 0.
int64 offset = 3;
// The number of rows to return in this pivot.
// If zero or unspecified, all rows are returned.
int64 limit = 4;
// Aggregate the metrics by dimensions in this pivot using the specified
// metric_aggregations.
repeated MetricAggregation metric_aggregations = 5;
}
// Specification for a cohort report.
message CohortSpec {
// The definition for the cohorts.
repeated Cohort cohorts = 1;
// The data ranges of cohorts.
CohortsRange cohorts_range = 2;
// Settings of a cohort report.
CohortReportSettings cohort_report_settings = 3;
}
// Defines a cohort. A cohort is a group of users who share a common
// characteristic. For example, all users with the same acquisition date
// belong to the same cohort.
message Cohort {
// Assigns a name to this cohort. The dimension `cohort` is valued to this
// name in a report response. If not set, a cohort is named the empty string.
string name = 1;
// The dimension used by cohort. Only supports `firstTouchDate` for retention
// report.
string dimension = 2;
// The cohort selects users whose first visit date is between start date
// and end date defined in the date_range. The date range should be aligned
// with the cohort's granularity.
// If CohortsRange uses daily granularity, the date range can be aligned to
// any day.
// If CohortsRange uses weekly granularity, the date range should be aligned
// to the week boundary, starting at Sunday and ending Saturday. If
// CohortsRange uses monthly granularity, the date range should be aligned to
// the month, starting at the first and ending on the last day of the month.
DateRange date_range = 3;
}
// Settings of a cohort report.
message CohortReportSettings {
// If true, accumulates the result from first visit day to the end day.
bool accumulate = 1;
// If true, the report is for lifetime value report and should pivot on user
// event.
bool pivot_on_user_event = 2;
// If some values are missing while computing ratios, we want to compute the
// ratios only based on non-missing values.
// This field should be set to true only for a totals request.
bool missing_value_as_zero = 4;
}
// Describes date range for a cohort report.
message CohortsRange {
// Reporting granularity for the cohorts.
enum Granularity {
// Unspecified.
GRANULARITY_UNSPECIFIED = 0;
// Daily
DAILY = 1;
// Weekly
WEEKLY = 2;
// Monthly
MONTHLY = 3;
}
// Reporting date range for each cohort is calculated based on these three
// fields.
Granularity granularity = 1;
// For daily cohorts, this will be the start day offset.
// For weekly cohorts, this will be the week offset.
int32 start_offset = 2;
// For daily cohorts, this will be the end day offset.
// For weekly cohorts, this will be the week offset.
int32 end_offset = 3;
}
// Response's metadata carrying additional information about the report content.
message ResponseMetaData {
// If true, indicates some buckets of dimension combinations are rolled into
// "(other)" row. This can happen for high cardinality reports.
bool data_loss_from_other_row = 3;
}
// Describes the metric column in the report.
message MetricHeader {
// Metric name.
string name = 1;
// Metric data type.
MetricType type = 2;
}
// Dimensions' values in a pivot.
message PivotHeader {
// The size is the same as the cardinality of the corresponding dimension
// combinations.
repeated DimensionHeader dimension_headers = 1;
// The cardinality of the pivot as if offset = 0 and limit = -1.
int32 row_count = 2;
}
// The header for the dimensions.
message DimensionHeader {
// Values of multiple dimensions in a pivot.
repeated DimensionValue dimension_values = 1;
}
// Report data for each row.
// For example if RunReportRequest contains:
//
// ```none
// dimensions {
// name: "eventName"
// }
// dimensions {
// name: "countryId"
// }
// metrics {
// name: "eventCount"
// }
// ```
//
// One row with 'in_app_purchase' as the eventName, 'us' as the countryId, and
// 15 as the eventCount, would be:
//
// ```none
// dimension_values {
// name: 'in_app_purchase'
// name: 'us'
// }
// metric_values {
// int64_value: 15
// }
// ```
message Row {
// List of requested dimension values. In a PivotReport, dimension_values
// are only listed for dimensions included in a pivot.
repeated DimensionValue dimension_values = 1;
// List of requested visible metric values.
repeated MetricValue metric_values = 2;
}
// The value of a dimension.
message DimensionValue {
// One kind of dimension value
oneof one_value {
// Value as a string if the dimension type is a string.
string value = 1;
}
}
// The value of a metric.
message MetricValue {
// One of metric value
oneof one_value {
// Measurement value. See MetricHeader for type.
string value = 4;
}
}
// To represent a number.
message NumericValue {
// One of a numeric value
oneof one_value {
// Integer value
int64 int64_value = 1;
// Double value
double double_value = 2;
}
}
// Current state of all quotas for this Analytics Property. If any quota for a
// property is exhausted, all requests to that property will return Resource
// Exhausted errors.
message PropertyQuota {
// Analytics Properties can use up to 25,000 tokens per day. Most requests
// consume fewer than 10 tokens.
QuotaStatus tokens_per_day = 1;
// Analytics Properties can use up to 5,000 tokens per day. An API request
// consumes a single number of tokens, and that number is deducted from both
// the hourly and daily quotas.
QuotaStatus tokens_per_hour = 2;
// Analytics Properties can send up to 10 concurrent requests.
QuotaStatus concurrent_requests = 3;
// Analytics Properties and cloud project pairs can have up to 10
// server errors per hour.
QuotaStatus server_errors_per_project_per_hour = 4;
}
// Current state for a particular quota group.
message QuotaStatus {
// Quota consumed by this request.
int32 consumed = 1;
// Quota remaining after this request.
int32 remaining = 2;
}
// Represents aggregation of metrics.
enum MetricAggregation {
// Unspecified operator.
METRIC_AGGREGATION_UNSPECIFIED = 0;
// SUM operator.
TOTAL = 1;
// Minimum operator.
MINIMUM = 5;
// Maximum operator.
MAXIMUM = 6;
// Count operator.
COUNT = 4;
}
// Type of a metric value.
enum MetricType {
// Unspecified type.
METRIC_TYPE_UNSPECIFIED = 0;
// Integer type.
TYPE_INTEGER = 1;
// Floating point type.
TYPE_FLOAT = 2;
}