google-apis-playdeveloperreporting_v1beta1 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1209 @@
1
+ # Copyright 2020 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require 'date'
16
+ require 'google/apis/core/base_service'
17
+ require 'google/apis/core/json_representation'
18
+ require 'google/apis/core/hashable'
19
+ require 'google/apis/errors'
20
+
21
+ module Google
22
+ module Apis
23
+ module PlaydeveloperreportingV1beta1
24
+
25
+ # Represents an anomaly detected in a dataset. Our anomaly detection systems
26
+ # flag datapoints in a time series that fall outside of and expected range
27
+ # derived from historical data. Although those expected ranges have an upper and
28
+ # a lower bound, we only flag anomalies when the data has become unexpectedly
29
+ # _worse_, which usually corresponds to the case where the metric crosses the
30
+ # upper bound. Multiple contiguous datapoints in a timeline outside of the
31
+ # expected range will be grouped into a single anomaly. Therefore, an anomaly
32
+ # represents effectively a segment of a metric's timeline. The information
33
+ # stored in the `timeline_spec`, `dimensions` and `metric` can be used to fetch
34
+ # a full timeline with extended ragne for context. **Required permissions**: to
35
+ # access this resource, the calling user needs the _View app information (read-
36
+ # only)_ permission for the app.
37
+ class GooglePlayDeveloperReportingV1beta1Anomaly
38
+ include Google::Apis::Core::Hashable
39
+
40
+ # Combination of dimensions in which the anomaly was detected.
41
+ # Corresponds to the JSON property `dimensions`
42
+ # @return [Array<Google::Apis::PlaydeveloperreportingV1beta1::GooglePlayDeveloperReportingV1beta1DimensionValue>]
43
+ attr_accessor :dimensions
44
+
45
+ # Represents the value of a metric.
46
+ # Corresponds to the JSON property `metric`
47
+ # @return [Google::Apis::PlaydeveloperreportingV1beta1::GooglePlayDeveloperReportingV1beta1MetricValue]
48
+ attr_accessor :metric
49
+
50
+ # Metric set resource where the anomaly was detected.
51
+ # Corresponds to the JSON property `metricSet`
52
+ # @return [String]
53
+ attr_accessor :metric_set
54
+
55
+ # Name of the anomaly. Format: apps/`app`/anomalies/`anomaly`
56
+ # Corresponds to the JSON property `name`
57
+ # @return [String]
58
+ attr_accessor :name
59
+
60
+ # Specification of the time-related aggregation parameters of a timeline.
61
+ # Timelines have an aggregation period (`DAILY`, `HOURLY`, etc) which defines
62
+ # how events are aggregated in metrics. The points in a timeline are defined by
63
+ # the starting DateTime of the aggregation period. The duration is implicit in
64
+ # the AggregationPeriod. Hourly aggregation periods, when supported by a metric
65
+ # set, are always specified in UTC to avoid ambiguities around daylight saving
66
+ # time transitions, where an hour is skipped when adopting DST, and repeated
67
+ # when abandoning DST. For example, the timestamp '2021-11-07 01:00:00 America/
68
+ # Los_Angeles' is ambiguous since it can correspond to '2021-11-07 08:00:00 UTC'
69
+ # or '2021-11-07 09:00:00 UTC'. Daily aggregation periods require specifying a
70
+ # timezone which will determine the precise instants of the start and the end of
71
+ # the day. Not all metric sets support all timezones, so make sure to check
72
+ # which timezones are supported by the metric set you want to query.
73
+ # Corresponds to the JSON property `timelineSpec`
74
+ # @return [Google::Apis::PlaydeveloperreportingV1beta1::GooglePlayDeveloperReportingV1beta1TimelineSpec]
75
+ attr_accessor :timeline_spec
76
+
77
+ def initialize(**args)
78
+ update!(**args)
79
+ end
80
+
81
+ # Update properties of this object
82
+ def update!(**args)
83
+ @dimensions = args[:dimensions] if args.key?(:dimensions)
84
+ @metric = args[:metric] if args.key?(:metric)
85
+ @metric_set = args[:metric_set] if args.key?(:metric_set)
86
+ @name = args[:name] if args.key?(:name)
87
+ @timeline_spec = args[:timeline_spec] if args.key?(:timeline_spec)
88
+ end
89
+ end
90
+
91
+ # Singleton resource representing the set of ANR (Application not responding)
92
+ # metrics. This metric set contains ANRs data combined with usage data to
93
+ # produce a normalized metric independent of user counts. **Supported
94
+ # aggregation periods:** * DAILY: metrics are aggregated in calendar date
95
+ # intervals. Due to historical constraints, the only supported timezone is `
96
+ # America/Los_Angeles`. **Supported metrics:** * `anrRate` (`google.type.Decimal`
97
+ # ): Percentage of distinct users in the aggregation period that experienced at
98
+ # least one ANR. If your app exhibits an ANR rate equal to or higher than the
99
+ # threshold, it's in the bottom 25% of the top 1,000 apps on Google Play (by
100
+ # number of installs). * `anrRate7dUserWeighted` (`google.type.Decimal`):
101
+ # Rolling average value of `anrRate` in the last 7 days. The daily values are
102
+ # weighted by the count of distinct users for the day. * `anrRate28dUserWeighted`
103
+ # (`google.type.Decimal`): Rolling average value of `anrRate` in the last 28
104
+ # days. The daily values are weighted by the count of distinct users for the day.
105
+ # * `distinctUsers` (`google.type.Decimal`): Count of distinct users in the
106
+ # aggregation period that were used as normalization value for the `anrRate`
107
+ # metric. A user is counted in this metric if they used the app in the
108
+ # foreground during the aggregation period. Care must be taken not to aggregate
109
+ # this count further, as it may result in users being counted multiple times. **
110
+ # Supported dimensions:** * `apiLevel` (string): the API level of Android that
111
+ # was running on the user's device. * `versionCode` (int64): version of the app
112
+ # that was running on the user's device. * `deviceModel` (string): unique
113
+ # identifier of the user's device model. * `deviceType` (string): the type (also
114
+ # known as form factor) of the user's device. * `countryCode` (string): the
115
+ # country or region of the user's device based on their IP address, represented
116
+ # as a 2-letter ISO-3166 code (e.g. US for the United States). **Required
117
+ # permissions**: to access this resource, the calling user needs the _View app
118
+ # information (read-only)_ permission for the app. **Related metric sets:** *
119
+ # vitals.errors contains unnormalized version (absolute counts) of crashes. *
120
+ # vitals.errors contains normalized metrics about crashes, another stability
121
+ # metric.
122
+ class GooglePlayDeveloperReportingV1beta1AnrRateMetricSet
123
+ include Google::Apis::Core::Hashable
124
+
125
+ # Represents the latest available time that can be requested in a TimelineSpec.
126
+ # Different aggregation periods have different freshness. For example, `DAILY`
127
+ # aggregation may lag behind `HOURLY` in cases where such aggregation is
128
+ # computed only once at the end of the day.
129
+ # Corresponds to the JSON property `freshnessInfo`
130
+ # @return [Google::Apis::PlaydeveloperreportingV1beta1::GooglePlayDeveloperReportingV1beta1FreshnessInfo]
131
+ attr_accessor :freshness_info
132
+
133
+ # The resource name. Format: apps/`app`/anrRateMetricSet
134
+ # Corresponds to the JSON property `name`
135
+ # @return [String]
136
+ attr_accessor :name
137
+
138
+ def initialize(**args)
139
+ update!(**args)
140
+ end
141
+
142
+ # Update properties of this object
143
+ def update!(**args)
144
+ @freshness_info = args[:freshness_info] if args.key?(:freshness_info)
145
+ @name = args[:name] if args.key?(:name)
146
+ end
147
+ end
148
+
149
+ # Singleton resource representing the set of crashrate metrics. This metric set
150
+ # contains crashes data combined with usage data to produce a normalized metric
151
+ # independent of user counts. **Supported aggregation periods:** * DAILY:
152
+ # metrics are aggregated in calendar date intervals. Due to historical
153
+ # constraints, the only supported timezone is `America/Los_Angeles`. **Supported
154
+ # metrics:** * `crashRate` (`google.type.Decimal`): Percentage of distinct users
155
+ # in the aggregation period that experienced at least one crash. If your app
156
+ # exhibits a crash rate equal to or higher than the threshold, it's in the
157
+ # bottom 25% of the top 1,000 apps on Google Play (by number of installs). * `
158
+ # crashRate7dUserWeighted` (`google.type.Decimal`): Rolling average value of `
159
+ # crashRate` in the last 7 days. The daily values are weighted by the count of
160
+ # distinct users for the day. * `crashRate28dUserWeighted` (`google.type.Decimal`
161
+ # ): Rolling average value of `crashRate` in the last 28 days. The daily values
162
+ # are weighted by the count of distinct users for the day. * `distinctUsers` (`
163
+ # google.type.Decimal`): Count of distinct users in the aggregation period that
164
+ # were used as normalization value for the `crashRate` metric. A user is counted
165
+ # in this metric if they used the app in the foreground during the aggregation
166
+ # period. Care must be taken not to aggregate this count further, as it may
167
+ # result in users being counted multiple times. **Supported dimensions:** * `
168
+ # apiLevel` (string): the API level of Android that was running on the user's
169
+ # device. * `versionCode` (int64): version of the app that was running on the
170
+ # user's device. * `deviceModel` (string): unique identifier of the user's
171
+ # device model. * `deviceType` (string): the type (also known as form factor) of
172
+ # the user's device. * `countryCode` (string): the country or region of the user'
173
+ # s device based on their IP address, represented as a 2-letter ISO-3166 code (e.
174
+ # g. US for the United States). **Required permissions**: to access this
175
+ # resource, the calling user needs the _View app information (read-only)_
176
+ # permission for the app. **Related metric sets:** * vitals.errors contains
177
+ # unnormalized version (absolute counts) of crashes. * vitals.errors contains
178
+ # normalized metrics about ANRs, another stability metric.
179
+ class GooglePlayDeveloperReportingV1beta1CrashRateMetricSet
180
+ include Google::Apis::Core::Hashable
181
+
182
+ # Represents the latest available time that can be requested in a TimelineSpec.
183
+ # Different aggregation periods have different freshness. For example, `DAILY`
184
+ # aggregation may lag behind `HOURLY` in cases where such aggregation is
185
+ # computed only once at the end of the day.
186
+ # Corresponds to the JSON property `freshnessInfo`
187
+ # @return [Google::Apis::PlaydeveloperreportingV1beta1::GooglePlayDeveloperReportingV1beta1FreshnessInfo]
188
+ attr_accessor :freshness_info
189
+
190
+ # The resource name. Format: apps/`app`/crashRateMetricSet
191
+ # Corresponds to the JSON property `name`
192
+ # @return [String]
193
+ attr_accessor :name
194
+
195
+ def initialize(**args)
196
+ update!(**args)
197
+ end
198
+
199
+ # Update properties of this object
200
+ def update!(**args)
201
+ @freshness_info = args[:freshness_info] if args.key?(:freshness_info)
202
+ @name = args[:name] if args.key?(:name)
203
+ end
204
+ end
205
+
206
+ # Represents the value of a single dimension.
207
+ class GooglePlayDeveloperReportingV1beta1DimensionValue
208
+ include Google::Apis::Core::Hashable
209
+
210
+ # Name of the dimension.
211
+ # Corresponds to the JSON property `dimension`
212
+ # @return [String]
213
+ attr_accessor :dimension
214
+
215
+ # Actual value, represented as an int64.
216
+ # Corresponds to the JSON property `int64Value`
217
+ # @return [Fixnum]
218
+ attr_accessor :int64_value
219
+
220
+ # Actual value, represented as a string.
221
+ # Corresponds to the JSON property `stringValue`
222
+ # @return [String]
223
+ attr_accessor :string_value
224
+
225
+ def initialize(**args)
226
+ update!(**args)
227
+ end
228
+
229
+ # Update properties of this object
230
+ def update!(**args)
231
+ @dimension = args[:dimension] if args.key?(:dimension)
232
+ @int64_value = args[:int64_value] if args.key?(:int64_value)
233
+ @string_value = args[:string_value] if args.key?(:string_value)
234
+ end
235
+ end
236
+
237
+ # Singleton resource representing the set of Excessive Weakeups metrics. This
238
+ # metric set contains AlarmManager wakeup counts data combined with process
239
+ # state data to produce a normalized metric independent of user counts. **
240
+ # Supported aggregation periods:** * DAILY: metrics are aggregated in calendar
241
+ # date intervals. Due to historical constraints, the only supported timezone is `
242
+ # America/Los_Angeles`. **Supported metrics:** * `excessiveWakeupRate` (`google.
243
+ # type.Decimal`): Percentage of distinct users in the aggregation period that
244
+ # had more than 10 wakeups per hour. If your app exhibits an excessive wakeup
245
+ # rate equal to or higher than the threshold, it's in the bottom 25% of the top
246
+ # 1,000 apps on Google Play (by number of installs). * `
247
+ # excessiveWakeupRate7dUserWeighted` (`google.type.Decimal`): Rolling average
248
+ # value of `excessiveWakeupRate` in the last 7 days. The daily values are
249
+ # weighted by the count of distinct users for the day. * `
250
+ # excessiveWakeupRate28dUserWeighted` (`google.type.Decimal`): Rolling average
251
+ # value of `excessiveWakeupRate` in the last 28 days. The daily values are
252
+ # weighted by the count of distinct users for the day. * `distinctUsers` (`
253
+ # google.type.Decimal`): Count of distinct users in the aggregation period that
254
+ # were used as normalization value for the `excessiveWakeupRate` metric. A user
255
+ # is counted in this metric if they app was doing any work on the device, i.e.,
256
+ # not just active foreground usage but also background work. Care must be taken
257
+ # not to aggregate this count further, as it may result in users being counted
258
+ # multiple times. **Supported dimensions:** * `apiLevel` (string): the API level
259
+ # of Android that was running on the user's device. * `versionCode` (int64):
260
+ # version of the app that was running on the user's device. * `deviceModel` (
261
+ # string): unique identifier of the user's device model. * `deviceType` (string):
262
+ # the type (also known as form factor) of the user's device. * `countryCode` (
263
+ # string): the country or region of the user's device based on their IP address,
264
+ # represented as a 2-letter ISO-3166 code (e.g. US for the United States). **
265
+ # Required permissions**: to access this resource, the calling user needs the
266
+ # _View app information (read-only)_ permission for the app.
267
+ class GooglePlayDeveloperReportingV1beta1ExcessiveWakeupRateMetricSet
268
+ include Google::Apis::Core::Hashable
269
+
270
+ # Represents the latest available time that can be requested in a TimelineSpec.
271
+ # Different aggregation periods have different freshness. For example, `DAILY`
272
+ # aggregation may lag behind `HOURLY` in cases where such aggregation is
273
+ # computed only once at the end of the day.
274
+ # Corresponds to the JSON property `freshnessInfo`
275
+ # @return [Google::Apis::PlaydeveloperreportingV1beta1::GooglePlayDeveloperReportingV1beta1FreshnessInfo]
276
+ attr_accessor :freshness_info
277
+
278
+ # The resource name. Format: apps/`app`/excessiveWakeupRateMetricSet
279
+ # Corresponds to the JSON property `name`
280
+ # @return [String]
281
+ attr_accessor :name
282
+
283
+ def initialize(**args)
284
+ update!(**args)
285
+ end
286
+
287
+ # Update properties of this object
288
+ def update!(**args)
289
+ @freshness_info = args[:freshness_info] if args.key?(:freshness_info)
290
+ @name = args[:name] if args.key?(:name)
291
+ end
292
+ end
293
+
294
+ # Represents the latest available time that can be requested in a TimelineSpec.
295
+ # Different aggregation periods have different freshness. For example, `DAILY`
296
+ # aggregation may lag behind `HOURLY` in cases where such aggregation is
297
+ # computed only once at the end of the day.
298
+ class GooglePlayDeveloperReportingV1beta1FreshnessInfo
299
+ include Google::Apis::Core::Hashable
300
+
301
+ # Information about data freshness for every supported aggregation period. This
302
+ # field has set semantics, keyed by the `aggregation_period` field.
303
+ # Corresponds to the JSON property `freshnesses`
304
+ # @return [Array<Google::Apis::PlaydeveloperreportingV1beta1::GooglePlayDeveloperReportingV1beta1FreshnessInfoFreshness>]
305
+ attr_accessor :freshnesses
306
+
307
+ def initialize(**args)
308
+ update!(**args)
309
+ end
310
+
311
+ # Update properties of this object
312
+ def update!(**args)
313
+ @freshnesses = args[:freshnesses] if args.key?(:freshnesses)
314
+ end
315
+ end
316
+
317
+ # Information about data freshness for a single aggregation period.
318
+ class GooglePlayDeveloperReportingV1beta1FreshnessInfoFreshness
319
+ include Google::Apis::Core::Hashable
320
+
321
+ # Aggregation period for which data is available.
322
+ # Corresponds to the JSON property `aggregationPeriod`
323
+ # @return [String]
324
+ attr_accessor :aggregation_period
325
+
326
+ # Represents civil time (or occasionally physical time). This type can represent
327
+ # a civil time in one of a few possible ways: * When utc_offset is set and
328
+ # time_zone is unset: a civil time on a calendar day with a particular offset
329
+ # from UTC. * When time_zone is set and utc_offset is unset: a civil time on a
330
+ # calendar day in a particular time zone. * When neither time_zone nor
331
+ # utc_offset is set: a civil time on a calendar day in local time. The date is
332
+ # relative to the Proleptic Gregorian Calendar. If year is 0, the DateTime is
333
+ # considered not to have a specific year. month and day must have valid, non-
334
+ # zero values. This type may also be used to represent a physical time if all
335
+ # the date and time fields are set and either case of the `time_offset` oneof is
336
+ # set. Consider using `Timestamp` message for physical time instead. If your use
337
+ # case also would like to store the user's timezone, that can be done in another
338
+ # field. This type is more flexible than some applications may want. Make sure
339
+ # to document and validate your application's limitations.
340
+ # Corresponds to the JSON property `latestEndTime`
341
+ # @return [Google::Apis::PlaydeveloperreportingV1beta1::GoogleTypeDateTime]
342
+ attr_accessor :latest_end_time
343
+
344
+ def initialize(**args)
345
+ update!(**args)
346
+ end
347
+
348
+ # Update properties of this object
349
+ def update!(**args)
350
+ @aggregation_period = args[:aggregation_period] if args.key?(:aggregation_period)
351
+ @latest_end_time = args[:latest_end_time] if args.key?(:latest_end_time)
352
+ end
353
+ end
354
+
355
+ # Response with a list of anomalies in datasets.
356
+ class GooglePlayDeveloperReportingV1beta1ListAnomaliesResponse
357
+ include Google::Apis::Core::Hashable
358
+
359
+ # Anomalies that were found.
360
+ # Corresponds to the JSON property `anomalies`
361
+ # @return [Array<Google::Apis::PlaydeveloperreportingV1beta1::GooglePlayDeveloperReportingV1beta1Anomaly>]
362
+ attr_accessor :anomalies
363
+
364
+ # Continuation token to fetch the next page of data.
365
+ # Corresponds to the JSON property `nextPageToken`
366
+ # @return [String]
367
+ attr_accessor :next_page_token
368
+
369
+ def initialize(**args)
370
+ update!(**args)
371
+ end
372
+
373
+ # Update properties of this object
374
+ def update!(**args)
375
+ @anomalies = args[:anomalies] if args.key?(:anomalies)
376
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
377
+ end
378
+ end
379
+
380
+ # Represents the value of a metric.
381
+ class GooglePlayDeveloperReportingV1beta1MetricValue
382
+ include Google::Apis::Core::Hashable
383
+
384
+ # A representation of a decimal value, such as 2.5. Clients may convert values
385
+ # into language-native decimal formats, such as Java's BigDecimal or Python's
386
+ # decimal.Decimal. [BigDecimal]: https://docs.oracle.com/en/java/javase/11/docs/
387
+ # api/java.base/java/math/BigDecimal.html [decimal.Decimal]: https://docs.python.
388
+ # org/3/library/decimal.html
389
+ # Corresponds to the JSON property `decimalValue`
390
+ # @return [Google::Apis::PlaydeveloperreportingV1beta1::GoogleTypeDecimal]
391
+ attr_accessor :decimal_value
392
+
393
+ # Name of the metric.
394
+ # Corresponds to the JSON property `metric`
395
+ # @return [String]
396
+ attr_accessor :metric
397
+
398
+ def initialize(**args)
399
+ update!(**args)
400
+ end
401
+
402
+ # Update properties of this object
403
+ def update!(**args)
404
+ @decimal_value = args[:decimal_value] if args.key?(:decimal_value)
405
+ @metric = args[:metric] if args.key?(:metric)
406
+ end
407
+ end
408
+
409
+ # Represents a row of dimensions and metrics.
410
+ class GooglePlayDeveloperReportingV1beta1MetricsRow
411
+ include Google::Apis::Core::Hashable
412
+
413
+ # Granularity of the aggregation period of the row.
414
+ # Corresponds to the JSON property `aggregationPeriod`
415
+ # @return [String]
416
+ attr_accessor :aggregation_period
417
+
418
+ # Dimension columns in the row.
419
+ # Corresponds to the JSON property `dimensions`
420
+ # @return [Array<Google::Apis::PlaydeveloperreportingV1beta1::GooglePlayDeveloperReportingV1beta1DimensionValue>]
421
+ attr_accessor :dimensions
422
+
423
+ # Metric columns in the row.
424
+ # Corresponds to the JSON property `metrics`
425
+ # @return [Array<Google::Apis::PlaydeveloperreportingV1beta1::GooglePlayDeveloperReportingV1beta1MetricValue>]
426
+ attr_accessor :metrics
427
+
428
+ # Represents civil time (or occasionally physical time). This type can represent
429
+ # a civil time in one of a few possible ways: * When utc_offset is set and
430
+ # time_zone is unset: a civil time on a calendar day with a particular offset
431
+ # from UTC. * When time_zone is set and utc_offset is unset: a civil time on a
432
+ # calendar day in a particular time zone. * When neither time_zone nor
433
+ # utc_offset is set: a civil time on a calendar day in local time. The date is
434
+ # relative to the Proleptic Gregorian Calendar. If year is 0, the DateTime is
435
+ # considered not to have a specific year. month and day must have valid, non-
436
+ # zero values. This type may also be used to represent a physical time if all
437
+ # the date and time fields are set and either case of the `time_offset` oneof is
438
+ # set. Consider using `Timestamp` message for physical time instead. If your use
439
+ # case also would like to store the user's timezone, that can be done in another
440
+ # field. This type is more flexible than some applications may want. Make sure
441
+ # to document and validate your application's limitations.
442
+ # Corresponds to the JSON property `startTime`
443
+ # @return [Google::Apis::PlaydeveloperreportingV1beta1::GoogleTypeDateTime]
444
+ attr_accessor :start_time
445
+
446
+ def initialize(**args)
447
+ update!(**args)
448
+ end
449
+
450
+ # Update properties of this object
451
+ def update!(**args)
452
+ @aggregation_period = args[:aggregation_period] if args.key?(:aggregation_period)
453
+ @dimensions = args[:dimensions] if args.key?(:dimensions)
454
+ @metrics = args[:metrics] if args.key?(:metrics)
455
+ @start_time = args[:start_time] if args.key?(:start_time)
456
+ end
457
+ end
458
+
459
+ # Request message for QueryAnrRateMetricSet.
460
+ class GooglePlayDeveloperReportingV1beta1QueryAnrRateMetricSetRequest
461
+ include Google::Apis::Core::Hashable
462
+
463
+ # Dimensions to slice the metrics by. **Supported dimensions:** * `apiLevel` (
464
+ # string): the API level of Android that was running on the user's device. * `
465
+ # versionCode` (int64): version of the app that was running on the user's device.
466
+ # * `deviceModel` (string): unique identifier of the user's device model. * `
467
+ # deviceType` (string): the type (also known as form factor) of the user's
468
+ # device. * `countryCode` (string): the country or region of the user's device
469
+ # based on their IP address, represented as a 2-letter ISO-3166 code (e.g. US
470
+ # for the United States).
471
+ # Corresponds to the JSON property `dimensions`
472
+ # @return [Array<String>]
473
+ attr_accessor :dimensions
474
+
475
+ # Filters to apply to data. The filtering expression follows [AIP-160](https://
476
+ # google.aip.dev/160) standard and supports filtering by equality of all
477
+ # breakdown dimensions.
478
+ # Corresponds to the JSON property `filter`
479
+ # @return [String]
480
+ attr_accessor :filter
481
+
482
+ # Metrics to aggregate. **Supported metrics:** * `anrRate` (`google.type.Decimal`
483
+ # ): Percentage of distinct users in the aggregation period that experienced at
484
+ # least one ANR. If your app exhibits an ANR rate equal to or higher than the
485
+ # threshold, it's in the bottom 25% of the top 1,000 apps on Google Play (by
486
+ # number of installs). * `anrRate7dUserWeighted` (`google.type.Decimal`):
487
+ # Rolling average value of `anrRate` in the last 7 days. The daily values are
488
+ # weighted by the count of distinct users for the day. * `anrRate28dUserWeighted`
489
+ # (`google.type.Decimal`): Rolling average value of `anrRate` in the last 28
490
+ # days. The daily values are weighted by the count of distinct users for the day.
491
+ # * `distinctUsers` (`google.type.Decimal`): Count of distinct users in the
492
+ # aggregation period that were used as normalization value for the `anrRate`
493
+ # metric. A user is counted in this metric if they used the app in the
494
+ # foreground during the aggregation period. Care must be taken not to aggregate
495
+ # this count further, as it may result in users being counted multiple times.
496
+ # Corresponds to the JSON property `metrics`
497
+ # @return [Array<String>]
498
+ attr_accessor :metrics
499
+
500
+ # Maximum size of the returned data. If unspecified, at most 1000 rows will be
501
+ # returned. The maximum value is 100,000; values above 100,000 will be coerced
502
+ # to 100,000.
503
+ # Corresponds to the JSON property `pageSize`
504
+ # @return [Fixnum]
505
+ attr_accessor :page_size
506
+
507
+ # A page token, received from a previous call. Provide this to retrieve the
508
+ # subsequent page. When paginating, all other parameters provided to the request
509
+ # must match the call that provided the page token.
510
+ # Corresponds to the JSON property `pageToken`
511
+ # @return [String]
512
+ attr_accessor :page_token
513
+
514
+ # Specification of the time-related aggregation parameters of a timeline.
515
+ # Timelines have an aggregation period (`DAILY`, `HOURLY`, etc) which defines
516
+ # how events are aggregated in metrics. The points in a timeline are defined by
517
+ # the starting DateTime of the aggregation period. The duration is implicit in
518
+ # the AggregationPeriod. Hourly aggregation periods, when supported by a metric
519
+ # set, are always specified in UTC to avoid ambiguities around daylight saving
520
+ # time transitions, where an hour is skipped when adopting DST, and repeated
521
+ # when abandoning DST. For example, the timestamp '2021-11-07 01:00:00 America/
522
+ # Los_Angeles' is ambiguous since it can correspond to '2021-11-07 08:00:00 UTC'
523
+ # or '2021-11-07 09:00:00 UTC'. Daily aggregation periods require specifying a
524
+ # timezone which will determine the precise instants of the start and the end of
525
+ # the day. Not all metric sets support all timezones, so make sure to check
526
+ # which timezones are supported by the metric set you want to query.
527
+ # Corresponds to the JSON property `timelineSpec`
528
+ # @return [Google::Apis::PlaydeveloperreportingV1beta1::GooglePlayDeveloperReportingV1beta1TimelineSpec]
529
+ attr_accessor :timeline_spec
530
+
531
+ def initialize(**args)
532
+ update!(**args)
533
+ end
534
+
535
+ # Update properties of this object
536
+ def update!(**args)
537
+ @dimensions = args[:dimensions] if args.key?(:dimensions)
538
+ @filter = args[:filter] if args.key?(:filter)
539
+ @metrics = args[:metrics] if args.key?(:metrics)
540
+ @page_size = args[:page_size] if args.key?(:page_size)
541
+ @page_token = args[:page_token] if args.key?(:page_token)
542
+ @timeline_spec = args[:timeline_spec] if args.key?(:timeline_spec)
543
+ end
544
+ end
545
+
546
+ # Response message for QueryAnrRateMetricSet.
547
+ class GooglePlayDeveloperReportingV1beta1QueryAnrRateMetricSetResponse
548
+ include Google::Apis::Core::Hashable
549
+
550
+ # Continuation token to fetch the next page of data.
551
+ # Corresponds to the JSON property `nextPageToken`
552
+ # @return [String]
553
+ attr_accessor :next_page_token
554
+
555
+ # Returned rows of data.
556
+ # Corresponds to the JSON property `rows`
557
+ # @return [Array<Google::Apis::PlaydeveloperreportingV1beta1::GooglePlayDeveloperReportingV1beta1MetricsRow>]
558
+ attr_accessor :rows
559
+
560
+ def initialize(**args)
561
+ update!(**args)
562
+ end
563
+
564
+ # Update properties of this object
565
+ def update!(**args)
566
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
567
+ @rows = args[:rows] if args.key?(:rows)
568
+ end
569
+ end
570
+
571
+ # Request message for QueryCrashRateMetricSet.
572
+ class GooglePlayDeveloperReportingV1beta1QueryCrashRateMetricSetRequest
573
+ include Google::Apis::Core::Hashable
574
+
575
+ # Dimensions to slice the metrics by. **Supported dimensions:** * `apiLevel` (
576
+ # string): the API level of Android that was running on the user's device. * `
577
+ # versionCode` (int64): version of the app that was running on the user's device.
578
+ # * `deviceModel` (string): unique identifier of the user's device model. * `
579
+ # deviceType` (string): the type (also known as form factor) of the user's
580
+ # device. * `countryCode` (string): the country or region of the user's device
581
+ # based on their IP address, represented as a 2-letter ISO-3166 code (e.g. US
582
+ # for the United States).
583
+ # Corresponds to the JSON property `dimensions`
584
+ # @return [Array<String>]
585
+ attr_accessor :dimensions
586
+
587
+ # Filters to apply to data. The filtering expression follows [AIP-160](https://
588
+ # google.aip.dev/160) standard and supports filtering by equality of all
589
+ # breakdown dimensions.
590
+ # Corresponds to the JSON property `filter`
591
+ # @return [String]
592
+ attr_accessor :filter
593
+
594
+ # Metrics to aggregate. **Supported metrics:** * `crashRate` (`google.type.
595
+ # Decimal`): Percentage of distinct users in the aggregation period that
596
+ # experienced at least one crash. If your app exhibits a crash rate equal to or
597
+ # higher than the threshold, it's in the bottom 25% of the top 1,000 apps on
598
+ # Google Play (by number of installs). * `crashRate7dUserWeighted` (`google.type.
599
+ # Decimal`): Rolling average value of `crashRate` in the last 7 days. The daily
600
+ # values are weighted by the count of distinct users for the day. * `
601
+ # crashRate28dUserWeighted` (`google.type.Decimal`): Rolling average value of `
602
+ # crashRate` in the last 28 days. The daily values are weighted by the count of
603
+ # distinct users for the day. * `distinctUsers` (`google.type.Decimal`): Count
604
+ # of distinct users in the aggregation period that were used as normalization
605
+ # value for the `crashRate` metric. A user is counted in this metric if they
606
+ # used the app in the foreground during the aggregation period. Care must be
607
+ # taken not to aggregate this count further, as it may result in users being
608
+ # counted multiple times.
609
+ # Corresponds to the JSON property `metrics`
610
+ # @return [Array<String>]
611
+ attr_accessor :metrics
612
+
613
+ # Maximum size of the returned data. If unspecified, at most 1000 rows will be
614
+ # returned. The maximum value is 100,000; values above 100,000 will be coerced
615
+ # to 100,000.
616
+ # Corresponds to the JSON property `pageSize`
617
+ # @return [Fixnum]
618
+ attr_accessor :page_size
619
+
620
+ # A page token, received from a previous call. Provide this to retrieve the
621
+ # subsequent page. When paginating, all other parameters provided to the request
622
+ # must match the call that provided the page token.
623
+ # Corresponds to the JSON property `pageToken`
624
+ # @return [String]
625
+ attr_accessor :page_token
626
+
627
+ # Specification of the time-related aggregation parameters of a timeline.
628
+ # Timelines have an aggregation period (`DAILY`, `HOURLY`, etc) which defines
629
+ # how events are aggregated in metrics. The points in a timeline are defined by
630
+ # the starting DateTime of the aggregation period. The duration is implicit in
631
+ # the AggregationPeriod. Hourly aggregation periods, when supported by a metric
632
+ # set, are always specified in UTC to avoid ambiguities around daylight saving
633
+ # time transitions, where an hour is skipped when adopting DST, and repeated
634
+ # when abandoning DST. For example, the timestamp '2021-11-07 01:00:00 America/
635
+ # Los_Angeles' is ambiguous since it can correspond to '2021-11-07 08:00:00 UTC'
636
+ # or '2021-11-07 09:00:00 UTC'. Daily aggregation periods require specifying a
637
+ # timezone which will determine the precise instants of the start and the end of
638
+ # the day. Not all metric sets support all timezones, so make sure to check
639
+ # which timezones are supported by the metric set you want to query.
640
+ # Corresponds to the JSON property `timelineSpec`
641
+ # @return [Google::Apis::PlaydeveloperreportingV1beta1::GooglePlayDeveloperReportingV1beta1TimelineSpec]
642
+ attr_accessor :timeline_spec
643
+
644
+ def initialize(**args)
645
+ update!(**args)
646
+ end
647
+
648
+ # Update properties of this object
649
+ def update!(**args)
650
+ @dimensions = args[:dimensions] if args.key?(:dimensions)
651
+ @filter = args[:filter] if args.key?(:filter)
652
+ @metrics = args[:metrics] if args.key?(:metrics)
653
+ @page_size = args[:page_size] if args.key?(:page_size)
654
+ @page_token = args[:page_token] if args.key?(:page_token)
655
+ @timeline_spec = args[:timeline_spec] if args.key?(:timeline_spec)
656
+ end
657
+ end
658
+
659
+ # Response message for QueryCrashRateMetricSet.
660
+ class GooglePlayDeveloperReportingV1beta1QueryCrashRateMetricSetResponse
661
+ include Google::Apis::Core::Hashable
662
+
663
+ # Continuation token to fetch the next page of data.
664
+ # Corresponds to the JSON property `nextPageToken`
665
+ # @return [String]
666
+ attr_accessor :next_page_token
667
+
668
+ # Returned rows of data.
669
+ # Corresponds to the JSON property `rows`
670
+ # @return [Array<Google::Apis::PlaydeveloperreportingV1beta1::GooglePlayDeveloperReportingV1beta1MetricsRow>]
671
+ attr_accessor :rows
672
+
673
+ def initialize(**args)
674
+ update!(**args)
675
+ end
676
+
677
+ # Update properties of this object
678
+ def update!(**args)
679
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
680
+ @rows = args[:rows] if args.key?(:rows)
681
+ end
682
+ end
683
+
684
+ # Request message for QueryExcessiveWakeupRateMetricSet.
685
+ class GooglePlayDeveloperReportingV1beta1QueryExcessiveWakeupRateMetricSetRequest
686
+ include Google::Apis::Core::Hashable
687
+
688
+ # Dimensions to slice the data by. **Supported dimensions:** * `apiLevel` (
689
+ # string): the API level of Android that was running on the user's device. * `
690
+ # versionCode` (int64): version of the app that was running on the user's device.
691
+ # * `deviceModel` (string): unique identifier of the user's device model. * `
692
+ # deviceType` (string): the type (also known as form factor) of the user's
693
+ # device. * `countryCode` (string): the country or region of the user's device
694
+ # based on their IP address, represented as a 2-letter ISO-3166 code (e.g. US
695
+ # for the United States).
696
+ # Corresponds to the JSON property `dimensions`
697
+ # @return [Array<String>]
698
+ attr_accessor :dimensions
699
+
700
+ # Filters to apply to data. The filtering expression follows [AIP-160](https://
701
+ # google.aip.dev/160) standard and supports filtering by equality of all
702
+ # breakdown dimensions.
703
+ # Corresponds to the JSON property `filter`
704
+ # @return [String]
705
+ attr_accessor :filter
706
+
707
+ # Metrics to aggregate. **Supported metrics:** * `excessiveWakeupRate` (`google.
708
+ # type.Decimal`): Percentage of distinct users in the aggregation period that
709
+ # had more than 10 wakeups per hour. If your app exhibits an excessive wakeup
710
+ # rate equal to or higher than the threshold, it's in the bottom 25% of the top
711
+ # 1,000 apps on Google Play (by number of installs). * `
712
+ # excessiveWakeupRate7dUserWeighted` (`google.type.Decimal`): Rolling average
713
+ # value of `excessiveWakeupRate` in the last 7 days. The daily values are
714
+ # weighted by the count of distinct users for the day. * `
715
+ # excessiveWakeupRate28dUserWeighted` (`google.type.Decimal`): Rolling average
716
+ # value of `excessiveWakeupRate` in the last 28 days. The daily values are
717
+ # weighted by the count of distinct users for the day. * `distinctUsers` (`
718
+ # google.type.Decimal`): Count of distinct users in the aggregation period that
719
+ # were used as normalization value for the `excessiveWakeupRate` metric. A user
720
+ # is counted in this metric if they app was doing any work on the device, i.e.,
721
+ # not just active foreground usage but also background work. Care must be taken
722
+ # not to aggregate this count further, as it may result in users being counted
723
+ # multiple times.
724
+ # Corresponds to the JSON property `metrics`
725
+ # @return [Array<String>]
726
+ attr_accessor :metrics
727
+
728
+ # Maximum size of the returned data. If unspecified, at most 1000 rows will be
729
+ # returned. The maximum value is 100000; values above 100000 will be coerced to
730
+ # 100000.
731
+ # Corresponds to the JSON property `pageSize`
732
+ # @return [Fixnum]
733
+ attr_accessor :page_size
734
+
735
+ # A page token, received from a previous call. Provide this to retrieve the
736
+ # subsequent page. When paginating, all other parameters provided to the request
737
+ # must match the call that provided the page token.
738
+ # Corresponds to the JSON property `pageToken`
739
+ # @return [String]
740
+ attr_accessor :page_token
741
+
742
+ # Specification of the time-related aggregation parameters of a timeline.
743
+ # Timelines have an aggregation period (`DAILY`, `HOURLY`, etc) which defines
744
+ # how events are aggregated in metrics. The points in a timeline are defined by
745
+ # the starting DateTime of the aggregation period. The duration is implicit in
746
+ # the AggregationPeriod. Hourly aggregation periods, when supported by a metric
747
+ # set, are always specified in UTC to avoid ambiguities around daylight saving
748
+ # time transitions, where an hour is skipped when adopting DST, and repeated
749
+ # when abandoning DST. For example, the timestamp '2021-11-07 01:00:00 America/
750
+ # Los_Angeles' is ambiguous since it can correspond to '2021-11-07 08:00:00 UTC'
751
+ # or '2021-11-07 09:00:00 UTC'. Daily aggregation periods require specifying a
752
+ # timezone which will determine the precise instants of the start and the end of
753
+ # the day. Not all metric sets support all timezones, so make sure to check
754
+ # which timezones are supported by the metric set you want to query.
755
+ # Corresponds to the JSON property `timelineSpec`
756
+ # @return [Google::Apis::PlaydeveloperreportingV1beta1::GooglePlayDeveloperReportingV1beta1TimelineSpec]
757
+ attr_accessor :timeline_spec
758
+
759
+ def initialize(**args)
760
+ update!(**args)
761
+ end
762
+
763
+ # Update properties of this object
764
+ def update!(**args)
765
+ @dimensions = args[:dimensions] if args.key?(:dimensions)
766
+ @filter = args[:filter] if args.key?(:filter)
767
+ @metrics = args[:metrics] if args.key?(:metrics)
768
+ @page_size = args[:page_size] if args.key?(:page_size)
769
+ @page_token = args[:page_token] if args.key?(:page_token)
770
+ @timeline_spec = args[:timeline_spec] if args.key?(:timeline_spec)
771
+ end
772
+ end
773
+
774
+ # Response message for QueryExcessiveWakeupRateMetricSet.
775
+ class GooglePlayDeveloperReportingV1beta1QueryExcessiveWakeupRateMetricSetResponse
776
+ include Google::Apis::Core::Hashable
777
+
778
+ # Continuation token to fetch the next page of data.
779
+ # Corresponds to the JSON property `nextPageToken`
780
+ # @return [String]
781
+ attr_accessor :next_page_token
782
+
783
+ # Returned rows of data.
784
+ # Corresponds to the JSON property `rows`
785
+ # @return [Array<Google::Apis::PlaydeveloperreportingV1beta1::GooglePlayDeveloperReportingV1beta1MetricsRow>]
786
+ attr_accessor :rows
787
+
788
+ def initialize(**args)
789
+ update!(**args)
790
+ end
791
+
792
+ # Update properties of this object
793
+ def update!(**args)
794
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
795
+ @rows = args[:rows] if args.key?(:rows)
796
+ end
797
+ end
798
+
799
+ # Request message for QueryStuckBackgroundWakelockRateMetricSet.
800
+ class GooglePlayDeveloperReportingV1beta1QueryStuckBackgroundWakelockRateMetricSetRequest
801
+ include Google::Apis::Core::Hashable
802
+
803
+ # Dimensions to slice the data by. **Supported dimensions:** * `apiLevel` (
804
+ # string): the API level of Android that was running on the user's device. * `
805
+ # versionCode` (int64): version of the app that was running on the user's device.
806
+ # * `deviceModel` (string): unique identifier of the user's device model. * `
807
+ # deviceType` (string): the type (also known as form factor) of the user's
808
+ # device. * `countryCode` (string): the country or region of the user's device
809
+ # based on their IP address, represented as a 2-letter ISO-3166 code (e.g. US
810
+ # for the United States).
811
+ # Corresponds to the JSON property `dimensions`
812
+ # @return [Array<String>]
813
+ attr_accessor :dimensions
814
+
815
+ # Filters to apply to data. The filtering expression follows [AIP-160](https://
816
+ # google.aip.dev/160) standard and supports filtering by equality of all
817
+ # breakdown dimensions.
818
+ # Corresponds to the JSON property `filter`
819
+ # @return [String]
820
+ attr_accessor :filter
821
+
822
+ # Metrics to aggregate. **Supported metrics:** * `stuckBgWakelockRate` (`google.
823
+ # type.Decimal`): Percentage of distinct users in the aggregation period that
824
+ # had a wakelock held in the background for longer than 1 hour. If your app
825
+ # exhibits a stuck background wakelock rate equal to or higher than the
826
+ # threshold, it's in the bottom 25% of the top 1,000 apps on Google Play (by
827
+ # number of installs). * `stuckBgWakelockRate7dUserWeighted` (`google.type.
828
+ # Decimal`): Rolling average value of `stuckBgWakelockRate` in the last 7 days.
829
+ # The daily values are weighted by the count of distinct users for the day. * `
830
+ # stuckBgWakelockRate28dUserWeighted` (`google.type.Decimal`): Rolling average
831
+ # value of `stuckBgWakelockRate` in the last 28 days. The daily values are
832
+ # weighted by the count of distinct users for the day. * `distinctUsers` (`
833
+ # google.type.Decimal`): Count of distinct users in the aggregation period that
834
+ # were used as normalization value for the `stuckBgWakelockRate` metric. A user
835
+ # is counted in this metric if they app was doing any work on the device, i.e.,
836
+ # not just active foreground usage but also background work. Care must be taken
837
+ # not to aggregate this count further, as it may result in users being counted
838
+ # multiple times.
839
+ # Corresponds to the JSON property `metrics`
840
+ # @return [Array<String>]
841
+ attr_accessor :metrics
842
+
843
+ # Maximum size of the returned data. If unspecified, at most 1000 rows will be
844
+ # returned. The maximum value is 100000; values above 100000 will be coerced to
845
+ # 100000.
846
+ # Corresponds to the JSON property `pageSize`
847
+ # @return [Fixnum]
848
+ attr_accessor :page_size
849
+
850
+ # A page token, received from a previous call. Provide this to retrieve the
851
+ # subsequent page. When paginating, all other parameters provided to the request
852
+ # must match the call that provided the page token.
853
+ # Corresponds to the JSON property `pageToken`
854
+ # @return [String]
855
+ attr_accessor :page_token
856
+
857
+ # Specification of the time-related aggregation parameters of a timeline.
858
+ # Timelines have an aggregation period (`DAILY`, `HOURLY`, etc) which defines
859
+ # how events are aggregated in metrics. The points in a timeline are defined by
860
+ # the starting DateTime of the aggregation period. The duration is implicit in
861
+ # the AggregationPeriod. Hourly aggregation periods, when supported by a metric
862
+ # set, are always specified in UTC to avoid ambiguities around daylight saving
863
+ # time transitions, where an hour is skipped when adopting DST, and repeated
864
+ # when abandoning DST. For example, the timestamp '2021-11-07 01:00:00 America/
865
+ # Los_Angeles' is ambiguous since it can correspond to '2021-11-07 08:00:00 UTC'
866
+ # or '2021-11-07 09:00:00 UTC'. Daily aggregation periods require specifying a
867
+ # timezone which will determine the precise instants of the start and the end of
868
+ # the day. Not all metric sets support all timezones, so make sure to check
869
+ # which timezones are supported by the metric set you want to query.
870
+ # Corresponds to the JSON property `timelineSpec`
871
+ # @return [Google::Apis::PlaydeveloperreportingV1beta1::GooglePlayDeveloperReportingV1beta1TimelineSpec]
872
+ attr_accessor :timeline_spec
873
+
874
+ def initialize(**args)
875
+ update!(**args)
876
+ end
877
+
878
+ # Update properties of this object
879
+ def update!(**args)
880
+ @dimensions = args[:dimensions] if args.key?(:dimensions)
881
+ @filter = args[:filter] if args.key?(:filter)
882
+ @metrics = args[:metrics] if args.key?(:metrics)
883
+ @page_size = args[:page_size] if args.key?(:page_size)
884
+ @page_token = args[:page_token] if args.key?(:page_token)
885
+ @timeline_spec = args[:timeline_spec] if args.key?(:timeline_spec)
886
+ end
887
+ end
888
+
889
+ # Response message for QueryStuckBackgroundWakelockRateMetricSet.
890
+ class GooglePlayDeveloperReportingV1beta1QueryStuckBackgroundWakelockRateMetricSetResponse
891
+ include Google::Apis::Core::Hashable
892
+
893
+ # Continuation token to fetch the next page of data.
894
+ # Corresponds to the JSON property `nextPageToken`
895
+ # @return [String]
896
+ attr_accessor :next_page_token
897
+
898
+ # Returned rows of data.
899
+ # Corresponds to the JSON property `rows`
900
+ # @return [Array<Google::Apis::PlaydeveloperreportingV1beta1::GooglePlayDeveloperReportingV1beta1MetricsRow>]
901
+ attr_accessor :rows
902
+
903
+ def initialize(**args)
904
+ update!(**args)
905
+ end
906
+
907
+ # Update properties of this object
908
+ def update!(**args)
909
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
910
+ @rows = args[:rows] if args.key?(:rows)
911
+ end
912
+ end
913
+
914
+ # Singleton resource representing the set of Stuck Background Wakelocks metrics.
915
+ # This metric set contains PowerManager wakelock duration data combined with
916
+ # process state data to produce a normalized metric independent of user counts. *
917
+ # *Supported aggregation periods:** * DAILY: metrics are aggregated in calendar
918
+ # date intervals. Due to historical constraints, the only supported timezone is `
919
+ # America/Los_Angeles`. **Supported metrics:** * `stuckBgWakelockRate` (`google.
920
+ # type.Decimal`): Percentage of distinct users in the aggregation period that
921
+ # had a wakelock held in the background for longer than 1 hour. If your app
922
+ # exhibits a stuck background wakelocks rate equal to or higher than the
923
+ # threshold, it's in the bottom 25% of the top 1,000 apps on Google Play (by
924
+ # number of installs). * `stuckBgWakelockRate7dUserWeighted` (`google.type.
925
+ # Decimal`): Rolling average value of `stuckBgWakelockRate` in the last 7 days.
926
+ # The daily values are weighted by the count of distinct users for the day. * `
927
+ # stuckBgWakelockRate28dUserWeighted` (`google.type.Decimal`): Rolling average
928
+ # value of `stuckBgWakelockRate` in the last 28 days. The daily values are
929
+ # weighted by the count of distinct users for the day. * `distinctUsers` (`
930
+ # google.type.Decimal`): Count of distinct users in the aggregation period that
931
+ # were used as normalization value for the `stuckBgWakelockRate` metric. A user
932
+ # is counted in this metric if their app was doing any work on the device, i.e.,
933
+ # not just active foreground usage but also background work. Care must be taken
934
+ # not to aggregate this count further, as it may result in users being counted
935
+ # multiple times. **Supported dimensions:** * `apiLevel` (string): the API level
936
+ # of Android that was running on the user's device. * `versionCode` (int64):
937
+ # version of the app that was running on the user's device. * `deviceModel` (
938
+ # string): unique identifier of the user's device model. * `deviceType` (string):
939
+ # the type (also known as form factor) of the user's device. * `countryCode` (
940
+ # string): the country or region of the user's device based on their IP address,
941
+ # represented as a 2-letter ISO-3166 code (e.g. US for the United States). **
942
+ # Required permissions**: to access this resource, the calling user needs the
943
+ # _View app information (read-only)_ permission for the app.
944
+ class GooglePlayDeveloperReportingV1beta1StuckBackgroundWakelockRateMetricSet
945
+ include Google::Apis::Core::Hashable
946
+
947
+ # Represents the latest available time that can be requested in a TimelineSpec.
948
+ # Different aggregation periods have different freshness. For example, `DAILY`
949
+ # aggregation may lag behind `HOURLY` in cases where such aggregation is
950
+ # computed only once at the end of the day.
951
+ # Corresponds to the JSON property `freshnessInfo`
952
+ # @return [Google::Apis::PlaydeveloperreportingV1beta1::GooglePlayDeveloperReportingV1beta1FreshnessInfo]
953
+ attr_accessor :freshness_info
954
+
955
+ # The resource name. Format: apps/`app`/stuckBackgroundWakelockRateMetricSet
956
+ # Corresponds to the JSON property `name`
957
+ # @return [String]
958
+ attr_accessor :name
959
+
960
+ def initialize(**args)
961
+ update!(**args)
962
+ end
963
+
964
+ # Update properties of this object
965
+ def update!(**args)
966
+ @freshness_info = args[:freshness_info] if args.key?(:freshness_info)
967
+ @name = args[:name] if args.key?(:name)
968
+ end
969
+ end
970
+
971
+ # Specification of the time-related aggregation parameters of a timeline.
972
+ # Timelines have an aggregation period (`DAILY`, `HOURLY`, etc) which defines
973
+ # how events are aggregated in metrics. The points in a timeline are defined by
974
+ # the starting DateTime of the aggregation period. The duration is implicit in
975
+ # the AggregationPeriod. Hourly aggregation periods, when supported by a metric
976
+ # set, are always specified in UTC to avoid ambiguities around daylight saving
977
+ # time transitions, where an hour is skipped when adopting DST, and repeated
978
+ # when abandoning DST. For example, the timestamp '2021-11-07 01:00:00 America/
979
+ # Los_Angeles' is ambiguous since it can correspond to '2021-11-07 08:00:00 UTC'
980
+ # or '2021-11-07 09:00:00 UTC'. Daily aggregation periods require specifying a
981
+ # timezone which will determine the precise instants of the start and the end of
982
+ # the day. Not all metric sets support all timezones, so make sure to check
983
+ # which timezones are supported by the metric set you want to query.
984
+ class GooglePlayDeveloperReportingV1beta1TimelineSpec
985
+ include Google::Apis::Core::Hashable
986
+
987
+ # Type of the aggregation period of the datapoints in the timeline. Intervals
988
+ # are identified by the date and time at the start of the interval.
989
+ # Corresponds to the JSON property `aggregationPeriod`
990
+ # @return [String]
991
+ attr_accessor :aggregation_period
992
+
993
+ # Represents civil time (or occasionally physical time). This type can represent
994
+ # a civil time in one of a few possible ways: * When utc_offset is set and
995
+ # time_zone is unset: a civil time on a calendar day with a particular offset
996
+ # from UTC. * When time_zone is set and utc_offset is unset: a civil time on a
997
+ # calendar day in a particular time zone. * When neither time_zone nor
998
+ # utc_offset is set: a civil time on a calendar day in local time. The date is
999
+ # relative to the Proleptic Gregorian Calendar. If year is 0, the DateTime is
1000
+ # considered not to have a specific year. month and day must have valid, non-
1001
+ # zero values. This type may also be used to represent a physical time if all
1002
+ # the date and time fields are set and either case of the `time_offset` oneof is
1003
+ # set. Consider using `Timestamp` message for physical time instead. If your use
1004
+ # case also would like to store the user's timezone, that can be done in another
1005
+ # field. This type is more flexible than some applications may want. Make sure
1006
+ # to document and validate your application's limitations.
1007
+ # Corresponds to the JSON property `endTime`
1008
+ # @return [Google::Apis::PlaydeveloperreportingV1beta1::GoogleTypeDateTime]
1009
+ attr_accessor :end_time
1010
+
1011
+ # Represents civil time (or occasionally physical time). This type can represent
1012
+ # a civil time in one of a few possible ways: * When utc_offset is set and
1013
+ # time_zone is unset: a civil time on a calendar day with a particular offset
1014
+ # from UTC. * When time_zone is set and utc_offset is unset: a civil time on a
1015
+ # calendar day in a particular time zone. * When neither time_zone nor
1016
+ # utc_offset is set: a civil time on a calendar day in local time. The date is
1017
+ # relative to the Proleptic Gregorian Calendar. If year is 0, the DateTime is
1018
+ # considered not to have a specific year. month and day must have valid, non-
1019
+ # zero values. This type may also be used to represent a physical time if all
1020
+ # the date and time fields are set and either case of the `time_offset` oneof is
1021
+ # set. Consider using `Timestamp` message for physical time instead. If your use
1022
+ # case also would like to store the user's timezone, that can be done in another
1023
+ # field. This type is more flexible than some applications may want. Make sure
1024
+ # to document and validate your application's limitations.
1025
+ # Corresponds to the JSON property `startTime`
1026
+ # @return [Google::Apis::PlaydeveloperreportingV1beta1::GoogleTypeDateTime]
1027
+ attr_accessor :start_time
1028
+
1029
+ def initialize(**args)
1030
+ update!(**args)
1031
+ end
1032
+
1033
+ # Update properties of this object
1034
+ def update!(**args)
1035
+ @aggregation_period = args[:aggregation_period] if args.key?(:aggregation_period)
1036
+ @end_time = args[:end_time] if args.key?(:end_time)
1037
+ @start_time = args[:start_time] if args.key?(:start_time)
1038
+ end
1039
+ end
1040
+
1041
+ # Represents civil time (or occasionally physical time). This type can represent
1042
+ # a civil time in one of a few possible ways: * When utc_offset is set and
1043
+ # time_zone is unset: a civil time on a calendar day with a particular offset
1044
+ # from UTC. * When time_zone is set and utc_offset is unset: a civil time on a
1045
+ # calendar day in a particular time zone. * When neither time_zone nor
1046
+ # utc_offset is set: a civil time on a calendar day in local time. The date is
1047
+ # relative to the Proleptic Gregorian Calendar. If year is 0, the DateTime is
1048
+ # considered not to have a specific year. month and day must have valid, non-
1049
+ # zero values. This type may also be used to represent a physical time if all
1050
+ # the date and time fields are set and either case of the `time_offset` oneof is
1051
+ # set. Consider using `Timestamp` message for physical time instead. If your use
1052
+ # case also would like to store the user's timezone, that can be done in another
1053
+ # field. This type is more flexible than some applications may want. Make sure
1054
+ # to document and validate your application's limitations.
1055
+ class GoogleTypeDateTime
1056
+ include Google::Apis::Core::Hashable
1057
+
1058
+ # Required. Day of month. Must be from 1 to 31 and valid for the year and month.
1059
+ # Corresponds to the JSON property `day`
1060
+ # @return [Fixnum]
1061
+ attr_accessor :day
1062
+
1063
+ # Required. Hours of day in 24 hour format. Should be from 0 to 23. An API may
1064
+ # choose to allow the value "24:00:00" for scenarios like business closing time.
1065
+ # Corresponds to the JSON property `hours`
1066
+ # @return [Fixnum]
1067
+ attr_accessor :hours
1068
+
1069
+ # Required. Minutes of hour of day. Must be from 0 to 59.
1070
+ # Corresponds to the JSON property `minutes`
1071
+ # @return [Fixnum]
1072
+ attr_accessor :minutes
1073
+
1074
+ # Required. Month of year. Must be from 1 to 12.
1075
+ # Corresponds to the JSON property `month`
1076
+ # @return [Fixnum]
1077
+ attr_accessor :month
1078
+
1079
+ # Required. Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
1080
+ # Corresponds to the JSON property `nanos`
1081
+ # @return [Fixnum]
1082
+ attr_accessor :nanos
1083
+
1084
+ # Required. Seconds of minutes of the time. Must normally be from 0 to 59. An
1085
+ # API may allow the value 60 if it allows leap-seconds.
1086
+ # Corresponds to the JSON property `seconds`
1087
+ # @return [Fixnum]
1088
+ attr_accessor :seconds
1089
+
1090
+ # Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/
1091
+ # time-zones).
1092
+ # Corresponds to the JSON property `timeZone`
1093
+ # @return [Google::Apis::PlaydeveloperreportingV1beta1::GoogleTypeTimeZone]
1094
+ attr_accessor :time_zone
1095
+
1096
+ # UTC offset. Must be whole seconds, between -18 hours and +18 hours. For
1097
+ # example, a UTC offset of -4:00 would be represented as ` seconds: -14400 `.
1098
+ # Corresponds to the JSON property `utcOffset`
1099
+ # @return [String]
1100
+ attr_accessor :utc_offset
1101
+
1102
+ # Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a datetime
1103
+ # without a year.
1104
+ # Corresponds to the JSON property `year`
1105
+ # @return [Fixnum]
1106
+ attr_accessor :year
1107
+
1108
+ def initialize(**args)
1109
+ update!(**args)
1110
+ end
1111
+
1112
+ # Update properties of this object
1113
+ def update!(**args)
1114
+ @day = args[:day] if args.key?(:day)
1115
+ @hours = args[:hours] if args.key?(:hours)
1116
+ @minutes = args[:minutes] if args.key?(:minutes)
1117
+ @month = args[:month] if args.key?(:month)
1118
+ @nanos = args[:nanos] if args.key?(:nanos)
1119
+ @seconds = args[:seconds] if args.key?(:seconds)
1120
+ @time_zone = args[:time_zone] if args.key?(:time_zone)
1121
+ @utc_offset = args[:utc_offset] if args.key?(:utc_offset)
1122
+ @year = args[:year] if args.key?(:year)
1123
+ end
1124
+ end
1125
+
1126
+ # A representation of a decimal value, such as 2.5. Clients may convert values
1127
+ # into language-native decimal formats, such as Java's BigDecimal or Python's
1128
+ # decimal.Decimal. [BigDecimal]: https://docs.oracle.com/en/java/javase/11/docs/
1129
+ # api/java.base/java/math/BigDecimal.html [decimal.Decimal]: https://docs.python.
1130
+ # org/3/library/decimal.html
1131
+ class GoogleTypeDecimal
1132
+ include Google::Apis::Core::Hashable
1133
+
1134
+ # The decimal value, as a string. The string representation consists of an
1135
+ # optional sign, `+` (`U+002B`) or `-` (`U+002D`), followed by a sequence of
1136
+ # zero or more decimal digits ("the integer"), optionally followed by a fraction,
1137
+ # optionally followed by an exponent. The fraction consists of a decimal point
1138
+ # followed by zero or more decimal digits. The string must contain at least one
1139
+ # digit in either the integer or the fraction. The number formed by the sign,
1140
+ # the integer and the fraction is referred to as the significand. The exponent
1141
+ # consists of the character `e` (`U+0065`) or `E` (`U+0045`) followed by one or
1142
+ # more decimal digits. Services **should** normalize decimal values before
1143
+ # storing them by: - Removing an explicitly-provided `+` sign (`+2.5` -> `2.5`).
1144
+ # - Replacing a zero-length integer value with `0` (`.5` -> `0.5`). - Coercing
1145
+ # the exponent character to lower-case (`2.5E8` -> `2.5e8`). - Removing an
1146
+ # explicitly-provided zero exponent (`2.5e0` -> `2.5`). Services **may** perform
1147
+ # additional normalization based on its own needs and the internal decimal
1148
+ # implementation selected, such as shifting the decimal point and exponent value
1149
+ # together (example: `2.5e-1` <-> `0.25`). Additionally, services **may**
1150
+ # preserve trailing zeroes in the fraction to indicate increased precision, but
1151
+ # are not required to do so. Note that only the `.` character is supported to
1152
+ # divide the integer and the fraction; `,` **should not** be supported
1153
+ # regardless of locale. Additionally, thousand separators **should not** be
1154
+ # supported. If a service does support them, values **must** be normalized. The
1155
+ # ENBF grammar is: DecimalString = [Sign] Significand [Exponent]; Sign = '+' | '-
1156
+ # '; Significand = Digits '.' | [Digits] '.' Digits; Exponent = ('e' | 'E') [
1157
+ # Sign] Digits; Digits = ` '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' |
1158
+ # '9' `; Services **should** clearly document the range of supported values, the
1159
+ # maximum supported precision (total number of digits), and, if applicable, the
1160
+ # scale (number of digits after the decimal point), as well as how it behaves
1161
+ # when receiving out-of-bounds values. Services **may** choose to accept values
1162
+ # passed as input even when the value has a higher precision or scale than the
1163
+ # service supports, and **should** round the value to fit the supported scale.
1164
+ # Alternatively, the service **may** error with `400 Bad Request` (`
1165
+ # INVALID_ARGUMENT` in gRPC) if precision would be lost. Services **should**
1166
+ # error with `400 Bad Request` (`INVALID_ARGUMENT` in gRPC) if the service
1167
+ # receives a value outside of the supported range.
1168
+ # Corresponds to the JSON property `value`
1169
+ # @return [String]
1170
+ attr_accessor :value
1171
+
1172
+ def initialize(**args)
1173
+ update!(**args)
1174
+ end
1175
+
1176
+ # Update properties of this object
1177
+ def update!(**args)
1178
+ @value = args[:value] if args.key?(:value)
1179
+ end
1180
+ end
1181
+
1182
+ # Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/
1183
+ # time-zones).
1184
+ class GoogleTypeTimeZone
1185
+ include Google::Apis::Core::Hashable
1186
+
1187
+ # IANA Time Zone Database time zone, e.g. "America/New_York".
1188
+ # Corresponds to the JSON property `id`
1189
+ # @return [String]
1190
+ attr_accessor :id
1191
+
1192
+ # Optional. IANA Time Zone Database version number, e.g. "2019a".
1193
+ # Corresponds to the JSON property `version`
1194
+ # @return [String]
1195
+ attr_accessor :version
1196
+
1197
+ def initialize(**args)
1198
+ update!(**args)
1199
+ end
1200
+
1201
+ # Update properties of this object
1202
+ def update!(**args)
1203
+ @id = args[:id] if args.key?(:id)
1204
+ @version = args[:version] if args.key?(:version)
1205
+ end
1206
+ end
1207
+ end
1208
+ end
1209
+ end