<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="analyticsdata_v1beta.html">Google Analytics Data API</a> . <a href="analyticsdata_v1beta.properties.html">properties</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#batchRunPivotReports">batchRunPivotReports(property, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns multiple pivot reports in a batch. All reports must be for the same GA4 Property.</p>
<p class="toc_element">
  <code><a href="#batchRunReports">batchRunReports(property, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns multiple reports in a batch. All reports must be for the same GA4 Property.</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#getMetadata">getMetadata(name, x__xgafv=None)</a></code></p>
<p class="firstline">Returns metadata for dimensions and metrics available in reporting methods. Used to explore the dimensions and metrics. In this method, a Google Analytics GA4 Property Identifier is specified in the request, and the metadata response includes Custom dimensions and metrics as well as Universal metadata. For example if a custom metric with parameter name `levels_unlocked` is registered to a property, the Metadata response will contain `customEvent:levels_unlocked`. Universal metadata are dimensions and metrics applicable to any property such as `country` and `totalUsers`.</p>
<p class="toc_element">
  <code><a href="#runPivotReport">runPivotReport(property, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a customized pivot report of your Google Analytics event data. Pivot reports are more advanced and expressive formats than regular reports. In a pivot report, dimensions are only visible if they are included in a pivot. Multiple pivots can be specified to further dissect your data.</p>
<p class="toc_element">
  <code><a href="#runRealtimeReport">runRealtimeReport(property, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">The Google Analytics Realtime API returns a customized report of realtime event data for your property. These reports show events and usage from the last 30 minutes.</p>
<p class="toc_element">
  <code><a href="#runReport">runReport(property, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns a customized report of your Google Analytics event data. Reports contain statistics derived from data collected by the Google Analytics tracking code. The data returned from the API is as a table with columns for the requested dimensions and metrics. Metrics are individual measurements of user activity on your property, such as active users or event count. Dimensions break down metrics across some common criteria, such as country or event name.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="batchRunPivotReports">batchRunPivotReports(property, body=None, x__xgafv=None)</code>
  <pre>Returns multiple pivot reports in a batch. All reports must be for the same GA4 Property.

Args:
  property: string, A Google Analytics GA4 property identifier whose events are tracked. Specified in the URL path and not the body. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/devguides/reporting/data/v1/property-id). This property must be specified for the batch. The property within RunPivotReportRequest may either be unspecified or consistent with this property. Example: properties/1234 (required)
  body: object, The request body.
    The object takes the form of:

{ # The batch request containing multiple pivot report requests.
  &quot;requests&quot;: [ # 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.
      &quot;cohortSpec&quot;: { # The specification of cohorts for a cohort report. Cohort reports create a time series of user retention for the cohort. For example, you could select the cohort of users that were acquired in the first week of September and follow that cohort for the next six weeks. Selecting the users acquired in the first week of September cohort is specified in the `cohort` object. Following that cohort for the next six weeks is specified in the `cohortsRange` object. For examples, see [Cohort Report Examples](https://developers.google.com/analytics/devguides/reporting/data/v1/advanced#cohort_report_examples). The report response could show a weekly time series where say your app has retained 60% of this cohort after three weeks and 25% of this cohort after six weeks. These two percentages can be calculated by the metric `cohortActiveUsers/cohortTotalUsers` and will be separate rows in the 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;: { # Optional settings of a cohort report. # Optional settings for a cohort report.
          &quot;accumulate&quot;: True or False, # If true, accumulates the result from first touch day to the end day. Not supported in `RunReportRequest`.
        },
        &quot;cohorts&quot;: [ # Defines the selection criteria to group users into cohorts. Most cohort reports define only a single cohort. If multiple cohorts are specified, each cohort can be recognized in the report by their name.
          { # Defines a cohort selection criteria. A cohort is a group of users who share a common characteristic. For example, users with the same `firstSessionDate` belong to the same cohort.
            &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 touch date is between start date and end date defined in the `dateRange`. This `dateRange` does not specify the full date range of event data that is present in a cohort report. In a cohort report, this `dateRange` is extended by the granularity and offset present in the `cohortsRange`; event data for the extended reporting date range is present in a cohort report. In a cohort request, this `dateRange` is required and the `dateRanges` in the `RunReportRequest` or `RunPivotReportRequest` must be unspecified. This `dateRange` should generally be aligned with the cohort&#x27;s granularity. If `CohortsRange` uses daily granularity, this `dateRange` can be a single day. If `CohortsRange` uses weekly granularity, this `dateRange` can be aligned to a week boundary, starting at Sunday and ending Saturday. If `CohortsRange` uses monthly granularity, this `dateRange` can be aligned to a month, starting at the first and ending on the last day of the month.
              &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;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;dimension&quot;: &quot;A String&quot;, # Dimension used by the cohort. Required and only supports `firstSessionDate`.
            &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;cohortsRange&quot;: { # Configures the extended reporting date range for a cohort report. Specifies an offset duration to follow the cohorts over. # Cohort reports follow cohorts over an extended reporting date range. This range specifies an offset duration to follow the cohorts over.
          &quot;endOffset&quot;: 42, # Required. `endOffset` specifies the end date of the extended reporting date range for a cohort report. `endOffset` can be any positive integer but is commonly set to 5 to 10 so that reports contain data on the cohort for the next several granularity time periods. If `granularity` is `DAILY`, the `endDate` of the extended reporting date range is `endDate` of the cohort plus `endOffset` days. If `granularity` is `WEEKLY`, the `endDate` of the extended reporting date range is `endDate` of the cohort plus `endOffset * 7` days. If `granularity` is `MONTHLY`, the `endDate` of the extended reporting date range is `endDate` of the cohort plus `endOffset * 30` days.
          &quot;granularity&quot;: &quot;A String&quot;, # Required. The granularity used to interpret the `startOffset` and `endOffset` for the extended reporting date range for a cohort report.
          &quot;startOffset&quot;: 42, # `startOffset` specifies the start date of the extended reporting date range for a cohort report. `startOffset` is commonly set to 0 so that reports contain data from the acquisition of the cohort forward. If `granularity` is `DAILY`, the `startDate` of the extended reporting date range is `startDate` of the cohort plus `startOffset` days. If `granularity` is `WEEKLY`, the `startDate` of the extended reporting date range is `startDate` of the cohort plus `startOffset * 7` days. If `granularity` is `MONTHLY`, the `startDate` of the extended reporting date range is `startDate` of the cohort plus `startOffset * 30` days.
        },
      },
      &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 property&#x27;s default currency.
      &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;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;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;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;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;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;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in 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;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;doubleValue&quot;: 3.14, # Double value
              &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
            },
          },
          &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;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
            &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
          },
        },
        &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;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 9 dimensions.
          &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;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;dimensionNames&quot;: [ # Names of dimensions. The names must refer back to names in the dimensions field of the request.
                &quot;A String&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;name&quot;: &quot;A String&quot;, # The name of the dimension. See the [API Dimensions](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#dimensions) for the list of dimension names. If `dimensionExpression` is specified, `name` can be any string that you would like within the allowed character set. For example if a `dimensionExpression` concatenates `country` and `city`, you could call that dimension `countryAndCity`. Dimension names that you choose must match the regular expression &quot;^[a-zA-Z0-9_]$&quot;. Dimensions are referenced by `name` in `dimensionFilter`, `orderBys`, `dimensionExpression`, and `pivots`.
        },
      ],
      &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;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;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;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;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in 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;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;doubleValue&quot;: 3.14, # Double value
              &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
            },
          },
          &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;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
            &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
          },
        },
        &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;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;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;name&quot;: &quot;A String&quot;, # The name of the metric. See the [API Metrics](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#metrics) for the list of metric names. If `expression` is specified, `name` can be any string that you would like within the allowed character set. For example if `expression` is `screenPageViews/sessions`, you could call that metric&#x27;s name = `viewsPerSession`. Metric names that you choose must match the regular expression &quot;^[a-zA-Z0-9_]$&quot;. Metrics are referenced by `name` in `metricFilter`, `orderBys`, and metric `expression`.
        },
      ],
      &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;limit&quot;: &quot;A String&quot;, # The number of unique combinations of dimension values to return in this pivot. The `limit` parameter is required. A `limit` of 10,000 is common for single pivot requests. The product of the `limit` for each `pivot` in a `RunPivotReportRequest` must not exceed 100,000. For example, a two pivot request with `limit: 1000` in each pivot will fail because the product is `1,000,000`.
          &quot;metricAggregations&quot;: [ # Aggregate the metrics by dimensions in this pivot using the specified metric_aggregations.
            &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;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;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;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;property&quot;: &quot;A String&quot;, # A Google Analytics GA4 property identifier whose events are tracked. Specified in the URL path and not the body. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/devguides/reporting/data/v1/property-id). Within a batch request, this property should either be unspecified or consistent with the batch-level property. Example: properties/1234
      &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).
    },
  ],
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The batch response containing multiple pivot reports.
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this message is. This `kind` is always the fixed string &quot;analyticsData#batchRunPivotReports&quot;. Useful to distinguish between response types in JSON.
  &quot;pivotReports&quot;: [ # Individual responses. Each response has a separate pivot report request.
    { # The response pivot report table corresponding to a pivot 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;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.
        { # 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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this message is. This `kind` is always the fixed string &quot;analyticsData#runPivotReport&quot;. Useful to distinguish between response types in JSON.
      &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;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;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;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.
                { # The value of a dimension.
                  &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
                },
              ],
            },
          ],
          &quot;rowCount&quot;: 42, # The cardinality of the pivot. 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;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;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;potentiallyThresholdedRequestsPerHour&quot;: { # Current state for a particular quota group. # Analytics Properties can send up to 120 requests with potentially thresholded dimensions per hour. In a batch request, each report request is individually counted for this quota if the request contains potentially thresholded dimensions.
          &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;tokensPerHour&quot;: { # Current state for a particular quota group. # Standard Analytics Properties can use up to 5,000 tokens per hour; Analytics 360 Properties can use 50,000 tokens per hour. 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;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.
            },
          ],
        },
      ],
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="batchRunReports">batchRunReports(property, body=None, x__xgafv=None)</code>
  <pre>Returns multiple reports in a batch. All reports must be for the same GA4 Property.

