google-apis-playdeveloperreporting_v1beta1 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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