<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="#checkCompatibility">checkCompatibility(property, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">This compatibility method lists dimensions and metrics that can be added to a report request and maintain compatibility. This method fails if the request's dimensions and metrics are incompatible. In Google Analytics, reports fail if they request incompatible dimensions and/or metrics; in that case, you will need to remove dimensions and/or metrics from the incompatible report until the report is compatible. The Realtime and Core reports have different compatibility rules. This method checks compatibility for Core reports.</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. In the same FilterExpression, all of the filter&#x27;s field names need to be either all dimensions or all 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, the 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 `^[a-zA-Z0-9_]$`. 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. In the same FilterExpression, all of the filter&#x27;s field names need to be either all dimensions or all 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 `^[a-zA-Z0-9_]$`. 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;currencyCode&quot;: &quot;A String&quot;, # The currency code used in this report. Intended to be used in formatting currency metrics like `purchaseRevenue` for visualization. If currency_code was specified in the request, this response parameter will echo the request parameter; otherwise, this response parameter is the property&#x27;s current currency_code. Currency codes are string encodings of currency types from the ISO 4217 standard (https://en.wikipedia.org/wiki/ISO_4217); for example &quot;USD&quot;, &quot;EUR&quot;, &quot;JPY&quot;. To learn more, see https://support.google.com/analytics/answer/9796179.
        &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;emptyReason&quot;: &quot;A String&quot;, # If empty reason is specified, the report is empty for this reason.
        &quot;schemaRestrictionResponse&quot;: { # The schema restrictions actively enforced in creating this report. To learn more, see [Access and data-restriction management](https://support.google.com/analytics/answer/10851388). # Describes the schema restrictions actively enforced in creating this report. To learn more, see [Access and data-restriction management](https://support.google.com/analytics/answer/10851388).
          &quot;activeMetricRestrictions&quot;: [ # All restrictions actively enforced in creating the report. For example, `purchaseRevenue` always has the restriction type `REVENUE_DATA`. However, this active response restriction is only populated if the user&#x27;s custom role disallows access to `REVENUE_DATA`.
            { # A metric actively restricted in creating the report.
              &quot;metricName&quot;: &quot;A String&quot;, # The name of the restricted metric.
              &quot;restrictedMetricTypes&quot;: [ # The reason for this metric&#x27;s restriction.
                &quot;A String&quot;,
              ],
            },
          ],
        },
        &quot;subjectToThresholding&quot;: True or False, # If `subjectToThresholding` is true, this report is subject to thresholding and only returns data that meets the minimum aggregation thresholds. It is possible for a request to be subject to thresholding thresholding and no data is absent from the report, and this happens when all data is above the thresholds. To learn more, see [Data thresholds](https://support.google.com/analytics/answer/9383630) and [About Demographics and Interests](https://support.google.com/analytics/answer/2799357).
        &quot;timeZone&quot;: &quot;A String&quot;, # The property&#x27;s current timezone. Intended to be used to interpret time-based dimensions like `hour` and `minute`. Formatted as strings from the IANA Time Zone database (https://www.iana.org/time-zones); for example &quot;America/New_York&quot; or &quot;Asia/Tokyo&quot;.
      },
      &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. # Dimension filters allow you to ask for only specific dimension values in the report. To learn more, see [Fundamentals of Dimension Filters](https://developers.google.com/analytics/devguides/reporting/data/v1/basics#dimension_filters) for examples. 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. In the same FilterExpression, all of the filter&#x27;s field names need to be either all dimensions or all 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, the 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 `^[a-zA-Z0-9_]$`. 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 after aggregating the report&#x27;s rows, similar to SQL having-clause. 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. In the same FilterExpression, all of the filter&#x27;s field names need to be either all dimensions or all 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 `^[a-zA-Z0-9_]$`. 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;currencyCode&quot;: &quot;A String&quot;, # The currency code used in this report. Intended to be used in formatting currency metrics like `purchaseRevenue` for visualization. If currency_code was specified in the request, this response parameter will echo the request parameter; otherwise, this response parameter is the property&#x27;s current currency_code. Currency codes are string encodings of currency types from the ISO 4217 standard (https://en.wikipedia.org/wiki/ISO_4217); for example &quot;USD&quot;, &quot;EUR&quot;, &quot;JPY&quot;. To learn more, see https://support.google.com/analytics/answer/9796179.
        &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;emptyReason&quot;: &quot;A String&quot;, # If empty reason is specified, the report is empty for this reason.
        &quot;schemaRestrictionResponse&quot;: { # The schema restrictions actively enforced in creating this report. To learn more, see [Access and data-restriction management](https://support.google.com/analytics/answer/10851388). # Describes the schema restrictions actively enforced in creating this report. To learn more, see [Access and data-restriction management](https://support.google.com/analytics/answer/10851388).
          &quot;activeMetricRestrictions&quot;: [ # All restrictions actively enforced in creating the report. For example, `purchaseRevenue` always has the restriction type `REVENUE_DATA`. However, this active response restriction is only populated if the user&#x27;s custom role disallows access to `REVENUE_DATA`.
            { # A metric actively restricted in creating the report.
              &quot;metricName&quot;: &quot;A String&quot;, # The name of the restricted metric.
              &quot;restrictedMetricTypes&quot;: [ # The reason for this metric&#x27;s restriction.
                &quot;A String&quot;,
              ],
            },
          ],
        },
        &quot;subjectToThresholding&quot;: True or False, # If `subjectToThresholding` is true, this report is subject to thresholding and only returns data that meets the minimum aggregation thresholds. It is possible for a request to be subject to thresholding thresholding and no data is absent from the report, and this happens when all data is above the thresholds. To learn more, see [Data thresholds](https://support.google.com/analytics/answer/9383630) and [About Demographics and Interests](https://support.google.com/analytics/answer/2799357).
        &quot;timeZone&quot;: &quot;A String&quot;, # The property&#x27;s current timezone. Intended to be used to interpret time-based dimensions like `hour` and `minute`. Formatted as strings from the IANA Time Zone database (https://www.iana.org/time-zones); for example &quot;America/New_York&quot; or &quot;Asia/Tokyo&quot;.
      },
      &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="checkCompatibility">checkCompatibility(property, body=None, x__xgafv=None)</code>
  <pre>This compatibility method lists dimensions and metrics that can be added to a report request and maintain compatibility. This method fails if the request&#x27;s dimensions and metrics are incompatible. In Google Analytics, reports fail if they request incompatible dimensions and/or metrics; in that case, you will need to remove dimensions and/or metrics from the incompatible report until the report is compatible. The Realtime and Core reports have different compatibility rules. This method checks compatibility for Core reports.