Args:
  property: string, A Google Analytics GA4 property identifier whose events are tracked. Specified in the URL path and not the body. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/devguides/reporting/data/v1/property-id). This property must be specified for the batch. The property within RunReportRequest may either be unspecified or consistent with this property. Example: properties/1234 (required)
  body: object, The request body.
    The object takes the form of:

{ # The batch request containing multiple report requests.
  &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;cohortSpec&quot;: { # The specification of cohorts for a cohort report. Cohort reports create a time series of user retention for the cohort. For example, you could select the cohort of users that were acquired in the first week of September and follow that cohort for the next six weeks. Selecting the users acquired in the first week of September cohort is specified in the `cohort` object. Following that cohort for the next six weeks is specified in the `cohortsRange` object. For examples, see [Cohort Report Examples](https://developers.google.com/analytics/devguides/reporting/data/v1/advanced#cohort_report_examples). The report response could show a weekly time series where say your app has retained 60% of this cohort after three weeks and 25% of this cohort after six weeks. These two percentages can be calculated by the metric `cohortActiveUsers/cohortTotalUsers` and will be separate rows in the 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;: { # Optional settings of a cohort report. # Optional settings for a cohort report.
          &quot;accumulate&quot;: True or False, # If true, accumulates the result from first touch day to the end day. Not supported in `RunReportRequest`.
        },
        &quot;cohorts&quot;: [ # Defines the selection criteria to group users into cohorts. Most cohort reports define only a single cohort. If multiple cohorts are specified, each cohort can be recognized in the report by their name.
          { # Defines a cohort selection criteria. A cohort is a group of users who share a common characteristic. For example, users with the same `firstSessionDate` belong to the same cohort.
            &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 touch date is between start date and end date defined in the `dateRange`. This `dateRange` does not specify the full date range of event data that is present in a cohort report. In a cohort report, this `dateRange` is extended by the granularity and offset present in the `cohortsRange`; event data for the extended reporting date range is present in a cohort report. In a cohort request, this `dateRange` is required and the `dateRanges` in the `RunReportRequest` or `RunPivotReportRequest` must be unspecified. This `dateRange` should generally be aligned with the cohort&#x27;s granularity. If `CohortsRange` uses daily granularity, this `dateRange` can be a single day. If `CohortsRange` uses weekly granularity, this `dateRange` can be aligned to a week boundary, starting at Sunday and ending Saturday. If `CohortsRange` uses monthly granularity, this `dateRange` can be aligned to a month, starting at the first and ending on the last day of the month.
              &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;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;dimension&quot;: &quot;A String&quot;, # Dimension used by the cohort. Required and only supports `firstSessionDate`.
            &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;cohortsRange&quot;: { # Configures the extended reporting date range for a cohort report. Specifies an offset duration to follow the cohorts over. # Cohort reports follow cohorts over an extended reporting date range. This range specifies an offset duration to follow the cohorts over.
          &quot;endOffset&quot;: 42, # Required. `endOffset` specifies the end date of the extended reporting date range for a cohort report. `endOffset` can be any positive integer but is commonly set to 5 to 10 so that reports contain data on the cohort for the next several granularity time periods. If `granularity` is `DAILY`, the `endDate` of the extended reporting date range is `endDate` of the cohort plus `endOffset` days. If `granularity` is `WEEKLY`, the `endDate` of the extended reporting date range is `endDate` of the cohort plus `endOffset * 7` days. If `granularity` is `MONTHLY`, the `endDate` of the extended reporting date range is `endDate` of the cohort plus `endOffset * 30` days.
          &quot;granularity&quot;: &quot;A String&quot;, # Required. The granularity used to interpret the `startOffset` and `endOffset` for the extended reporting date range for a cohort report.
          &quot;startOffset&quot;: 42, # `startOffset` specifies the start date of the extended reporting date range for a cohort report. `startOffset` is commonly set to 0 so that reports contain data from the acquisition of the cohort forward. If `granularity` is `DAILY`, the `startDate` of the extended reporting date range is `startDate` of the cohort plus `startOffset` days. If `granularity` is `WEEKLY`, the `startDate` of the extended reporting date range is `startDate` of the cohort plus `startOffset * 7` days. If `granularity` is `MONTHLY`, the `startDate` of the extended reporting date range is `startDate` of the cohort plus `startOffset * 30` days.
        },
      },
      &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 property&#x27;s default currency.
      &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;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;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;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;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;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;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in 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;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;doubleValue&quot;: 3.14, # Double value
              &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
            },
          },
          &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;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
            &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
          },
        },
        &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;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 9 dimensions.
          &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;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;dimensionNames&quot;: [ # Names of dimensions. The names must refer back to names in the dimensions field of the request.
                &quot;A String&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;name&quot;: &quot;A String&quot;, # The name of the dimension. See the [API Dimensions](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#dimensions) for the list of dimension names. If `dimensionExpression` is specified, `name` can be any string that you would like within the allowed character set. For example if a `dimensionExpression` concatenates `country` and `city`, you could call that dimension `countryAndCity`. Dimension names that you choose must match the regular expression &quot;^[a-zA-Z0-9_]$&quot;. Dimensions are referenced by `name` in `dimensionFilter`, `orderBys`, `dimensionExpression`, and `pivots`.
        },
      ],
      &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;limit&quot;: &quot;A String&quot;, # The number of rows to return. If unspecified, 10,000 rows are returned. The API returns a maximum of 100,000 rows per request, no matter how many you ask for. `limit` must be positive. The API can also return fewer rows than the requested `limit`, if there aren&#x27;t as many dimension values as the `limit`. For instance, there are fewer than 300 possible values for the dimension `country`, so when reporting on only `country`, you can&#x27;t get more than 300 rows, even if you set `limit` to a higher value. To learn more about this pagination parameter, see [Pagination](https://developers.google.com/analytics/devguides/reporting/data/v1/basics#pagination).
      &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;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;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;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;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in 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;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;doubleValue&quot;: 3.14, # Double value
              &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
            },
          },
          &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;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
            &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
          },
        },
        &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;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;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;name&quot;: &quot;A String&quot;, # The name of the metric. See the [API Metrics](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#metrics) for the list of metric names. If `expression` is specified, `name` can be any string that you would like within the allowed character set. For example if `expression` is `screenPageViews/sessions`, you could call that metric&#x27;s name = `viewsPerSession`. Metric names that you choose must match the regular expression &quot;^[a-zA-Z0-9_]$&quot;. Metrics are referenced by `name` in `metricFilter`, `orderBys`, and metric `expression`.
        },
      ],
      &quot;offset&quot;: &quot;A String&quot;, # The row count of the start row. The first row is counted as row 0. When paging, the first request does not specify offset; or equivalently, sets offset to 0; the first request returns the first `limit` of rows. The second request sets offset to the `limit` of the first request; the second request returns the second `limit` of rows. To learn more about this pagination parameter, see [Pagination](https://developers.google.com/analytics/devguides/reporting/data/v1/basics#pagination).
      &quot;orderBys&quot;: [ # Specifies how rows are ordered in the response.
        { # The sort options.
          &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;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;property&quot;: &quot;A String&quot;, # A Google Analytics GA4 property identifier whose events are tracked. Specified in the URL path and not the body. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/devguides/reporting/data/v1/property-id). Within a batch request, this property should either be unspecified or consistent with the batch-level property. Example: properties/1234
      &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).
    },
  ],
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The batch response containing multiple reports.
  &quot;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this message is. This `kind` is always the fixed string &quot;analyticsData#batchRunReports&quot;. Useful to distinguish between response types in JSON.
  &quot;reports&quot;: [ # Individual responses. Each response has a separate report request.
    { # The response report table corresponding to a request.
      &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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this message is. This `kind` is always the fixed string &quot;analyticsData#runReport&quot;. Useful to distinguish between response types in JSON.
      &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;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;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;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;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;potentiallyThresholdedRequestsPerHour&quot;: { # Current state for a particular quota group. # Analytics Properties can send up to 120 requests with potentially thresholded dimensions per hour. In a batch request, each report request is individually counted for this quota if the request contains potentially thresholded dimensions.
          &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;tokensPerHour&quot;: { # Current state for a particular quota group. # Standard Analytics Properties can use up to 5,000 tokens per hour; Analytics 360 Properties can use 50,000 tokens per hour. 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;rowCount&quot;: 42, # The total number of rows in the query result. `rowCount` is independent of the number of rows returned in the response, the `limit` request parameter, and the `offset` request parameter. For example if a query returns 175 rows and includes `limit` of 50 in the API request, the response will contain `rowCount` of 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;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;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.
            },
          ],
        },
      ],
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="getMetadata">getMetadata(name, x__xgafv=None)</code>
  <pre>Returns metadata for dimensions and metrics available in reporting methods. Used to explore the dimensions and metrics. In this method, a Google Analytics GA4 Property Identifier is specified in the request, and the metadata response includes Custom dimensions and metrics as well as Universal metadata. For example if a custom metric with parameter name `levels_unlocked` is registered to a property, the Metadata response will contain `customEvent:levels_unlocked`. Universal metadata are dimensions and metrics applicable to any property such as `country` and `totalUsers`.

