docs: update docs/dyn (#1096)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/6f0f288a-a1e8-4b2d-a85f-00b1c6150185/targets

- [ ] To automatically regenerate this PR, check this box.

Source-Link: https://github.com/googleapis/synthtool/commit/39b7149da4026765385403632db3c6f63db96b2c
Source-Link: https://github.com/googleapis/synthtool/commit/9a7d9fbb7045c34c9d3d22c1ff766eeae51f04c9
Source-Link: https://github.com/googleapis/synthtool/commit/dc9903a8c30c3662b6098f0e4a97f221d67268b2
Source-Link: https://github.com/googleapis/synthtool/commit/7fcc405a579d5d53a726ff3da1b7c8c08f0f2d58
Source-Link: https://github.com/googleapis/synthtool/commit/d5fc0bcf9ea9789c5b0e3154a9e3b29e5cea6116
Source-Link: https://github.com/googleapis/synthtool/commit/e89175cf074dccc4babb4eca66ae913696e47a71
Source-Link: https://github.com/googleapis/synthtool/commit/7d652819519dfa24da9e14548232e4aaba71a11c
Source-Link: https://github.com/googleapis/synthtool/commit/7db8a6c5ffb12a6e4c2f799c18f00f7f3d60e279
Source-Link: https://github.com/googleapis/synthtool/commit/1f1148d3c7a7a52f0c98077f976bd9b3c948ee2b
Source-Link: https://github.com/googleapis/synthtool/commit/2c8aecedd55b0480fb4e123b6e07fa5b12953862
Source-Link: https://github.com/googleapis/synthtool/commit/3d3e94c4e02370f307a9a200b0c743c3d8d19f29
Source-Link: https://github.com/googleapis/synthtool/commit/c7824ea48ff6d4d42dfae0849aec8a85acd90bd9
Source-Link: https://github.com/googleapis/synthtool/commit/ba9918cd22874245b55734f57470c719b577e591
Source-Link: https://github.com/googleapis/synthtool/commit/b19b401571e77192f8dd38eab5fb2300a0de9324
Source-Link: https://github.com/googleapis/synthtool/commit/6542bd723403513626f61642fc02ddca528409aa
diff --git a/docs/dyn/analyticsdata_v1alpha.v1alpha.html b/docs/dyn/analyticsdata_v1alpha.v1alpha.html
index 47e048f..3ef31b4 100644
--- a/docs/dyn/analyticsdata_v1alpha.v1alpha.html
+++ b/docs/dyn/analyticsdata_v1alpha.v1alpha.html
@@ -99,196 +99,196 @@
     The object takes the form of:
 
 { # The batch request containing multiple pivot report requests.
-    "entity": { # The unique identifier of the property whose events are tracked. # 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.
-      "propertyId": "A String", # A Google Analytics GA4 property id. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/trusted-testing/analytics-data/property-id).
-    },
     "requests": [ # Individual requests. Each request has a separate pivot report response. Each batch request is allowed up to 5 requests.
       { # The request to generate a pivot report.
-        "dimensions": [ # The dimensions requested. All defined dimensions must be used by one of the following: dimension_expression, dimension_filter, pivots, order_bys.
-          { # Dimensions are attributes of your data. For example, the dimension city indicates the city from which an event originates. Dimension values in report responses are strings; for example, city could be "Paris" or "New York". Requests are allowed up to 8 dimensions.
-            "name": "A String", # The name of the dimension. See the [API Dimensions](https://developers.google.com/analytics/trusted-testing/analytics-data/api-schema#dimensions) for the list of dimension names. If `dimensionExpression` is specified, `name` can be any string that you would like. For example if a `dimensionExpression` concatenates `country` and `city`, you could call that dimension `countryAndCity`. Dimensions are referenced by `name` in `dimensionFilter`, `orderBys`, `dimensionExpression`, and `pivots`.
-            "dimensionExpression": { # 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). # One dimension can be the result of an expression of multiple dimensions. For example, dimension "country, city": concatenate(country, ", ", city).
-              "concatenate": { # Used to combine dimension values to a single dimension. # Used to combine dimension values to a single dimension. For example, dimension "country, city": concatenate(country, ", ", city).
-                "dimensionNames": [ # Names of dimensions. The names must refer back to names in the dimensions field of the request.
-                  "A String",
-                ],
-                "delimiter": "A String", # 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".
-              },
-              "lowerCase": { # Used to convert a dimension value to a single case. # Used to convert a dimension value to lower case.
-                "dimensionName": "A String", # Name of a dimension. The name must refer back to a name in dimensions field of the request.
-              },
-              "upperCase": { # Used to convert a dimension value to a single case. # Used to convert a dimension value to upper case.
-                "dimensionName": "A String", # Name of a dimension. The name must refer back to a name in dimensions field of the request.
-              },
-            },
-          },
-        ],
-        "entity": { # The unique identifier of the property whose events are tracked. # A property whose events are tracked. Within a batch request, this entity should either be unspecified or consistent with the batch-level entity.
-          "propertyId": "A String", # A Google Analytics GA4 property id. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/trusted-testing/analytics-data/property-id).
-        },
-        "returnPropertyQuota": True or False, # Toggles whether to return the current state of this Analytics Property's quota. Quota is returned in [PropertyQuota](#PropertyQuota).
-        "dateRanges": [ # 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. In a cohort request, this `dateRanges` must be unspecified.
-          { # A contiguous set of days: startDate, startDate + 1, ..., endDate. Requests are allowed up to 4 date ranges.
-            "name": "A String", # 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.
-            "startDate": "A String", # 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.
-            "endDate": "A String", # 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.
-          },
-        ],
-        "dimensionFilter": { # To express dimension or metric filters. The fields in the same FilterExpression need to be either all dimensions or all metrics. # The filter clause of dimensions. Dimensions must be requested to be used in this filter. Metrics cannot be used in this filter.
-          "notExpression": # Object with schema name: FilterExpression # The FilterExpression is NOT of not_expression.
-          "orGroup": { # A list of filter expressions. # The FilterExpressions in or_group have an OR relationship.
-            "expressions": [ # A list of filter expressions.
-              # Object with schema name: FilterExpression
-            ],
-          },
-          "filter": { # An expression to filter dimension or metric values. # A primitive filter. All fields in filter in same FilterExpression needs to be either all dimensions or metrics.
-            "inListFilter": { # The result needs to be in a list of string values. # A filter for in list values.
-              "caseSensitive": True or False, # If true, the string value is case sensitive.
-              "values": [ # The list of string values. Must be non-empty.
-                "A String",
-              ],
-            },
-            "betweenFilter": { # To express that the result needs to be between two numbers (inclusive). # A filter for two values.
-              "toValue": { # To represent a number. # Ends with this number.
-                "int64Value": "A String", # Integer value
-                "doubleValue": 3.14, # Double value
-              },
-              "fromValue": { # To represent a number. # Begins with this number.
-                "int64Value": "A String", # Integer value
-                "doubleValue": 3.14, # Double value
-              },
-            },
-            "stringFilter": { # The filter for string # Strings related filter.
-              "value": "A String", # The string value used for the matching.
-              "matchType": "A String", # The match type for this filter.
-              "caseSensitive": True or False, # If true, the string value is case sensitive.
-            },
-            "fieldName": "A String", # The dimension name or metric name. Must be a name defined in dimensions or metrics.
-            "numericFilter": { # Filters for numeric or date values. # A filter for numeric or date values.
-              "operation": "A String", # The operation type for this filter.
-              "value": { # To represent a number. # A numeric value or a date value.
-                "int64Value": "A String", # Integer value
-                "doubleValue": 3.14, # Double value
-              },
-            },
-            "nullFilter": True or False, # A filter for null values. If True, a null dimension value is matched by this filter. Null filter is commonly used inside a NOT filter expression. For example, a NOT expression of a null filter removes rows when a dimension is null.
-          },
-          "andGroup": { # A list of filter expressions. # The FilterExpressions in and_group have an AND relationship.
-            "expressions": [ # A list of filter expressions.
-              # Object with schema name: FilterExpression
-            ],
-          },
-        },
-        "metricFilter": { # To express dimension or metric filters. The fields in the same FilterExpression need to be either all dimensions or all metrics. # The filter clause of metrics. Applied at post aggregation phase, similar to SQL having-clause. Metrics must be requested to be used in this filter. Dimensions cannot be used in this filter.
-          "notExpression": # Object with schema name: FilterExpression # The FilterExpression is NOT of not_expression.
-          "orGroup": { # A list of filter expressions. # The FilterExpressions in or_group have an OR relationship.
-            "expressions": [ # A list of filter expressions.
-              # Object with schema name: FilterExpression
-            ],
-          },
-          "filter": { # An expression to filter dimension or metric values. # A primitive filter. All fields in filter in same FilterExpression needs to be either all dimensions or metrics.
-            "inListFilter": { # The result needs to be in a list of string values. # A filter for in list values.
-              "caseSensitive": True or False, # If true, the string value is case sensitive.
-              "values": [ # The list of string values. Must be non-empty.
-                "A String",
-              ],
-            },
-            "betweenFilter": { # To express that the result needs to be between two numbers (inclusive). # A filter for two values.
-              "toValue": { # To represent a number. # Ends with this number.
-                "int64Value": "A String", # Integer value
-                "doubleValue": 3.14, # Double value
-              },
-              "fromValue": { # To represent a number. # Begins with this number.
-                "int64Value": "A String", # Integer value
-                "doubleValue": 3.14, # Double value
-              },
-            },
-            "stringFilter": { # The filter for string # Strings related filter.
-              "value": "A String", # The string value used for the matching.
-              "matchType": "A String", # The match type for this filter.
-              "caseSensitive": True or False, # If true, the string value is case sensitive.
-            },
-            "fieldName": "A String", # The dimension name or metric name. Must be a name defined in dimensions or metrics.
-            "numericFilter": { # Filters for numeric or date values. # A filter for numeric or date values.
-              "operation": "A String", # The operation type for this filter.
-              "value": { # To represent a number. # A numeric value or a date value.
-                "int64Value": "A String", # Integer value
-                "doubleValue": 3.14, # Double value
-              },
-            },
-            "nullFilter": True or False, # A filter for null values. If True, a null dimension value is matched by this filter. Null filter is commonly used inside a NOT filter expression. For example, a NOT expression of a null filter removes rows when a dimension is null.
-          },
-          "andGroup": { # A list of filter expressions. # The FilterExpressions in and_group have an AND relationship.
-            "expressions": [ # A list of filter expressions.
-              # Object with schema name: FilterExpression
-            ],
-          },
-        },
-        "pivots": [ # 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.
-          { # Describes the visible dimension columns and rows in the report response.
-            "fieldNames": [ # 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.
-              "A String",
-            ],
-            "offset": "A String", # The row count of the start row. The first row is counted as row 0.
-            "metricAggregations": [ # Aggregate the metrics by dimensions in this pivot using the specified metric_aggregations.
-              "A String",
-            ],
-            "limit": "A String", # The number of rows to return in this pivot. If unspecified, 10 rows are returned. If -1, all rows are returned.
-            "orderBys": [ # Specifies how dimensions are ordered in the pivot. In the first Pivot, the OrderBys determine Row and PivotDimensionHeader ordering; in subsequent Pivots, the OrderBys determine only PivotDimensionHeader ordering. Dimensions specified in these OrderBys must be a subset of Pivot.field_names.
-              { # The sort options.
-                "metric": { # Sorts by metric values. # Sorts results by a metric's values.
-                  "metricName": "A String", # A metric name in the request to order by.
+          "keepEmptyRows": True or False, # If false or unspecified, each row with all metrics equal to 0 will not be returned. If true, these rows will be returned if they are not separately removed by a filter.
+          "dimensions": [ # The dimensions requested. All defined dimensions must be used by one of the following: dimension_expression, dimension_filter, pivots, order_bys.
+            { # Dimensions are attributes of your data. For example, the dimension city indicates the city from which an event originates. Dimension values in report responses are strings; for example, city could be "Paris" or "New York". Requests are allowed up to 8 dimensions.
+              "name": "A String", # The name of the dimension. See the [API Dimensions](https://developers.google.com/analytics/trusted-testing/analytics-data/api-schema#dimensions) for the list of dimension names. If `dimensionExpression` is specified, `name` can be any string that you would like. For example if a `dimensionExpression` concatenates `country` and `city`, you could call that dimension `countryAndCity`. Dimensions are referenced by `name` in `dimensionFilter`, `orderBys`, `dimensionExpression`, and `pivots`.
+              "dimensionExpression": { # 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). # One dimension can be the result of an expression of multiple dimensions. For example, dimension "country, city": concatenate(country, ", ", city).
+                "lowerCase": { # Used to convert a dimension value to a single case. # Used to convert a dimension value to lower case.
+                  "dimensionName": "A String", # Name of a dimension. The name must refer back to a name in dimensions field of the request.
                 },
-                "desc": True or False, # If true, sorts by descending order.
-                "dimension": { # Sorts by dimension values. # Sorts results by a dimension's values.
-                  "orderType": "A String", # Controls the rule for dimension value ordering.
-                  "dimensionName": "A String", # A dimension name in the request to order by.
+                "upperCase": { # Used to convert a dimension value to a single case. # Used to convert a dimension value to upper case.
+                  "dimensionName": "A String", # Name of a dimension. The name must refer back to a name in dimensions field of the request.
                 },
-                "pivot": { # Sorts by a pivot column group. # Sorts results by a metric's values within a pivot column group.
-                  "metricName": "A String", # In the response to order by, order rows by this column. Must be a metric name from the request.
-                  "pivotSelections": [ # 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.
-                    { # 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 ---------|----------|----------------|----------|----------------
-                      "dimensionName": "A String", # Must be a dimension name from the request.
-                      "dimensionValue": "A String", # Order by only when the named dimension is this value.
-                    },
+                "concatenate": { # Used to combine dimension values to a single dimension. # Used to combine dimension values to a single dimension. For example, dimension "country, city": concatenate(country, ", ", city).
+                  "dimensionNames": [ # Names of dimensions. The names must refer back to names in the dimensions field of the request.
+                    "A String",
                   ],
+                  "delimiter": "A String", # 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".
                 },
               },
-            ],
-          },
-        ],
-        "cohortSpec": { # Specification for a cohort report. # Cohort group associated with this request. If there is a cohort group in the request the 'cohort' dimension must be present.
-          "cohortReportSettings": { # Settings of a cohort report. # Settings of a cohort report.
-            "accumulate": True or False, # If true, accumulates the result from first visit day to the end day. Not supported in `RunReportRequest`.
-          },
-          "cohorts": [ # The definition for the cohorts.
-            { # 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.
-              "name": "A String", # Assigns a name to this cohort. The dimension `cohort` is valued to this name in a report response. If set, cannot begin with `cohort_` or `RESERVED_`. If not set, cohorts are named by their zero based index `cohort_0`, `cohort_1`, etc.
-              "dimension": "A String", # The dimension used by cohort. Only supports `firstTouchDate` for retention report.
-              "dateRange": { # A contiguous set of days: startDate, startDate + 1, ..., endDate. Requests are allowed up to 4 date ranges. # The cohort selects users whose first visit date is between start date and end date defined in the `dateRange`. In a cohort request, this `dateRange` is required and the `dateRanges` in the `RunReportRequest` or `RunPivotReportRequest` must be unspecified. 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.
-                "name": "A String", # 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.
-                "startDate": "A String", # 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.
-                "endDate": "A String", # 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.
-              },
             },
           ],
-          "cohortsRange": { # Describes date range for a cohort report. # The data ranges of cohorts.
-            "startOffset": 42, # For daily cohorts, this will be the start day offset. For weekly cohorts, this will be the week offset.
-            "endOffset": 42, # For daily cohorts, this will be the end day offset. For weekly cohorts, this will be the week offset.
-            "granularity": "A String", # Reporting date range for each cohort is calculated based on these three fields.
+          "metrics": [ # 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.
+            { # The quantitative measurements of a report. For example, the metric `eventCount` is the total number of events. Requests are allowed up to 10 metrics.
+              "name": "A String", # The name of the metric. See the [API Metrics](https://developers.google.com/analytics/trusted-testing/analytics-data/api-schema#metrics) for the list of metric names. If `expression` is specified, `name` can be any string that you would like. For example if `expression` is `screenPageViews/sessions`, you could call that metric's name = `viewsPerSession`. Metrics are referenced by `name` in `metricFilter`, `orderBys`, and metric `expression`.
+              "expression": "A String", # A mathematical expression for derived metrics. For example, the metric Event count per user is `eventCount/totalUsers`.
+              "invisible": True or False, # Indicates if a metric is invisible in the report response. If a metric is invisible, the metric will not produce a column in the response, but can be used in `metricFilter`, `orderBys`, or a metric `expression`.
+            },
+          ],
+          "dimensionFilter": { # To express dimension or metric filters. The fields in the same FilterExpression need to be either all dimensions or all metrics. # The filter clause of dimensions. Dimensions must be requested to be used in this filter. Metrics cannot be used in this filter.
+            "notExpression": # Object with schema name: FilterExpression # The FilterExpression is NOT of not_expression.
+            "filter": { # An expression to filter dimension or metric values. # A primitive filter. All fields in filter in same FilterExpression needs to be either all dimensions or metrics.
+              "betweenFilter": { # To express that the result needs to be between two numbers (inclusive). # A filter for two values.
+                "fromValue": { # To represent a number. # Begins with this number.
+                  "doubleValue": 3.14, # Double value
+                  "int64Value": "A String", # Integer value
+                },
+                "toValue": { # To represent a number. # Ends with this number.
+                  "doubleValue": 3.14, # Double value
+                  "int64Value": "A String", # Integer value
+                },
+              },
+              "numericFilter": { # Filters for numeric or date values. # A filter for numeric or date values.
+                "value": { # To represent a number. # A numeric value or a date value.
+                  "doubleValue": 3.14, # Double value
+                  "int64Value": "A String", # Integer value
+                },
+                "operation": "A String", # The operation type for this filter.
+              },
+              "nullFilter": True or False, # A filter for null values. If True, a null dimension value is matched by this filter. Null filter is commonly used inside a NOT filter expression. For example, a NOT expression of a null filter removes rows when a dimension is null.
+              "stringFilter": { # The filter for string # Strings related filter.
+                "caseSensitive": True or False, # If true, the string value is case sensitive.
+                "value": "A String", # The string value used for the matching.
+                "matchType": "A String", # The match type for this filter.
+              },
+              "inListFilter": { # The result needs to be in a list of string values. # A filter for in list values.
+                "caseSensitive": True or False, # If true, the string value is case sensitive.
+                "values": [ # The list of string values. Must be non-empty.
+                  "A String",
+                ],
+              },
+              "fieldName": "A String", # The dimension name or metric name. Must be a name defined in dimensions or metrics.
+            },
+            "orGroup": { # A list of filter expressions. # The FilterExpressions in or_group have an OR relationship.
+              "expressions": [ # A list of filter expressions.
+                # Object with schema name: FilterExpression
+              ],
+            },
+            "andGroup": { # A list of filter expressions. # The FilterExpressions in and_group have an AND relationship.
+              "expressions": [ # A list of filter expressions.
+                # Object with schema name: FilterExpression
+              ],
+            },
           },
+          "cohortSpec": { # Specification for a cohort report. # Cohort group associated with this request. If there is a cohort group in the request the 'cohort' dimension must be present.
+            "cohorts": [ # The definition for the cohorts.
+              { # 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.
+                "name": "A String", # Assigns a name to this cohort. The dimension `cohort` is valued to this name in a report response. If set, cannot begin with `cohort_` or `RESERVED_`. If not set, cohorts are named by their zero based index `cohort_0`, `cohort_1`, etc.
+                "dateRange": { # A contiguous set of days: startDate, startDate + 1, ..., endDate. Requests are allowed up to 4 date ranges. # The cohort selects users whose first visit date is between start date and end date defined in the `dateRange`. In a cohort request, this `dateRange` is required and the `dateRanges` in the `RunReportRequest` or `RunPivotReportRequest` must be unspecified. 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.
+                  "startDate": "A String", # 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.
+                  "endDate": "A String", # 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.
+                  "name": "A String", # 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.
+                },
+                "dimension": "A String", # The dimension used by cohort. Only supports `firstTouchDate` for retention report.
+              },
+            ],
+            "cohortsRange": { # Describes date range for a cohort report. # The data ranges of cohorts.
+              "granularity": "A String", # Reporting date range for each cohort is calculated based on these three fields.
+              "startOffset": 42, # For daily cohorts, this will be the start day offset. For weekly cohorts, this will be the week offset.
+              "endOffset": 42, # For daily cohorts, this will be the end day offset. For weekly cohorts, this will be the week offset.
+            },
+            "cohortReportSettings": { # Settings of a cohort report. # Settings of a cohort report.
+              "accumulate": True or False, # If true, accumulates the result from first visit day to the end day. Not supported in `RunReportRequest`.
+            },
+          },
+          "pivots": [ # 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.
+            { # Describes the visible dimension columns and rows in the report response.
+              "fieldNames": [ # 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.
+                "A String",
+              ],
+              "metricAggregations": [ # Aggregate the metrics by dimensions in this pivot using the specified metric_aggregations.
+                "A String",
+              ],
+              "orderBys": [ # Specifies how dimensions are ordered in the pivot. In the first Pivot, the OrderBys determine Row and PivotDimensionHeader ordering; in subsequent Pivots, the OrderBys determine only PivotDimensionHeader ordering. Dimensions specified in these OrderBys must be a subset of Pivot.field_names.
+                { # The sort options.
+                  "metric": { # Sorts by metric values. # Sorts results by a metric's values.
+                    "metricName": "A String", # A metric name in the request to order by.
+                  },
+                  "pivot": { # Sorts by a pivot column group. # Sorts results by a metric's values within a pivot column group.
+                    "metricName": "A String", # In the response to order by, order rows by this column. Must be a metric name from the request.
+                    "pivotSelections": [ # 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.
+                      { # 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 ---------|----------|----------------|----------|----------------
+                        "dimensionName": "A String", # Must be a dimension name from the request.
+                        "dimensionValue": "A String", # Order by only when the named dimension is this value.
+                      },
+                    ],
+                  },
+                  "desc": True or False, # If true, sorts by descending order.
+                  "dimension": { # Sorts by dimension values. # Sorts results by a dimension's values.
+                    "dimensionName": "A String", # A dimension name in the request to order by.
+                    "orderType": "A String", # Controls the rule for dimension value ordering.
+                  },
+                },
+              ],
+              "limit": "A String", # The number of rows to return in this pivot. If unspecified, 10 rows are returned. If -1, all rows are returned.
+              "offset": "A String", # The row count of the start row. The first row is counted as row 0.
+            },
+          ],
+          "entity": { # The unique identifier of the property whose events are tracked. # A property whose events are tracked. Within a batch request, this entity should either be unspecified or consistent with the batch-level entity.
+            "propertyId": "A String", # A Google Analytics GA4 property id. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/trusted-testing/analytics-data/property-id).
+          },
+          "returnPropertyQuota": True or False, # Toggles whether to return the current state of this Analytics Property's quota. Quota is returned in [PropertyQuota](#PropertyQuota).
+          "dateRanges": [ # 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. In a cohort request, this `dateRanges` must be unspecified.
+            { # A contiguous set of days: startDate, startDate + 1, ..., endDate. Requests are allowed up to 4 date ranges.
+              "startDate": "A String", # 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.
+              "endDate": "A String", # 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.
+              "name": "A String", # 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.
+            },
+          ],
+          "metricFilter": { # To express dimension or metric filters. The fields in the same FilterExpression need to be either all dimensions or all metrics. # The filter clause of metrics. Applied at post aggregation phase, similar to SQL having-clause. Metrics must be requested to be used in this filter. Dimensions cannot be used in this filter.
+            "notExpression": # Object with schema name: FilterExpression # The FilterExpression is NOT of not_expression.
+            "filter": { # An expression to filter dimension or metric values. # A primitive filter. All fields in filter in same FilterExpression needs to be either all dimensions or metrics.
+              "betweenFilter": { # To express that the result needs to be between two numbers (inclusive). # A filter for two values.
+                "fromValue": { # To represent a number. # Begins with this number.
+                  "doubleValue": 3.14, # Double value
+                  "int64Value": "A String", # Integer value
+                },
+                "toValue": { # To represent a number. # Ends with this number.
+                  "doubleValue": 3.14, # Double value
+                  "int64Value": "A String", # Integer value
+                },
+              },
+              "numericFilter": { # Filters for numeric or date values. # A filter for numeric or date values.
+                "value": { # To represent a number. # A numeric value or a date value.
+                  "doubleValue": 3.14, # Double value
+                  "int64Value": "A String", # Integer value
+                },
+                "operation": "A String", # The operation type for this filter.
+              },
+              "nullFilter": True or False, # A filter for null values. If True, a null dimension value is matched by this filter. Null filter is commonly used inside a NOT filter expression. For example, a NOT expression of a null filter removes rows when a dimension is null.
+              "stringFilter": { # The filter for string # Strings related filter.
+                "caseSensitive": True or False, # If true, the string value is case sensitive.
+                "value": "A String", # The string value used for the matching.
+                "matchType": "A String", # The match type for this filter.
+              },
+              "inListFilter": { # The result needs to be in a list of string values. # A filter for in list values.
+                "caseSensitive": True or False, # If true, the string value is case sensitive.
+                "values": [ # The list of string values. Must be non-empty.
+                  "A String",
+                ],
+              },
+              "fieldName": "A String", # The dimension name or metric name. Must be a name defined in dimensions or metrics.
+            },
+            "orGroup": { # A list of filter expressions. # The FilterExpressions in or_group have an OR relationship.
+              "expressions": [ # A list of filter expressions.
+                # Object with schema name: FilterExpression
+              ],
+            },
+            "andGroup": { # A list of filter expressions. # The FilterExpressions in and_group have an AND relationship.
+              "expressions": [ # A list of filter expressions.
+                # Object with schema name: FilterExpression
+              ],
+            },
+          },
+          "currencyCode": "A String", # A currency code in ISO4217 format, such as "AED", "USD", "JPY". If the field is empty, the report uses the entity's default currency.
         },
-        "metrics": [ # 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.
-          { # The quantitative measurements of a report. For example, the metric `eventCount` is the total number of events. Requests are allowed up to 10 metrics.
-            "expression": "A String", # A mathematical expression for derived metrics. For example, the metric Event count per user is `eventCount/totalUsers`.
-            "name": "A String", # The name of the metric. See the [API Metrics](https://developers.google.com/analytics/trusted-testing/analytics-data/api-schema#metrics) for the list of metric names. If `expression` is specified, `name` can be any string that you would like. For example if `expression` is `screenPageViews/sessions`, you could call that metric's name = `viewsPerSession`. Metrics are referenced by `name` in `metricFilter`, `orderBys`, and metric `expression`.
-            "invisible": True or False, # Indicates if a metric is invisible in the report response. If a metric is invisible, the metric will not produce a column in the response, but can be used in `metricFilter`, `orderBys`, or a metric `expression`.
-          },
-        ],
-        "keepEmptyRows": True or False, # If false or unspecified, each row with all metrics equal to 0 will not be returned. If true, these rows will be returned if they are not separately removed by a filter.
-        "currencyCode": "A String", # A currency code in ISO4217 format, such as "AED", "USD", "JPY". If the field is empty, the report uses the entity's default currency.
-      },
     ],
+    "entity": { # The unique identifier of the property whose events are tracked. # 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.
+      "propertyId": "A String", # A Google Analytics GA4 property id. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/trusted-testing/analytics-data/property-id).
+    },
   }
 
   x__xgafv: string, V1 error format.
@@ -302,32 +302,47 @@
     { # The batch response containing multiple pivot reports.
     "pivotReports": [ # Individual responses. Each response has a separate pivot report request.
       { # The response pivot report table corresponding to a pivot request.
+        "rows": [ # Rows of dimension value combinations and metric values in the report.
+          { # Report data for each row. For example if RunReportRequest contains: ```none "dimensions": [ { "name": "eventName" }, { "name": "countryId" } ], "metrics": [ { "name": "eventCount" } ] ``` One row with 'in_app_purchase' as the eventName, 'JP' as the countryId, and 15 as the eventCount, would be: ```none "dimensionValues": [ { "value": "in_app_purchase" }, { "value": "JP" } ], "metricValues": [ { "value": "15" } ] ```
+            "metricValues": [ # List of requested visible metric values.
+              { # The value of a metric.
+                "value": "A String", # Measurement value. See MetricHeader for type.
+              },
+            ],
+            "dimensionValues": [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
+              { # The value of a dimension.
+                "value": "A String", # Value as a string if the dimension type is a string.
+              },
+            ],
+          },
+        ],
         "dimensionHeaders": [ # Describes dimension columns. The number of DimensionHeaders and ordering of DimensionHeaders matches the dimensions present in rows.
           { # Describes a dimension column in the report. Dimensions requested in a report produce column entries within rows and DimensionHeaders. However, dimensions used exclusively within filters or expressions do not produce columns in a report; correspondingly, those dimensions do not produce headers.
             "name": "A String", # The dimension's name.
           },
         ],
-        "propertyQuota": { # 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. # This Analytics Property's quota state including this request.
-          "tokensPerHour": { # Current state for a particular quota group. # Standard Analytics Properties can use up to 5,000 tokens per day; Analytics 360 Properties can use 50,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.
-            "consumed": 42, # Quota consumed by this request.
-            "remaining": 42, # Quota remaining after this request.
+        "aggregates": [ # 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_".
+          { # Report data for each row. For example if RunReportRequest contains: ```none "dimensions": [ { "name": "eventName" }, { "name": "countryId" } ], "metrics": [ { "name": "eventCount" } ] ``` One row with 'in_app_purchase' as the eventName, 'JP' as the countryId, and 15 as the eventCount, would be: ```none "dimensionValues": [ { "value": "in_app_purchase" }, { "value": "JP" } ], "metricValues": [ { "value": "15" } ] ```
+            "metricValues": [ # List of requested visible metric values.
+              { # The value of a metric.
+                "value": "A String", # Measurement value. See MetricHeader for type.
+              },
+            ],
+            "dimensionValues": [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
+              { # The value of a dimension.
+                "value": "A String", # Value as a string if the dimension type is a string.
+              },
+            ],
           },
-          "tokensPerDay": { # Current state for a particular quota group. # Standard Analytics Properties can use up to 25,000 tokens per day; Analytics 360 Properties can use 250,000 tokens per day. Most requests consume fewer than 10 tokens.
-            "consumed": 42, # Quota consumed by this request.
-            "remaining": 42, # Quota remaining after this request.
+        ],
+        "metricHeaders": [ # Describes metric columns. The number of MetricHeaders and ordering of MetricHeaders matches the metrics present in rows.
+          { # Describes a metric column in the report. Visible metrics requested in a report produce column entries within rows and MetricHeaders. However, metrics used exclusively within filters or expressions do not produce columns in a report; correspondingly, those metrics do not produce headers.
+            "name": "A String", # The metric's name.
+            "type": "A String", # The metric's data type.
           },
-          "serverErrorsPerProjectPerHour": { # Current state for a particular quota group. # Standard Analytics Properties and cloud project pairs can have up to 10 server errors per hour; Analytics 360 Properties and cloud project pairs can have up to 50 server errors per hour.
-            "consumed": 42, # Quota consumed by this request.
-            "remaining": 42, # Quota remaining after this request.
-          },
-          "concurrentRequests": { # Current state for a particular quota group. # Standard Analytics Properties can send up to 10 concurrent requests; Analytics 360 Properties can use up to 50 concurrent requests.
-            "consumed": 42, # Quota consumed by this request.
-            "remaining": 42, # Quota remaining after this request.
-          },
-        },
+        ],
         "pivotHeaders": [ # 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" }] }] }]
           { # Dimensions' values in a single pivot.
-            "rowCount": 42, # The cardinality of the pivot as if offset = 0 and limit = -1. The total number of rows for this pivot's fields regardless of how the parameters offset and limit are specified in the request.
             "pivotDimensionHeaders": [ # The size is the same as the cardinality of the corresponding dimension combinations.
               { # Summarizes dimension values from a row for this pivot.
                 "dimensionValues": [ # Values of multiple dimensions in a pivot.
@@ -337,45 +352,30 @@
                 ],
               },
             ],
-          },
-        ],
-        "rows": [ # Rows of dimension value combinations and metric values in the report.
-          { # Report data for each row. For example if RunReportRequest contains: ```none "dimensions": [ { "name": "eventName" }, { "name": "countryId" } ], "metrics": [ { "name": "eventCount" } ] ``` One row with 'in_app_purchase' as the eventName, 'JP' as the countryId, and 15 as the eventCount, would be: ```none "dimensionValues": [ { "value": "in_app_purchase" }, { "value": "JP" } ], "metricValues": [ { "value": "15" } ] ```
-            "dimensionValues": [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
-              { # The value of a dimension.
-                "value": "A String", # Value as a string if the dimension type is a string.
-              },
-            ],
-            "metricValues": [ # List of requested visible metric values.
-              { # The value of a metric.
-                "value": "A String", # Measurement value. See MetricHeader for type.
-              },
-            ],
+            "rowCount": 42, # The cardinality of the pivot as if offset = 0 and limit = -1. The total number of rows for this pivot's fields regardless of how the parameters offset and limit are specified in the request.
           },
         ],
         "metadata": { # Response's metadata carrying additional information about the report content. # Metadata for the report.
           "dataLossFromOtherRow": True or False, # If true, indicates some buckets of dimension combinations are rolled into "(other)" row. This can happen for high cardinality reports.
         },
-        "aggregates": [ # 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_".
-          { # Report data for each row. For example if RunReportRequest contains: ```none "dimensions": [ { "name": "eventName" }, { "name": "countryId" } ], "metrics": [ { "name": "eventCount" } ] ``` One row with 'in_app_purchase' as the eventName, 'JP' as the countryId, and 15 as the eventCount, would be: ```none "dimensionValues": [ { "value": "in_app_purchase" }, { "value": "JP" } ], "metricValues": [ { "value": "15" } ] ```
-            "dimensionValues": [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
-              { # The value of a dimension.
-                "value": "A String", # Value as a string if the dimension type is a string.
-              },
-            ],
-            "metricValues": [ # List of requested visible metric values.
-              { # The value of a metric.
-                "value": "A String", # Measurement value. See MetricHeader for type.
-              },
-            ],
+        "propertyQuota": { # 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. # This Analytics Property's quota state including this request.
+          "tokensPerHour": { # Current state for a particular quota group. # Standard Analytics Properties can use up to 5,000 tokens per day; Analytics 360 Properties can use 50,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.
+            "consumed": 42, # Quota consumed by this request.
+            "remaining": 42, # Quota remaining after this request.
           },
-        ],
-        "metricHeaders": [ # Describes metric columns. The number of MetricHeaders and ordering of MetricHeaders matches the metrics present in rows.
-          { # Describes a metric column in the report. Visible metrics requested in a report produce column entries within rows and MetricHeaders. However, metrics used exclusively within filters or expressions do not produce columns in a report; correspondingly, those metrics do not produce headers.
-            "type": "A String", # The metric's data type.
-            "name": "A String", # The metric's name.
+          "concurrentRequests": { # Current state for a particular quota group. # Standard Analytics Properties can send up to 10 concurrent requests; Analytics 360 Properties can use up to 50 concurrent requests.
+            "consumed": 42, # Quota consumed by this request.
+            "remaining": 42, # Quota remaining after this request.
           },
-        ],
+          "serverErrorsPerProjectPerHour": { # Current state for a particular quota group. # Standard Analytics Properties and cloud project pairs can have up to 10 server errors per hour; Analytics 360 Properties and cloud project pairs can have up to 50 server errors per hour.
+            "consumed": 42, # Quota consumed by this request.
+            "remaining": 42, # Quota remaining after this request.
+          },
+          "tokensPerDay": { # Current state for a particular quota group. # Standard Analytics Properties can use up to 25,000 tokens per day; Analytics 360 Properties can use 250,000 tokens per day. Most requests consume fewer than 10 tokens.
+            "consumed": 42, # Quota consumed by this request.
+            "remaining": 42, # Quota remaining after this request.
+          },
+        },
       },
     ],
   }</pre>
@@ -390,189 +390,189 @@
     The object takes the form of:
 
 { # The batch request containing multiple report requests.
-    &quot;entity&quot;: { # The unique identifier of the property whose events are tracked. # 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.
-      &quot;propertyId&quot;: &quot;A String&quot;, # A Google Analytics GA4 property id. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/trusted-testing/analytics-data/property-id).
-    },
     &quot;requests&quot;: [ # Individual requests. Each request has a separate report response. Each batch request is allowed up to 5 requests.
       { # The request to generate a report.
-        &quot;limit&quot;: &quot;A String&quot;, # The number of rows to return. If unspecified, 10 rows are returned. If -1, all rows are returned. To learn more about this pagination parameter, see [Pagination](basics#pagination).
-        &quot;dateRanges&quot;: [ # 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. In a cohort request, this `dateRanges` must be unspecified.
-          { # A contiguous set of days: startDate, startDate + 1, ..., endDate. Requests are allowed up to 4 date ranges.
-            &quot;name&quot;: &quot;A String&quot;, # 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.
-            &quot;startDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
-            &quot;endDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
-          },
-        ],
-        &quot;keepEmptyRows&quot;: True or False, # If false or unspecified, each row with all metrics equal to 0 will not be returned. If true, these rows will be returned if they are not separately removed by a filter.
-        &quot;offset&quot;: &quot;A String&quot;, # The row count of the start row. The first row is counted as row 0. To learn more about this pagination parameter, see [Pagination](basics#pagination).
-        &quot;dimensionFilter&quot;: { # To express dimension or metric filters. The fields in the same FilterExpression need to be either all dimensions or all metrics. # The filter clause of dimensions. Dimensions must be requested to be used in this filter. Metrics cannot be used in this filter.
-          &quot;notExpression&quot;: # Object with schema name: FilterExpression # The FilterExpression is NOT of not_expression.
-          &quot;orGroup&quot;: { # A list of filter expressions. # The FilterExpressions in or_group have an OR relationship.
-            &quot;expressions&quot;: [ # A list of filter expressions.
-              # Object with schema name: FilterExpression
-            ],
-          },
-          &quot;filter&quot;: { # An expression to filter dimension or metric values. # A primitive filter. All fields in filter in same FilterExpression needs to be either all dimensions or metrics.
-            &quot;inListFilter&quot;: { # The result needs to be in a list of string values. # A filter for in list values.
-              &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
-              &quot;values&quot;: [ # The list of string values. Must be non-empty.
-                &quot;A String&quot;,
+          &quot;dateRanges&quot;: [ # 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. In a cohort request, this `dateRanges` must be unspecified.
+            { # A contiguous set of days: startDate, startDate + 1, ..., endDate. Requests are allowed up to 4 date ranges.
+              &quot;startDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
+              &quot;endDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
+              &quot;name&quot;: &quot;A String&quot;, # 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.
+            },
+          ],
+          &quot;metricFilter&quot;: { # To express dimension or metric filters. The fields in the same FilterExpression need to be either all dimensions or all metrics. # The filter clause of metrics. Applied at post aggregation phase, similar to SQL having-clause. Metrics must be requested to be used in this filter. Dimensions cannot be used in this filter.
+            &quot;notExpression&quot;: # Object with schema name: FilterExpression # The FilterExpression is NOT of not_expression.
+            &quot;filter&quot;: { # An expression to filter dimension or metric values. # A primitive filter. All fields in filter in same FilterExpression needs to be either all dimensions or metrics.
+              &quot;betweenFilter&quot;: { # To express that the result needs to be between two numbers (inclusive). # A filter for two values.
+                &quot;fromValue&quot;: { # To represent a number. # Begins with this number.
+                  &quot;doubleValue&quot;: 3.14, # Double value
+                  &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
+                },
+                &quot;toValue&quot;: { # To represent a number. # Ends with this number.
+                  &quot;doubleValue&quot;: 3.14, # Double value
+                  &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
+                },
+              },
+              &quot;numericFilter&quot;: { # Filters for numeric or date values. # A filter for numeric or date values.
+                &quot;value&quot;: { # To represent a number. # A numeric value or a date value.
+                  &quot;doubleValue&quot;: 3.14, # Double value
+                  &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
+                },
+                &quot;operation&quot;: &quot;A String&quot;, # The operation type for this filter.
+              },
+              &quot;nullFilter&quot;: True or False, # A filter for null values. If True, a null dimension value is matched by this filter. Null filter is commonly used inside a NOT filter expression. For example, a NOT expression of a null filter removes rows when a dimension is null.
+              &quot;stringFilter&quot;: { # The filter for string # Strings related filter.
+                &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
+                &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
+                &quot;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
+              },
+              &quot;inListFilter&quot;: { # The result needs to be in a list of string values. # A filter for in list values.
+                &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
+                &quot;values&quot;: [ # The list of string values. Must be non-empty.
+                  &quot;A String&quot;,
+                ],
+              },
+              &quot;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in dimensions or metrics.
+            },
+            &quot;orGroup&quot;: { # A list of filter expressions. # The FilterExpressions in or_group have an OR relationship.
+              &quot;expressions&quot;: [ # A list of filter expressions.
+                # Object with schema name: FilterExpression
               ],
             },
-            &quot;betweenFilter&quot;: { # To express that the result needs to be between two numbers (inclusive). # A filter for two values.
-              &quot;toValue&quot;: { # To represent a number. # Ends with this number.
-                &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
-                &quot;doubleValue&quot;: 3.14, # Double value
-              },
-              &quot;fromValue&quot;: { # To represent a number. # Begins with this number.
-                &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
-                &quot;doubleValue&quot;: 3.14, # Double value
-              },
+            &quot;andGroup&quot;: { # A list of filter expressions. # The FilterExpressions in and_group have an AND relationship.
+              &quot;expressions&quot;: [ # A list of filter expressions.
+                # Object with schema name: FilterExpression
+              ],
             },
-            &quot;stringFilter&quot;: { # The filter for string # Strings related filter.
-              &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
-              &quot;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
-              &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
-            },
-            &quot;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in dimensions or metrics.
-            &quot;numericFilter&quot;: { # Filters for numeric or date values. # A filter for numeric or date values.
-              &quot;operation&quot;: &quot;A String&quot;, # The operation type for this filter.
-              &quot;value&quot;: { # To represent a number. # A numeric value or a date value.
-                &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
-                &quot;doubleValue&quot;: 3.14, # Double value
+          },
+          &quot;offset&quot;: &quot;A String&quot;, # The row count of the start row. The first row is counted as row 0. To learn more about this pagination parameter, see [Pagination](https://developers.google.com/analytics/devguides/reporting/data/v1/basics#pagination).
+          &quot;currencyCode&quot;: &quot;A String&quot;, # A currency code in ISO4217 format, such as &quot;AED&quot;, &quot;USD&quot;, &quot;JPY&quot;. If the field is empty, the report uses the entity&#x27;s default currency.
+          &quot;dimensionFilter&quot;: { # To express dimension or metric filters. The fields in the same FilterExpression need to be either all dimensions or all metrics. # The filter clause of dimensions. Dimensions must be requested to be used in this filter. Metrics cannot be used in this filter.
+            &quot;notExpression&quot;: # Object with schema name: FilterExpression # The FilterExpression is NOT of not_expression.
+            &quot;filter&quot;: { # An expression to filter dimension or metric values. # A primitive filter. All fields in filter in same FilterExpression needs to be either all dimensions or metrics.
+              &quot;betweenFilter&quot;: { # To express that the result needs to be between two numbers (inclusive). # A filter for two values.
+                &quot;fromValue&quot;: { # To represent a number. # Begins with this number.
+                  &quot;doubleValue&quot;: 3.14, # Double value
+                  &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
+                },
+                &quot;toValue&quot;: { # To represent a number. # Ends with this number.
+                  &quot;doubleValue&quot;: 3.14, # Double value
+                  &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
+                },
               },
+              &quot;numericFilter&quot;: { # Filters for numeric or date values. # A filter for numeric or date values.
+                &quot;value&quot;: { # To represent a number. # A numeric value or a date value.
+                  &quot;doubleValue&quot;: 3.14, # Double value
+                  &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
+                },
+                &quot;operation&quot;: &quot;A String&quot;, # The operation type for this filter.
+              },
+              &quot;nullFilter&quot;: True or False, # A filter for null values. If True, a null dimension value is matched by this filter. Null filter is commonly used inside a NOT filter expression. For example, a NOT expression of a null filter removes rows when a dimension is null.
+              &quot;stringFilter&quot;: { # The filter for string # Strings related filter.
+                &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
+                &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
+                &quot;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
+              },
+              &quot;inListFilter&quot;: { # The result needs to be in a list of string values. # A filter for in list values.
+                &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
+                &quot;values&quot;: [ # The list of string values. Must be non-empty.
+                  &quot;A String&quot;,
+                ],
+              },
+              &quot;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in dimensions or metrics.
             },
-            &quot;nullFilter&quot;: True or False, # A filter for null values. If True, a null dimension value is matched by this filter. Null filter is commonly used inside a NOT filter expression. For example, a NOT expression of a null filter removes rows when a dimension is null.
+            &quot;orGroup&quot;: { # A list of filter expressions. # The FilterExpressions in or_group have an OR relationship.
+              &quot;expressions&quot;: [ # A list of filter expressions.
+                # Object with schema name: FilterExpression
+              ],
+            },
+            &quot;andGroup&quot;: { # A list of filter expressions. # The FilterExpressions in and_group have an AND relationship.
+              &quot;expressions&quot;: [ # A list of filter expressions.
+                # Object with schema name: FilterExpression
+              ],
+            },
           },
-          &quot;andGroup&quot;: { # A list of filter expressions. # The FilterExpressions in and_group have an AND relationship.
-            &quot;expressions&quot;: [ # A list of filter expressions.
-              # Object with schema name: FilterExpression
-            ],
-          },
-        },
-        &quot;metricAggregations&quot;: [ # Aggregation of metrics. Aggregated metric values will be shown in rows where the dimension_values are set to &quot;RESERVED_(MetricAggregation)&quot;.
-          &quot;A String&quot;,
-        ],
-        &quot;cohortSpec&quot;: { # Specification for a cohort report. # Cohort group associated with this request. If there is a cohort group in the request the &#x27;cohort&#x27; dimension must be present.
-          &quot;cohortReportSettings&quot;: { # Settings of a cohort report. # Settings of a cohort report.
-            &quot;accumulate&quot;: True or False, # If true, accumulates the result from first visit day to the end day. Not supported in `RunReportRequest`.
-          },
-          &quot;cohorts&quot;: [ # The definition for the cohorts.
-            { # 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.
-              &quot;name&quot;: &quot;A String&quot;, # Assigns a name to this cohort. The dimension `cohort` is valued to this name in a report response. If set, cannot begin with `cohort_` or `RESERVED_`. If not set, cohorts are named by their zero based index `cohort_0`, `cohort_1`, etc.
-              &quot;dimension&quot;: &quot;A String&quot;, # The dimension used by cohort. Only supports `firstTouchDate` for retention report.
-              &quot;dateRange&quot;: { # A contiguous set of days: startDate, startDate + 1, ..., endDate. Requests are allowed up to 4 date ranges. # The cohort selects users whose first visit date is between start date and end date defined in the `dateRange`. In a cohort request, this `dateRange` is required and the `dateRanges` in the `RunReportRequest` or `RunPivotReportRequest` must be unspecified. The date range should be aligned with the cohort&#x27;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.
-                &quot;name&quot;: &quot;A String&quot;, # 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.
-                &quot;startDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
-                &quot;endDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
+          &quot;returnPropertyQuota&quot;: True or False, # Toggles whether to return the current state of this Analytics Property&#x27;s quota. Quota is returned in [PropertyQuota](#PropertyQuota).
+          &quot;metrics&quot;: [ # The metrics requested and displayed.
+            { # The quantitative measurements of a report. For example, the metric `eventCount` is the total number of events. Requests are allowed up to 10 metrics.
+              &quot;name&quot;: &quot;A String&quot;, # The name of the metric. See the [API Metrics](https://developers.google.com/analytics/trusted-testing/analytics-data/api-schema#metrics) for the list of metric names. If `expression` is specified, `name` can be any string that you would like. For example if `expression` is `screenPageViews/sessions`, you could call that metric&#x27;s name = `viewsPerSession`. Metrics are referenced by `name` in `metricFilter`, `orderBys`, and metric `expression`.
+              &quot;expression&quot;: &quot;A String&quot;, # A mathematical expression for derived metrics. For example, the metric Event count per user is `eventCount/totalUsers`.
+              &quot;invisible&quot;: True or False, # Indicates if a metric is invisible in the report response. If a metric is invisible, the metric will not produce a column in the response, but can be used in `metricFilter`, `orderBys`, or a metric `expression`.
+            },
+          ],
+          &quot;keepEmptyRows&quot;: True or False, # If false or unspecified, each row with all metrics equal to 0 will not be returned. If true, these rows will be returned if they are not separately removed by a filter.
+          &quot;orderBys&quot;: [ # Specifies how rows are ordered in the response.
+            { # The sort options.
+              &quot;metric&quot;: { # Sorts by metric values. # Sorts results by a metric&#x27;s values.
+                &quot;metricName&quot;: &quot;A String&quot;, # A metric name in the request to order by.
+              },
+              &quot;pivot&quot;: { # Sorts by a pivot column group. # Sorts results by a metric&#x27;s values within a pivot column group.
+                &quot;metricName&quot;: &quot;A String&quot;, # In the response to order by, order rows by this column. Must be a metric name from the request.
+                &quot;pivotSelections&quot;: [ # 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&#x27;s dimension name and value pair.
+                  { # A pair of dimension names and values. Rows with this dimension pivot pair are ordered by the metric&#x27;s value. For example if pivots = {{&quot;browser&quot;, &quot;Chrome&quot;}} and metric_name = &quot;Sessions&quot;, 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 ---------|----------|----------------|----------|----------------
+                    &quot;dimensionName&quot;: &quot;A String&quot;, # Must be a dimension name from the request.
+                    &quot;dimensionValue&quot;: &quot;A String&quot;, # Order by only when the named dimension is this value.
+                  },
+                ],
+              },
+              &quot;desc&quot;: True or False, # If true, sorts by descending order.
+              &quot;dimension&quot;: { # Sorts by dimension values. # Sorts results by a dimension&#x27;s values.
+                &quot;dimensionName&quot;: &quot;A String&quot;, # A dimension name in the request to order by.
+                &quot;orderType&quot;: &quot;A String&quot;, # Controls the rule for dimension value ordering.
               },
             },
           ],
-          &quot;cohortsRange&quot;: { # Describes date range for a cohort report. # The data ranges of cohorts.
-            &quot;startOffset&quot;: 42, # For daily cohorts, this will be the start day offset. For weekly cohorts, this will be the week offset.
-            &quot;endOffset&quot;: 42, # For daily cohorts, this will be the end day offset. For weekly cohorts, this will be the week offset.
-            &quot;granularity&quot;: &quot;A String&quot;, # Reporting date range for each cohort is calculated based on these three fields.
-          },
-        },
-        &quot;metricFilter&quot;: { # To express dimension or metric filters. The fields in the same FilterExpression need to be either all dimensions or all metrics. # The filter clause of metrics. Applied at post aggregation phase, similar to SQL having-clause. Metrics must be requested to be used in this filter. Dimensions cannot be used in this filter.
-          &quot;notExpression&quot;: # Object with schema name: FilterExpression # The FilterExpression is NOT of not_expression.
-          &quot;orGroup&quot;: { # A list of filter expressions. # The FilterExpressions in or_group have an OR relationship.
-            &quot;expressions&quot;: [ # A list of filter expressions.
-              # Object with schema name: FilterExpression
-            ],
-          },
-          &quot;filter&quot;: { # An expression to filter dimension or metric values. # A primitive filter. All fields in filter in same FilterExpression needs to be either all dimensions or metrics.
-            &quot;inListFilter&quot;: { # The result needs to be in a list of string values. # A filter for in list values.
-              &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
-              &quot;values&quot;: [ # The list of string values. Must be non-empty.
-                &quot;A String&quot;,
-              ],
-            },
-            &quot;betweenFilter&quot;: { # To express that the result needs to be between two numbers (inclusive). # A filter for two values.
-              &quot;toValue&quot;: { # To represent a number. # Ends with this number.
-                &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
-                &quot;doubleValue&quot;: 3.14, # Double value
-              },
-              &quot;fromValue&quot;: { # To represent a number. # Begins with this number.
-                &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
-                &quot;doubleValue&quot;: 3.14, # Double value
-              },
-            },
-            &quot;stringFilter&quot;: { # The filter for string # Strings related filter.
-              &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
-              &quot;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
-              &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
-            },
-            &quot;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in dimensions or metrics.
-            &quot;numericFilter&quot;: { # Filters for numeric or date values. # A filter for numeric or date values.
-              &quot;operation&quot;: &quot;A String&quot;, # The operation type for this filter.
-              &quot;value&quot;: { # To represent a number. # A numeric value or a date value.
-                &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
-                &quot;doubleValue&quot;: 3.14, # Double value
-              },
-            },
-            &quot;nullFilter&quot;: True or False, # A filter for null values. If True, a null dimension value is matched by this filter. Null filter is commonly used inside a NOT filter expression. For example, a NOT expression of a null filter removes rows when a dimension is null.
-          },
-          &quot;andGroup&quot;: { # A list of filter expressions. # The FilterExpressions in and_group have an AND relationship.
-            &quot;expressions&quot;: [ # A list of filter expressions.
-              # Object with schema name: FilterExpression
-            ],
-          },
-        },
-        &quot;dimensions&quot;: [ # The dimensions requested and displayed.
-          { # Dimensions are attributes of your data. For example, the dimension city indicates the city from which an event originates. Dimension values in report responses are strings; for example, city could be &quot;Paris&quot; or &quot;New York&quot;. Requests are allowed up to 8 dimensions.
-            &quot;name&quot;: &quot;A String&quot;, # The name of the dimension. See the [API Dimensions](https://developers.google.com/analytics/trusted-testing/analytics-data/api-schema#dimensions) for the list of dimension names. If `dimensionExpression` is specified, `name` can be any string that you would like. For example if a `dimensionExpression` concatenates `country` and `city`, you could call that dimension `countryAndCity`. Dimensions are referenced by `name` in `dimensionFilter`, `orderBys`, `dimensionExpression`, and `pivots`.
-            &quot;dimensionExpression&quot;: { # 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). # One dimension can be the result of an expression of multiple dimensions. For example, dimension &quot;country, city&quot;: concatenate(country, &quot;, &quot;, city).
-              &quot;concatenate&quot;: { # Used to combine dimension values to a single dimension. # Used to combine dimension values to a single dimension. For example, dimension &quot;country, city&quot;: concatenate(country, &quot;, &quot;, city).
-                &quot;dimensionNames&quot;: [ # Names of dimensions. The names must refer back to names in the dimensions field of the request.
-                  &quot;A String&quot;,
-                ],
-                &quot;delimiter&quot;: &quot;A String&quot;, # The delimiter placed between dimension names. Delimiters are often single characters such as &quot;|&quot; or &quot;,&quot; 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 = &quot;US,FR&quot;, dimension 2 value = &quot;JP&quot;, and delimiter = &quot;,&quot;, then the response will contain &quot;US,FR,JP&quot;.
-              },
-              &quot;lowerCase&quot;: { # Used to convert a dimension value to a single case. # Used to convert a dimension value to lower case.
-                &quot;dimensionName&quot;: &quot;A String&quot;, # Name of a dimension. The name must refer back to a name in dimensions field of the request.
-              },
-              &quot;upperCase&quot;: { # Used to convert a dimension value to a single case. # Used to convert a dimension value to upper case.
-                &quot;dimensionName&quot;: &quot;A String&quot;, # Name of a dimension. The name must refer back to a name in dimensions field of the request.
-              },
-            },
-          },
-        ],
-        &quot;orderBys&quot;: [ # Specifies how rows are ordered in the response.
-          { # The sort options.
-            &quot;metric&quot;: { # Sorts by metric values. # Sorts results by a metric&#x27;s values.
-              &quot;metricName&quot;: &quot;A String&quot;, # A metric name in the request to order by.
-            },
-            &quot;desc&quot;: True or False, # If true, sorts by descending order.
-            &quot;dimension&quot;: { # Sorts by dimension values. # Sorts results by a dimension&#x27;s values.
-              &quot;orderType&quot;: &quot;A String&quot;, # Controls the rule for dimension value ordering.
-              &quot;dimensionName&quot;: &quot;A String&quot;, # A dimension name in the request to order by.
-            },
-            &quot;pivot&quot;: { # Sorts by a pivot column group. # Sorts results by a metric&#x27;s values within a pivot column group.
-              &quot;metricName&quot;: &quot;A String&quot;, # In the response to order by, order rows by this column. Must be a metric name from the request.
-              &quot;pivotSelections&quot;: [ # 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&#x27;s dimension name and value pair.
-                { # A pair of dimension names and values. Rows with this dimension pivot pair are ordered by the metric&#x27;s value. For example if pivots = {{&quot;browser&quot;, &quot;Chrome&quot;}} and metric_name = &quot;Sessions&quot;, 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 ---------|----------|----------------|----------|----------------
-                  &quot;dimensionName&quot;: &quot;A String&quot;, # Must be a dimension name from the request.
-                  &quot;dimensionValue&quot;: &quot;A String&quot;, # Order by only when the named dimension is this value.
+          &quot;cohortSpec&quot;: { # Specification for a cohort report. # Cohort group associated with this request. If there is a cohort group in the request the &#x27;cohort&#x27; dimension must be present.
+            &quot;cohorts&quot;: [ # The definition for the cohorts.
+              { # 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.
+                &quot;name&quot;: &quot;A String&quot;, # Assigns a name to this cohort. The dimension `cohort` is valued to this name in a report response. If set, cannot begin with `cohort_` or `RESERVED_`. If not set, cohorts are named by their zero based index `cohort_0`, `cohort_1`, etc.
+                &quot;dateRange&quot;: { # A contiguous set of days: startDate, startDate + 1, ..., endDate. Requests are allowed up to 4 date ranges. # The cohort selects users whose first visit date is between start date and end date defined in the `dateRange`. In a cohort request, this `dateRange` is required and the `dateRanges` in the `RunReportRequest` or `RunPivotReportRequest` must be unspecified. The date range should be aligned with the cohort&#x27;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.
+                  &quot;startDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
+                  &quot;endDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
+                  &quot;name&quot;: &quot;A String&quot;, # 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.
                 },
-              ],
+                &quot;dimension&quot;: &quot;A String&quot;, # The dimension used by cohort. Only supports `firstTouchDate` for retention report.
+              },
+            ],
+            &quot;cohortsRange&quot;: { # Describes date range for a cohort report. # The data ranges of cohorts.
+              &quot;granularity&quot;: &quot;A String&quot;, # Reporting date range for each cohort is calculated based on these three fields.
+              &quot;startOffset&quot;: 42, # For daily cohorts, this will be the start day offset. For weekly cohorts, this will be the week offset.
+              &quot;endOffset&quot;: 42, # For daily cohorts, this will be the end day offset. For weekly cohorts, this will be the week offset.
+            },
+            &quot;cohortReportSettings&quot;: { # Settings of a cohort report. # Settings of a cohort report.
+              &quot;accumulate&quot;: True or False, # If true, accumulates the result from first visit day to the end day. Not supported in `RunReportRequest`.
             },
           },
-        ],
-        &quot;currencyCode&quot;: &quot;A String&quot;, # A currency code in ISO4217 format, such as &quot;AED&quot;, &quot;USD&quot;, &quot;JPY&quot;. If the field is empty, the report uses the entity&#x27;s default currency.
-        &quot;metrics&quot;: [ # The metrics requested and displayed.
-          { # The quantitative measurements of a report. For example, the metric `eventCount` is the total number of events. Requests are allowed up to 10 metrics.
-            &quot;expression&quot;: &quot;A String&quot;, # A mathematical expression for derived metrics. For example, the metric Event count per user is `eventCount/totalUsers`.
-            &quot;name&quot;: &quot;A String&quot;, # The name of the metric. See the [API Metrics](https://developers.google.com/analytics/trusted-testing/analytics-data/api-schema#metrics) for the list of metric names. If `expression` is specified, `name` can be any string that you would like. For example if `expression` is `screenPageViews/sessions`, you could call that metric&#x27;s name = `viewsPerSession`. Metrics are referenced by `name` in `metricFilter`, `orderBys`, and metric `expression`.
-            &quot;invisible&quot;: True or False, # Indicates if a metric is invisible in the report response. If a metric is invisible, the metric will not produce a column in the response, but can be used in `metricFilter`, `orderBys`, or a metric `expression`.
+          &quot;metricAggregations&quot;: [ # Aggregation of metrics. Aggregated metric values will be shown in rows where the dimension_values are set to &quot;RESERVED_(MetricAggregation)&quot;.
+            &quot;A String&quot;,
+          ],
+          &quot;entity&quot;: { # The unique identifier of the property whose events are tracked. # A property whose events are tracked. Within a batch request, this entity should either be unspecified or consistent with the batch-level entity.
+            &quot;propertyId&quot;: &quot;A String&quot;, # A Google Analytics GA4 property id. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/trusted-testing/analytics-data/property-id).
           },
-        ],
-        &quot;returnPropertyQuota&quot;: True or False, # Toggles whether to return the current state of this Analytics Property&#x27;s quota. Quota is returned in [PropertyQuota](#PropertyQuota).
-        &quot;entity&quot;: { # The unique identifier of the property whose events are tracked. # A property whose events are tracked. Within a batch request, this entity should either be unspecified or consistent with the batch-level entity.
-          &quot;propertyId&quot;: &quot;A String&quot;, # A Google Analytics GA4 property id. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/trusted-testing/analytics-data/property-id).
+          &quot;dimensions&quot;: [ # The dimensions requested and displayed.
+            { # Dimensions are attributes of your data. For example, the dimension city indicates the city from which an event originates. Dimension values in report responses are strings; for example, city could be &quot;Paris&quot; or &quot;New York&quot;. Requests are allowed up to 8 dimensions.
+              &quot;name&quot;: &quot;A String&quot;, # The name of the dimension. See the [API Dimensions](https://developers.google.com/analytics/trusted-testing/analytics-data/api-schema#dimensions) for the list of dimension names. If `dimensionExpression` is specified, `name` can be any string that you would like. For example if a `dimensionExpression` concatenates `country` and `city`, you could call that dimension `countryAndCity`. Dimensions are referenced by `name` in `dimensionFilter`, `orderBys`, `dimensionExpression`, and `pivots`.
+              &quot;dimensionExpression&quot;: { # 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). # One dimension can be the result of an expression of multiple dimensions. For example, dimension &quot;country, city&quot;: concatenate(country, &quot;, &quot;, city).
+                &quot;lowerCase&quot;: { # Used to convert a dimension value to a single case. # Used to convert a dimension value to lower case.
+                  &quot;dimensionName&quot;: &quot;A String&quot;, # Name of a dimension. The name must refer back to a name in dimensions field of the request.
+                },
+                &quot;upperCase&quot;: { # Used to convert a dimension value to a single case. # Used to convert a dimension value to upper case.
+                  &quot;dimensionName&quot;: &quot;A String&quot;, # Name of a dimension. The name must refer back to a name in dimensions field of the request.
+                },
+                &quot;concatenate&quot;: { # Used to combine dimension values to a single dimension. # Used to combine dimension values to a single dimension. For example, dimension &quot;country, city&quot;: concatenate(country, &quot;, &quot;, city).
+                  &quot;dimensionNames&quot;: [ # Names of dimensions. The names must refer back to names in the dimensions field of the request.
+                    &quot;A String&quot;,
+                  ],
+                  &quot;delimiter&quot;: &quot;A String&quot;, # The delimiter placed between dimension names. Delimiters are often single characters such as &quot;|&quot; or &quot;,&quot; 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 = &quot;US,FR&quot;, dimension 2 value = &quot;JP&quot;, and delimiter = &quot;,&quot;, then the response will contain &quot;US,FR,JP&quot;.
+                },
+              },
+            },
+          ],
+          &quot;limit&quot;: &quot;A String&quot;, # The number of rows to return. If unspecified, 10 rows are returned. If -1, all rows are returned. To learn more about this pagination parameter, see [Pagination](https://developers.google.com/analytics/devguides/reporting/data/v1/basics#pagination).
         },
-      },
     ],
+    &quot;entity&quot;: { # The unique identifier of the property whose events are tracked. # 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.
+      &quot;propertyId&quot;: &quot;A String&quot;, # A Google Analytics GA4 property id. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/trusted-testing/analytics-data/property-id).
+    },
   }
 
   x__xgafv: string, V1 error format.
@@ -586,32 +586,21 @@
     { # The batch response containing multiple reports.
     &quot;reports&quot;: [ # Individual responses. Each response has a separate report request.
       { # The response report table corresponding to a request.
-        &quot;rows&quot;: [ # Rows of dimension value combinations and metric values in the report.
+        &quot;metadata&quot;: { # Response&#x27;s metadata carrying additional information about the report content. # Metadata for the report.
+          &quot;dataLossFromOtherRow&quot;: True or False, # If true, indicates some buckets of dimension combinations are rolled into &quot;(other)&quot; row. This can happen for high cardinality reports.
+        },
+        &quot;totals&quot;: [ # If requested, the totaled values of metrics.
           { # Report data for each row. For example if RunReportRequest contains: ```none &quot;dimensions&quot;: [ { &quot;name&quot;: &quot;eventName&quot; }, { &quot;name&quot;: &quot;countryId&quot; } ], &quot;metrics&quot;: [ { &quot;name&quot;: &quot;eventCount&quot; } ] ``` One row with &#x27;in_app_purchase&#x27; as the eventName, &#x27;JP&#x27; as the countryId, and 15 as the eventCount, would be: ```none &quot;dimensionValues&quot;: [ { &quot;value&quot;: &quot;in_app_purchase&quot; }, { &quot;value&quot;: &quot;JP&quot; } ], &quot;metricValues&quot;: [ { &quot;value&quot;: &quot;15&quot; } ] ```
-            &quot;dimensionValues&quot;: [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
-              { # The value of a dimension.
-                &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
-              },
-            ],
             &quot;metricValues&quot;: [ # List of requested visible metric values.
               { # The value of a metric.
                 &quot;value&quot;: &quot;A String&quot;, # Measurement value. See MetricHeader for type.
               },
             ],
-          },
-        ],
-        &quot;maximums&quot;: [ # If requested, the maximum values of metrics.
-          { # Report data for each row. For example if RunReportRequest contains: ```none &quot;dimensions&quot;: [ { &quot;name&quot;: &quot;eventName&quot; }, { &quot;name&quot;: &quot;countryId&quot; } ], &quot;metrics&quot;: [ { &quot;name&quot;: &quot;eventCount&quot; } ] ``` One row with &#x27;in_app_purchase&#x27; as the eventName, &#x27;JP&#x27; as the countryId, and 15 as the eventCount, would be: ```none &quot;dimensionValues&quot;: [ { &quot;value&quot;: &quot;in_app_purchase&quot; }, { &quot;value&quot;: &quot;JP&quot; } ], &quot;metricValues&quot;: [ { &quot;value&quot;: &quot;15&quot; } ] ```
             &quot;dimensionValues&quot;: [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
               { # The value of a dimension.
                 &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
               },
             ],
-            &quot;metricValues&quot;: [ # List of requested visible metric values.
-              { # The value of a metric.
-                &quot;value&quot;: &quot;A String&quot;, # Measurement value. See MetricHeader for type.
-              },
-            ],
           },
         ],
         &quot;dimensionHeaders&quot;: [ # Describes dimension columns. The number of DimensionHeaders and ordering of DimensionHeaders matches the dimensions present in rows.
@@ -619,60 +608,71 @@
             &quot;name&quot;: &quot;A String&quot;, # The dimension&#x27;s name.
           },
         ],
-        &quot;metricHeaders&quot;: [ # Describes metric columns. The number of MetricHeaders and ordering of MetricHeaders matches the metrics present in rows.
-          { # Describes a metric column in the report. Visible metrics requested in a report produce column entries within rows and MetricHeaders. However, metrics used exclusively within filters or expressions do not produce columns in a report; correspondingly, those metrics do not produce headers.
-            &quot;type&quot;: &quot;A String&quot;, # The metric&#x27;s data type.
-            &quot;name&quot;: &quot;A String&quot;, # The metric&#x27;s name.
-          },
-        ],
-        &quot;minimums&quot;: [ # If requested, the minimum values of metrics.
-          { # Report data for each row. For example if RunReportRequest contains: ```none &quot;dimensions&quot;: [ { &quot;name&quot;: &quot;eventName&quot; }, { &quot;name&quot;: &quot;countryId&quot; } ], &quot;metrics&quot;: [ { &quot;name&quot;: &quot;eventCount&quot; } ] ``` One row with &#x27;in_app_purchase&#x27; as the eventName, &#x27;JP&#x27; as the countryId, and 15 as the eventCount, would be: ```none &quot;dimensionValues&quot;: [ { &quot;value&quot;: &quot;in_app_purchase&quot; }, { &quot;value&quot;: &quot;JP&quot; } ], &quot;metricValues&quot;: [ { &quot;value&quot;: &quot;15&quot; } ] ```
-            &quot;dimensionValues&quot;: [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
-              { # The value of a dimension.
-                &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
-              },
-            ],
-            &quot;metricValues&quot;: [ # List of requested visible metric values.
-              { # The value of a metric.
-                &quot;value&quot;: &quot;A String&quot;, # Measurement value. See MetricHeader for type.
-              },
-            ],
-          },
-        ],
-        &quot;rowCount&quot;: 42, # The total number of rows in the query result, regardless of the number of rows returned in the response. For example if a query returns 175 rows and includes limit = 50 in the API request, the response will contain row_count = 175 but only 50 rows. To learn more about this pagination parameter, see [Pagination](basics#pagination).
-        &quot;metadata&quot;: { # Response&#x27;s metadata carrying additional information about the report content. # Metadata for the report.
-          &quot;dataLossFromOtherRow&quot;: True or False, # If true, indicates some buckets of dimension combinations are rolled into &quot;(other)&quot; row. This can happen for high cardinality reports.
-        },
         &quot;propertyQuota&quot;: { # 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. # This Analytics Property&#x27;s quota state including this request.
           &quot;tokensPerHour&quot;: { # Current state for a particular quota group. # Standard Analytics Properties can use up to 5,000 tokens per day; Analytics 360 Properties can use 50,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.
             &quot;consumed&quot;: 42, # Quota consumed by this request.
             &quot;remaining&quot;: 42, # Quota remaining after this request.
           },
-          &quot;tokensPerDay&quot;: { # Current state for a particular quota group. # Standard Analytics Properties can use up to 25,000 tokens per day; Analytics 360 Properties can use 250,000 tokens per day. Most requests consume fewer than 10 tokens.
-            &quot;consumed&quot;: 42, # Quota consumed by this request.
-            &quot;remaining&quot;: 42, # Quota remaining after this request.
-          },
-          &quot;serverErrorsPerProjectPerHour&quot;: { # Current state for a particular quota group. # Standard Analytics Properties and cloud project pairs can have up to 10 server errors per hour; Analytics 360 Properties and cloud project pairs can have up to 50 server errors per hour.
-            &quot;consumed&quot;: 42, # Quota consumed by this request.
-            &quot;remaining&quot;: 42, # Quota remaining after this request.
-          },
           &quot;concurrentRequests&quot;: { # Current state for a particular quota group. # Standard Analytics Properties can send up to 10 concurrent requests; Analytics 360 Properties can use up to 50 concurrent requests.
             &quot;consumed&quot;: 42, # Quota consumed by this request.
             &quot;remaining&quot;: 42, # Quota remaining after this request.
           },
+          &quot;serverErrorsPerProjectPerHour&quot;: { # Current state for a particular quota group. # Standard Analytics Properties and cloud project pairs can have up to 10 server errors per hour; Analytics 360 Properties and cloud project pairs can have up to 50 server errors per hour.
+            &quot;consumed&quot;: 42, # Quota consumed by this request.
+            &quot;remaining&quot;: 42, # Quota remaining after this request.
+          },
+          &quot;tokensPerDay&quot;: { # Current state for a particular quota group. # Standard Analytics Properties can use up to 25,000 tokens per day; Analytics 360 Properties can use 250,000 tokens per day. Most requests consume fewer than 10 tokens.
+            &quot;consumed&quot;: 42, # Quota consumed by this request.
+            &quot;remaining&quot;: 42, # Quota remaining after this request.
+          },
         },
-        &quot;totals&quot;: [ # If requested, the totaled values of metrics.
+        &quot;rowCount&quot;: 42, # The total number of rows in the query result, regardless of the number of rows returned in the response. For example if a query returns 175 rows and includes limit = 50 in the API request, the response will contain row_count = 175 but only 50 rows. To learn more about this pagination parameter, see [Pagination](https://developers.google.com/analytics/devguides/reporting/data/v1/basics#pagination).
+        &quot;rows&quot;: [ # Rows of dimension value combinations and metric values in the report.
           { # Report data for each row. For example if RunReportRequest contains: ```none &quot;dimensions&quot;: [ { &quot;name&quot;: &quot;eventName&quot; }, { &quot;name&quot;: &quot;countryId&quot; } ], &quot;metrics&quot;: [ { &quot;name&quot;: &quot;eventCount&quot; } ] ``` One row with &#x27;in_app_purchase&#x27; as the eventName, &#x27;JP&#x27; as the countryId, and 15 as the eventCount, would be: ```none &quot;dimensionValues&quot;: [ { &quot;value&quot;: &quot;in_app_purchase&quot; }, { &quot;value&quot;: &quot;JP&quot; } ], &quot;metricValues&quot;: [ { &quot;value&quot;: &quot;15&quot; } ] ```
+            &quot;metricValues&quot;: [ # List of requested visible metric values.
+              { # The value of a metric.
+                &quot;value&quot;: &quot;A String&quot;, # Measurement value. See MetricHeader for type.
+              },
+            ],
             &quot;dimensionValues&quot;: [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
               { # The value of a dimension.
                 &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
               },
             ],
+          },
+        ],
+        &quot;maximums&quot;: [ # If requested, the maximum values of metrics.
+          { # Report data for each row. For example if RunReportRequest contains: ```none &quot;dimensions&quot;: [ { &quot;name&quot;: &quot;eventName&quot; }, { &quot;name&quot;: &quot;countryId&quot; } ], &quot;metrics&quot;: [ { &quot;name&quot;: &quot;eventCount&quot; } ] ``` One row with &#x27;in_app_purchase&#x27; as the eventName, &#x27;JP&#x27; as the countryId, and 15 as the eventCount, would be: ```none &quot;dimensionValues&quot;: [ { &quot;value&quot;: &quot;in_app_purchase&quot; }, { &quot;value&quot;: &quot;JP&quot; } ], &quot;metricValues&quot;: [ { &quot;value&quot;: &quot;15&quot; } ] ```
             &quot;metricValues&quot;: [ # List of requested visible metric values.
               { # The value of a metric.
                 &quot;value&quot;: &quot;A String&quot;, # Measurement value. See MetricHeader for type.
               },
             ],
+            &quot;dimensionValues&quot;: [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
+              { # The value of a dimension.
+                &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
+              },
+            ],
+          },
+        ],
+        &quot;metricHeaders&quot;: [ # Describes metric columns. The number of MetricHeaders and ordering of MetricHeaders matches the metrics present in rows.
+          { # Describes a metric column in the report. Visible metrics requested in a report produce column entries within rows and MetricHeaders. However, metrics used exclusively within filters or expressions do not produce columns in a report; correspondingly, those metrics do not produce headers.
+            &quot;name&quot;: &quot;A String&quot;, # The metric&#x27;s name.
+            &quot;type&quot;: &quot;A String&quot;, # The metric&#x27;s data type.
+          },
+        ],
+        &quot;minimums&quot;: [ # If requested, the minimum values of metrics.
+          { # Report data for each row. For example if RunReportRequest contains: ```none &quot;dimensions&quot;: [ { &quot;name&quot;: &quot;eventName&quot; }, { &quot;name&quot;: &quot;countryId&quot; } ], &quot;metrics&quot;: [ { &quot;name&quot;: &quot;eventCount&quot; } ] ``` One row with &#x27;in_app_purchase&#x27; as the eventName, &#x27;JP&#x27; as the countryId, and 15 as the eventCount, would be: ```none &quot;dimensionValues&quot;: [ { &quot;value&quot;: &quot;in_app_purchase&quot; }, { &quot;value&quot;: &quot;JP&quot; } ], &quot;metricValues&quot;: [ { &quot;value&quot;: &quot;15&quot; } ] ```
+            &quot;metricValues&quot;: [ # List of requested visible metric values.
+              { # The value of a metric.
+                &quot;value&quot;: &quot;A String&quot;, # Measurement value. See MetricHeader for type.
+              },
+            ],
+            &quot;dimensionValues&quot;: [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
+              { # The value of a dimension.
+                &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
+              },
+            ],
           },
         ],
       },
@@ -694,190 +694,190 @@
     The object takes the form of:
 
 { # The request to generate a pivot report.
-  &quot;dimensions&quot;: [ # The dimensions requested. All defined dimensions must be used by one of the following: dimension_expression, dimension_filter, pivots, order_bys.
-    { # Dimensions are attributes of your data. For example, the dimension city indicates the city from which an event originates. Dimension values in report responses are strings; for example, city could be &quot;Paris&quot; or &quot;New York&quot;. Requests are allowed up to 8 dimensions.
-      &quot;name&quot;: &quot;A String&quot;, # The name of the dimension. See the [API Dimensions](https://developers.google.com/analytics/trusted-testing/analytics-data/api-schema#dimensions) for the list of dimension names. If `dimensionExpression` is specified, `name` can be any string that you would like. For example if a `dimensionExpression` concatenates `country` and `city`, you could call that dimension `countryAndCity`. Dimensions are referenced by `name` in `dimensionFilter`, `orderBys`, `dimensionExpression`, and `pivots`.
-      &quot;dimensionExpression&quot;: { # 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). # One dimension can be the result of an expression of multiple dimensions. For example, dimension &quot;country, city&quot;: concatenate(country, &quot;, &quot;, city).
-        &quot;concatenate&quot;: { # Used to combine dimension values to a single dimension. # Used to combine dimension values to a single dimension. For example, dimension &quot;country, city&quot;: concatenate(country, &quot;, &quot;, city).
-          &quot;dimensionNames&quot;: [ # Names of dimensions. The names must refer back to names in the dimensions field of the request.
-            &quot;A String&quot;,
-          ],
-          &quot;delimiter&quot;: &quot;A String&quot;, # The delimiter placed between dimension names. Delimiters are often single characters such as &quot;|&quot; or &quot;,&quot; 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 = &quot;US,FR&quot;, dimension 2 value = &quot;JP&quot;, and delimiter = &quot;,&quot;, then the response will contain &quot;US,FR,JP&quot;.
-        },
-        &quot;lowerCase&quot;: { # Used to convert a dimension value to a single case. # Used to convert a dimension value to lower case.
-          &quot;dimensionName&quot;: &quot;A String&quot;, # Name of a dimension. The name must refer back to a name in dimensions field of the request.
-        },
-        &quot;upperCase&quot;: { # Used to convert a dimension value to a single case. # Used to convert a dimension value to upper case.
-          &quot;dimensionName&quot;: &quot;A String&quot;, # Name of a dimension. The name must refer back to a name in dimensions field of the request.
-        },
-      },
-    },
-  ],
-  &quot;entity&quot;: { # The unique identifier of the property whose events are tracked. # A property whose events are tracked. Within a batch request, this entity should either be unspecified or consistent with the batch-level entity.
-    &quot;propertyId&quot;: &quot;A String&quot;, # A Google Analytics GA4 property id. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/trusted-testing/analytics-data/property-id).
-  },
-  &quot;returnPropertyQuota&quot;: True or False, # Toggles whether to return the current state of this Analytics Property&#x27;s quota. Quota is returned in [PropertyQuota](#PropertyQuota).
-  &quot;dateRanges&quot;: [ # 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 &quot;dateRange&quot; can be included in a Pivot&#x27;s field names; if included, the report compares between date ranges. In a cohort request, this `dateRanges` must be unspecified.
-    { # A contiguous set of days: startDate, startDate + 1, ..., endDate. Requests are allowed up to 4 date ranges.
-      &quot;name&quot;: &quot;A String&quot;, # 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.
-      &quot;startDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
-      &quot;endDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
-    },
-  ],
-  &quot;dimensionFilter&quot;: { # To express dimension or metric filters. The fields in the same FilterExpression need to be either all dimensions or all metrics. # The filter clause of dimensions. Dimensions must be requested to be used in this filter. Metrics cannot be used in this filter.
-    &quot;notExpression&quot;: # Object with schema name: FilterExpression # The FilterExpression is NOT of not_expression.
-    &quot;orGroup&quot;: { # A list of filter expressions. # The FilterExpressions in or_group have an OR relationship.
-      &quot;expressions&quot;: [ # A list of filter expressions.
-        # Object with schema name: FilterExpression
-      ],
-    },
-    &quot;filter&quot;: { # An expression to filter dimension or metric values. # A primitive filter. All fields in filter in same FilterExpression needs to be either all dimensions or metrics.
-      &quot;inListFilter&quot;: { # The result needs to be in a list of string values. # A filter for in list values.
-        &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
-        &quot;values&quot;: [ # The list of string values. Must be non-empty.
-          &quot;A String&quot;,
-        ],
-      },
-      &quot;betweenFilter&quot;: { # To express that the result needs to be between two numbers (inclusive). # A filter for two values.
-        &quot;toValue&quot;: { # To represent a number. # Ends with this number.
-          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
-          &quot;doubleValue&quot;: 3.14, # Double value
-        },
-        &quot;fromValue&quot;: { # To represent a number. # Begins with this number.
-          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
-          &quot;doubleValue&quot;: 3.14, # Double value
-        },
-      },
-      &quot;stringFilter&quot;: { # The filter for string # Strings related filter.
-        &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
-        &quot;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
-        &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
-      },
-      &quot;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in dimensions or metrics.
-      &quot;numericFilter&quot;: { # Filters for numeric or date values. # A filter for numeric or date values.
-        &quot;operation&quot;: &quot;A String&quot;, # The operation type for this filter.
-        &quot;value&quot;: { # To represent a number. # A numeric value or a date value.
-          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
-          &quot;doubleValue&quot;: 3.14, # Double value
-        },
-      },
-      &quot;nullFilter&quot;: True or False, # A filter for null values. If True, a null dimension value is matched by this filter. Null filter is commonly used inside a NOT filter expression. For example, a NOT expression of a null filter removes rows when a dimension is null.
-    },
-    &quot;andGroup&quot;: { # A list of filter expressions. # The FilterExpressions in and_group have an AND relationship.
-      &quot;expressions&quot;: [ # A list of filter expressions.
-        # Object with schema name: FilterExpression
-      ],
-    },
-  },
-  &quot;metricFilter&quot;: { # To express dimension or metric filters. The fields in the same FilterExpression need to be either all dimensions or all metrics. # The filter clause of metrics. Applied at post aggregation phase, similar to SQL having-clause. Metrics must be requested to be used in this filter. Dimensions cannot be used in this filter.
-    &quot;notExpression&quot;: # Object with schema name: FilterExpression # The FilterExpression is NOT of not_expression.
-    &quot;orGroup&quot;: { # A list of filter expressions. # The FilterExpressions in or_group have an OR relationship.
-      &quot;expressions&quot;: [ # A list of filter expressions.
-        # Object with schema name: FilterExpression
-      ],
-    },
-    &quot;filter&quot;: { # An expression to filter dimension or metric values. # A primitive filter. All fields in filter in same FilterExpression needs to be either all dimensions or metrics.
-      &quot;inListFilter&quot;: { # The result needs to be in a list of string values. # A filter for in list values.
-        &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
-        &quot;values&quot;: [ # The list of string values. Must be non-empty.
-          &quot;A String&quot;,
-        ],
-      },
-      &quot;betweenFilter&quot;: { # To express that the result needs to be between two numbers (inclusive). # A filter for two values.
-        &quot;toValue&quot;: { # To represent a number. # Ends with this number.
-          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
-          &quot;doubleValue&quot;: 3.14, # Double value
-        },
-        &quot;fromValue&quot;: { # To represent a number. # Begins with this number.
-          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
-          &quot;doubleValue&quot;: 3.14, # Double value
-        },
-      },
-      &quot;stringFilter&quot;: { # The filter for string # Strings related filter.
-        &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
-        &quot;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
-        &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
-      },
-      &quot;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in dimensions or metrics.
-      &quot;numericFilter&quot;: { # Filters for numeric or date values. # A filter for numeric or date values.
-        &quot;operation&quot;: &quot;A String&quot;, # The operation type for this filter.
-        &quot;value&quot;: { # To represent a number. # A numeric value or a date value.
-          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
-          &quot;doubleValue&quot;: 3.14, # Double value
-        },
-      },
-      &quot;nullFilter&quot;: True or False, # A filter for null values. If True, a null dimension value is matched by this filter. Null filter is commonly used inside a NOT filter expression. For example, a NOT expression of a null filter removes rows when a dimension is null.
-    },
-    &quot;andGroup&quot;: { # A list of filter expressions. # The FilterExpressions in and_group have an AND relationship.
-      &quot;expressions&quot;: [ # A list of filter expressions.
-        # Object with schema name: FilterExpression
-      ],
-    },
-  },
-  &quot;pivots&quot;: [ # Describes the visual format of the report&#x27;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.
-    { # Describes the visible dimension columns and rows in the report response.
-      &quot;fieldNames&quot;: [ # Dimension names for visible columns in the report response. Including &quot;dateRange&quot; 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.
-        &quot;A String&quot;,
-      ],
-      &quot;offset&quot;: &quot;A String&quot;, # The row count of the start row. The first row is counted as row 0.
-      &quot;metricAggregations&quot;: [ # Aggregate the metrics by dimensions in this pivot using the specified metric_aggregations.
-        &quot;A String&quot;,
-      ],
-      &quot;limit&quot;: &quot;A String&quot;, # The number of rows to return in this pivot. If unspecified, 10 rows are returned. If -1, all rows are returned.
-      &quot;orderBys&quot;: [ # Specifies how dimensions are ordered in the pivot. In the first Pivot, the OrderBys determine Row and PivotDimensionHeader ordering; in subsequent Pivots, the OrderBys determine only PivotDimensionHeader ordering. Dimensions specified in these OrderBys must be a subset of Pivot.field_names.
-        { # The sort options.
-          &quot;metric&quot;: { # Sorts by metric values. # Sorts results by a metric&#x27;s values.
-            &quot;metricName&quot;: &quot;A String&quot;, # A metric name in the request to order by.
+    &quot;keepEmptyRows&quot;: True or False, # If false or unspecified, each row with all metrics equal to 0 will not be returned. If true, these rows will be returned if they are not separately removed by a filter.
+    &quot;dimensions&quot;: [ # The dimensions requested. All defined dimensions must be used by one of the following: dimension_expression, dimension_filter, pivots, order_bys.
+      { # Dimensions are attributes of your data. For example, the dimension city indicates the city from which an event originates. Dimension values in report responses are strings; for example, city could be &quot;Paris&quot; or &quot;New York&quot;. Requests are allowed up to 8 dimensions.
+        &quot;name&quot;: &quot;A String&quot;, # The name of the dimension. See the [API Dimensions](https://developers.google.com/analytics/trusted-testing/analytics-data/api-schema#dimensions) for the list of dimension names. If `dimensionExpression` is specified, `name` can be any string that you would like. For example if a `dimensionExpression` concatenates `country` and `city`, you could call that dimension `countryAndCity`. Dimensions are referenced by `name` in `dimensionFilter`, `orderBys`, `dimensionExpression`, and `pivots`.
+        &quot;dimensionExpression&quot;: { # 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). # One dimension can be the result of an expression of multiple dimensions. For example, dimension &quot;country, city&quot;: concatenate(country, &quot;, &quot;, city).
+          &quot;lowerCase&quot;: { # Used to convert a dimension value to a single case. # Used to convert a dimension value to lower case.
+            &quot;dimensionName&quot;: &quot;A String&quot;, # Name of a dimension. The name must refer back to a name in dimensions field of the request.
           },
-          &quot;desc&quot;: True or False, # If true, sorts by descending order.
-          &quot;dimension&quot;: { # Sorts by dimension values. # Sorts results by a dimension&#x27;s values.
-            &quot;orderType&quot;: &quot;A String&quot;, # Controls the rule for dimension value ordering.
-            &quot;dimensionName&quot;: &quot;A String&quot;, # A dimension name in the request to order by.
+          &quot;upperCase&quot;: { # Used to convert a dimension value to a single case. # Used to convert a dimension value to upper case.
+            &quot;dimensionName&quot;: &quot;A String&quot;, # Name of a dimension. The name must refer back to a name in dimensions field of the request.
           },
-          &quot;pivot&quot;: { # Sorts by a pivot column group. # Sorts results by a metric&#x27;s values within a pivot column group.
-            &quot;metricName&quot;: &quot;A String&quot;, # In the response to order by, order rows by this column. Must be a metric name from the request.
-            &quot;pivotSelections&quot;: [ # 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&#x27;s dimension name and value pair.
-              { # A pair of dimension names and values. Rows with this dimension pivot pair are ordered by the metric&#x27;s value. For example if pivots = {{&quot;browser&quot;, &quot;Chrome&quot;}} and metric_name = &quot;Sessions&quot;, 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 ---------|----------|----------------|----------|----------------
-                &quot;dimensionName&quot;: &quot;A String&quot;, # Must be a dimension name from the request.
-                &quot;dimensionValue&quot;: &quot;A String&quot;, # Order by only when the named dimension is this value.
-              },
+          &quot;concatenate&quot;: { # Used to combine dimension values to a single dimension. # Used to combine dimension values to a single dimension. For example, dimension &quot;country, city&quot;: concatenate(country, &quot;, &quot;, city).
+            &quot;dimensionNames&quot;: [ # Names of dimensions. The names must refer back to names in the dimensions field of the request.
+              &quot;A String&quot;,
             ],
+            &quot;delimiter&quot;: &quot;A String&quot;, # The delimiter placed between dimension names. Delimiters are often single characters such as &quot;|&quot; or &quot;,&quot; 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 = &quot;US,FR&quot;, dimension 2 value = &quot;JP&quot;, and delimiter = &quot;,&quot;, then the response will contain &quot;US,FR,JP&quot;.
           },
         },
-      ],
-    },
-  ],
-  &quot;cohortSpec&quot;: { # Specification for a cohort report. # Cohort group associated with this request. If there is a cohort group in the request the &#x27;cohort&#x27; dimension must be present.
-    &quot;cohortReportSettings&quot;: { # Settings of a cohort report. # Settings of a cohort report.
-      &quot;accumulate&quot;: True or False, # If true, accumulates the result from first visit day to the end day. Not supported in `RunReportRequest`.
-    },
-    &quot;cohorts&quot;: [ # The definition for the cohorts.
-      { # 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.
-        &quot;name&quot;: &quot;A String&quot;, # Assigns a name to this cohort. The dimension `cohort` is valued to this name in a report response. If set, cannot begin with `cohort_` or `RESERVED_`. If not set, cohorts are named by their zero based index `cohort_0`, `cohort_1`, etc.
-        &quot;dimension&quot;: &quot;A String&quot;, # The dimension used by cohort. Only supports `firstTouchDate` for retention report.
-        &quot;dateRange&quot;: { # A contiguous set of days: startDate, startDate + 1, ..., endDate. Requests are allowed up to 4 date ranges. # The cohort selects users whose first visit date is between start date and end date defined in the `dateRange`. In a cohort request, this `dateRange` is required and the `dateRanges` in the `RunReportRequest` or `RunPivotReportRequest` must be unspecified. The date range should be aligned with the cohort&#x27;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.
-          &quot;name&quot;: &quot;A String&quot;, # 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.
-          &quot;startDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
-          &quot;endDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
-        },
       },
     ],
-    &quot;cohortsRange&quot;: { # Describes date range for a cohort report. # The data ranges of cohorts.
-      &quot;startOffset&quot;: 42, # For daily cohorts, this will be the start day offset. For weekly cohorts, this will be the week offset.
-      &quot;endOffset&quot;: 42, # For daily cohorts, this will be the end day offset. For weekly cohorts, this will be the week offset.
-      &quot;granularity&quot;: &quot;A String&quot;, # Reporting date range for each cohort is calculated based on these three fields.
+    &quot;metrics&quot;: [ # 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.
+      { # The quantitative measurements of a report. For example, the metric `eventCount` is the total number of events. Requests are allowed up to 10 metrics.
+        &quot;name&quot;: &quot;A String&quot;, # The name of the metric. See the [API Metrics](https://developers.google.com/analytics/trusted-testing/analytics-data/api-schema#metrics) for the list of metric names. If `expression` is specified, `name` can be any string that you would like. For example if `expression` is `screenPageViews/sessions`, you could call that metric&#x27;s name = `viewsPerSession`. Metrics are referenced by `name` in `metricFilter`, `orderBys`, and metric `expression`.
+        &quot;expression&quot;: &quot;A String&quot;, # A mathematical expression for derived metrics. For example, the metric Event count per user is `eventCount/totalUsers`.
+        &quot;invisible&quot;: True or False, # Indicates if a metric is invisible in the report response. If a metric is invisible, the metric will not produce a column in the response, but can be used in `metricFilter`, `orderBys`, or a metric `expression`.
+      },
+    ],
+    &quot;dimensionFilter&quot;: { # To express dimension or metric filters. The fields in the same FilterExpression need to be either all dimensions or all metrics. # The filter clause of dimensions. Dimensions must be requested to be used in this filter. Metrics cannot be used in this filter.
+      &quot;notExpression&quot;: # Object with schema name: FilterExpression # The FilterExpression is NOT of not_expression.
+      &quot;filter&quot;: { # An expression to filter dimension or metric values. # A primitive filter. All fields in filter in same FilterExpression needs to be either all dimensions or metrics.
+        &quot;betweenFilter&quot;: { # To express that the result needs to be between two numbers (inclusive). # A filter for two values.
+          &quot;fromValue&quot;: { # To represent a number. # Begins with this number.
+            &quot;doubleValue&quot;: 3.14, # Double value
+            &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
+          },
+          &quot;toValue&quot;: { # To represent a number. # Ends with this number.
+            &quot;doubleValue&quot;: 3.14, # Double value
+            &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
+          },
+        },
+        &quot;numericFilter&quot;: { # Filters for numeric or date values. # A filter for numeric or date values.
+          &quot;value&quot;: { # To represent a number. # A numeric value or a date value.
+            &quot;doubleValue&quot;: 3.14, # Double value
+            &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
+          },
+          &quot;operation&quot;: &quot;A String&quot;, # The operation type for this filter.
+        },
+        &quot;nullFilter&quot;: True or False, # A filter for null values. If True, a null dimension value is matched by this filter. Null filter is commonly used inside a NOT filter expression. For example, a NOT expression of a null filter removes rows when a dimension is null.
+        &quot;stringFilter&quot;: { # The filter for string # Strings related filter.
+          &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
+          &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
+          &quot;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
+        },
+        &quot;inListFilter&quot;: { # The result needs to be in a list of string values. # A filter for in list values.
+          &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
+          &quot;values&quot;: [ # The list of string values. Must be non-empty.
+            &quot;A String&quot;,
+          ],
+        },
+        &quot;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in dimensions or metrics.
+      },
+      &quot;orGroup&quot;: { # A list of filter expressions. # The FilterExpressions in or_group have an OR relationship.
+        &quot;expressions&quot;: [ # A list of filter expressions.
+          # Object with schema name: FilterExpression
+        ],
+      },
+      &quot;andGroup&quot;: { # A list of filter expressions. # The FilterExpressions in and_group have an AND relationship.
+        &quot;expressions&quot;: [ # A list of filter expressions.
+          # Object with schema name: FilterExpression
+        ],
+      },
     },
-  },
-  &quot;metrics&quot;: [ # 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.
-    { # The quantitative measurements of a report. For example, the metric `eventCount` is the total number of events. Requests are allowed up to 10 metrics.
-      &quot;expression&quot;: &quot;A String&quot;, # A mathematical expression for derived metrics. For example, the metric Event count per user is `eventCount/totalUsers`.
-      &quot;name&quot;: &quot;A String&quot;, # The name of the metric. See the [API Metrics](https://developers.google.com/analytics/trusted-testing/analytics-data/api-schema#metrics) for the list of metric names. If `expression` is specified, `name` can be any string that you would like. For example if `expression` is `screenPageViews/sessions`, you could call that metric&#x27;s name = `viewsPerSession`. Metrics are referenced by `name` in `metricFilter`, `orderBys`, and metric `expression`.
-      &quot;invisible&quot;: True or False, # Indicates if a metric is invisible in the report response. If a metric is invisible, the metric will not produce a column in the response, but can be used in `metricFilter`, `orderBys`, or a metric `expression`.
+    &quot;cohortSpec&quot;: { # Specification for a cohort report. # Cohort group associated with this request. If there is a cohort group in the request the &#x27;cohort&#x27; dimension must be present.
+      &quot;cohorts&quot;: [ # The definition for the cohorts.
+        { # 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.
+          &quot;name&quot;: &quot;A String&quot;, # Assigns a name to this cohort. The dimension `cohort` is valued to this name in a report response. If set, cannot begin with `cohort_` or `RESERVED_`. If not set, cohorts are named by their zero based index `cohort_0`, `cohort_1`, etc.
+          &quot;dateRange&quot;: { # A contiguous set of days: startDate, startDate + 1, ..., endDate. Requests are allowed up to 4 date ranges. # The cohort selects users whose first visit date is between start date and end date defined in the `dateRange`. In a cohort request, this `dateRange` is required and the `dateRanges` in the `RunReportRequest` or `RunPivotReportRequest` must be unspecified. The date range should be aligned with the cohort&#x27;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.
+            &quot;startDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
+            &quot;endDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
+            &quot;name&quot;: &quot;A String&quot;, # 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.
+          },
+          &quot;dimension&quot;: &quot;A String&quot;, # The dimension used by cohort. Only supports `firstTouchDate` for retention report.
+        },
+      ],
+      &quot;cohortsRange&quot;: { # Describes date range for a cohort report. # The data ranges of cohorts.
+        &quot;granularity&quot;: &quot;A String&quot;, # Reporting date range for each cohort is calculated based on these three fields.
+        &quot;startOffset&quot;: 42, # For daily cohorts, this will be the start day offset. For weekly cohorts, this will be the week offset.
+        &quot;endOffset&quot;: 42, # For daily cohorts, this will be the end day offset. For weekly cohorts, this will be the week offset.
+      },
+      &quot;cohortReportSettings&quot;: { # Settings of a cohort report. # Settings of a cohort report.
+        &quot;accumulate&quot;: True or False, # If true, accumulates the result from first visit day to the end day. Not supported in `RunReportRequest`.
+      },
     },
-  ],
-  &quot;keepEmptyRows&quot;: True or False, # If false or unspecified, each row with all metrics equal to 0 will not be returned. If true, these rows will be returned if they are not separately removed by a filter.
-  &quot;currencyCode&quot;: &quot;A String&quot;, # A currency code in ISO4217 format, such as &quot;AED&quot;, &quot;USD&quot;, &quot;JPY&quot;. If the field is empty, the report uses the entity&#x27;s default currency.
-}
+    &quot;pivots&quot;: [ # Describes the visual format of the report&#x27;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.
+      { # Describes the visible dimension columns and rows in the report response.
+        &quot;fieldNames&quot;: [ # Dimension names for visible columns in the report response. Including &quot;dateRange&quot; 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.
+          &quot;A String&quot;,
+        ],
+        &quot;metricAggregations&quot;: [ # Aggregate the metrics by dimensions in this pivot using the specified metric_aggregations.
+          &quot;A String&quot;,
+        ],
+        &quot;orderBys&quot;: [ # Specifies how dimensions are ordered in the pivot. In the first Pivot, the OrderBys determine Row and PivotDimensionHeader ordering; in subsequent Pivots, the OrderBys determine only PivotDimensionHeader ordering. Dimensions specified in these OrderBys must be a subset of Pivot.field_names.
+          { # The sort options.
+            &quot;metric&quot;: { # Sorts by metric values. # Sorts results by a metric&#x27;s values.
+              &quot;metricName&quot;: &quot;A String&quot;, # A metric name in the request to order by.
+            },
+            &quot;pivot&quot;: { # Sorts by a pivot column group. # Sorts results by a metric&#x27;s values within a pivot column group.
+              &quot;metricName&quot;: &quot;A String&quot;, # In the response to order by, order rows by this column. Must be a metric name from the request.
+              &quot;pivotSelections&quot;: [ # 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&#x27;s dimension name and value pair.
+                { # A pair of dimension names and values. Rows with this dimension pivot pair are ordered by the metric&#x27;s value. For example if pivots = {{&quot;browser&quot;, &quot;Chrome&quot;}} and metric_name = &quot;Sessions&quot;, 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 ---------|----------|----------------|----------|----------------
+                  &quot;dimensionName&quot;: &quot;A String&quot;, # Must be a dimension name from the request.
+                  &quot;dimensionValue&quot;: &quot;A String&quot;, # Order by only when the named dimension is this value.
+                },
+              ],
+            },
+            &quot;desc&quot;: True or False, # If true, sorts by descending order.
+            &quot;dimension&quot;: { # Sorts by dimension values. # Sorts results by a dimension&#x27;s values.
+              &quot;dimensionName&quot;: &quot;A String&quot;, # A dimension name in the request to order by.
+              &quot;orderType&quot;: &quot;A String&quot;, # Controls the rule for dimension value ordering.
+            },
+          },
+        ],
+        &quot;limit&quot;: &quot;A String&quot;, # The number of rows to return in this pivot. If unspecified, 10 rows are returned. If -1, all rows are returned.
+        &quot;offset&quot;: &quot;A String&quot;, # The row count of the start row. The first row is counted as row 0.
+      },
+    ],
+    &quot;entity&quot;: { # The unique identifier of the property whose events are tracked. # A property whose events are tracked. Within a batch request, this entity should either be unspecified or consistent with the batch-level entity.
+      &quot;propertyId&quot;: &quot;A String&quot;, # A Google Analytics GA4 property id. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/trusted-testing/analytics-data/property-id).
+    },
+    &quot;returnPropertyQuota&quot;: True or False, # Toggles whether to return the current state of this Analytics Property&#x27;s quota. Quota is returned in [PropertyQuota](#PropertyQuota).
+    &quot;dateRanges&quot;: [ # 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 &quot;dateRange&quot; can be included in a Pivot&#x27;s field names; if included, the report compares between date ranges. In a cohort request, this `dateRanges` must be unspecified.
+      { # A contiguous set of days: startDate, startDate + 1, ..., endDate. Requests are allowed up to 4 date ranges.
+        &quot;startDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
+        &quot;endDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
+        &quot;name&quot;: &quot;A String&quot;, # 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.
+      },
+    ],
+    &quot;metricFilter&quot;: { # To express dimension or metric filters. The fields in the same FilterExpression need to be either all dimensions or all metrics. # The filter clause of metrics. Applied at post aggregation phase, similar to SQL having-clause. Metrics must be requested to be used in this filter. Dimensions cannot be used in this filter.
+      &quot;notExpression&quot;: # Object with schema name: FilterExpression # The FilterExpression is NOT of not_expression.
+      &quot;filter&quot;: { # An expression to filter dimension or metric values. # A primitive filter. All fields in filter in same FilterExpression needs to be either all dimensions or metrics.
+        &quot;betweenFilter&quot;: { # To express that the result needs to be between two numbers (inclusive). # A filter for two values.
+          &quot;fromValue&quot;: { # To represent a number. # Begins with this number.
+            &quot;doubleValue&quot;: 3.14, # Double value
+            &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
+          },
+          &quot;toValue&quot;: { # To represent a number. # Ends with this number.
+            &quot;doubleValue&quot;: 3.14, # Double value
+            &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
+          },
+        },
+        &quot;numericFilter&quot;: { # Filters for numeric or date values. # A filter for numeric or date values.
+          &quot;value&quot;: { # To represent a number. # A numeric value or a date value.
+            &quot;doubleValue&quot;: 3.14, # Double value
+            &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
+          },
+          &quot;operation&quot;: &quot;A String&quot;, # The operation type for this filter.
+        },
+        &quot;nullFilter&quot;: True or False, # A filter for null values. If True, a null dimension value is matched by this filter. Null filter is commonly used inside a NOT filter expression. For example, a NOT expression of a null filter removes rows when a dimension is null.
+        &quot;stringFilter&quot;: { # The filter for string # Strings related filter.
+          &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
+          &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
+          &quot;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
+        },
+        &quot;inListFilter&quot;: { # The result needs to be in a list of string values. # A filter for in list values.
+          &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
+          &quot;values&quot;: [ # The list of string values. Must be non-empty.
+            &quot;A String&quot;,
+          ],
+        },
+        &quot;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in dimensions or metrics.
+      },
+      &quot;orGroup&quot;: { # A list of filter expressions. # The FilterExpressions in or_group have an OR relationship.
+        &quot;expressions&quot;: [ # A list of filter expressions.
+          # Object with schema name: FilterExpression
+        ],
+      },
+      &quot;andGroup&quot;: { # A list of filter expressions. # The FilterExpressions in and_group have an AND relationship.
+        &quot;expressions&quot;: [ # A list of filter expressions.
+          # Object with schema name: FilterExpression
+        ],
+      },
+    },
+    &quot;currencyCode&quot;: &quot;A String&quot;, # A currency code in ISO4217 format, such as &quot;AED&quot;, &quot;USD&quot;, &quot;JPY&quot;. If the field is empty, the report uses the entity&#x27;s default currency.
+  }
 
   x__xgafv: string, V1 error format.
     Allowed values
@@ -888,32 +888,47 @@
   An object of the form:
 
     { # The response pivot report table corresponding to a pivot request.
+    &quot;rows&quot;: [ # Rows of dimension value combinations and metric values in the report.
+      { # Report data for each row. For example if RunReportRequest contains: ```none &quot;dimensions&quot;: [ { &quot;name&quot;: &quot;eventName&quot; }, { &quot;name&quot;: &quot;countryId&quot; } ], &quot;metrics&quot;: [ { &quot;name&quot;: &quot;eventCount&quot; } ] ``` One row with &#x27;in_app_purchase&#x27; as the eventName, &#x27;JP&#x27; as the countryId, and 15 as the eventCount, would be: ```none &quot;dimensionValues&quot;: [ { &quot;value&quot;: &quot;in_app_purchase&quot; }, { &quot;value&quot;: &quot;JP&quot; } ], &quot;metricValues&quot;: [ { &quot;value&quot;: &quot;15&quot; } ] ```
+        &quot;metricValues&quot;: [ # List of requested visible metric values.
+          { # The value of a metric.
+            &quot;value&quot;: &quot;A String&quot;, # Measurement value. See MetricHeader for type.
+          },
+        ],
+        &quot;dimensionValues&quot;: [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
+          { # The value of a dimension.
+            &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
+          },
+        ],
+      },
+    ],
     &quot;dimensionHeaders&quot;: [ # Describes dimension columns. The number of DimensionHeaders and ordering of DimensionHeaders matches the dimensions present in rows.
       { # Describes a dimension column in the report. Dimensions requested in a report produce column entries within rows and DimensionHeaders. However, dimensions used exclusively within filters or expressions do not produce columns in a report; correspondingly, those dimensions do not produce headers.
         &quot;name&quot;: &quot;A String&quot;, # The dimension&#x27;s name.
       },
     ],
-    &quot;propertyQuota&quot;: { # 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. # This Analytics Property&#x27;s quota state including this request.
-      &quot;tokensPerHour&quot;: { # Current state for a particular quota group. # Standard Analytics Properties can use up to 5,000 tokens per day; Analytics 360 Properties can use 50,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.
-        &quot;consumed&quot;: 42, # Quota consumed by this request.
-        &quot;remaining&quot;: 42, # Quota remaining after this request.
+    &quot;aggregates&quot;: [ # 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 &quot;RESERVED_&quot;.
+      { # Report data for each row. For example if RunReportRequest contains: ```none &quot;dimensions&quot;: [ { &quot;name&quot;: &quot;eventName&quot; }, { &quot;name&quot;: &quot;countryId&quot; } ], &quot;metrics&quot;: [ { &quot;name&quot;: &quot;eventCount&quot; } ] ``` One row with &#x27;in_app_purchase&#x27; as the eventName, &#x27;JP&#x27; as the countryId, and 15 as the eventCount, would be: ```none &quot;dimensionValues&quot;: [ { &quot;value&quot;: &quot;in_app_purchase&quot; }, { &quot;value&quot;: &quot;JP&quot; } ], &quot;metricValues&quot;: [ { &quot;value&quot;: &quot;15&quot; } ] ```
+        &quot;metricValues&quot;: [ # List of requested visible metric values.
+          { # The value of a metric.
+            &quot;value&quot;: &quot;A String&quot;, # Measurement value. See MetricHeader for type.
+          },
+        ],
+        &quot;dimensionValues&quot;: [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
+          { # The value of a dimension.
+            &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
+          },
+        ],
       },
-      &quot;tokensPerDay&quot;: { # Current state for a particular quota group. # Standard Analytics Properties can use up to 25,000 tokens per day; Analytics 360 Properties can use 250,000 tokens per day. Most requests consume fewer than 10 tokens.
-        &quot;consumed&quot;: 42, # Quota consumed by this request.
-        &quot;remaining&quot;: 42, # Quota remaining after this request.
+    ],
+    &quot;metricHeaders&quot;: [ # Describes metric columns. The number of MetricHeaders and ordering of MetricHeaders matches the metrics present in rows.
+      { # Describes a metric column in the report. Visible metrics requested in a report produce column entries within rows and MetricHeaders. However, metrics used exclusively within filters or expressions do not produce columns in a report; correspondingly, those metrics do not produce headers.
+        &quot;name&quot;: &quot;A String&quot;, # The metric&#x27;s name.
+        &quot;type&quot;: &quot;A String&quot;, # The metric&#x27;s data type.
       },
-      &quot;serverErrorsPerProjectPerHour&quot;: { # Current state for a particular quota group. # Standard Analytics Properties and cloud project pairs can have up to 10 server errors per hour; Analytics 360 Properties and cloud project pairs can have up to 50 server errors per hour.
-        &quot;consumed&quot;: 42, # Quota consumed by this request.
-        &quot;remaining&quot;: 42, # Quota remaining after this request.
-      },
-      &quot;concurrentRequests&quot;: { # Current state for a particular quota group. # Standard Analytics Properties can send up to 10 concurrent requests; Analytics 360 Properties can use up to 50 concurrent requests.
-        &quot;consumed&quot;: 42, # Quota consumed by this request.
-        &quot;remaining&quot;: 42, # Quota remaining after this request.
-      },
-    },
+    ],
     &quot;pivotHeaders&quot;: [ # 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: &quot;pivots&quot;: [{ &quot;fieldNames&quot;: [&quot;country&quot;, &quot;city&quot;] }, { &quot;fieldNames&quot;: &quot;eventName&quot; }] We will have the following `pivotHeaders` in the response: &quot;pivotHeaders&quot; : [{ &quot;dimensionHeaders&quot;: [{ &quot;dimensionValues&quot;: [ { &quot;value&quot;: &quot;United Kingdom&quot; }, { &quot;value&quot;: &quot;London&quot; } ] }, { &quot;dimensionValues&quot;: [ { &quot;value&quot;: &quot;Japan&quot; }, { &quot;value&quot;: &quot;Osaka&quot; } ] }] }, { &quot;dimensionHeaders&quot;: [{ &quot;dimensionValues&quot;: [{ &quot;value&quot;: &quot;session_start&quot; }] }, { &quot;dimensionValues&quot;: [{ &quot;value&quot;: &quot;scroll&quot; }] }] }]
       { # Dimensions&#x27; values in a single pivot.
-        &quot;rowCount&quot;: 42, # The cardinality of the pivot as if offset = 0 and limit = -1. The total number of rows for this pivot&#x27;s fields regardless of how the parameters offset and limit are specified in the request.
         &quot;pivotDimensionHeaders&quot;: [ # The size is the same as the cardinality of the corresponding dimension combinations.
           { # Summarizes dimension values from a row for this pivot.
             &quot;dimensionValues&quot;: [ # Values of multiple dimensions in a pivot.
@@ -923,45 +938,30 @@
             ],
           },
         ],
-      },
-    ],
-    &quot;rows&quot;: [ # Rows of dimension value combinations and metric values in the report.
-      { # Report data for each row. For example if RunReportRequest contains: ```none &quot;dimensions&quot;: [ { &quot;name&quot;: &quot;eventName&quot; }, { &quot;name&quot;: &quot;countryId&quot; } ], &quot;metrics&quot;: [ { &quot;name&quot;: &quot;eventCount&quot; } ] ``` One row with &#x27;in_app_purchase&#x27; as the eventName, &#x27;JP&#x27; as the countryId, and 15 as the eventCount, would be: ```none &quot;dimensionValues&quot;: [ { &quot;value&quot;: &quot;in_app_purchase&quot; }, { &quot;value&quot;: &quot;JP&quot; } ], &quot;metricValues&quot;: [ { &quot;value&quot;: &quot;15&quot; } ] ```
-        &quot;dimensionValues&quot;: [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
-          { # The value of a dimension.
-            &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
-          },
-        ],
-        &quot;metricValues&quot;: [ # List of requested visible metric values.
-          { # The value of a metric.
-            &quot;value&quot;: &quot;A String&quot;, # Measurement value. See MetricHeader for type.
-          },
-        ],
+        &quot;rowCount&quot;: 42, # The cardinality of the pivot as if offset = 0 and limit = -1. The total number of rows for this pivot&#x27;s fields regardless of how the parameters offset and limit are specified in the request.
       },
     ],
     &quot;metadata&quot;: { # Response&#x27;s metadata carrying additional information about the report content. # Metadata for the report.
       &quot;dataLossFromOtherRow&quot;: True or False, # If true, indicates some buckets of dimension combinations are rolled into &quot;(other)&quot; row. This can happen for high cardinality reports.
     },
-    &quot;aggregates&quot;: [ # 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 &quot;RESERVED_&quot;.
-      { # Report data for each row. For example if RunReportRequest contains: ```none &quot;dimensions&quot;: [ { &quot;name&quot;: &quot;eventName&quot; }, { &quot;name&quot;: &quot;countryId&quot; } ], &quot;metrics&quot;: [ { &quot;name&quot;: &quot;eventCount&quot; } ] ``` One row with &#x27;in_app_purchase&#x27; as the eventName, &#x27;JP&#x27; as the countryId, and 15 as the eventCount, would be: ```none &quot;dimensionValues&quot;: [ { &quot;value&quot;: &quot;in_app_purchase&quot; }, { &quot;value&quot;: &quot;JP&quot; } ], &quot;metricValues&quot;: [ { &quot;value&quot;: &quot;15&quot; } ] ```
-        &quot;dimensionValues&quot;: [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
-          { # The value of a dimension.
-            &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
-          },
-        ],
-        &quot;metricValues&quot;: [ # List of requested visible metric values.
-          { # The value of a metric.
-            &quot;value&quot;: &quot;A String&quot;, # Measurement value. See MetricHeader for type.
-          },
-        ],
+    &quot;propertyQuota&quot;: { # 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. # This Analytics Property&#x27;s quota state including this request.
+      &quot;tokensPerHour&quot;: { # Current state for a particular quota group. # Standard Analytics Properties can use up to 5,000 tokens per day; Analytics 360 Properties can use 50,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.
+        &quot;consumed&quot;: 42, # Quota consumed by this request.
+        &quot;remaining&quot;: 42, # Quota remaining after this request.
       },
-    ],
-    &quot;metricHeaders&quot;: [ # Describes metric columns. The number of MetricHeaders and ordering of MetricHeaders matches the metrics present in rows.
-      { # Describes a metric column in the report. Visible metrics requested in a report produce column entries within rows and MetricHeaders. However, metrics used exclusively within filters or expressions do not produce columns in a report; correspondingly, those metrics do not produce headers.
-        &quot;type&quot;: &quot;A String&quot;, # The metric&#x27;s data type.
-        &quot;name&quot;: &quot;A String&quot;, # The metric&#x27;s name.
+      &quot;concurrentRequests&quot;: { # Current state for a particular quota group. # Standard Analytics Properties can send up to 10 concurrent requests; Analytics 360 Properties can use up to 50 concurrent requests.
+        &quot;consumed&quot;: 42, # Quota consumed by this request.
+        &quot;remaining&quot;: 42, # Quota remaining after this request.
       },
-    ],
+      &quot;serverErrorsPerProjectPerHour&quot;: { # Current state for a particular quota group. # Standard Analytics Properties and cloud project pairs can have up to 10 server errors per hour; Analytics 360 Properties and cloud project pairs can have up to 50 server errors per hour.
+        &quot;consumed&quot;: 42, # Quota consumed by this request.
+        &quot;remaining&quot;: 42, # Quota remaining after this request.
+      },
+      &quot;tokensPerDay&quot;: { # Current state for a particular quota group. # Standard Analytics Properties can use up to 25,000 tokens per day; Analytics 360 Properties can use 250,000 tokens per day. Most requests consume fewer than 10 tokens.
+        &quot;consumed&quot;: 42, # Quota consumed by this request.
+        &quot;remaining&quot;: 42, # Quota remaining after this request.
+      },
+    },
   }</pre>
 </div>
 
@@ -974,183 +974,183 @@
     The object takes the form of:
 
 { # The request to generate a report.
-  &quot;limit&quot;: &quot;A String&quot;, # The number of rows to return. If unspecified, 10 rows are returned. If -1, all rows are returned. To learn more about this pagination parameter, see [Pagination](basics#pagination).
-  &quot;dateRanges&quot;: [ # 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. In a cohort request, this `dateRanges` must be unspecified.
-    { # A contiguous set of days: startDate, startDate + 1, ..., endDate. Requests are allowed up to 4 date ranges.
-      &quot;name&quot;: &quot;A String&quot;, # 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.
-      &quot;startDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
-      &quot;endDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
-    },
-  ],
-  &quot;keepEmptyRows&quot;: True or False, # If false or unspecified, each row with all metrics equal to 0 will not be returned. If true, these rows will be returned if they are not separately removed by a filter.
-  &quot;offset&quot;: &quot;A String&quot;, # The row count of the start row. The first row is counted as row 0. To learn more about this pagination parameter, see [Pagination](basics#pagination).
-  &quot;dimensionFilter&quot;: { # To express dimension or metric filters. The fields in the same FilterExpression need to be either all dimensions or all metrics. # The filter clause of dimensions. Dimensions must be requested to be used in this filter. Metrics cannot be used in this filter.
-    &quot;notExpression&quot;: # Object with schema name: FilterExpression # The FilterExpression is NOT of not_expression.
-    &quot;orGroup&quot;: { # A list of filter expressions. # The FilterExpressions in or_group have an OR relationship.
-      &quot;expressions&quot;: [ # A list of filter expressions.
-        # Object with schema name: FilterExpression
-      ],
-    },
-    &quot;filter&quot;: { # An expression to filter dimension or metric values. # A primitive filter. All fields in filter in same FilterExpression needs to be either all dimensions or metrics.
-      &quot;inListFilter&quot;: { # The result needs to be in a list of string values. # A filter for in list values.
-        &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
-        &quot;values&quot;: [ # The list of string values. Must be non-empty.
-          &quot;A String&quot;,
+    &quot;dateRanges&quot;: [ # 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. In a cohort request, this `dateRanges` must be unspecified.
+      { # A contiguous set of days: startDate, startDate + 1, ..., endDate. Requests are allowed up to 4 date ranges.
+        &quot;startDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
+        &quot;endDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
+        &quot;name&quot;: &quot;A String&quot;, # 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.
+      },
+    ],
+    &quot;metricFilter&quot;: { # To express dimension or metric filters. The fields in the same FilterExpression need to be either all dimensions or all metrics. # The filter clause of metrics. Applied at post aggregation phase, similar to SQL having-clause. Metrics must be requested to be used in this filter. Dimensions cannot be used in this filter.
+      &quot;notExpression&quot;: # Object with schema name: FilterExpression # The FilterExpression is NOT of not_expression.
+      &quot;filter&quot;: { # An expression to filter dimension or metric values. # A primitive filter. All fields in filter in same FilterExpression needs to be either all dimensions or metrics.
+        &quot;betweenFilter&quot;: { # To express that the result needs to be between two numbers (inclusive). # A filter for two values.
+          &quot;fromValue&quot;: { # To represent a number. # Begins with this number.
+            &quot;doubleValue&quot;: 3.14, # Double value
+            &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
+          },
+          &quot;toValue&quot;: { # To represent a number. # Ends with this number.
+            &quot;doubleValue&quot;: 3.14, # Double value
+            &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
+          },
+        },
+        &quot;numericFilter&quot;: { # Filters for numeric or date values. # A filter for numeric or date values.
+          &quot;value&quot;: { # To represent a number. # A numeric value or a date value.
+            &quot;doubleValue&quot;: 3.14, # Double value
+            &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
+          },
+          &quot;operation&quot;: &quot;A String&quot;, # The operation type for this filter.
+        },
+        &quot;nullFilter&quot;: True or False, # A filter for null values. If True, a null dimension value is matched by this filter. Null filter is commonly used inside a NOT filter expression. For example, a NOT expression of a null filter removes rows when a dimension is null.
+        &quot;stringFilter&quot;: { # The filter for string # Strings related filter.
+          &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
+          &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
+          &quot;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
+        },
+        &quot;inListFilter&quot;: { # The result needs to be in a list of string values. # A filter for in list values.
+          &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
+          &quot;values&quot;: [ # The list of string values. Must be non-empty.
+            &quot;A String&quot;,
+          ],
+        },
+        &quot;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in dimensions or metrics.
+      },
+      &quot;orGroup&quot;: { # A list of filter expressions. # The FilterExpressions in or_group have an OR relationship.
+        &quot;expressions&quot;: [ # A list of filter expressions.
+          # Object with schema name: FilterExpression
         ],
       },
-      &quot;betweenFilter&quot;: { # To express that the result needs to be between two numbers (inclusive). # A filter for two values.
-        &quot;toValue&quot;: { # To represent a number. # Ends with this number.
-          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
-          &quot;doubleValue&quot;: 3.14, # Double value
-        },
-        &quot;fromValue&quot;: { # To represent a number. # Begins with this number.
-          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
-          &quot;doubleValue&quot;: 3.14, # Double value
-        },
+      &quot;andGroup&quot;: { # A list of filter expressions. # The FilterExpressions in and_group have an AND relationship.
+        &quot;expressions&quot;: [ # A list of filter expressions.
+          # Object with schema name: FilterExpression
+        ],
       },
-      &quot;stringFilter&quot;: { # The filter for string # Strings related filter.
-        &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
-        &quot;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
-        &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
-      },
-      &quot;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in dimensions or metrics.
-      &quot;numericFilter&quot;: { # Filters for numeric or date values. # A filter for numeric or date values.
-        &quot;operation&quot;: &quot;A String&quot;, # The operation type for this filter.
-        &quot;value&quot;: { # To represent a number. # A numeric value or a date value.
-          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
-          &quot;doubleValue&quot;: 3.14, # Double value
+    },
+    &quot;offset&quot;: &quot;A String&quot;, # The row count of the start row. The first row is counted as row 0. To learn more about this pagination parameter, see [Pagination](https://developers.google.com/analytics/devguides/reporting/data/v1/basics#pagination).
+    &quot;currencyCode&quot;: &quot;A String&quot;, # A currency code in ISO4217 format, such as &quot;AED&quot;, &quot;USD&quot;, &quot;JPY&quot;. If the field is empty, the report uses the entity&#x27;s default currency.
+    &quot;dimensionFilter&quot;: { # To express dimension or metric filters. The fields in the same FilterExpression need to be either all dimensions or all metrics. # The filter clause of dimensions. Dimensions must be requested to be used in this filter. Metrics cannot be used in this filter.
+      &quot;notExpression&quot;: # Object with schema name: FilterExpression # The FilterExpression is NOT of not_expression.
+      &quot;filter&quot;: { # An expression to filter dimension or metric values. # A primitive filter. All fields in filter in same FilterExpression needs to be either all dimensions or metrics.
+        &quot;betweenFilter&quot;: { # To express that the result needs to be between two numbers (inclusive). # A filter for two values.
+          &quot;fromValue&quot;: { # To represent a number. # Begins with this number.
+            &quot;doubleValue&quot;: 3.14, # Double value
+            &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
+          },
+          &quot;toValue&quot;: { # To represent a number. # Ends with this number.
+            &quot;doubleValue&quot;: 3.14, # Double value
+            &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
+          },
         },
+        &quot;numericFilter&quot;: { # Filters for numeric or date values. # A filter for numeric or date values.
+          &quot;value&quot;: { # To represent a number. # A numeric value or a date value.
+            &quot;doubleValue&quot;: 3.14, # Double value
+            &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
+          },
+          &quot;operation&quot;: &quot;A String&quot;, # The operation type for this filter.
+        },
+        &quot;nullFilter&quot;: True or False, # A filter for null values. If True, a null dimension value is matched by this filter. Null filter is commonly used inside a NOT filter expression. For example, a NOT expression of a null filter removes rows when a dimension is null.
+        &quot;stringFilter&quot;: { # The filter for string # Strings related filter.
+          &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
+          &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
+          &quot;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
+        },
+        &quot;inListFilter&quot;: { # The result needs to be in a list of string values. # A filter for in list values.
+          &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
+          &quot;values&quot;: [ # The list of string values. Must be non-empty.
+            &quot;A String&quot;,
+          ],
+        },
+        &quot;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in dimensions or metrics.
       },
-      &quot;nullFilter&quot;: True or False, # A filter for null values. If True, a null dimension value is matched by this filter. Null filter is commonly used inside a NOT filter expression. For example, a NOT expression of a null filter removes rows when a dimension is null.
+      &quot;orGroup&quot;: { # A list of filter expressions. # The FilterExpressions in or_group have an OR relationship.
+        &quot;expressions&quot;: [ # A list of filter expressions.
+          # Object with schema name: FilterExpression
+        ],
+      },
+      &quot;andGroup&quot;: { # A list of filter expressions. # The FilterExpressions in and_group have an AND relationship.
+        &quot;expressions&quot;: [ # A list of filter expressions.
+          # Object with schema name: FilterExpression
+        ],
+      },
     },
-    &quot;andGroup&quot;: { # A list of filter expressions. # The FilterExpressions in and_group have an AND relationship.
-      &quot;expressions&quot;: [ # A list of filter expressions.
-        # Object with schema name: FilterExpression
-      ],
-    },
-  },
-  &quot;metricAggregations&quot;: [ # Aggregation of metrics. Aggregated metric values will be shown in rows where the dimension_values are set to &quot;RESERVED_(MetricAggregation)&quot;.
-    &quot;A String&quot;,
-  ],
-  &quot;cohortSpec&quot;: { # Specification for a cohort report. # Cohort group associated with this request. If there is a cohort group in the request the &#x27;cohort&#x27; dimension must be present.
-    &quot;cohortReportSettings&quot;: { # Settings of a cohort report. # Settings of a cohort report.
-      &quot;accumulate&quot;: True or False, # If true, accumulates the result from first visit day to the end day. Not supported in `RunReportRequest`.
-    },
-    &quot;cohorts&quot;: [ # The definition for the cohorts.
-      { # 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.
-        &quot;name&quot;: &quot;A String&quot;, # Assigns a name to this cohort. The dimension `cohort` is valued to this name in a report response. If set, cannot begin with `cohort_` or `RESERVED_`. If not set, cohorts are named by their zero based index `cohort_0`, `cohort_1`, etc.
-        &quot;dimension&quot;: &quot;A String&quot;, # The dimension used by cohort. Only supports `firstTouchDate` for retention report.
-        &quot;dateRange&quot;: { # A contiguous set of days: startDate, startDate + 1, ..., endDate. Requests are allowed up to 4 date ranges. # The cohort selects users whose first visit date is between start date and end date defined in the `dateRange`. In a cohort request, this `dateRange` is required and the `dateRanges` in the `RunReportRequest` or `RunPivotReportRequest` must be unspecified. The date range should be aligned with the cohort&#x27;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.
-          &quot;name&quot;: &quot;A String&quot;, # 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.
-          &quot;startDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
-          &quot;endDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
+    &quot;returnPropertyQuota&quot;: True or False, # Toggles whether to return the current state of this Analytics Property&#x27;s quota. Quota is returned in [PropertyQuota](#PropertyQuota).
+    &quot;metrics&quot;: [ # The metrics requested and displayed.
+      { # The quantitative measurements of a report. For example, the metric `eventCount` is the total number of events. Requests are allowed up to 10 metrics.
+        &quot;name&quot;: &quot;A String&quot;, # The name of the metric. See the [API Metrics](https://developers.google.com/analytics/trusted-testing/analytics-data/api-schema#metrics) for the list of metric names. If `expression` is specified, `name` can be any string that you would like. For example if `expression` is `screenPageViews/sessions`, you could call that metric&#x27;s name = `viewsPerSession`. Metrics are referenced by `name` in `metricFilter`, `orderBys`, and metric `expression`.
+        &quot;expression&quot;: &quot;A String&quot;, # A mathematical expression for derived metrics. For example, the metric Event count per user is `eventCount/totalUsers`.
+        &quot;invisible&quot;: True or False, # Indicates if a metric is invisible in the report response. If a metric is invisible, the metric will not produce a column in the response, but can be used in `metricFilter`, `orderBys`, or a metric `expression`.
+      },
+    ],
+    &quot;keepEmptyRows&quot;: True or False, # If false or unspecified, each row with all metrics equal to 0 will not be returned. If true, these rows will be returned if they are not separately removed by a filter.
+    &quot;orderBys&quot;: [ # Specifies how rows are ordered in the response.
+      { # The sort options.
+        &quot;metric&quot;: { # Sorts by metric values. # Sorts results by a metric&#x27;s values.
+          &quot;metricName&quot;: &quot;A String&quot;, # A metric name in the request to order by.
+        },
+        &quot;pivot&quot;: { # Sorts by a pivot column group. # Sorts results by a metric&#x27;s values within a pivot column group.
+          &quot;metricName&quot;: &quot;A String&quot;, # In the response to order by, order rows by this column. Must be a metric name from the request.
+          &quot;pivotSelections&quot;: [ # 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&#x27;s dimension name and value pair.
+            { # A pair of dimension names and values. Rows with this dimension pivot pair are ordered by the metric&#x27;s value. For example if pivots = {{&quot;browser&quot;, &quot;Chrome&quot;}} and metric_name = &quot;Sessions&quot;, 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 ---------|----------|----------------|----------|----------------
+              &quot;dimensionName&quot;: &quot;A String&quot;, # Must be a dimension name from the request.
+              &quot;dimensionValue&quot;: &quot;A String&quot;, # Order by only when the named dimension is this value.
+            },
+          ],
+        },
+        &quot;desc&quot;: True or False, # If true, sorts by descending order.
+        &quot;dimension&quot;: { # Sorts by dimension values. # Sorts results by a dimension&#x27;s values.
+          &quot;dimensionName&quot;: &quot;A String&quot;, # A dimension name in the request to order by.
+          &quot;orderType&quot;: &quot;A String&quot;, # Controls the rule for dimension value ordering.
         },
       },
     ],
-    &quot;cohortsRange&quot;: { # Describes date range for a cohort report. # The data ranges of cohorts.
-      &quot;startOffset&quot;: 42, # For daily cohorts, this will be the start day offset. For weekly cohorts, this will be the week offset.
-      &quot;endOffset&quot;: 42, # For daily cohorts, this will be the end day offset. For weekly cohorts, this will be the week offset.
-      &quot;granularity&quot;: &quot;A String&quot;, # Reporting date range for each cohort is calculated based on these three fields.
-    },
-  },
-  &quot;metricFilter&quot;: { # To express dimension or metric filters. The fields in the same FilterExpression need to be either all dimensions or all metrics. # The filter clause of metrics. Applied at post aggregation phase, similar to SQL having-clause. Metrics must be requested to be used in this filter. Dimensions cannot be used in this filter.
-    &quot;notExpression&quot;: # Object with schema name: FilterExpression # The FilterExpression is NOT of not_expression.
-    &quot;orGroup&quot;: { # A list of filter expressions. # The FilterExpressions in or_group have an OR relationship.
-      &quot;expressions&quot;: [ # A list of filter expressions.
-        # Object with schema name: FilterExpression
-      ],
-    },
-    &quot;filter&quot;: { # An expression to filter dimension or metric values. # A primitive filter. All fields in filter in same FilterExpression needs to be either all dimensions or metrics.
-      &quot;inListFilter&quot;: { # The result needs to be in a list of string values. # A filter for in list values.
-        &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
-        &quot;values&quot;: [ # The list of string values. Must be non-empty.
-          &quot;A String&quot;,
-        ],
-      },
-      &quot;betweenFilter&quot;: { # To express that the result needs to be between two numbers (inclusive). # A filter for two values.
-        &quot;toValue&quot;: { # To represent a number. # Ends with this number.
-          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
-          &quot;doubleValue&quot;: 3.14, # Double value
-        },
-        &quot;fromValue&quot;: { # To represent a number. # Begins with this number.
-          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
-          &quot;doubleValue&quot;: 3.14, # Double value
-        },
-      },
-      &quot;stringFilter&quot;: { # The filter for string # Strings related filter.
-        &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
-        &quot;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
-        &quot;caseSensitive&quot;: True or False, # If true, the string value is case sensitive.
-      },
-      &quot;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in dimensions or metrics.
-      &quot;numericFilter&quot;: { # Filters for numeric or date values. # A filter for numeric or date values.
-        &quot;operation&quot;: &quot;A String&quot;, # The operation type for this filter.
-        &quot;value&quot;: { # To represent a number. # A numeric value or a date value.
-          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
-          &quot;doubleValue&quot;: 3.14, # Double value
-        },
-      },
-      &quot;nullFilter&quot;: True or False, # A filter for null values. If True, a null dimension value is matched by this filter. Null filter is commonly used inside a NOT filter expression. For example, a NOT expression of a null filter removes rows when a dimension is null.
-    },
-    &quot;andGroup&quot;: { # A list of filter expressions. # The FilterExpressions in and_group have an AND relationship.
-      &quot;expressions&quot;: [ # A list of filter expressions.
-        # Object with schema name: FilterExpression
-      ],
-    },
-  },
-  &quot;dimensions&quot;: [ # The dimensions requested and displayed.
-    { # Dimensions are attributes of your data. For example, the dimension city indicates the city from which an event originates. Dimension values in report responses are strings; for example, city could be &quot;Paris&quot; or &quot;New York&quot;. Requests are allowed up to 8 dimensions.
-      &quot;name&quot;: &quot;A String&quot;, # The name of the dimension. See the [API Dimensions](https://developers.google.com/analytics/trusted-testing/analytics-data/api-schema#dimensions) for the list of dimension names. If `dimensionExpression` is specified, `name` can be any string that you would like. For example if a `dimensionExpression` concatenates `country` and `city`, you could call that dimension `countryAndCity`. Dimensions are referenced by `name` in `dimensionFilter`, `orderBys`, `dimensionExpression`, and `pivots`.
-      &quot;dimensionExpression&quot;: { # 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). # One dimension can be the result of an expression of multiple dimensions. For example, dimension &quot;country, city&quot;: concatenate(country, &quot;, &quot;, city).
-        &quot;concatenate&quot;: { # Used to combine dimension values to a single dimension. # Used to combine dimension values to a single dimension. For example, dimension &quot;country, city&quot;: concatenate(country, &quot;, &quot;, city).
-          &quot;dimensionNames&quot;: [ # Names of dimensions. The names must refer back to names in the dimensions field of the request.
-            &quot;A String&quot;,
-          ],
-          &quot;delimiter&quot;: &quot;A String&quot;, # The delimiter placed between dimension names. Delimiters are often single characters such as &quot;|&quot; or &quot;,&quot; 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 = &quot;US,FR&quot;, dimension 2 value = &quot;JP&quot;, and delimiter = &quot;,&quot;, then the response will contain &quot;US,FR,JP&quot;.
-        },
-        &quot;lowerCase&quot;: { # Used to convert a dimension value to a single case. # Used to convert a dimension value to lower case.
-          &quot;dimensionName&quot;: &quot;A String&quot;, # Name of a dimension. The name must refer back to a name in dimensions field of the request.
-        },
-        &quot;upperCase&quot;: { # Used to convert a dimension value to a single case. # Used to convert a dimension value to upper case.
-          &quot;dimensionName&quot;: &quot;A String&quot;, # Name of a dimension. The name must refer back to a name in dimensions field of the request.
-        },
-      },
-    },
-  ],
-  &quot;orderBys&quot;: [ # Specifies how rows are ordered in the response.
-    { # The sort options.
-      &quot;metric&quot;: { # Sorts by metric values. # Sorts results by a metric&#x27;s values.
-        &quot;metricName&quot;: &quot;A String&quot;, # A metric name in the request to order by.
-      },
-      &quot;desc&quot;: True or False, # If true, sorts by descending order.
-      &quot;dimension&quot;: { # Sorts by dimension values. # Sorts results by a dimension&#x27;s values.
-        &quot;orderType&quot;: &quot;A String&quot;, # Controls the rule for dimension value ordering.
-        &quot;dimensionName&quot;: &quot;A String&quot;, # A dimension name in the request to order by.
-      },
-      &quot;pivot&quot;: { # Sorts by a pivot column group. # Sorts results by a metric&#x27;s values within a pivot column group.
-        &quot;metricName&quot;: &quot;A String&quot;, # In the response to order by, order rows by this column. Must be a metric name from the request.
-        &quot;pivotSelections&quot;: [ # 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&#x27;s dimension name and value pair.
-          { # A pair of dimension names and values. Rows with this dimension pivot pair are ordered by the metric&#x27;s value. For example if pivots = {{&quot;browser&quot;, &quot;Chrome&quot;}} and metric_name = &quot;Sessions&quot;, 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 ---------|----------|----------------|----------|----------------
-            &quot;dimensionName&quot;: &quot;A String&quot;, # Must be a dimension name from the request.
-            &quot;dimensionValue&quot;: &quot;A String&quot;, # Order by only when the named dimension is this value.
+    &quot;cohortSpec&quot;: { # Specification for a cohort report. # Cohort group associated with this request. If there is a cohort group in the request the &#x27;cohort&#x27; dimension must be present.
+      &quot;cohorts&quot;: [ # The definition for the cohorts.
+        { # 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.
+          &quot;name&quot;: &quot;A String&quot;, # Assigns a name to this cohort. The dimension `cohort` is valued to this name in a report response. If set, cannot begin with `cohort_` or `RESERVED_`. If not set, cohorts are named by their zero based index `cohort_0`, `cohort_1`, etc.
+          &quot;dateRange&quot;: { # A contiguous set of days: startDate, startDate + 1, ..., endDate. Requests are allowed up to 4 date ranges. # The cohort selects users whose first visit date is between start date and end date defined in the `dateRange`. In a cohort request, this `dateRange` is required and the `dateRanges` in the `RunReportRequest` or `RunPivotReportRequest` must be unspecified. The date range should be aligned with the cohort&#x27;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.
+            &quot;startDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
+            &quot;endDate&quot;: &quot;A String&quot;, # 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&#x27;s reporting time zone.
+            &quot;name&quot;: &quot;A String&quot;, # 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.
           },
-        ],
+          &quot;dimension&quot;: &quot;A String&quot;, # The dimension used by cohort. Only supports `firstTouchDate` for retention report.
+        },
+      ],
+      &quot;cohortsRange&quot;: { # Describes date range for a cohort report. # The data ranges of cohorts.
+        &quot;granularity&quot;: &quot;A String&quot;, # Reporting date range for each cohort is calculated based on these three fields.
+        &quot;startOffset&quot;: 42, # For daily cohorts, this will be the start day offset. For weekly cohorts, this will be the week offset.
+        &quot;endOffset&quot;: 42, # For daily cohorts, this will be the end day offset. For weekly cohorts, this will be the week offset.
+      },
+      &quot;cohortReportSettings&quot;: { # Settings of a cohort report. # Settings of a cohort report.
+        &quot;accumulate&quot;: True or False, # If true, accumulates the result from first visit day to the end day. Not supported in `RunReportRequest`.
       },
     },
-  ],
-  &quot;currencyCode&quot;: &quot;A String&quot;, # A currency code in ISO4217 format, such as &quot;AED&quot;, &quot;USD&quot;, &quot;JPY&quot;. If the field is empty, the report uses the entity&#x27;s default currency.
-  &quot;metrics&quot;: [ # The metrics requested and displayed.
-    { # The quantitative measurements of a report. For example, the metric `eventCount` is the total number of events. Requests are allowed up to 10 metrics.
-      &quot;expression&quot;: &quot;A String&quot;, # A mathematical expression for derived metrics. For example, the metric Event count per user is `eventCount/totalUsers`.
-      &quot;name&quot;: &quot;A String&quot;, # The name of the metric. See the [API Metrics](https://developers.google.com/analytics/trusted-testing/analytics-data/api-schema#metrics) for the list of metric names. If `expression` is specified, `name` can be any string that you would like. For example if `expression` is `screenPageViews/sessions`, you could call that metric&#x27;s name = `viewsPerSession`. Metrics are referenced by `name` in `metricFilter`, `orderBys`, and metric `expression`.
-      &quot;invisible&quot;: True or False, # Indicates if a metric is invisible in the report response. If a metric is invisible, the metric will not produce a column in the response, but can be used in `metricFilter`, `orderBys`, or a metric `expression`.
+    &quot;metricAggregations&quot;: [ # Aggregation of metrics. Aggregated metric values will be shown in rows where the dimension_values are set to &quot;RESERVED_(MetricAggregation)&quot;.
+      &quot;A String&quot;,
+    ],
+    &quot;entity&quot;: { # The unique identifier of the property whose events are tracked. # A property whose events are tracked. Within a batch request, this entity should either be unspecified or consistent with the batch-level entity.
+      &quot;propertyId&quot;: &quot;A String&quot;, # A Google Analytics GA4 property id. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/trusted-testing/analytics-data/property-id).
     },
-  ],
-  &quot;returnPropertyQuota&quot;: True or False, # Toggles whether to return the current state of this Analytics Property&#x27;s quota. Quota is returned in [PropertyQuota](#PropertyQuota).
-  &quot;entity&quot;: { # The unique identifier of the property whose events are tracked. # A property whose events are tracked. Within a batch request, this entity should either be unspecified or consistent with the batch-level entity.
-    &quot;propertyId&quot;: &quot;A String&quot;, # A Google Analytics GA4 property id. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/trusted-testing/analytics-data/property-id).
-  },
-}
+    &quot;dimensions&quot;: [ # The dimensions requested and displayed.
+      { # Dimensions are attributes of your data. For example, the dimension city indicates the city from which an event originates. Dimension values in report responses are strings; for example, city could be &quot;Paris&quot; or &quot;New York&quot;. Requests are allowed up to 8 dimensions.
+        &quot;name&quot;: &quot;A String&quot;, # The name of the dimension. See the [API Dimensions](https://developers.google.com/analytics/trusted-testing/analytics-data/api-schema#dimensions) for the list of dimension names. If `dimensionExpression` is specified, `name` can be any string that you would like. For example if a `dimensionExpression` concatenates `country` and `city`, you could call that dimension `countryAndCity`. Dimensions are referenced by `name` in `dimensionFilter`, `orderBys`, `dimensionExpression`, and `pivots`.
+        &quot;dimensionExpression&quot;: { # 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). # One dimension can be the result of an expression of multiple dimensions. For example, dimension &quot;country, city&quot;: concatenate(country, &quot;, &quot;, city).
+          &quot;lowerCase&quot;: { # Used to convert a dimension value to a single case. # Used to convert a dimension value to lower case.
+            &quot;dimensionName&quot;: &quot;A String&quot;, # Name of a dimension. The name must refer back to a name in dimensions field of the request.
+          },
+          &quot;upperCase&quot;: { # Used to convert a dimension value to a single case. # Used to convert a dimension value to upper case.
+            &quot;dimensionName&quot;: &quot;A String&quot;, # Name of a dimension. The name must refer back to a name in dimensions field of the request.
+          },
+          &quot;concatenate&quot;: { # Used to combine dimension values to a single dimension. # Used to combine dimension values to a single dimension. For example, dimension &quot;country, city&quot;: concatenate(country, &quot;, &quot;, city).
+            &quot;dimensionNames&quot;: [ # Names of dimensions. The names must refer back to names in the dimensions field of the request.
+              &quot;A String&quot;,
+            ],
+            &quot;delimiter&quot;: &quot;A String&quot;, # The delimiter placed between dimension names. Delimiters are often single characters such as &quot;|&quot; or &quot;,&quot; 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 = &quot;US,FR&quot;, dimension 2 value = &quot;JP&quot;, and delimiter = &quot;,&quot;, then the response will contain &quot;US,FR,JP&quot;.
+          },
+        },
+      },
+    ],
+    &quot;limit&quot;: &quot;A String&quot;, # The number of rows to return. If unspecified, 10 rows are returned. If -1, all rows are returned. To learn more about this pagination parameter, see [Pagination](https://developers.google.com/analytics/devguides/reporting/data/v1/basics#pagination).
+  }
 
   x__xgafv: string, V1 error format.
     Allowed values
@@ -1161,32 +1161,21 @@
   An object of the form:
 
     { # The response report table corresponding to a request.
-    &quot;rows&quot;: [ # Rows of dimension value combinations and metric values in the report.
+    &quot;metadata&quot;: { # Response&#x27;s metadata carrying additional information about the report content. # Metadata for the report.
+      &quot;dataLossFromOtherRow&quot;: True or False, # If true, indicates some buckets of dimension combinations are rolled into &quot;(other)&quot; row. This can happen for high cardinality reports.
+    },
+    &quot;totals&quot;: [ # If requested, the totaled values of metrics.
       { # Report data for each row. For example if RunReportRequest contains: ```none &quot;dimensions&quot;: [ { &quot;name&quot;: &quot;eventName&quot; }, { &quot;name&quot;: &quot;countryId&quot; } ], &quot;metrics&quot;: [ { &quot;name&quot;: &quot;eventCount&quot; } ] ``` One row with &#x27;in_app_purchase&#x27; as the eventName, &#x27;JP&#x27; as the countryId, and 15 as the eventCount, would be: ```none &quot;dimensionValues&quot;: [ { &quot;value&quot;: &quot;in_app_purchase&quot; }, { &quot;value&quot;: &quot;JP&quot; } ], &quot;metricValues&quot;: [ { &quot;value&quot;: &quot;15&quot; } ] ```
-        &quot;dimensionValues&quot;: [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
-          { # The value of a dimension.
-            &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
-          },
-        ],
         &quot;metricValues&quot;: [ # List of requested visible metric values.
           { # The value of a metric.
             &quot;value&quot;: &quot;A String&quot;, # Measurement value. See MetricHeader for type.
           },
         ],
-      },
-    ],
-    &quot;maximums&quot;: [ # If requested, the maximum values of metrics.
-      { # Report data for each row. For example if RunReportRequest contains: ```none &quot;dimensions&quot;: [ { &quot;name&quot;: &quot;eventName&quot; }, { &quot;name&quot;: &quot;countryId&quot; } ], &quot;metrics&quot;: [ { &quot;name&quot;: &quot;eventCount&quot; } ] ``` One row with &#x27;in_app_purchase&#x27; as the eventName, &#x27;JP&#x27; as the countryId, and 15 as the eventCount, would be: ```none &quot;dimensionValues&quot;: [ { &quot;value&quot;: &quot;in_app_purchase&quot; }, { &quot;value&quot;: &quot;JP&quot; } ], &quot;metricValues&quot;: [ { &quot;value&quot;: &quot;15&quot; } ] ```
         &quot;dimensionValues&quot;: [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
           { # The value of a dimension.
             &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
           },
         ],
-        &quot;metricValues&quot;: [ # List of requested visible metric values.
-          { # The value of a metric.
-            &quot;value&quot;: &quot;A String&quot;, # Measurement value. See MetricHeader for type.
-          },
-        ],
       },
     ],
     &quot;dimensionHeaders&quot;: [ # Describes dimension columns. The number of DimensionHeaders and ordering of DimensionHeaders matches the dimensions present in rows.
@@ -1194,60 +1183,71 @@
         &quot;name&quot;: &quot;A String&quot;, # The dimension&#x27;s name.
       },
     ],
-    &quot;metricHeaders&quot;: [ # Describes metric columns. The number of MetricHeaders and ordering of MetricHeaders matches the metrics present in rows.
-      { # Describes a metric column in the report. Visible metrics requested in a report produce column entries within rows and MetricHeaders. However, metrics used exclusively within filters or expressions do not produce columns in a report; correspondingly, those metrics do not produce headers.
-        &quot;type&quot;: &quot;A String&quot;, # The metric&#x27;s data type.
-        &quot;name&quot;: &quot;A String&quot;, # The metric&#x27;s name.
-      },
-    ],
-    &quot;minimums&quot;: [ # If requested, the minimum values of metrics.
-      { # Report data for each row. For example if RunReportRequest contains: ```none &quot;dimensions&quot;: [ { &quot;name&quot;: &quot;eventName&quot; }, { &quot;name&quot;: &quot;countryId&quot; } ], &quot;metrics&quot;: [ { &quot;name&quot;: &quot;eventCount&quot; } ] ``` One row with &#x27;in_app_purchase&#x27; as the eventName, &#x27;JP&#x27; as the countryId, and 15 as the eventCount, would be: ```none &quot;dimensionValues&quot;: [ { &quot;value&quot;: &quot;in_app_purchase&quot; }, { &quot;value&quot;: &quot;JP&quot; } ], &quot;metricValues&quot;: [ { &quot;value&quot;: &quot;15&quot; } ] ```
-        &quot;dimensionValues&quot;: [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
-          { # The value of a dimension.
-            &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
-          },
-        ],
-        &quot;metricValues&quot;: [ # List of requested visible metric values.
-          { # The value of a metric.
-            &quot;value&quot;: &quot;A String&quot;, # Measurement value. See MetricHeader for type.
-          },
-        ],
-      },
-    ],
-    &quot;rowCount&quot;: 42, # The total number of rows in the query result, regardless of the number of rows returned in the response. For example if a query returns 175 rows and includes limit = 50 in the API request, the response will contain row_count = 175 but only 50 rows. To learn more about this pagination parameter, see [Pagination](basics#pagination).
-    &quot;metadata&quot;: { # Response&#x27;s metadata carrying additional information about the report content. # Metadata for the report.
-      &quot;dataLossFromOtherRow&quot;: True or False, # If true, indicates some buckets of dimension combinations are rolled into &quot;(other)&quot; row. This can happen for high cardinality reports.
-    },
     &quot;propertyQuota&quot;: { # 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. # This Analytics Property&#x27;s quota state including this request.
       &quot;tokensPerHour&quot;: { # Current state for a particular quota group. # Standard Analytics Properties can use up to 5,000 tokens per day; Analytics 360 Properties can use 50,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.
         &quot;consumed&quot;: 42, # Quota consumed by this request.
         &quot;remaining&quot;: 42, # Quota remaining after this request.
       },
-      &quot;tokensPerDay&quot;: { # Current state for a particular quota group. # Standard Analytics Properties can use up to 25,000 tokens per day; Analytics 360 Properties can use 250,000 tokens per day. Most requests consume fewer than 10 tokens.
-        &quot;consumed&quot;: 42, # Quota consumed by this request.
-        &quot;remaining&quot;: 42, # Quota remaining after this request.
-      },
-      &quot;serverErrorsPerProjectPerHour&quot;: { # Current state for a particular quota group. # Standard Analytics Properties and cloud project pairs can have up to 10 server errors per hour; Analytics 360 Properties and cloud project pairs can have up to 50 server errors per hour.
-        &quot;consumed&quot;: 42, # Quota consumed by this request.
-        &quot;remaining&quot;: 42, # Quota remaining after this request.
-      },
       &quot;concurrentRequests&quot;: { # Current state for a particular quota group. # Standard Analytics Properties can send up to 10 concurrent requests; Analytics 360 Properties can use up to 50 concurrent requests.
         &quot;consumed&quot;: 42, # Quota consumed by this request.
         &quot;remaining&quot;: 42, # Quota remaining after this request.
       },
+      &quot;serverErrorsPerProjectPerHour&quot;: { # Current state for a particular quota group. # Standard Analytics Properties and cloud project pairs can have up to 10 server errors per hour; Analytics 360 Properties and cloud project pairs can have up to 50 server errors per hour.
+        &quot;consumed&quot;: 42, # Quota consumed by this request.
+        &quot;remaining&quot;: 42, # Quota remaining after this request.
+      },
+      &quot;tokensPerDay&quot;: { # Current state for a particular quota group. # Standard Analytics Properties can use up to 25,000 tokens per day; Analytics 360 Properties can use 250,000 tokens per day. Most requests consume fewer than 10 tokens.
+        &quot;consumed&quot;: 42, # Quota consumed by this request.
+        &quot;remaining&quot;: 42, # Quota remaining after this request.
+      },
     },
-    &quot;totals&quot;: [ # If requested, the totaled values of metrics.
+    &quot;rowCount&quot;: 42, # The total number of rows in the query result, regardless of the number of rows returned in the response. For example if a query returns 175 rows and includes limit = 50 in the API request, the response will contain row_count = 175 but only 50 rows. To learn more about this pagination parameter, see [Pagination](https://developers.google.com/analytics/devguides/reporting/data/v1/basics#pagination).
+    &quot;rows&quot;: [ # Rows of dimension value combinations and metric values in the report.
       { # Report data for each row. For example if RunReportRequest contains: ```none &quot;dimensions&quot;: [ { &quot;name&quot;: &quot;eventName&quot; }, { &quot;name&quot;: &quot;countryId&quot; } ], &quot;metrics&quot;: [ { &quot;name&quot;: &quot;eventCount&quot; } ] ``` One row with &#x27;in_app_purchase&#x27; as the eventName, &#x27;JP&#x27; as the countryId, and 15 as the eventCount, would be: ```none &quot;dimensionValues&quot;: [ { &quot;value&quot;: &quot;in_app_purchase&quot; }, { &quot;value&quot;: &quot;JP&quot; } ], &quot;metricValues&quot;: [ { &quot;value&quot;: &quot;15&quot; } ] ```
+        &quot;metricValues&quot;: [ # List of requested visible metric values.
+          { # The value of a metric.
+            &quot;value&quot;: &quot;A String&quot;, # Measurement value. See MetricHeader for type.
+          },
+        ],
         &quot;dimensionValues&quot;: [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
           { # The value of a dimension.
             &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
           },
         ],
+      },
+    ],
+    &quot;maximums&quot;: [ # If requested, the maximum values of metrics.
+      { # Report data for each row. For example if RunReportRequest contains: ```none &quot;dimensions&quot;: [ { &quot;name&quot;: &quot;eventName&quot; }, { &quot;name&quot;: &quot;countryId&quot; } ], &quot;metrics&quot;: [ { &quot;name&quot;: &quot;eventCount&quot; } ] ``` One row with &#x27;in_app_purchase&#x27; as the eventName, &#x27;JP&#x27; as the countryId, and 15 as the eventCount, would be: ```none &quot;dimensionValues&quot;: [ { &quot;value&quot;: &quot;in_app_purchase&quot; }, { &quot;value&quot;: &quot;JP&quot; } ], &quot;metricValues&quot;: [ { &quot;value&quot;: &quot;15&quot; } ] ```
         &quot;metricValues&quot;: [ # List of requested visible metric values.
           { # The value of a metric.
             &quot;value&quot;: &quot;A String&quot;, # Measurement value. See MetricHeader for type.
           },
         ],
+        &quot;dimensionValues&quot;: [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
+          { # The value of a dimension.
+            &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
+          },
+        ],
+      },
+    ],
+    &quot;metricHeaders&quot;: [ # Describes metric columns. The number of MetricHeaders and ordering of MetricHeaders matches the metrics present in rows.
+      { # Describes a metric column in the report. Visible metrics requested in a report produce column entries within rows and MetricHeaders. However, metrics used exclusively within filters or expressions do not produce columns in a report; correspondingly, those metrics do not produce headers.
+        &quot;name&quot;: &quot;A String&quot;, # The metric&#x27;s name.
+        &quot;type&quot;: &quot;A String&quot;, # The metric&#x27;s data type.
+      },
+    ],
+    &quot;minimums&quot;: [ # If requested, the minimum values of metrics.
+      { # Report data for each row. For example if RunReportRequest contains: ```none &quot;dimensions&quot;: [ { &quot;name&quot;: &quot;eventName&quot; }, { &quot;name&quot;: &quot;countryId&quot; } ], &quot;metrics&quot;: [ { &quot;name&quot;: &quot;eventCount&quot; } ] ``` One row with &#x27;in_app_purchase&#x27; as the eventName, &#x27;JP&#x27; as the countryId, and 15 as the eventCount, would be: ```none &quot;dimensionValues&quot;: [ { &quot;value&quot;: &quot;in_app_purchase&quot; }, { &quot;value&quot;: &quot;JP&quot; } ], &quot;metricValues&quot;: [ { &quot;value&quot;: &quot;15&quot; } ] ```
+        &quot;metricValues&quot;: [ # List of requested visible metric values.
+          { # The value of a metric.
+            &quot;value&quot;: &quot;A String&quot;, # Measurement value. See MetricHeader for type.
+          },
+        ],
+        &quot;dimensionValues&quot;: [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
+          { # The value of a dimension.
+            &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
+          },
+        ],
       },
     ],
   }</pre>