Args:
  property: string, A Google Analytics GA4 property identifier whose events are tracked. To learn more, see [where to find your Property ID](https://developers.google.com/analytics/devguides/reporting/data/v1/property-id). `property` should be the same value as in your `runReport` request. Example: properties/1234 Set the Property ID to 0 for compatibility checking on dimensions and metrics common to all properties. In this special mode, this method will not return custom dimensions and metrics. (required)
  body: object, The request body.
    The object takes the form of:

{ # The request for compatibility information for a report&#x27;s dimensions and metrics. Check compatibility provides a preview of the compatibility of a report; fields shared with the `runReport` request should be the same values as in your `runReport` request.
  &quot;compatibilityFilter&quot;: &quot;A String&quot;, # Filters the dimensions and metrics in the response to just this compatibility. Commonly used as `”compatibilityFilter”: “COMPATIBLE”` to only return compatible dimensions &amp; metrics.
  &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. `dimensionFilter` should be the same value as in your `runReport` request.
    &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. In the same FilterExpression, all of the filter&#x27;s field names need to be either all dimensions or all 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 in this report. `dimensions` should be the same value as in your `runReport` request.
    { # 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, the 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 `^[a-zA-Z0-9_]$`. Dimensions are referenced by `name` in `dimensionFilter`, `orderBys`, `dimensionExpression`, and `pivots`.
    },
  ],
  &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. `metricFilter` should be the same value as in your `runReport` request
    &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. In the same FilterExpression, all of the filter&#x27;s field names need to be either all dimensions or all 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 in this report. `metrics` should be the same value as in your `runReport` request.
    { # 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 `^[a-zA-Z0-9_]$`. Metrics are referenced by `name` in `metricFilter`, `orderBys`, and metric `expression`.
    },
  ],
}

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