Args:
  name: string, Required. The resource name of the metadata to retrieve. This name field is specified in the URL path and not URL parameters. Property is a numeric Google Analytics GA4 Property identifier. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/devguides/reporting/data/v1/property-id). Example: properties/1234/metadata Set the Property ID to 0 for dimensions and metrics common to all properties. In this special mode, this method will not return custom dimensions and metrics. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The dimensions and metrics currently accepted in reporting methods.
  &quot;dimensions&quot;: [ # The dimension descriptions.
    { # Explains a dimension.
      &quot;apiName&quot;: &quot;A String&quot;, # This dimension&#x27;s name. Useable in [Dimension](#Dimension)&#x27;s `name`. For example, `eventName`.
      &quot;customDefinition&quot;: True or False, # True if the dimension is a custom dimension for this property.
      &quot;deprecatedApiNames&quot;: [ # Still usable but deprecated names for this dimension. If populated, this dimension is available by either `apiName` or one of `deprecatedApiNames` for a period of time. After the deprecation period, the dimension will be available only by `apiName`.
        &quot;A String&quot;,
      ],
      &quot;description&quot;: &quot;A String&quot;, # Description of how this dimension is used and calculated.
      &quot;uiName&quot;: &quot;A String&quot;, # This dimension&#x27;s name within the Google Analytics user interface. For example, `Event name`.
    },
  ],
  &quot;metrics&quot;: [ # The metric descriptions.
    { # Explains a metric.
      &quot;apiName&quot;: &quot;A String&quot;, # A metric name. Useable in [Metric](#Metric)&#x27;s `name`. For example, `eventCount`.
      &quot;customDefinition&quot;: True or False, # True if the metric is a custom metric for this property.
      &quot;deprecatedApiNames&quot;: [ # Still usable but deprecated names for this metric. If populated, this metric is available by either `apiName` or one of `deprecatedApiNames` for a period of time. After the deprecation period, the metric will be available only by `apiName`.
        &quot;A String&quot;,
      ],
      &quot;description&quot;: &quot;A String&quot;, # Description of how this metric is used and calculated.
      &quot;expression&quot;: &quot;A String&quot;, # The mathematical expression for this derived metric. Can be used in [Metric](#Metric)&#x27;s `expression` field for equivalent reports. Most metrics are not expressions, and for non-expressions, this field is empty.
      &quot;type&quot;: &quot;A String&quot;, # The type of this metric.
      &quot;uiName&quot;: &quot;A String&quot;, # This metric&#x27;s name within the Google Analytics user interface. For example, `Event count`.
    },
  ],
  &quot;name&quot;: &quot;A String&quot;, # Resource name of this metadata.
}</pre>
</div>

