<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="playdeveloperreporting_v1beta1.html">Google Play Developer Reporting API</a> . <a href="playdeveloperreporting_v1beta1.vitals.html">vitals</a> . <a href="playdeveloperreporting_v1beta1.vitals.crashrate.html">crashrate</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="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Describes the properties of the metric set.</p>
<p class="toc_element">
  <code><a href="#query">query(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Queries the metrics in the metric set.</p>
<p class="toc_element">
  <code><a href="#query_next">query_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</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="get">get(name, x__xgafv=None)</code>
  <pre>Describes the properties of the metric set.

Args:
  name: string, Required. The resource name. Format: apps/{app}/crashRateMetricSet (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Singleton resource representing the set of crashrate metrics. This metric set contains crashes data combined with usage data to produce a normalized metric independent of user counts. **Supported aggregation periods:** * DAILY: metrics are aggregated in calendar date intervals. Due to historical constraints, the only supported timezone is `America/Los_Angeles`. **Supported metrics:** * `crashRate` (`google.type.Decimal`): Percentage of distinct users in the aggregation period that experienced at least one crash. If your app exhibits a crash rate equal to or higher than the threshold, it&#x27;s in the bottom 25% of the top 1,000 apps on Google Play (by number of installs). * `crashRate7dUserWeighted` (`google.type.Decimal`): Rolling average value of `crashRate` in the last 7 days. The daily values are weighted by the count of distinct users for the day. * `crashRate28dUserWeighted` (`google.type.Decimal`): Rolling average value of `crashRate` in the last 28 days. The daily values are weighted by the count of distinct users for the day. * `distinctUsers` (`google.type.Decimal`): Count of distinct users in the aggregation period that were used as normalization value for the `crashRate` metric. A user is counted in this metric if they used the app in the foreground during the aggregation period. Care must be taken not to aggregate this count further, as it may result in users being counted multiple times. **Supported dimensions:** * `apiLevel` (string): the API level of Android that was running on the user&#x27;s device. * `versionCode` (int64): version of the app that was running on the user&#x27;s device. * `deviceModel` (string): unique identifier of the user&#x27;s device model. * `deviceType` (string): the type (also known as form factor) of the user&#x27;s device. * `countryCode` (string): the country or region of the user&#x27;s device based on their IP address, represented as a 2-letter ISO-3166 code (e.g. US for the United States). **Required permissions**: to access this resource, the calling user needs the _View app information (read-only)_ permission for the app. **Related metric sets:** * vitals.errors contains unnormalized version (absolute counts) of crashes. * vitals.errors contains normalized metrics about ANRs, another stability metric.
  &quot;freshnessInfo&quot;: { # Represents the latest available time that can be requested in a TimelineSpec. Different aggregation periods have different freshness. For example, `DAILY` aggregation may lag behind `HOURLY` in cases where such aggregation is computed only once at the end of the day. # Summary about data freshness in this resource.
    &quot;freshnesses&quot;: [ # Information about data freshness for every supported aggregation period. This field has set semantics, keyed by the `aggregation_period` field.
      { # Information about data freshness for a single aggregation period.
        &quot;aggregationPeriod&quot;: &quot;A String&quot;, # Aggregation period for which data is available.
        &quot;latestEndTime&quot;: { # Represents civil time (or occasionally physical time). This type can represent a civil time in one of a few possible ways: * When utc_offset is set and time_zone is unset: a civil time on a calendar day with a particular offset from UTC. * When time_zone is set and utc_offset is unset: a civil time on a calendar day in a particular time zone. * When neither time_zone nor utc_offset is set: a civil time on a calendar day in local time. The date is relative to the Proleptic Gregorian Calendar. If year is 0, the DateTime is considered not to have a specific year. month and day must have valid, non-zero values. This type may also be used to represent a physical time if all the date and time fields are set and either case of the `time_offset` oneof is set. Consider using `Timestamp` message for physical time instead. If your use case also would like to store the user&#x27;s timezone, that can be done in another field. This type is more flexible than some applications may want. Make sure to document and validate your application&#x27;s limitations. # Latest end time for which data is available, for the aggregation period. The time is specified in the metric set&#x27;s default timezone. *Note:* time ranges in TimelineSpec are represented as `start_time, end_time)`. For example, if the latest available timeline data point for a `DAILY` aggregation period is `2021-06-23 00:00:00 America/Los_Angeles`, the value of this field would be `2021-06-24 00:00:00 America/Los_Angeles` so it can be easily reused in [TimelineSpec.end_time.
          &quot;day&quot;: 42, # Required. Day of month. Must be from 1 to 31 and valid for the year and month.
          &quot;hours&quot;: 42, # Required. Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
          &quot;minutes&quot;: 42, # Required. Minutes of hour of day. Must be from 0 to 59.
          &quot;month&quot;: 42, # Required. Month of year. Must be from 1 to 12.
          &quot;nanos&quot;: 42, # Required. Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
          &quot;seconds&quot;: 42, # Required. Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.
          &quot;timeZone&quot;: { # Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones). # Time zone.
            &quot;id&quot;: &quot;A String&quot;, # IANA Time Zone Database time zone, e.g. &quot;America/New_York&quot;.
            &quot;version&quot;: &quot;A String&quot;, # Optional. IANA Time Zone Database version number, e.g. &quot;2019a&quot;.
          },
          &quot;utcOffset&quot;: &quot;A String&quot;, # UTC offset. Must be whole seconds, between -18 hours and +18 hours. For example, a UTC offset of -4:00 would be represented as { seconds: -14400 }.
          &quot;year&quot;: 42, # Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a datetime without a year.
        },
      },
    ],
  },
  &quot;name&quot;: &quot;A String&quot;, # The resource name. Format: apps/{app}/crashRateMetricSet
}</pre>
</div>

<div class="method">
    <code class="details" id="query">query(name, body=None, x__xgafv=None)</code>
  <pre>Queries the metrics in the metric set.

Args:
  name: string, Required. The resource name. Format: apps/{app}/crashRateMetricSet (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for QueryCrashRateMetricSet.
  &quot;dimensions&quot;: [ # Dimensions to slice the metrics by. **Supported dimensions:** * `apiLevel` (string): the API level of Android that was running on the user&#x27;s device. * `versionCode` (int64): version of the app that was running on the user&#x27;s device. * `deviceModel` (string): unique identifier of the user&#x27;s device model. * `deviceType` (string): the type (also known as form factor) of the user&#x27;s device. * `countryCode` (string): the country or region of the user&#x27;s device based on their IP address, represented as a 2-letter ISO-3166 code (e.g. US for the United States).
    &quot;A String&quot;,
  ],
  &quot;filter&quot;: &quot;A String&quot;, # Filters to apply to data. The filtering expression follows [AIP-160](https://google.aip.dev/160) standard and supports filtering by equality of all breakdown dimensions.
  &quot;metrics&quot;: [ # Metrics to aggregate. **Supported metrics:** * `crashRate` (`google.type.Decimal`): Percentage of distinct users in the aggregation period that experienced at least one crash. If your app exhibits a crash rate equal to or higher than the threshold, it&#x27;s in the bottom 25% of the top 1,000 apps on Google Play (by number of installs). * `crashRate7dUserWeighted` (`google.type.Decimal`): Rolling average value of `crashRate` in the last 7 days. The daily values are weighted by the count of distinct users for the day. * `crashRate28dUserWeighted` (`google.type.Decimal`): Rolling average value of `crashRate` in the last 28 days. The daily values are weighted by the count of distinct users for the day. * `distinctUsers` (`google.type.Decimal`): Count of distinct users in the aggregation period that were used as normalization value for the `crashRate` metric. A user is counted in this metric if they used the app in the foreground during the aggregation period. Care must be taken not to aggregate this count further, as it may result in users being counted multiple times.
    &quot;A String&quot;,
  ],
  &quot;pageSize&quot;: 42, # Maximum size of the returned data. If unspecified, at most 1000 rows will be returned. The maximum value is 100,000; values above 100,000 will be coerced to 100,000.
  &quot;pageToken&quot;: &quot;A String&quot;, # A page token, received from a previous call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to the request must match the call that provided the page token.
  &quot;timelineSpec&quot;: { # Specification of the time-related aggregation parameters of a timeline. Timelines have an aggregation period (`DAILY`, `HOURLY`, etc) which defines how events are aggregated in metrics. The points in a timeline are defined by the starting DateTime of the aggregation period. The duration is implicit in the AggregationPeriod. Hourly aggregation periods, when supported by a metric set, are always specified in UTC to avoid ambiguities around daylight saving time transitions, where an hour is skipped when adopting DST, and repeated when abandoning DST. For example, the timestamp &#x27;2021-11-07 01:00:00 America/Los_Angeles&#x27; is ambiguous since it can correspond to &#x27;2021-11-07 08:00:00 UTC&#x27; or &#x27;2021-11-07 09:00:00 UTC&#x27;. Daily aggregation periods require specifying a timezone which will determine the precise instants of the start and the end of the day. Not all metric sets support all timezones, so make sure to check which timezones are supported by the metric set you want to query. # Specification of the timeline aggregation parameters. **Supported aggregation periods:** * DAILY: metrics are aggregated in calendar date intervals. Due to historical constraints, the default and only supported timezone is `America/Los_Angeles`.
    &quot;aggregationPeriod&quot;: &quot;A String&quot;, # Type of the aggregation period of the datapoints in the timeline. Intervals are identified by the date and time at the start of the interval.
    &quot;endTime&quot;: { # Represents civil time (or occasionally physical time). This type can represent a civil time in one of a few possible ways: * When utc_offset is set and time_zone is unset: a civil time on a calendar day with a particular offset from UTC. * When time_zone is set and utc_offset is unset: a civil time on a calendar day in a particular time zone. * When neither time_zone nor utc_offset is set: a civil time on a calendar day in local time. The date is relative to the Proleptic Gregorian Calendar. If year is 0, the DateTime is considered not to have a specific year. month and day must have valid, non-zero values. This type may also be used to represent a physical time if all the date and time fields are set and either case of the `time_offset` oneof is set. Consider using `Timestamp` message for physical time instead. If your use case also would like to store the user&#x27;s timezone, that can be done in another field. This type is more flexible than some applications may want. Make sure to document and validate your application&#x27;s limitations. # Ending datapoint of the timeline (exclusive). See start_time for restrictions. The timezone of the end point must match the timezone of the start point.
      &quot;day&quot;: 42, # Required. Day of month. Must be from 1 to 31 and valid for the year and month.
      &quot;hours&quot;: 42, # Required. Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
      &quot;minutes&quot;: 42, # Required. Minutes of hour of day. Must be from 0 to 59.
      &quot;month&quot;: 42, # Required. Month of year. Must be from 1 to 12.
      &quot;nanos&quot;: 42, # Required. Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
      &quot;seconds&quot;: 42, # Required. Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.
      &quot;timeZone&quot;: { # Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones). # Time zone.
        &quot;id&quot;: &quot;A String&quot;, # IANA Time Zone Database time zone, e.g. &quot;America/New_York&quot;.
        &quot;version&quot;: &quot;A String&quot;, # Optional. IANA Time Zone Database version number, e.g. &quot;2019a&quot;.
      },
      &quot;utcOffset&quot;: &quot;A String&quot;, # UTC offset. Must be whole seconds, between -18 hours and +18 hours. For example, a UTC offset of -4:00 would be represented as { seconds: -14400 }.
      &quot;year&quot;: 42, # Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a datetime without a year.
    },
    &quot;startTime&quot;: { # Represents civil time (or occasionally physical time). This type can represent a civil time in one of a few possible ways: * When utc_offset is set and time_zone is unset: a civil time on a calendar day with a particular offset from UTC. * When time_zone is set and utc_offset is unset: a civil time on a calendar day in a particular time zone. * When neither time_zone nor utc_offset is set: a civil time on a calendar day in local time. The date is relative to the Proleptic Gregorian Calendar. If year is 0, the DateTime is considered not to have a specific year. month and day must have valid, non-zero values. This type may also be used to represent a physical time if all the date and time fields are set and either case of the `time_offset` oneof is set. Consider using `Timestamp` message for physical time instead. If your use case also would like to store the user&#x27;s timezone, that can be done in another field. This type is more flexible than some applications may want. Make sure to document and validate your application&#x27;s limitations. # Starting datapoint of the timeline (inclusive). Must be aligned to the aggregation period as follows: * HOURLY: the &#x27;minutes&#x27;, &#x27;seconds&#x27; and &#x27;nanos&#x27; fields must be unset. The time_zone can be left unset (defaults to UTC) or set explicitly to &quot;UTC&quot;. Setting any other utc_offset or timezone id will result in a validation error. * DAILY: the &#x27;hours&#x27;, &#x27;minutes&#x27;, &#x27;seconds&#x27; and &#x27;nanos&#x27; fields must be unset. Different metric sets support different timezones. It can be left unset to use the default timezone specified by the metric set. The timezone of the end point must match the timezone of the start point.
      &quot;day&quot;: 42, # Required. Day of month. Must be from 1 to 31 and valid for the year and month.
      &quot;hours&quot;: 42, # Required. Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
      &quot;minutes&quot;: 42, # Required. Minutes of hour of day. Must be from 0 to 59.
      &quot;month&quot;: 42, # Required. Month of year. Must be from 1 to 12.
      &quot;nanos&quot;: 42, # Required. Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
      &quot;seconds&quot;: 42, # Required. Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.
      &quot;timeZone&quot;: { # Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones). # Time zone.
        &quot;id&quot;: &quot;A String&quot;, # IANA Time Zone Database time zone, e.g. &quot;America/New_York&quot;.
        &quot;version&quot;: &quot;A String&quot;, # Optional. IANA Time Zone Database version number, e.g. &quot;2019a&quot;.
      },
      &quot;utcOffset&quot;: &quot;A String&quot;, # UTC offset. Must be whole seconds, between -18 hours and +18 hours. For example, a UTC offset of -4:00 would be represented as { seconds: -14400 }.
      &quot;year&quot;: 42, # Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a datetime without a year.
    },
  },
}

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

Returns:
  An object of the form:

    { # Response message for QueryCrashRateMetricSet.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Continuation token to fetch the next page of data.
  &quot;rows&quot;: [ # Returned rows of data.
    { # Represents a row of dimensions and metrics.
      &quot;aggregationPeriod&quot;: &quot;A String&quot;, # Granularity of the aggregation period of the row.
      &quot;dimensions&quot;: [ # Dimension columns in the row.
        { # Represents the value of a single dimension.
          &quot;dimension&quot;: &quot;A String&quot;, # Name of the dimension.
          &quot;int64Value&quot;: &quot;A String&quot;, # Actual value, represented as an int64.
          &quot;stringValue&quot;: &quot;A String&quot;, # Actual value, represented as a string.
        },
      ],
      &quot;metrics&quot;: [ # Metric columns in the row.
        { # Represents the value of a metric.
          &quot;decimalValue&quot;: { # A representation of a decimal value, such as 2.5. Clients may convert values into language-native decimal formats, such as Java&#x27;s BigDecimal or Python&#x27;s decimal.Decimal. [BigDecimal]: https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/math/BigDecimal.html [decimal.Decimal]: https://docs.python.org/3/library/decimal.html # Actual value, represented as a decimal number.
            &quot;value&quot;: &quot;A String&quot;, # The decimal value, as a string. The string representation consists of an optional sign, `+` (`U+002B`) or `-` (`U+002D`), followed by a sequence of zero or more decimal digits (&quot;the integer&quot;), optionally followed by a fraction, optionally followed by an exponent. The fraction consists of a decimal point followed by zero or more decimal digits. The string must contain at least one digit in either the integer or the fraction. The number formed by the sign, the integer and the fraction is referred to as the significand. The exponent consists of the character `e` (`U+0065`) or `E` (`U+0045`) followed by one or more decimal digits. Services **should** normalize decimal values before storing them by: - Removing an explicitly-provided `+` sign (`+2.5` -&gt; `2.5`). - Replacing a zero-length integer value with `0` (`.5` -&gt; `0.5`). - Coercing the exponent character to lower-case (`2.5E8` -&gt; `2.5e8`). - Removing an explicitly-provided zero exponent (`2.5e0` -&gt; `2.5`). Services **may** perform additional normalization based on its own needs and the internal decimal implementation selected, such as shifting the decimal point and exponent value together (example: `2.5e-1` &lt;-&gt; `0.25`). Additionally, services **may** preserve trailing zeroes in the fraction to indicate increased precision, but are not required to do so. Note that only the `.` character is supported to divide the integer and the fraction; `,` **should not** be supported regardless of locale. Additionally, thousand separators **should not** be supported. If a service does support them, values **must** be normalized. The ENBF grammar is: DecimalString = [Sign] Significand [Exponent]; Sign = &#x27;+&#x27; | &#x27;-&#x27;; Significand = Digits &#x27;.&#x27; | [Digits] &#x27;.&#x27; Digits; Exponent = (&#x27;e&#x27; | &#x27;E&#x27;) [Sign] Digits; Digits = { &#x27;0&#x27; | &#x27;1&#x27; | &#x27;2&#x27; | &#x27;3&#x27; | &#x27;4&#x27; | &#x27;5&#x27; | &#x27;6&#x27; | &#x27;7&#x27; | &#x27;8&#x27; | &#x27;9&#x27; }; Services **should** clearly document the range of supported values, the maximum supported precision (total number of digits), and, if applicable, the scale (number of digits after the decimal point), as well as how it behaves when receiving out-of-bounds values. Services **may** choose to accept values passed as input even when the value has a higher precision or scale than the service supports, and **should** round the value to fit the supported scale. Alternatively, the service **may** error with `400 Bad Request` (`INVALID_ARGUMENT` in gRPC) if precision would be lost. Services **should** error with `400 Bad Request` (`INVALID_ARGUMENT` in gRPC) if the service receives a value outside of the supported range.
          },
          &quot;metric&quot;: &quot;A String&quot;, # Name of the metric.
        },
      ],
      &quot;startTime&quot;: { # Represents civil time (or occasionally physical time). This type can represent a civil time in one of a few possible ways: * When utc_offset is set and time_zone is unset: a civil time on a calendar day with a particular offset from UTC. * When time_zone is set and utc_offset is unset: a civil time on a calendar day in a particular time zone. * When neither time_zone nor utc_offset is set: a civil time on a calendar day in local time. The date is relative to the Proleptic Gregorian Calendar. If year is 0, the DateTime is considered not to have a specific year. month and day must have valid, non-zero values. This type may also be used to represent a physical time if all the date and time fields are set and either case of the `time_offset` oneof is set. Consider using `Timestamp` message for physical time instead. If your use case also would like to store the user&#x27;s timezone, that can be done in another field. This type is more flexible than some applications may want. Make sure to document and validate your application&#x27;s limitations. # Starting date (and time for hourly aggregation) of the period covered by this row.
        &quot;day&quot;: 42, # Required. Day of month. Must be from 1 to 31 and valid for the year and month.
        &quot;hours&quot;: 42, # Required. Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value &quot;24:00:00&quot; for scenarios like business closing time.
        &quot;minutes&quot;: 42, # Required. Minutes of hour of day. Must be from 0 to 59.
        &quot;month&quot;: 42, # Required. Month of year. Must be from 1 to 12.
        &quot;nanos&quot;: 42, # Required. Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
        &quot;seconds&quot;: 42, # Required. Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.
        &quot;timeZone&quot;: { # Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones). # Time zone.
          &quot;id&quot;: &quot;A String&quot;, # IANA Time Zone Database time zone, e.g. &quot;America/New_York&quot;.
          &quot;version&quot;: &quot;A String&quot;, # Optional. IANA Time Zone Database version number, e.g. &quot;2019a&quot;.
        },
        &quot;utcOffset&quot;: &quot;A String&quot;, # UTC offset. Must be whole seconds, between -18 hours and +18 hours. For example, a UTC offset of -4:00 would be represented as { seconds: -14400 }.
        &quot;year&quot;: 42, # Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a datetime without a year.
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="query_next">query_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>