Returns:
  An object of the form:

    { # The compatibility response with the compatibility of each dimension &amp; metric.
  &quot;dimensionCompatibilities&quot;: [ # The compatibility of each dimension.
    { # The compatibility for a single dimension.
      &quot;compatibility&quot;: &quot;A String&quot;, # The compatibility of this dimension. If the compatibility is COMPATIBLE, this dimension can be successfully added to the report.
      &quot;dimensionMetadata&quot;: { # Explains a dimension. # The dimension metadata contains the API name for this compatibility information. The dimension metadata also contains other helpful information like the UI name and description.
        &quot;apiName&quot;: &quot;A String&quot;, # This dimension&#x27;s name. Useable in [Dimension](#Dimension)&#x27;s `name`. For example, `eventName`.
        &quot;category&quot;: &quot;A String&quot;, # The display name of the category that this dimension belongs to. Similar dimensions and metrics are categorized together.
        &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;metricCompatibilities&quot;: [ # The compatibility of each metric.
    { # The compatibility for a single metric.
      &quot;compatibility&quot;: &quot;A String&quot;, # The compatibility of this metric. If the compatibility is COMPATIBLE, this metric can be successfully added to the report.
      &quot;metricMetadata&quot;: { # Explains a metric. # The metric metadata contains the API name for this compatibility information. The metric metadata also contains other helpful information like the UI name and description.
        &quot;apiName&quot;: &quot;A String&quot;, # A metric name. Useable in [Metric](#Metric)&#x27;s `name`. For example, `eventCount`.
        &quot;blockedReasons&quot;: [ # If reasons are specified, your access is blocked to this metric for this property. API requests from you to this property for this metric will succeed; however, the report will contain only zeros for this metric. API requests with metric filters on blocked metrics will fail. If reasons are empty, you have access to this metric. To learn more, see [Access and data-restriction management](https://support.google.com/analytics/answer/10851388).
          &quot;A String&quot;,
        ],
        &quot;category&quot;: &quot;A String&quot;, # The display name of the category that this metrics belongs to. Similar dimensions and metrics are categorized together.
        &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`.
      },
    },
  ],
}</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;category&quot;: &quot;A String&quot;, # The display name of the category that this dimension belongs to. Similar dimensions and metrics are categorized together.
      &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;blockedReasons&quot;: [ # If reasons are specified, your access is blocked to this metric for this property. API requests from you to this property for this metric will succeed; however, the report will contain only zeros for this metric. API requests with metric filters on blocked metrics will fail. If reasons are empty, you have access to this metric. To learn more, see [Access and data-restriction management](https://support.google.com/analytics/answer/10851388).
        &quot;A String&quot;,
      ],
      &quot;category&quot;: &quot;A String&quot;, # The display name of the category that this metrics belongs to. Similar dimensions and metrics are categorized together.
      &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. In the same FilterExpression, all of the filter&#x27;s field names need to be either all dimensions or all 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, the 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 `^[a-zA-Z0-9_]$`. 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. In the same FilterExpression, all of the filter&#x27;s field names need to be either all dimensions or all 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 `^[a-zA-Z0-9_]$`. 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;currencyCode&quot;: &quot;A String&quot;, # The currency code used in this report. Intended to be used in formatting currency metrics like `purchaseRevenue` for visualization. If currency_code was specified in the request, this response parameter will echo the request parameter; otherwise, this response parameter is the property&#x27;s current currency_code. Currency codes are string encodings of currency types from the ISO 4217 standard (https://en.wikipedia.org/wiki/ISO_4217); for example &quot;USD&quot;, &quot;EUR&quot;, &quot;JPY&quot;. To learn more, see https://support.google.com/analytics/answer/9796179.
    &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;emptyReason&quot;: &quot;A String&quot;, # If empty reason is specified, the report is empty for this reason.
    &quot;schemaRestrictionResponse&quot;: { # The schema restrictions actively enforced in creating this report. To learn more, see [Access and data-restriction management](https://support.google.com/analytics/answer/10851388). # Describes the schema restrictions actively enforced in creating this report. To learn more, see [Access and data-restriction management](https://support.google.com/analytics/answer/10851388).
      &quot;activeMetricRestrictions&quot;: [ # All restrictions actively enforced in creating the report. For example, `purchaseRevenue` always has the restriction type `REVENUE_DATA`. However, this active response restriction is only populated if the user&#x27;s custom role disallows access to `REVENUE_DATA`.
        { # A metric actively restricted in creating the report.
          &quot;metricName&quot;: &quot;A String&quot;, # The name of the restricted metric.
          &quot;restrictedMetricTypes&quot;: [ # The reason for this metric&#x27;s restriction.
            &quot;A String&quot;,
          ],
        },
      ],
    },
    &quot;subjectToThresholding&quot;: True or False, # If `subjectToThresholding` is true, this report is subject to thresholding and only returns data that meets the minimum aggregation thresholds. It is possible for a request to be subject to thresholding thresholding and no data is absent from the report, and this happens when all data is above the thresholds. To learn more, see [Data thresholds](https://support.google.com/analytics/answer/9383630) and [About Demographics and Interests](https://support.google.com/analytics/answer/2799357).
    &quot;timeZone&quot;: &quot;A String&quot;, # The property&#x27;s current timezone. Intended to be used to interpret time-based dimensions like `hour` and `minute`. Formatted as strings from the IANA Time Zone database (https://www.iana.org/time-zones); for example &quot;America/New_York&quot; or &quot;Asia/Tokyo&quot;.
  },
  &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. In the same FilterExpression, all of the filter&#x27;s field names need to be either all dimensions or all 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, the 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 `^[a-zA-Z0-9_]$`. 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. In the same FilterExpression, all of the filter&#x27;s field names need to be either all dimensions or all 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 `^[a-zA-Z0-9_]$`. Metrics are referenced by `name` in `metricFilter`, `orderBys`, and metric `expression`.
    },
  ],
  &quot;minuteRanges&quot;: [ # The minute ranges of event data to read. If unspecified, one minute range for the last 30 minutes will be used. If multiple minute ranges are requested, each response row will contain a zero based minute range index. If two minute ranges overlap, the event data for the overlapping minutes is included in the response rows for both minute ranges.
    { # A contiguous set of minutes: startMinutesAgo, startMinutesAgo + 1, ..., endMinutesAgo. Requests are allowed up to 2 minute ranges.
      &quot;endMinutesAgo&quot;: 42, # The inclusive end minute for the query as a number of minutes before now. Cannot be before `startMinutesAgo`. For example, `&quot;endMinutesAgo&quot;: 15` specifies the report should include event data from prior to 15 minutes ago. If unspecified, `endMinutesAgo` is defaulted to 0. Standard Analytics properties can request any minute in the last 30 minutes of event data (`endMinutesAgo &lt;= 29`), and 360 Analytics properties can request any minute in the last 60 minutes of event data (`endMinutesAgo &lt;= 59`).
      &quot;name&quot;: &quot;A String&quot;, # Assigns a name to this minute 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, minute ranges are named by their zero based index in the request: `date_range_0`, `date_range_1`, etc.
      &quot;startMinutesAgo&quot;: 42, # The inclusive start minute for the query as a number of minutes before now. For example, `&quot;startMinutesAgo&quot;: 29` specifies the report should include event data from 29 minutes ago and after. Cannot be after `endMinutesAgo`. If unspecified, `startMinutesAgo` is defaulted to 29. Standard Analytics properties can request up to the last 30 minutes of event data (`startMinutesAgo &lt;= 29`), and 360 Analytics properties can request up to the last 60 minutes of event data (`startMinutesAgo &lt;= 59`).
    },
  ],
  &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. # Dimension filters allow you to ask for only specific dimension values in the report. To learn more, see [Fundamentals of Dimension Filters](https://developers.google.com/analytics/devguides/reporting/data/v1/basics#dimension_filters) for examples. 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. In the same FilterExpression, all of the filter&#x27;s field names need to be either all dimensions or all 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, the 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 `^[a-zA-Z0-9_]$`. 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 after aggregating the report&#x27;s rows, similar to SQL having-clause. 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. In the same FilterExpression, all of the filter&#x27;s field names need to be either all dimensions or all 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 `^[a-zA-Z0-9_]$`. 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;currencyCode&quot;: &quot;A String&quot;, # The currency code used in this report. Intended to be used in formatting currency metrics like `purchaseRevenue` for visualization. If currency_code was specified in the request, this response parameter will echo the request parameter; otherwise, this response parameter is the property&#x27;s current currency_code. Currency codes are string encodings of currency types from the ISO 4217 standard (https://en.wikipedia.org/wiki/ISO_4217); for example &quot;USD&quot;, &quot;EUR&quot;, &quot;JPY&quot;. To learn more, see https://support.google.com/analytics/answer/9796179.
    &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;emptyReason&quot;: &quot;A String&quot;, # If empty reason is specified, the report is empty for this reason.
    &quot;schemaRestrictionResponse&quot;: { # The schema restrictions actively enforced in creating this report. To learn more, see [Access and data-restriction management](https://support.google.com/analytics/answer/10851388). # Describes the schema restrictions actively enforced in creating this report. To learn more, see [Access and data-restriction management](https://support.google.com/analytics/answer/10851388).
      &quot;activeMetricRestrictions&quot;: [ # All restrictions actively enforced in creating the report. For example, `purchaseRevenue` always has the restriction type `REVENUE_DATA`. However, this active response restriction is only populated if the user&#x27;s custom role disallows access to `REVENUE_DATA`.
        { # A metric actively restricted in creating the report.
          &quot;metricName&quot;: &quot;A String&quot;, # The name of the restricted metric.
          &quot;restrictedMetricTypes&quot;: [ # The reason for this metric&#x27;s restriction.
            &quot;A String&quot;,
          ],
        },
      ],
    },
    &quot;subjectToThresholding&quot;: True or False, # If `subjectToThresholding` is true, this report is subject to thresholding and only returns data that meets the minimum aggregation thresholds. It is possible for a request to be subject to thresholding thresholding and no data is absent from the report, and this happens when all data is above the thresholds. To learn more, see [Data thresholds](https://support.google.com/analytics/answer/9383630) and [About Demographics and Interests](https://support.google.com/analytics/answer/2799357).
    &quot;timeZone&quot;: &quot;A String&quot;, # The property&#x27;s current timezone. Intended to be used to interpret time-based dimensions like `hour` and `minute`. Formatted as strings from the IANA Time Zone database (https://www.iana.org/time-zones); for example &quot;America/New_York&quot; or &quot;Asia/Tokyo&quot;.
  },
  &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>