<div class="method">
    <code class="details" id="runPivotReport">runPivotReport(property, body=None, x__xgafv=None)</code>
  <pre>Returns a customized pivot report of your Google Analytics event data. Pivot reports are more advanced and expressive formats than regular reports. In a pivot report, dimensions are only visible if they are included in a pivot. Multiple pivots can be specified to further dissect your data.

Args:
  property: string, A Google Analytics GA4 property identifier whose events are tracked. Specified in the URL path and not the body. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/devguides/reporting/data/v1/property-id). Within a batch request, this property should either be unspecified or consistent with the batch-level property. Example: properties/1234 (required)
  body: object, The request body.
    The object takes the form of:

{ # The request to generate a pivot report.
  &quot;cohortSpec&quot;: { # The specification of cohorts for a cohort report. Cohort reports create a time series of user retention for the cohort. For example, you could select the cohort of users that were acquired in the first week of September and follow that cohort for the next six weeks. Selecting the users acquired in the first week of September cohort is specified in the `cohort` object. Following that cohort for the next six weeks is specified in the `cohortsRange` object. For examples, see [Cohort Report Examples](https://developers.google.com/analytics/devguides/reporting/data/v1/advanced#cohort_report_examples). The report response could show a weekly time series where say your app has retained 60% of this cohort after three weeks and 25% of this cohort after six weeks. These two percentages can be calculated by the metric `cohortActiveUsers/cohortTotalUsers` and will be separate rows in the 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;: { # Optional settings of a cohort report. # Optional settings for a cohort report.
      &quot;accumulate&quot;: True or False, # If true, accumulates the result from first touch day to the end day. Not supported in `RunReportRequest`.
    },
    &quot;cohorts&quot;: [ # Defines the selection criteria to group users into cohorts. Most cohort reports define only a single cohort. If multiple cohorts are specified, each cohort can be recognized in the report by their name.
      { # Defines a cohort selection criteria. A cohort is a group of users who share a common characteristic. For example, users with the same `firstSessionDate` belong to the same cohort.
        &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 touch date is between start date and end date defined in the `dateRange`. This `dateRange` does not specify the full date range of event data that is present in a cohort report. In a cohort report, this `dateRange` is extended by the granularity and offset present in the `cohortsRange`; event data for the extended reporting date range is present in a cohort report. In a cohort request, this `dateRange` is required and the `dateRanges` in the `RunReportRequest` or `RunPivotReportRequest` must be unspecified. This `dateRange` should generally be aligned with the cohort&#x27;s granularity. If `CohortsRange` uses daily granularity, this `dateRange` can be a single day. If `CohortsRange` uses weekly granularity, this `dateRange` can be aligned to a week boundary, starting at Sunday and ending Saturday. If `CohortsRange` uses monthly granularity, this `dateRange` can be aligned to a month, starting at the first and ending on the last day of the month.
          &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;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;dimension&quot;: &quot;A String&quot;, # Dimension used by the cohort. Required and only supports `firstSessionDate`.
        &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;cohortsRange&quot;: { # Configures the extended reporting date range for a cohort report. Specifies an offset duration to follow the cohorts over. # Cohort reports follow cohorts over an extended reporting date range. This range specifies an offset duration to follow the cohorts over.
      &quot;endOffset&quot;: 42, # Required. `endOffset` specifies the end date of the extended reporting date range for a cohort report. `endOffset` can be any positive integer but is commonly set to 5 to 10 so that reports contain data on the cohort for the next several granularity time periods. If `granularity` is `DAILY`, the `endDate` of the extended reporting date range is `endDate` of the cohort plus `endOffset` days. If `granularity` is `WEEKLY`, the `endDate` of the extended reporting date range is `endDate` of the cohort plus `endOffset * 7` days. If `granularity` is `MONTHLY`, the `endDate` of the extended reporting date range is `endDate` of the cohort plus `endOffset * 30` days.
      &quot;granularity&quot;: &quot;A String&quot;, # Required. The granularity used to interpret the `startOffset` and `endOffset` for the extended reporting date range for a cohort report.
      &quot;startOffset&quot;: 42, # `startOffset` specifies the start date of the extended reporting date range for a cohort report. `startOffset` is commonly set to 0 so that reports contain data from the acquisition of the cohort forward. If `granularity` is `DAILY`, the `startDate` of the extended reporting date range is `startDate` of the cohort plus `startOffset` days. If `granularity` is `WEEKLY`, the `startDate` of the extended reporting date range is `startDate` of the cohort plus `startOffset * 7` days. If `granularity` is `MONTHLY`, the `startDate` of the extended reporting date range is `startDate` of the cohort plus `startOffset * 30` days.
    },
  },
  &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 property&#x27;s default currency.
  &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;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;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;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;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;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;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in 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;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;doubleValue&quot;: 3.14, # Double value
          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
        },
      },
      &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;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
        &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
      },
    },
    &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;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 9 dimensions.
      &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;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;dimensionNames&quot;: [ # Names of dimensions. The names must refer back to names in the dimensions field of the request.
            &quot;A String&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;name&quot;: &quot;A String&quot;, # The name of the dimension. See the [API Dimensions](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#dimensions) for the list of dimension names. If `dimensionExpression` is specified, `name` can be any string that you would like within the allowed character set. For example if a `dimensionExpression` concatenates `country` and `city`, you could call that dimension `countryAndCity`. Dimension names that you choose must match the regular expression &quot;^[a-zA-Z0-9_]$&quot;. Dimensions are referenced by `name` in `dimensionFilter`, `orderBys`, `dimensionExpression`, and `pivots`.
    },
  ],
  &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;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;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;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;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in 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;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;doubleValue&quot;: 3.14, # Double value
          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
        },
      },
      &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;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
        &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
      },
    },
    &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;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;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;name&quot;: &quot;A String&quot;, # The name of the metric. See the [API Metrics](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#metrics) for the list of metric names. If `expression` is specified, `name` can be any string that you would like within the allowed character set. For example if `expression` is `screenPageViews/sessions`, you could call that metric&#x27;s name = `viewsPerSession`. Metric names that you choose must match the regular expression &quot;^[a-zA-Z0-9_]$&quot;. Metrics are referenced by `name` in `metricFilter`, `orderBys`, and metric `expression`.
    },
  ],
  &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;limit&quot;: &quot;A String&quot;, # The number of unique combinations of dimension values to return in this pivot. The `limit` parameter is required. A `limit` of 10,000 is common for single pivot requests. The product of the `limit` for each `pivot` in a `RunPivotReportRequest` must not exceed 100,000. For example, a two pivot request with `limit: 1000` in each pivot will fail because the product is `1,000,000`.
      &quot;metricAggregations&quot;: [ # Aggregate the metrics by dimensions in this pivot using the specified metric_aggregations.
        &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;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;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;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;property&quot;: &quot;A String&quot;, # A Google Analytics GA4 property identifier whose events are tracked. Specified in the URL path and not the body. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/devguides/reporting/data/v1/property-id). Within a batch request, this property should either be unspecified or consistent with the batch-level property. Example: properties/1234
  &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).
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response pivot report table corresponding to a pivot 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;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.
    { # 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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this message is. This `kind` is always the fixed string &quot;analyticsData#runPivotReport&quot;. Useful to distinguish between response types in JSON.
  &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;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;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;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.
            { # The value of a dimension.
              &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
            },
          ],
        },
      ],
      &quot;rowCount&quot;: 42, # The cardinality of the pivot. 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;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;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;potentiallyThresholdedRequestsPerHour&quot;: { # Current state for a particular quota group. # Analytics Properties can send up to 120 requests with potentially thresholded dimensions per hour. In a batch request, each report request is individually counted for this quota if the request contains potentially thresholded dimensions.
      &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;tokensPerHour&quot;: { # Current state for a particular quota group. # Standard Analytics Properties can use up to 5,000 tokens per hour; Analytics 360 Properties can use 50,000 tokens per hour. 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;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.
        },
      ],
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="runRealtimeReport">runRealtimeReport(property, body=None, x__xgafv=None)</code>
  <pre>The Google Analytics Realtime API returns a customized report of realtime event data for your property. These reports show events and usage from the last 30 minutes.

