<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_v1alpha.html">Google Analytics Data API</a> . <a href="analyticsdata_v1alpha.properties.html">properties</a></h1>
<h2>Instance Methods</h2>
<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="#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>
<h3>Method Details</h3>
<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;metrics&quot;: [ # The metric descriptions.
      { # Explains a metric.
        &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;apiName&quot;: &quot;A String&quot;, # A metric name. Useable in [Metric](#Metric)&#x27;s `name`. For example, `eventCount`.
        &quot;type&quot;: &quot;A String&quot;, # The type of this metric.
        &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;description&quot;: &quot;A String&quot;, # Description of how this metric is used and calculated.
        &quot;uiName&quot;: &quot;A String&quot;, # This metric&#x27;s name within the Google Analytics user interface. For example, `Event count`.
      },
    ],
    &quot;dimensions&quot;: [ # The dimension descriptions.
      { # Explains a dimension.
        &quot;uiName&quot;: &quot;A String&quot;, # This dimension&#x27;s name within the Google Analytics user interface. For example, `Event name`.
        &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;customDefinition&quot;: True or False, # True if the dimension is a custom dimension for this property.
        &quot;description&quot;: &quot;A String&quot;, # Description of how this dimension is used and calculated.
        &quot;apiName&quot;: &quot;A String&quot;, # This dimension&#x27;s name. Useable in [Dimension](#Dimension)&#x27;s `name`. For example, `eventName`.
      },
    ],
    &quot;name&quot;: &quot;A String&quot;, # Resource name of this metadata.
  }</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;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;dimensions&quot;: [ # The dimensions requested and displayed.
      { # Dimensions are attributes of your data. For example, the dimension city indicates the city from which an event originates. Dimension values in report responses are strings; for example, city could be &quot;Paris&quot; or &quot;New York&quot;. Requests are allowed up to 8 dimensions.
        &quot;name&quot;: &quot;A String&quot;, # The name of the dimension. See the [API Dimensions](https://developers.google.com/analytics/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. For example if a `dimensionExpression` concatenates `country` and `city`, you could call that dimension `countryAndCity`. Dimensions are referenced by `name` in `dimensionFilter`, `orderBys`, `dimensionExpression`, and `pivots`.
        &quot;dimensionExpression&quot;: { # Used to express a dimension which is the result of a formula of multiple dimensions. Example usages: 1) lower_case(dimension) 2) concatenate(dimension1, symbol, dimension2). # One dimension can be the result of an expression of multiple dimensions. For example, dimension &quot;country, city&quot;: concatenate(country, &quot;, &quot;, city).
          &quot;concatenate&quot;: { # Used to combine dimension values to a single dimension. # Used to combine dimension values to a single dimension. For example, dimension &quot;country, city&quot;: concatenate(country, &quot;, &quot;, city).
            &quot;dimensionNames&quot;: [ # Names of dimensions. The names must refer back to names in the dimensions field of the request.
              &quot;A String&quot;,
            ],
            &quot;delimiter&quot;: &quot;A String&quot;, # The delimiter placed between dimension names. Delimiters are often single characters such as &quot;|&quot; or &quot;,&quot; but can be longer strings. If a dimension value contains the delimiter, both will be present in response with no distinction. For example if dimension 1 value = &quot;US,FR&quot;, dimension 2 value = &quot;JP&quot;, and delimiter = &quot;,&quot;, then the response will contain &quot;US,FR,JP&quot;.
          },
          &quot;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;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;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;filter&quot;: { # An expression to filter dimension or metric values. # A primitive filter. All fields in filter in same FilterExpression needs to be either all dimensions or metrics.
        &quot;stringFilter&quot;: { # The filter for string # Strings related filter.
          &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
          &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;nullFilter&quot;: True or False, # A filter for null values. If True, a null dimension value is matched by this filter. Null filter is commonly used inside a NOT filter expression. For example, a NOT expression of a null filter removes rows when a dimension is null.
        &quot;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;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in dimensions or metrics.
        &quot;betweenFilter&quot;: { # To express that the result needs to be between two numbers (inclusive). # A filter for two values.
          &quot;fromValue&quot;: { # To represent a number. # Begins with this number.
            &quot;doubleValue&quot;: 3.14, # Double value
            &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
          },
          &quot;toValue&quot;: { # To represent a number. # Ends with this number.
            &quot;doubleValue&quot;: 3.14, # Double value
            &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
          },
        },
      },
      &quot;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;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. For example if `expression` is `screenPageViews/sessions`, you could call that metric&#x27;s name = `viewsPerSession`. Metrics are referenced by `name` in `metricFilter`, `orderBys`, and metric `expression`.
      },
    ],
    &quot;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).
    &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;filter&quot;: { # An expression to filter dimension or metric values. # A primitive filter. All fields in filter in same FilterExpression needs to be either all dimensions or metrics.
        &quot;stringFilter&quot;: { # The filter for string # Strings related filter.
          &quot;value&quot;: &quot;A String&quot;, # The string value used for the matching.
          &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;nullFilter&quot;: True or False, # A filter for null values. If True, a null dimension value is matched by this filter. Null filter is commonly used inside a NOT filter expression. For example, a NOT expression of a null filter removes rows when a dimension is null.
        &quot;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;fieldName&quot;: &quot;A String&quot;, # The dimension name or metric name. Must be a name defined in dimensions or metrics.
        &quot;betweenFilter&quot;: { # To express that the result needs to be between two numbers (inclusive). # A filter for two values.
          &quot;fromValue&quot;: { # To represent a number. # Begins with this number.
            &quot;doubleValue&quot;: 3.14, # Double value
            &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
          },
          &quot;toValue&quot;: { # To represent a number. # Ends with this number.
            &quot;doubleValue&quot;: 3.14, # Double value
            &quot;int64Value&quot;: &quot;A String&quot;, # Integer value
          },
        },
      },
      &quot;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;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;limit&quot;: &quot;A String&quot;, # The number of rows to return. If unspecified, 10 rows are returned. If -1, all rows are returned.
    &quot;orderBys&quot;: [ # Specifies how rows are ordered in the response.
      { # The sort options.
        &quot;dimension&quot;: { # Sorts by dimension values. # Sorts results by a dimension&#x27;s values.
          &quot;orderType&quot;: &quot;A String&quot;, # Controls the rule for dimension value ordering.
          &quot;dimensionName&quot;: &quot;A String&quot;, # A dimension name in the request to order by.
        },
        &quot;desc&quot;: True or False, # If true, sorts by descending order.
        &quot;pivot&quot;: { # Sorts by a pivot column group. # Sorts results by a metric&#x27;s values within a pivot column group.
          &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;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;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.
        },
      },
    ],
  }

  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;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;tokensPerHour&quot;: { # Current state for a particular quota group. # Standard Analytics Properties can use up to 5,000 tokens per day; Analytics 360 Properties can use 50,000 tokens per day. An API request consumes a single number of tokens, and that number is deducted from both the hourly and daily quotas.
        &quot;consumed&quot;: 42, # Quota consumed by this request.
        &quot;remaining&quot;: 42, # Quota remaining after this request.
      },
      &quot;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;tokensPerDay&quot;: { # Current state for a particular quota group. # Standard Analytics Properties can use up to 25,000 tokens per day; Analytics 360 Properties can use 250,000 tokens per day. Most requests consume fewer than 10 tokens.
        &quot;consumed&quot;: 42, # Quota consumed by this request.
        &quot;remaining&quot;: 42, # Quota remaining after this request.
      },
      &quot;serverErrorsPerProjectPerHour&quot;: { # Current state for a particular quota group. # Standard Analytics Properties and cloud project pairs can have up to 10 server errors per hour; Analytics 360 Properties and cloud project pairs can have up to 50 server errors per hour.
        &quot;consumed&quot;: 42, # Quota consumed by this request.
        &quot;remaining&quot;: 42, # Quota remaining after this request.
      },
    },
    &quot;maximums&quot;: [ # If requested, the maximum values of metrics.
      { # Report data for each row. For example if RunReportRequest contains: ```none &quot;dimensions&quot;: [ { &quot;name&quot;: &quot;eventName&quot; }, { &quot;name&quot;: &quot;countryId&quot; } ], &quot;metrics&quot;: [ { &quot;name&quot;: &quot;eventCount&quot; } ] ``` One row with &#x27;in_app_purchase&#x27; as the eventName, &#x27;JP&#x27; as the countryId, and 15 as the eventCount, would be: ```none &quot;dimensionValues&quot;: [ { &quot;value&quot;: &quot;in_app_purchase&quot; }, { &quot;value&quot;: &quot;JP&quot; } ], &quot;metricValues&quot;: [ { &quot;value&quot;: &quot;15&quot; } ] ```
        &quot;metricValues&quot;: [ # List of requested visible metric values.
          { # The value of a metric.
            &quot;value&quot;: &quot;A String&quot;, # Measurement value. See MetricHeader for type.
          },
        ],
        &quot;dimensionValues&quot;: [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
          { # The value of a dimension.
            &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
          },
        ],
      },
    ],
    &quot;metricHeaders&quot;: [ # Describes metric columns. The number of MetricHeaders and ordering of MetricHeaders matches the metrics present in rows.
      { # Describes a metric column in the report. Visible metrics requested in a report produce column entries within rows and MetricHeaders. However, metrics used exclusively within filters or expressions do not produce columns in a report; correspondingly, those metrics do not produce headers.
        &quot;name&quot;: &quot;A String&quot;, # The metric&#x27;s name.
        &quot;type&quot;: &quot;A String&quot;, # The metric&#x27;s data type.
      },
    ],
    &quot;minimums&quot;: [ # If requested, the minimum values of metrics.
      { # Report data for each row. For example if RunReportRequest contains: ```none &quot;dimensions&quot;: [ { &quot;name&quot;: &quot;eventName&quot; }, { &quot;name&quot;: &quot;countryId&quot; } ], &quot;metrics&quot;: [ { &quot;name&quot;: &quot;eventCount&quot; } ] ``` One row with &#x27;in_app_purchase&#x27; as the eventName, &#x27;JP&#x27; as the countryId, and 15 as the eventCount, would be: ```none &quot;dimensionValues&quot;: [ { &quot;value&quot;: &quot;in_app_purchase&quot; }, { &quot;value&quot;: &quot;JP&quot; } ], &quot;metricValues&quot;: [ { &quot;value&quot;: &quot;15&quot; } ] ```
        &quot;metricValues&quot;: [ # List of requested visible metric values.
          { # The value of a metric.
            &quot;value&quot;: &quot;A String&quot;, # Measurement value. See MetricHeader for type.
          },
        ],
        &quot;dimensionValues&quot;: [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
          { # The value of a dimension.
            &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
          },
        ],
      },
    ],
    &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;metricValues&quot;: [ # List of requested visible metric values.
          { # The value of a metric.
            &quot;value&quot;: &quot;A String&quot;, # Measurement value. See MetricHeader for type.
          },
        ],
        &quot;dimensionValues&quot;: [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
          { # The value of a dimension.
            &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
          },
        ],
      },
    ],
    &quot;rows&quot;: [ # Rows of dimension value combinations and metric values in the report.
      { # Report data for each row. For example if RunReportRequest contains: ```none &quot;dimensions&quot;: [ { &quot;name&quot;: &quot;eventName&quot; }, { &quot;name&quot;: &quot;countryId&quot; } ], &quot;metrics&quot;: [ { &quot;name&quot;: &quot;eventCount&quot; } ] ``` One row with &#x27;in_app_purchase&#x27; as the eventName, &#x27;JP&#x27; as the countryId, and 15 as the eventCount, would be: ```none &quot;dimensionValues&quot;: [ { &quot;value&quot;: &quot;in_app_purchase&quot; }, { &quot;value&quot;: &quot;JP&quot; } ], &quot;metricValues&quot;: [ { &quot;value&quot;: &quot;15&quot; } ] ```
        &quot;metricValues&quot;: [ # List of requested visible metric values.
          { # The value of a metric.
            &quot;value&quot;: &quot;A String&quot;, # Measurement value. See MetricHeader for type.
          },
        ],
        &quot;dimensionValues&quot;: [ # List of requested dimension values. In a PivotReport, dimension_values are only listed for dimensions included in a pivot.
          { # The value of a dimension.
            &quot;value&quot;: &quot;A String&quot;, # Value as a string if the dimension type is a string.
          },
        ],
      },
    ],
    &quot;rowCount&quot;: 42, # The total number of rows in the query result, regardless of the number of rows returned in the response. For example if a query returns 175 rows and includes limit = 50 in the API request, the response will contain row_count = 175 but only 50 rows.
    &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.
      },
    ],
  }</pre>
</div>

</body></html>