Args:
  property: string, A Google Analytics GA4 property identifier whose events are tracked. Specified in the URL path and not the body. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/devguides/reporting/data/v1/property-id). Example: properties/1234 (required)
  body: object, The request body.
    The object takes the form of:

{ # The request to generate a realtime report.
  &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;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;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;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in 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;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;doubleValue&quot;: 3.14, # Double value
          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
        },
      },
      &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;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
        &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
      },
    },
    &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;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 9 dimensions.
      &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;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;dimensionNames&quot;: [ # Names of dimensions. The names must refer back to names in the dimensions field of the request.
            &quot;A String&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;name&quot;: &quot;A String&quot;, # The name of the dimension. See the [API Dimensions](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#dimensions) for the list of dimension names. If `dimensionExpression` is specified, `name` can be any string that you would like within the allowed character set. For example if a `dimensionExpression` concatenates `country` and `city`, you could call that dimension `countryAndCity`. Dimension names that you choose must match the regular expression &quot;^[a-zA-Z0-9_]$&quot;. Dimensions are referenced by `name` in `dimensionFilter`, `orderBys`, `dimensionExpression`, and `pivots`.
    },
  ],
  &quot;limit&quot;: &quot;A String&quot;, # The number of rows to return. If unspecified, 10,000 rows are returned. The API returns a maximum of 100,000 rows per request, no matter how many you ask for. `limit` must be positive. The API can also return fewer rows than the requested `limit`, if there aren&#x27;t as many dimension values as the `limit`. For instance, there are fewer than 300 possible values for the dimension `country`, so when reporting on only `country`, you can&#x27;t get more than 300 rows, even if you set `limit` to a higher value.
  &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;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;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;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;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in 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;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;doubleValue&quot;: 3.14, # Double value
          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
        },
      },
      &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;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
        &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
      },
    },
    &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;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;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;name&quot;: &quot;A String&quot;, # The name of the metric. See the [API Metrics](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#metrics) for the list of metric names. If `expression` is specified, `name` can be any string that you would like within the allowed character set. For example if `expression` is `screenPageViews/sessions`, you could call that metric&#x27;s name = `viewsPerSession`. Metric names that you choose must match the regular expression &quot;^[a-zA-Z0-9_]$&quot;. Metrics are referenced by `name` in `metricFilter`, `orderBys`, and metric `expression`.
    },
  ],
  &quot;orderBys&quot;: [ # Specifies how rows are ordered in the response.
    { # The sort options.
      &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;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;returnPropertyQuota&quot;: True or False, # Toggles whether to return the current state of this Analytics Property&#x27;s Realtime quota. Quota is returned in [PropertyQuota](#PropertyQuota).
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response realtime report table corresponding to a request.
  &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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this message is. This `kind` is always the fixed string &quot;analyticsData#runRealtimeReport&quot;. Useful to distinguish between response types in JSON.
  &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;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;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 Realtime quota state including 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;potentiallyThresholdedRequestsPerHour&quot;: { # Current state for a particular quota group. # Analytics Properties can send up to 120 requests with potentially thresholded dimensions per hour. In a batch request, each report request is individually counted for this quota if the request contains potentially thresholded dimensions.
      &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;tokensPerHour&quot;: { # Current state for a particular quota group. # Standard Analytics Properties can use up to 5,000 tokens per hour; Analytics 360 Properties can use 50,000 tokens per hour. 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;rowCount&quot;: 42, # The total number of rows in the query result. `rowCount` is independent of the number of rows returned in the response and the `limit` request parameter. For example if a query returns 175 rows and includes `limit` of 50 in the API request, the response will contain `rowCount` of 175 but only 50 rows.
  &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;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.
        },
      ],
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="runReport">runReport(property, body=None, x__xgafv=None)</code>
  <pre>Returns a customized report of your Google Analytics event data. Reports contain statistics derived from data collected by the Google Analytics tracking code. The data returned from the API is as a table with columns for the requested dimensions and metrics. Metrics are individual measurements of user activity on your property, such as active users or event count. Dimensions break down metrics across some common criteria, such as country or event name.

Args:
  property: string, A Google Analytics GA4 property identifier whose events are tracked. Specified in the URL path and not the body. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/devguides/reporting/data/v1/property-id). Within a batch request, this property should either be unspecified or consistent with the batch-level property. Example: properties/1234 (required)
  body: object, The request body.
    The object takes the form of:

{ # The request to generate a report.
  &quot;cohortSpec&quot;: { # The specification of cohorts for a cohort report. Cohort reports create a time series of user retention for the cohort. For example, you could select the cohort of users that were acquired in the first week of September and follow that cohort for the next six weeks. Selecting the users acquired in the first week of September cohort is specified in the `cohort` object. Following that cohort for the next six weeks is specified in the `cohortsRange` object. For examples, see [Cohort Report Examples](https://developers.google.com/analytics/devguides/reporting/data/v1/advanced#cohort_report_examples). The report response could show a weekly time series where say your app has retained 60% of this cohort after three weeks and 25% of this cohort after six weeks. These two percentages can be calculated by the metric `cohortActiveUsers/cohortTotalUsers` and will be separate rows in the 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;: { # Optional settings of a cohort report. # Optional settings for a cohort report.
      &quot;accumulate&quot;: True or False, # If true, accumulates the result from first touch day to the end day. Not supported in `RunReportRequest`.
    },
    &quot;cohorts&quot;: [ # Defines the selection criteria to group users into cohorts. Most cohort reports define only a single cohort. If multiple cohorts are specified, each cohort can be recognized in the report by their name.
      { # Defines a cohort selection criteria. A cohort is a group of users who share a common characteristic. For example, users with the same `firstSessionDate` belong to the same cohort.
        &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 touch date is between start date and end date defined in the `dateRange`. This `dateRange` does not specify the full date range of event data that is present in a cohort report. In a cohort report, this `dateRange` is extended by the granularity and offset present in the `cohortsRange`; event data for the extended reporting date range is present in a cohort report. In a cohort request, this `dateRange` is required and the `dateRanges` in the `RunReportRequest` or `RunPivotReportRequest` must be unspecified. This `dateRange` should generally be aligned with the cohort&#x27;s granularity. If `CohortsRange` uses daily granularity, this `dateRange` can be a single day. If `CohortsRange` uses weekly granularity, this `dateRange` can be aligned to a week boundary, starting at Sunday and ending Saturday. If `CohortsRange` uses monthly granularity, this `dateRange` can be aligned to a month, starting at the first and ending on the last day of the month.
          &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;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;dimension&quot;: &quot;A String&quot;, # Dimension used by the cohort. Required and only supports `firstSessionDate`.
        &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;cohortsRange&quot;: { # Configures the extended reporting date range for a cohort report. Specifies an offset duration to follow the cohorts over. # Cohort reports follow cohorts over an extended reporting date range. This range specifies an offset duration to follow the cohorts over.
      &quot;endOffset&quot;: 42, # Required. `endOffset` specifies the end date of the extended reporting date range for a cohort report. `endOffset` can be any positive integer but is commonly set to 5 to 10 so that reports contain data on the cohort for the next several granularity time periods. If `granularity` is `DAILY`, the `endDate` of the extended reporting date range is `endDate` of the cohort plus `endOffset` days. If `granularity` is `WEEKLY`, the `endDate` of the extended reporting date range is `endDate` of the cohort plus `endOffset * 7` days. If `granularity` is `MONTHLY`, the `endDate` of the extended reporting date range is `endDate` of the cohort plus `endOffset * 30` days.
      &quot;granularity&quot;: &quot;A String&quot;, # Required. The granularity used to interpret the `startOffset` and `endOffset` for the extended reporting date range for a cohort report.
      &quot;startOffset&quot;: 42, # `startOffset` specifies the start date of the extended reporting date range for a cohort report. `startOffset` is commonly set to 0 so that reports contain data from the acquisition of the cohort forward. If `granularity` is `DAILY`, the `startDate` of the extended reporting date range is `startDate` of the cohort plus `startOffset` days. If `granularity` is `WEEKLY`, the `startDate` of the extended reporting date range is `startDate` of the cohort plus `startOffset * 7` days. If `granularity` is `MONTHLY`, the `startDate` of the extended reporting date range is `startDate` of the cohort plus `startOffset * 30` days.
    },
  },
  &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 property&#x27;s default currency.
  &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;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;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;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;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;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;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in 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;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;doubleValue&quot;: 3.14, # Double value
          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
        },
      },
      &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;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
        &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
      },
    },
    &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;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 9 dimensions.
      &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;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;dimensionNames&quot;: [ # Names of dimensions. The names must refer back to names in the dimensions field of the request.
            &quot;A String&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;name&quot;: &quot;A String&quot;, # The name of the dimension. See the [API Dimensions](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#dimensions) for the list of dimension names. If `dimensionExpression` is specified, `name` can be any string that you would like within the allowed character set. For example if a `dimensionExpression` concatenates `country` and `city`, you could call that dimension `countryAndCity`. Dimension names that you choose must match the regular expression &quot;^[a-zA-Z0-9_]$&quot;. Dimensions are referenced by `name` in `dimensionFilter`, `orderBys`, `dimensionExpression`, and `pivots`.
    },
  ],
  &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;limit&quot;: &quot;A String&quot;, # The number of rows to return. If unspecified, 10,000 rows are returned. The API returns a maximum of 100,000 rows per request, no matter how many you ask for. `limit` must be positive. The API can also return fewer rows than the requested `limit`, if there aren&#x27;t as many dimension values as the `limit`. For instance, there are fewer than 300 possible values for the dimension `country`, so when reporting on only `country`, you can&#x27;t get more than 300 rows, even if you set `limit` to a higher value. To learn more about this pagination parameter, see [Pagination](https://developers.google.com/analytics/devguides/reporting/data/v1/basics#pagination).
  &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;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;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;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;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in 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;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;doubleValue&quot;: 3.14, # Double value
          &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
        },
      },
      &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;matchType&quot;: &quot;A String&quot;, # The match type for this filter.
        &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
      },
    },
    &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;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;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;name&quot;: &quot;A String&quot;, # The name of the metric. See the [API Metrics](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#metrics) for the list of metric names. If `expression` is specified, `name` can be any string that you would like within the allowed character set. For example if `expression` is `screenPageViews/sessions`, you could call that metric&#x27;s name = `viewsPerSession`. Metric names that you choose must match the regular expression &quot;^[a-zA-Z0-9_]$&quot;. Metrics are referenced by `name` in `metricFilter`, `orderBys`, and metric `expression`.
    },
  ],
  &quot;offset&quot;: &quot;A String&quot;, # The row count of the start row. The first row is counted as row 0. When paging, the first request does not specify offset; or equivalently, sets offset to 0; the first request returns the first `limit` of rows. The second request sets offset to the `limit` of the first request; the second request returns the second `limit` of rows. To learn more about this pagination parameter, see [Pagination](https://developers.google.com/analytics/devguides/reporting/data/v1/basics#pagination).
  &quot;orderBys&quot;: [ # Specifies how rows are ordered in the response.
    { # The sort options.
      &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;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;property&quot;: &quot;A String&quot;, # A Google Analytics GA4 property identifier whose events are tracked. Specified in the URL path and not the body. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/devguides/reporting/data/v1/property-id). Within a batch request, this property should either be unspecified or consistent with the batch-level property. Example: properties/1234
  &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).
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response report table corresponding to a request.
  &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;kind&quot;: &quot;A String&quot;, # Identifies what kind of resource this message is. This `kind` is always the fixed string &quot;analyticsData#runReport&quot;. Useful to distinguish between response types in JSON.
  &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;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;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;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;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;potentiallyThresholdedRequestsPerHour&quot;: { # Current state for a particular quota group. # Analytics Properties can send up to 120 requests with potentially thresholded dimensions per hour. In a batch request, each report request is individually counted for this quota if the request contains potentially thresholded dimensions.
      &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;tokensPerHour&quot;: { # Current state for a particular quota group. # Standard Analytics Properties can use up to 5,000 tokens per hour; Analytics 360 Properties can use 50,000 tokens per hour. 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;rowCount&quot;: 42, # The total number of rows in the query result. `rowCount` is independent of the number of rows returned in the response, the `limit` request parameter, and the `offset` request parameter. For example if a query returns 175 rows and includes `limit` of 50 in the API request, the response will contain `rowCount` of 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;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;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.
        },
      ],
    },
  ],
}</pre>
</div>

</body></html>