google-apis-playdeveloperreporting_v1alpha1 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,1512 @@
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 PlaydeveloperreportingV1alpha1
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 GooglePlayDeveloperReportingV1alpha1Anomaly
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::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1DimensionValue>]
43
+ attr_accessor :dimensions
44
+
45
+ # Represents the value of a metric.
46
+ # Corresponds to the JSON property `metric`
47
+ # @return [Google::Apis::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1MetricValue]
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::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1TimelineSpec]
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 GooglePlayDeveloperReportingV1alpha1AnrRateMetricSet
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::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1FreshnessInfo]
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 GooglePlayDeveloperReportingV1alpha1CrashRateMetricSet
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::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1FreshnessInfo]
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 GooglePlayDeveloperReportingV1alpha1DimensionValue
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 error report metrics. This metric
238
+ # set contains unnormalized error report counts. **Supported aggregation periods:
239
+ # ** * DAILY: metrics are aggregated in calendar date intervals. The default and
240
+ # only supported timezone is `America/Los_Angeles`. **Supported metrics:** * `
241
+ # errorReportCount` (`google.type.Decimal`): Absolute count of individual error
242
+ # reports that have been received for an app. * `distinctUsers` (`google.type.
243
+ # Decimal`): Count of distinct users for which reports have been received. Care
244
+ # must be taken not to aggregate this count further, as it may result in users
245
+ # being counted multiple times. **Supported dimensions:** * `apiLevel` (string):
246
+ # the API level of Android that was running on the user's device. * `versionCode`
247
+ # (int64): version of the app that was running on the user's device. * `
248
+ # deviceModel` (string): unique identifier of the user's device model. * `
249
+ # deviceType` (string): identifier of the device's form factor, e.g., PHONE. * `
250
+ # reportType` (string): the type of error. The value should correspond to one of
251
+ # the possible values in ErrorType. * `issueId` (string): the id an error was
252
+ # assigned to. The value should correspond to the ``issue`` component of the
253
+ # issue name. **Required permissions**: to access this resource, the calling
254
+ # user needs the _View app information (read-only)_ permission for the app. **
255
+ # Related metric sets:** * vitals.errors.counts contains normalized metrics
256
+ # about Crashes, another stability metric. * vitals.errors.counts contains
257
+ # normalized metrics about ANRs, another stability metric.
258
+ class GooglePlayDeveloperReportingV1alpha1ErrorCountMetricSet
259
+ include Google::Apis::Core::Hashable
260
+
261
+ # Represents the latest available time that can be requested in a TimelineSpec.
262
+ # Different aggregation periods have different freshness. For example, `DAILY`
263
+ # aggregation may lag behind `HOURLY` in cases where such aggregation is
264
+ # computed only once at the end of the day.
265
+ # Corresponds to the JSON property `freshnessInfo`
266
+ # @return [Google::Apis::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1FreshnessInfo]
267
+ attr_accessor :freshness_info
268
+
269
+ # The resource name. Format: apps/`app`/errorCountMetricSet
270
+ # Corresponds to the JSON property `name`
271
+ # @return [String]
272
+ attr_accessor :name
273
+
274
+ def initialize(**args)
275
+ update!(**args)
276
+ end
277
+
278
+ # Update properties of this object
279
+ def update!(**args)
280
+ @freshness_info = args[:freshness_info] if args.key?(:freshness_info)
281
+ @name = args[:name] if args.key?(:name)
282
+ end
283
+ end
284
+
285
+ # A group of related ErrorReports received for an app. Similar error reports are
286
+ # grouped together into issues with a likely identical root cause. **Please note:
287
+ # ** this resource is currently in Alpha. There could be changes to the issue
288
+ # grouping that would result in similar but more recent error reports being
289
+ # assigned to different issues. This could also cause some issues disappearing
290
+ # entirely and being replaced by new ones. **Required permissions**: to access
291
+ # this resource, the calling user needs the _View app information (read-only)_
292
+ # permission for the app.
293
+ class GooglePlayDeveloperReportingV1alpha1ErrorIssue
294
+ include Google::Apis::Core::Hashable
295
+
296
+ # Cause of the issue. Depending on the type this can be either: *
297
+ # APPLICATION_NOT_RESPONDING: the type of ANR that occurred, e.g., 'Input
298
+ # dispatching timed out'. * CRASH: for Java unhandled exception errors, the type
299
+ # of the innermost exception that was thrown, e.g., IllegalArgumentException.
300
+ # For signals in native code, the signal that was raised, e.g. SIGSEGV.
301
+ # Corresponds to the JSON property `cause`
302
+ # @return [String]
303
+ attr_accessor :cause
304
+
305
+ # Location where the issue happened. Depending on the type this can be either: *
306
+ # APPLICATION_NOT_RESPONDING: the name of the activity or service that stopped
307
+ # responding. * CRASH: the likely method name that caused the error.
308
+ # Corresponds to the JSON property `location`
309
+ # @return [String]
310
+ attr_accessor :location
311
+
312
+ # The resource name of the issue. Format: apps/`app`/errorIssues/`issue`
313
+ # Corresponds to the JSON property `name`
314
+ # @return [String]
315
+ attr_accessor :name
316
+
317
+ # Type of the errors grouped in this issue.
318
+ # Corresponds to the JSON property `type`
319
+ # @return [String]
320
+ attr_accessor :type
321
+
322
+ def initialize(**args)
323
+ update!(**args)
324
+ end
325
+
326
+ # Update properties of this object
327
+ def update!(**args)
328
+ @cause = args[:cause] if args.key?(:cause)
329
+ @location = args[:location] if args.key?(:location)
330
+ @name = args[:name] if args.key?(:name)
331
+ @type = args[:type] if args.key?(:type)
332
+ end
333
+ end
334
+
335
+ # An error report received for an app. There reports are produced by the Android
336
+ # platform code when a (potentially fatal) error condition is detected.
337
+ # Identical reports from many users will be deduplicated and coalesced into a
338
+ # single ErrorReport. **Required permissions**: to access this resource, the
339
+ # calling user needs the _View app information (read-only)_ permission for the
340
+ # app.
341
+ class GooglePlayDeveloperReportingV1alpha1ErrorReport
342
+ include Google::Apis::Core::Hashable
343
+
344
+ # The issue this report was associated with. **Please note:** this resource is
345
+ # currently in Alpha. There could be changes to the issue grouping that would
346
+ # result in similar but more recent error reports being assigned to a different
347
+ # issue.
348
+ # Corresponds to the JSON property `issue`
349
+ # @return [String]
350
+ attr_accessor :issue
351
+
352
+ # The resource name of the report. Format: apps/`app`/errorReports/`report`
353
+ # Corresponds to the JSON property `name`
354
+ # @return [String]
355
+ attr_accessor :name
356
+
357
+ # Textual representation of the error report. These textual reports are produced
358
+ # by the platform. The reports are then sanitized and filtered to remove any
359
+ # potentially sensitive information. Although their format is fairly stable,
360
+ # they are not entirely meant for machine consumption and we cannot guarantee
361
+ # that there won't be subtle changes to the formatting that may break systems
362
+ # trying to parse information out of the reports.
363
+ # Corresponds to the JSON property `reportText`
364
+ # @return [String]
365
+ attr_accessor :report_text
366
+
367
+ # Type of the error for which this report was generated.
368
+ # Corresponds to the JSON property `type`
369
+ # @return [String]
370
+ attr_accessor :type
371
+
372
+ def initialize(**args)
373
+ update!(**args)
374
+ end
375
+
376
+ # Update properties of this object
377
+ def update!(**args)
378
+ @issue = args[:issue] if args.key?(:issue)
379
+ @name = args[:name] if args.key?(:name)
380
+ @report_text = args[:report_text] if args.key?(:report_text)
381
+ @type = args[:type] if args.key?(:type)
382
+ end
383
+ end
384
+
385
+ # Singleton resource representing the set of Excessive Weakeups metrics. This
386
+ # metric set contains AlarmManager wakeup counts data combined with process
387
+ # state data to produce a normalized metric independent of user counts. **
388
+ # Supported aggregation periods:** * DAILY: metrics are aggregated in calendar
389
+ # date intervals. Due to historical constraints, the only supported timezone is `
390
+ # America/Los_Angeles`. **Supported metrics:** * `excessiveWakeupRate` (`google.
391
+ # type.Decimal`): Percentage of distinct users in the aggregation period that
392
+ # had more than 10 wakeups per hour. If your app exhibits an excessive wakeup
393
+ # rate equal to or higher than the threshold, it's in the bottom 25% of the top
394
+ # 1,000 apps on Google Play (by number of installs). * `
395
+ # excessiveWakeupRate7dUserWeighted` (`google.type.Decimal`): Rolling average
396
+ # value of `excessiveWakeupRate` in the last 7 days. The daily values are
397
+ # weighted by the count of distinct users for the day. * `
398
+ # excessiveWakeupRate28dUserWeighted` (`google.type.Decimal`): Rolling average
399
+ # value of `excessiveWakeupRate` in the last 28 days. The daily values are
400
+ # weighted by the count of distinct users for the day. * `distinctUsers` (`
401
+ # google.type.Decimal`): Count of distinct users in the aggregation period that
402
+ # were used as normalization value for the `excessiveWakeupRate` metric. A user
403
+ # is counted in this metric if they app was doing any work on the device, i.e.,
404
+ # not just active foreground usage but also background work. Care must be taken
405
+ # not to aggregate this count further, as it may result in users being counted
406
+ # multiple times. **Supported dimensions:** * `apiLevel` (string): the API level
407
+ # of Android that was running on the user's device. * `versionCode` (int64):
408
+ # version of the app that was running on the user's device. * `deviceModel` (
409
+ # string): unique identifier of the user's device model. * `deviceType` (string):
410
+ # the type (also known as form factor) of the user's device. * `countryCode` (
411
+ # string): the country or region of the user's device based on their IP address,
412
+ # represented as a 2-letter ISO-3166 code (e.g. US for the United States). **
413
+ # Required permissions**: to access this resource, the calling user needs the
414
+ # _View app information (read-only)_ permission for the app.
415
+ class GooglePlayDeveloperReportingV1alpha1ExcessiveWakeupRateMetricSet
416
+ include Google::Apis::Core::Hashable
417
+
418
+ # Represents the latest available time that can be requested in a TimelineSpec.
419
+ # Different aggregation periods have different freshness. For example, `DAILY`
420
+ # aggregation may lag behind `HOURLY` in cases where such aggregation is
421
+ # computed only once at the end of the day.
422
+ # Corresponds to the JSON property `freshnessInfo`
423
+ # @return [Google::Apis::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1FreshnessInfo]
424
+ attr_accessor :freshness_info
425
+
426
+ # The resource name. Format: apps/`app`/excessiveWakeupRateMetricSet
427
+ # Corresponds to the JSON property `name`
428
+ # @return [String]
429
+ attr_accessor :name
430
+
431
+ def initialize(**args)
432
+ update!(**args)
433
+ end
434
+
435
+ # Update properties of this object
436
+ def update!(**args)
437
+ @freshness_info = args[:freshness_info] if args.key?(:freshness_info)
438
+ @name = args[:name] if args.key?(:name)
439
+ end
440
+ end
441
+
442
+ # Represents the latest available time that can be requested in a TimelineSpec.
443
+ # Different aggregation periods have different freshness. For example, `DAILY`
444
+ # aggregation may lag behind `HOURLY` in cases where such aggregation is
445
+ # computed only once at the end of the day.
446
+ class GooglePlayDeveloperReportingV1alpha1FreshnessInfo
447
+ include Google::Apis::Core::Hashable
448
+
449
+ # Information about data freshness for every supported aggregation period. This
450
+ # field has set semantics, keyed by the `aggregation_period` field.
451
+ # Corresponds to the JSON property `freshnesses`
452
+ # @return [Array<Google::Apis::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1FreshnessInfoFreshness>]
453
+ attr_accessor :freshnesses
454
+
455
+ def initialize(**args)
456
+ update!(**args)
457
+ end
458
+
459
+ # Update properties of this object
460
+ def update!(**args)
461
+ @freshnesses = args[:freshnesses] if args.key?(:freshnesses)
462
+ end
463
+ end
464
+
465
+ # Information about data freshness for a single aggregation period.
466
+ class GooglePlayDeveloperReportingV1alpha1FreshnessInfoFreshness
467
+ include Google::Apis::Core::Hashable
468
+
469
+ # Aggregation period for which data is available.
470
+ # Corresponds to the JSON property `aggregationPeriod`
471
+ # @return [String]
472
+ attr_accessor :aggregation_period
473
+
474
+ # Represents civil time (or occasionally physical time). This type can represent
475
+ # a civil time in one of a few possible ways: * When utc_offset is set and
476
+ # time_zone is unset: a civil time on a calendar day with a particular offset
477
+ # from UTC. * When time_zone is set and utc_offset is unset: a civil time on a
478
+ # calendar day in a particular time zone. * When neither time_zone nor
479
+ # utc_offset is set: a civil time on a calendar day in local time. The date is
480
+ # relative to the Proleptic Gregorian Calendar. If year is 0, the DateTime is
481
+ # considered not to have a specific year. month and day must have valid, non-
482
+ # zero values. This type may also be used to represent a physical time if all
483
+ # the date and time fields are set and either case of the `time_offset` oneof is
484
+ # set. Consider using `Timestamp` message for physical time instead. If your use
485
+ # case also would like to store the user's timezone, that can be done in another
486
+ # field. This type is more flexible than some applications may want. Make sure
487
+ # to document and validate your application's limitations.
488
+ # Corresponds to the JSON property `latestEndTime`
489
+ # @return [Google::Apis::PlaydeveloperreportingV1alpha1::GoogleTypeDateTime]
490
+ attr_accessor :latest_end_time
491
+
492
+ def initialize(**args)
493
+ update!(**args)
494
+ end
495
+
496
+ # Update properties of this object
497
+ def update!(**args)
498
+ @aggregation_period = args[:aggregation_period] if args.key?(:aggregation_period)
499
+ @latest_end_time = args[:latest_end_time] if args.key?(:latest_end_time)
500
+ end
501
+ end
502
+
503
+ # Response with a list of anomalies in datasets.
504
+ class GooglePlayDeveloperReportingV1alpha1ListAnomaliesResponse
505
+ include Google::Apis::Core::Hashable
506
+
507
+ # Anomalies that were found.
508
+ # Corresponds to the JSON property `anomalies`
509
+ # @return [Array<Google::Apis::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1Anomaly>]
510
+ attr_accessor :anomalies
511
+
512
+ # Continuation token to fetch the next page of data.
513
+ # Corresponds to the JSON property `nextPageToken`
514
+ # @return [String]
515
+ attr_accessor :next_page_token
516
+
517
+ def initialize(**args)
518
+ update!(**args)
519
+ end
520
+
521
+ # Update properties of this object
522
+ def update!(**args)
523
+ @anomalies = args[:anomalies] if args.key?(:anomalies)
524
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
525
+ end
526
+ end
527
+
528
+ # Represents the value of a metric.
529
+ class GooglePlayDeveloperReportingV1alpha1MetricValue
530
+ include Google::Apis::Core::Hashable
531
+
532
+ # A representation of a decimal value, such as 2.5. Clients may convert values
533
+ # into language-native decimal formats, such as Java's BigDecimal or Python's
534
+ # decimal.Decimal. [BigDecimal]: https://docs.oracle.com/en/java/javase/11/docs/
535
+ # api/java.base/java/math/BigDecimal.html [decimal.Decimal]: https://docs.python.
536
+ # org/3/library/decimal.html
537
+ # Corresponds to the JSON property `decimalValue`
538
+ # @return [Google::Apis::PlaydeveloperreportingV1alpha1::GoogleTypeDecimal]
539
+ attr_accessor :decimal_value
540
+
541
+ # Name of the metric.
542
+ # Corresponds to the JSON property `metric`
543
+ # @return [String]
544
+ attr_accessor :metric
545
+
546
+ def initialize(**args)
547
+ update!(**args)
548
+ end
549
+
550
+ # Update properties of this object
551
+ def update!(**args)
552
+ @decimal_value = args[:decimal_value] if args.key?(:decimal_value)
553
+ @metric = args[:metric] if args.key?(:metric)
554
+ end
555
+ end
556
+
557
+ # Represents a row of dimensions and metrics.
558
+ class GooglePlayDeveloperReportingV1alpha1MetricsRow
559
+ include Google::Apis::Core::Hashable
560
+
561
+ # Granularity of the aggregation period of the row.
562
+ # Corresponds to the JSON property `aggregationPeriod`
563
+ # @return [String]
564
+ attr_accessor :aggregation_period
565
+
566
+ # Dimension columns in the row.
567
+ # Corresponds to the JSON property `dimensions`
568
+ # @return [Array<Google::Apis::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1DimensionValue>]
569
+ attr_accessor :dimensions
570
+
571
+ # Metric columns in the row.
572
+ # Corresponds to the JSON property `metrics`
573
+ # @return [Array<Google::Apis::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1MetricValue>]
574
+ attr_accessor :metrics
575
+
576
+ # Represents civil time (or occasionally physical time). This type can represent
577
+ # a civil time in one of a few possible ways: * When utc_offset is set and
578
+ # time_zone is unset: a civil time on a calendar day with a particular offset
579
+ # from UTC. * When time_zone is set and utc_offset is unset: a civil time on a
580
+ # calendar day in a particular time zone. * When neither time_zone nor
581
+ # utc_offset is set: a civil time on a calendar day in local time. The date is
582
+ # relative to the Proleptic Gregorian Calendar. If year is 0, the DateTime is
583
+ # considered not to have a specific year. month and day must have valid, non-
584
+ # zero values. This type may also be used to represent a physical time if all
585
+ # the date and time fields are set and either case of the `time_offset` oneof is
586
+ # set. Consider using `Timestamp` message for physical time instead. If your use
587
+ # case also would like to store the user's timezone, that can be done in another
588
+ # field. This type is more flexible than some applications may want. Make sure
589
+ # to document and validate your application's limitations.
590
+ # Corresponds to the JSON property `startTime`
591
+ # @return [Google::Apis::PlaydeveloperreportingV1alpha1::GoogleTypeDateTime]
592
+ attr_accessor :start_time
593
+
594
+ def initialize(**args)
595
+ update!(**args)
596
+ end
597
+
598
+ # Update properties of this object
599
+ def update!(**args)
600
+ @aggregation_period = args[:aggregation_period] if args.key?(:aggregation_period)
601
+ @dimensions = args[:dimensions] if args.key?(:dimensions)
602
+ @metrics = args[:metrics] if args.key?(:metrics)
603
+ @start_time = args[:start_time] if args.key?(:start_time)
604
+ end
605
+ end
606
+
607
+ # Request message for QueryAnrRateMetricSet.
608
+ class GooglePlayDeveloperReportingV1alpha1QueryAnrRateMetricSetRequest
609
+ include Google::Apis::Core::Hashable
610
+
611
+ # Dimensions to slice the metrics by. **Supported dimensions:** * `apiLevel` (
612
+ # string): the API level of Android that was running on the user's device. * `
613
+ # versionCode` (int64): version of the app that was running on the user's device.
614
+ # * `deviceModel` (string): unique identifier of the user's device model. * `
615
+ # deviceType` (string): the type (also known as form factor) of the user's
616
+ # device. * `countryCode` (string): the country or region of the user's device
617
+ # based on their IP address, represented as a 2-letter ISO-3166 code (e.g. US
618
+ # for the United States).
619
+ # Corresponds to the JSON property `dimensions`
620
+ # @return [Array<String>]
621
+ attr_accessor :dimensions
622
+
623
+ # Filters to apply to data. The filtering expression follows [AIP-160](https://
624
+ # google.aip.dev/160) standard and supports filtering by equality of all
625
+ # breakdown dimensions.
626
+ # Corresponds to the JSON property `filter`
627
+ # @return [String]
628
+ attr_accessor :filter
629
+
630
+ # Metrics to aggregate. **Supported metrics:** * `anrRate` (`google.type.Decimal`
631
+ # ): Percentage of distinct users in the aggregation period that experienced at
632
+ # least one ANR. If your app exhibits an ANR rate equal to or higher than the
633
+ # threshold, it's in the bottom 25% of the top 1,000 apps on Google Play (by
634
+ # number of installs). * `anrRate7dUserWeighted` (`google.type.Decimal`):
635
+ # Rolling average value of `anrRate` in the last 7 days. The daily values are
636
+ # weighted by the count of distinct users for the day. * `anrRate28dUserWeighted`
637
+ # (`google.type.Decimal`): Rolling average value of `anrRate` in the last 28
638
+ # days. The daily values are weighted by the count of distinct users for the day.
639
+ # * `distinctUsers` (`google.type.Decimal`): Count of distinct users in the
640
+ # aggregation period that were used as normalization value for the `anrRate`
641
+ # metric. A user is counted in this metric if they used the app in the
642
+ # foreground during the aggregation period. Care must be taken not to aggregate
643
+ # this count further, as it may result in users being counted multiple times.
644
+ # Corresponds to the JSON property `metrics`
645
+ # @return [Array<String>]
646
+ attr_accessor :metrics
647
+
648
+ # Maximum size of the returned data. If unspecified, at most 1000 rows will be
649
+ # returned. The maximum value is 100,000; values above 100,000 will be coerced
650
+ # to 100,000.
651
+ # Corresponds to the JSON property `pageSize`
652
+ # @return [Fixnum]
653
+ attr_accessor :page_size
654
+
655
+ # A page token, received from a previous call. Provide this to retrieve the
656
+ # subsequent page. When paginating, all other parameters provided to the request
657
+ # must match the call that provided the page token.
658
+ # Corresponds to the JSON property `pageToken`
659
+ # @return [String]
660
+ attr_accessor :page_token
661
+
662
+ # Specification of the time-related aggregation parameters of a timeline.
663
+ # Timelines have an aggregation period (`DAILY`, `HOURLY`, etc) which defines
664
+ # how events are aggregated in metrics. The points in a timeline are defined by
665
+ # the starting DateTime of the aggregation period. The duration is implicit in
666
+ # the AggregationPeriod. Hourly aggregation periods, when supported by a metric
667
+ # set, are always specified in UTC to avoid ambiguities around daylight saving
668
+ # time transitions, where an hour is skipped when adopting DST, and repeated
669
+ # when abandoning DST. For example, the timestamp '2021-11-07 01:00:00 America/
670
+ # Los_Angeles' is ambiguous since it can correspond to '2021-11-07 08:00:00 UTC'
671
+ # or '2021-11-07 09:00:00 UTC'. Daily aggregation periods require specifying a
672
+ # timezone which will determine the precise instants of the start and the end of
673
+ # the day. Not all metric sets support all timezones, so make sure to check
674
+ # which timezones are supported by the metric set you want to query.
675
+ # Corresponds to the JSON property `timelineSpec`
676
+ # @return [Google::Apis::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1TimelineSpec]
677
+ attr_accessor :timeline_spec
678
+
679
+ def initialize(**args)
680
+ update!(**args)
681
+ end
682
+
683
+ # Update properties of this object
684
+ def update!(**args)
685
+ @dimensions = args[:dimensions] if args.key?(:dimensions)
686
+ @filter = args[:filter] if args.key?(:filter)
687
+ @metrics = args[:metrics] if args.key?(:metrics)
688
+ @page_size = args[:page_size] if args.key?(:page_size)
689
+ @page_token = args[:page_token] if args.key?(:page_token)
690
+ @timeline_spec = args[:timeline_spec] if args.key?(:timeline_spec)
691
+ end
692
+ end
693
+
694
+ # Response message for QueryAnrRateMetricSet.
695
+ class GooglePlayDeveloperReportingV1alpha1QueryAnrRateMetricSetResponse
696
+ include Google::Apis::Core::Hashable
697
+
698
+ # Continuation token to fetch the next page of data.
699
+ # Corresponds to the JSON property `nextPageToken`
700
+ # @return [String]
701
+ attr_accessor :next_page_token
702
+
703
+ # Returned rows of data.
704
+ # Corresponds to the JSON property `rows`
705
+ # @return [Array<Google::Apis::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1MetricsRow>]
706
+ attr_accessor :rows
707
+
708
+ def initialize(**args)
709
+ update!(**args)
710
+ end
711
+
712
+ # Update properties of this object
713
+ def update!(**args)
714
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
715
+ @rows = args[:rows] if args.key?(:rows)
716
+ end
717
+ end
718
+
719
+ # Request message for QueryCrashRateMetricSet.
720
+ class GooglePlayDeveloperReportingV1alpha1QueryCrashRateMetricSetRequest
721
+ include Google::Apis::Core::Hashable
722
+
723
+ # Dimensions to slice the metrics by. **Supported dimensions:** * `apiLevel` (
724
+ # string): the API level of Android that was running on the user's device. * `
725
+ # versionCode` (int64): version of the app that was running on the user's device.
726
+ # * `deviceModel` (string): unique identifier of the user's device model. * `
727
+ # deviceType` (string): the type (also known as form factor) of the user's
728
+ # device. * `countryCode` (string): the country or region of the user's device
729
+ # based on their IP address, represented as a 2-letter ISO-3166 code (e.g. US
730
+ # for the United States).
731
+ # Corresponds to the JSON property `dimensions`
732
+ # @return [Array<String>]
733
+ attr_accessor :dimensions
734
+
735
+ # Filters to apply to data. The filtering expression follows [AIP-160](https://
736
+ # google.aip.dev/160) standard and supports filtering by equality of all
737
+ # breakdown dimensions.
738
+ # Corresponds to the JSON property `filter`
739
+ # @return [String]
740
+ attr_accessor :filter
741
+
742
+ # Metrics to aggregate. **Supported metrics:** * `crashRate` (`google.type.
743
+ # Decimal`): Percentage of distinct users in the aggregation period that
744
+ # experienced at least one crash. If your app exhibits a crash rate equal to or
745
+ # higher than the threshold, it's in the bottom 25% of the top 1,000 apps on
746
+ # Google Play (by number of installs). * `crashRate7dUserWeighted` (`google.type.
747
+ # Decimal`): Rolling average value of `crashRate` in the last 7 days. The daily
748
+ # values are weighted by the count of distinct users for the day. * `
749
+ # crashRate28dUserWeighted` (`google.type.Decimal`): Rolling average value of `
750
+ # crashRate` in the last 28 days. The daily values are weighted by the count of
751
+ # distinct users for the day. * `distinctUsers` (`google.type.Decimal`): Count
752
+ # of distinct users in the aggregation period that were used as normalization
753
+ # value for the `crashRate` metric. A user is counted in this metric if they
754
+ # used the app in the foreground during the aggregation period. Care must be
755
+ # taken not to aggregate this count further, as it may result in users being
756
+ # counted multiple times.
757
+ # Corresponds to the JSON property `metrics`
758
+ # @return [Array<String>]
759
+ attr_accessor :metrics
760
+
761
+ # Maximum size of the returned data. If unspecified, at most 1000 rows will be
762
+ # returned. The maximum value is 100,000; values above 100,000 will be coerced
763
+ # to 100,000.
764
+ # Corresponds to the JSON property `pageSize`
765
+ # @return [Fixnum]
766
+ attr_accessor :page_size
767
+
768
+ # A page token, received from a previous call. Provide this to retrieve the
769
+ # subsequent page. When paginating, all other parameters provided to the request
770
+ # must match the call that provided the page token.
771
+ # Corresponds to the JSON property `pageToken`
772
+ # @return [String]
773
+ attr_accessor :page_token
774
+
775
+ # Specification of the time-related aggregation parameters of a timeline.
776
+ # Timelines have an aggregation period (`DAILY`, `HOURLY`, etc) which defines
777
+ # how events are aggregated in metrics. The points in a timeline are defined by
778
+ # the starting DateTime of the aggregation period. The duration is implicit in
779
+ # the AggregationPeriod. Hourly aggregation periods, when supported by a metric
780
+ # set, are always specified in UTC to avoid ambiguities around daylight saving
781
+ # time transitions, where an hour is skipped when adopting DST, and repeated
782
+ # when abandoning DST. For example, the timestamp '2021-11-07 01:00:00 America/
783
+ # Los_Angeles' is ambiguous since it can correspond to '2021-11-07 08:00:00 UTC'
784
+ # or '2021-11-07 09:00:00 UTC'. Daily aggregation periods require specifying a
785
+ # timezone which will determine the precise instants of the start and the end of
786
+ # the day. Not all metric sets support all timezones, so make sure to check
787
+ # which timezones are supported by the metric set you want to query.
788
+ # Corresponds to the JSON property `timelineSpec`
789
+ # @return [Google::Apis::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1TimelineSpec]
790
+ attr_accessor :timeline_spec
791
+
792
+ def initialize(**args)
793
+ update!(**args)
794
+ end
795
+
796
+ # Update properties of this object
797
+ def update!(**args)
798
+ @dimensions = args[:dimensions] if args.key?(:dimensions)
799
+ @filter = args[:filter] if args.key?(:filter)
800
+ @metrics = args[:metrics] if args.key?(:metrics)
801
+ @page_size = args[:page_size] if args.key?(:page_size)
802
+ @page_token = args[:page_token] if args.key?(:page_token)
803
+ @timeline_spec = args[:timeline_spec] if args.key?(:timeline_spec)
804
+ end
805
+ end
806
+
807
+ # Response message for QueryCrashRateMetricSet.
808
+ class GooglePlayDeveloperReportingV1alpha1QueryCrashRateMetricSetResponse
809
+ include Google::Apis::Core::Hashable
810
+
811
+ # Continuation token to fetch the next page of data.
812
+ # Corresponds to the JSON property `nextPageToken`
813
+ # @return [String]
814
+ attr_accessor :next_page_token
815
+
816
+ # Returned rows of data.
817
+ # Corresponds to the JSON property `rows`
818
+ # @return [Array<Google::Apis::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1MetricsRow>]
819
+ attr_accessor :rows
820
+
821
+ def initialize(**args)
822
+ update!(**args)
823
+ end
824
+
825
+ # Update properties of this object
826
+ def update!(**args)
827
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
828
+ @rows = args[:rows] if args.key?(:rows)
829
+ end
830
+ end
831
+
832
+ # Request message for QueryErrorCountMetricSet.
833
+ class GooglePlayDeveloperReportingV1alpha1QueryErrorCountMetricSetRequest
834
+ include Google::Apis::Core::Hashable
835
+
836
+ # Dimensions to slice the data by. **Supported dimensions:** * `apiLevel` (
837
+ # string): the API level of Android that was running on the user's device. * `
838
+ # versionCode` (int64): version of the app that was running on the user's device.
839
+ # * `deviceModel` (string): unique identifier of the user's device model. * `
840
+ # deviceType` (string): identifier of the device's form factor, e.g., PHONE. * `
841
+ # reportType` (string): the type of error. The value should correspond to one of
842
+ # the possible values in ErrorType. * `issueId` (string): the id an error was
843
+ # assigned to. The value should correspond to the ``issue`` component of the
844
+ # issue name.
845
+ # Corresponds to the JSON property `dimensions`
846
+ # @return [Array<String>]
847
+ attr_accessor :dimensions
848
+
849
+ # Filters to apply to data. The filtering expression follows [AIP-160](https://
850
+ # google.aip.dev/160) standard and supports filtering by equality of all
851
+ # breakdown dimensions.
852
+ # Corresponds to the JSON property `filter`
853
+ # @return [String]
854
+ attr_accessor :filter
855
+
856
+ # Metrics to aggregate. **Supported metrics:** * `errorReportCount` (`google.
857
+ # type.Decimal`): Absolute count of individual error reports that have been
858
+ # received for an app. * `distinctUsers` (`google.type.Decimal`): Count of
859
+ # distinct users for which reports have been received. Care must be taken not to
860
+ # aggregate this count further, as it may result in users being counted multiple
861
+ # times.
862
+ # Corresponds to the JSON property `metrics`
863
+ # @return [Array<String>]
864
+ attr_accessor :metrics
865
+
866
+ # Maximum size of the returned data. If unspecified, at most 1000 rows will be
867
+ # returned. The maximum value is 100000; values above 100000 will be coerced to
868
+ # 100000.
869
+ # Corresponds to the JSON property `pageSize`
870
+ # @return [Fixnum]
871
+ attr_accessor :page_size
872
+
873
+ # A page token, received from a previous call. Provide this to retrieve the
874
+ # subsequent page. When paginating, all other parameters provided to the request
875
+ # must match the call that provided the page token.
876
+ # Corresponds to the JSON property `pageToken`
877
+ # @return [String]
878
+ attr_accessor :page_token
879
+
880
+ # Specification of the time-related aggregation parameters of a timeline.
881
+ # Timelines have an aggregation period (`DAILY`, `HOURLY`, etc) which defines
882
+ # how events are aggregated in metrics. The points in a timeline are defined by
883
+ # the starting DateTime of the aggregation period. The duration is implicit in
884
+ # the AggregationPeriod. Hourly aggregation periods, when supported by a metric
885
+ # set, are always specified in UTC to avoid ambiguities around daylight saving
886
+ # time transitions, where an hour is skipped when adopting DST, and repeated
887
+ # when abandoning DST. For example, the timestamp '2021-11-07 01:00:00 America/
888
+ # Los_Angeles' is ambiguous since it can correspond to '2021-11-07 08:00:00 UTC'
889
+ # or '2021-11-07 09:00:00 UTC'. Daily aggregation periods require specifying a
890
+ # timezone which will determine the precise instants of the start and the end of
891
+ # the day. Not all metric sets support all timezones, so make sure to check
892
+ # which timezones are supported by the metric set you want to query.
893
+ # Corresponds to the JSON property `timelineSpec`
894
+ # @return [Google::Apis::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1TimelineSpec]
895
+ attr_accessor :timeline_spec
896
+
897
+ def initialize(**args)
898
+ update!(**args)
899
+ end
900
+
901
+ # Update properties of this object
902
+ def update!(**args)
903
+ @dimensions = args[:dimensions] if args.key?(:dimensions)
904
+ @filter = args[:filter] if args.key?(:filter)
905
+ @metrics = args[:metrics] if args.key?(:metrics)
906
+ @page_size = args[:page_size] if args.key?(:page_size)
907
+ @page_token = args[:page_token] if args.key?(:page_token)
908
+ @timeline_spec = args[:timeline_spec] if args.key?(:timeline_spec)
909
+ end
910
+ end
911
+
912
+ # Error counts query response.
913
+ class GooglePlayDeveloperReportingV1alpha1QueryErrorCountMetricSetResponse
914
+ include Google::Apis::Core::Hashable
915
+
916
+ # Continuation token to fetch the next page of data.
917
+ # Corresponds to the JSON property `nextPageToken`
918
+ # @return [String]
919
+ attr_accessor :next_page_token
920
+
921
+ # Returned rows.
922
+ # Corresponds to the JSON property `rows`
923
+ # @return [Array<Google::Apis::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1MetricsRow>]
924
+ attr_accessor :rows
925
+
926
+ def initialize(**args)
927
+ update!(**args)
928
+ end
929
+
930
+ # Update properties of this object
931
+ def update!(**args)
932
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
933
+ @rows = args[:rows] if args.key?(:rows)
934
+ end
935
+ end
936
+
937
+ # Request message for QueryExcessiveWakeupRateMetricSet.
938
+ class GooglePlayDeveloperReportingV1alpha1QueryExcessiveWakeupRateMetricSetRequest
939
+ include Google::Apis::Core::Hashable
940
+
941
+ # Dimensions to slice the data by. **Supported dimensions:** * `apiLevel` (
942
+ # string): the API level of Android that was running on the user's device. * `
943
+ # versionCode` (int64): version of the app that was running on the user's device.
944
+ # * `deviceModel` (string): unique identifier of the user's device model. * `
945
+ # deviceType` (string): the type (also known as form factor) of the user's
946
+ # device. * `countryCode` (string): the country or region of the user's device
947
+ # based on their IP address, represented as a 2-letter ISO-3166 code (e.g. US
948
+ # for the United States).
949
+ # Corresponds to the JSON property `dimensions`
950
+ # @return [Array<String>]
951
+ attr_accessor :dimensions
952
+
953
+ # Filters to apply to data. The filtering expression follows [AIP-160](https://
954
+ # google.aip.dev/160) standard and supports filtering by equality of all
955
+ # breakdown dimensions.
956
+ # Corresponds to the JSON property `filter`
957
+ # @return [String]
958
+ attr_accessor :filter
959
+
960
+ # Metrics to aggregate. **Supported metrics:** * `excessiveWakeupRate` (`google.
961
+ # type.Decimal`): Percentage of distinct users in the aggregation period that
962
+ # had more than 10 wakeups per hour. If your app exhibits an excessive wakeup
963
+ # rate equal to or higher than the threshold, it's in the bottom 25% of the top
964
+ # 1,000 apps on Google Play (by number of installs). * `
965
+ # excessiveWakeupRate7dUserWeighted` (`google.type.Decimal`): Rolling average
966
+ # value of `excessiveWakeupRate` in the last 7 days. The daily values are
967
+ # weighted by the count of distinct users for the day. * `
968
+ # excessiveWakeupRate28dUserWeighted` (`google.type.Decimal`): Rolling average
969
+ # value of `excessiveWakeupRate` in the last 28 days. The daily values are
970
+ # weighted by the count of distinct users for the day. * `distinctUsers` (`
971
+ # google.type.Decimal`): Count of distinct users in the aggregation period that
972
+ # were used as normalization value for the `excessiveWakeupRate` metric. A user
973
+ # is counted in this metric if they app was doing any work on the device, i.e.,
974
+ # not just active foreground usage but also background work. Care must be taken
975
+ # not to aggregate this count further, as it may result in users being counted
976
+ # multiple times.
977
+ # Corresponds to the JSON property `metrics`
978
+ # @return [Array<String>]
979
+ attr_accessor :metrics
980
+
981
+ # Maximum size of the returned data. If unspecified, at most 1000 rows will be
982
+ # returned. The maximum value is 100000; values above 100000 will be coerced to
983
+ # 100000.
984
+ # Corresponds to the JSON property `pageSize`
985
+ # @return [Fixnum]
986
+ attr_accessor :page_size
987
+
988
+ # A page token, received from a previous call. Provide this to retrieve the
989
+ # subsequent page. When paginating, all other parameters provided to the request
990
+ # must match the call that provided the page token.
991
+ # Corresponds to the JSON property `pageToken`
992
+ # @return [String]
993
+ attr_accessor :page_token
994
+
995
+ # Specification of the time-related aggregation parameters of a timeline.
996
+ # Timelines have an aggregation period (`DAILY`, `HOURLY`, etc) which defines
997
+ # how events are aggregated in metrics. The points in a timeline are defined by
998
+ # the starting DateTime of the aggregation period. The duration is implicit in
999
+ # the AggregationPeriod. Hourly aggregation periods, when supported by a metric
1000
+ # set, are always specified in UTC to avoid ambiguities around daylight saving
1001
+ # time transitions, where an hour is skipped when adopting DST, and repeated
1002
+ # when abandoning DST. For example, the timestamp '2021-11-07 01:00:00 America/
1003
+ # Los_Angeles' is ambiguous since it can correspond to '2021-11-07 08:00:00 UTC'
1004
+ # or '2021-11-07 09:00:00 UTC'. Daily aggregation periods require specifying a
1005
+ # timezone which will determine the precise instants of the start and the end of
1006
+ # the day. Not all metric sets support all timezones, so make sure to check
1007
+ # which timezones are supported by the metric set you want to query.
1008
+ # Corresponds to the JSON property `timelineSpec`
1009
+ # @return [Google::Apis::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1TimelineSpec]
1010
+ attr_accessor :timeline_spec
1011
+
1012
+ def initialize(**args)
1013
+ update!(**args)
1014
+ end
1015
+
1016
+ # Update properties of this object
1017
+ def update!(**args)
1018
+ @dimensions = args[:dimensions] if args.key?(:dimensions)
1019
+ @filter = args[:filter] if args.key?(:filter)
1020
+ @metrics = args[:metrics] if args.key?(:metrics)
1021
+ @page_size = args[:page_size] if args.key?(:page_size)
1022
+ @page_token = args[:page_token] if args.key?(:page_token)
1023
+ @timeline_spec = args[:timeline_spec] if args.key?(:timeline_spec)
1024
+ end
1025
+ end
1026
+
1027
+ # Response message for QueryExcessiveWakeupRateMetricSet.
1028
+ class GooglePlayDeveloperReportingV1alpha1QueryExcessiveWakeupRateMetricSetResponse
1029
+ include Google::Apis::Core::Hashable
1030
+
1031
+ # Continuation token to fetch the next page of data.
1032
+ # Corresponds to the JSON property `nextPageToken`
1033
+ # @return [String]
1034
+ attr_accessor :next_page_token
1035
+
1036
+ # Returned rows of data.
1037
+ # Corresponds to the JSON property `rows`
1038
+ # @return [Array<Google::Apis::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1MetricsRow>]
1039
+ attr_accessor :rows
1040
+
1041
+ def initialize(**args)
1042
+ update!(**args)
1043
+ end
1044
+
1045
+ # Update properties of this object
1046
+ def update!(**args)
1047
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1048
+ @rows = args[:rows] if args.key?(:rows)
1049
+ end
1050
+ end
1051
+
1052
+ # Request message for QueryStuckBackgroundWakelockRateMetricSet.
1053
+ class GooglePlayDeveloperReportingV1alpha1QueryStuckBackgroundWakelockRateMetricSetRequest
1054
+ include Google::Apis::Core::Hashable
1055
+
1056
+ # Dimensions to slice the data by. **Supported dimensions:** * `apiLevel` (
1057
+ # string): the API level of Android that was running on the user's device. * `
1058
+ # versionCode` (int64): version of the app that was running on the user's device.
1059
+ # * `deviceModel` (string): unique identifier of the user's device model. * `
1060
+ # deviceType` (string): the type (also known as form factor) of the user's
1061
+ # device. * `countryCode` (string): the country or region of the user's device
1062
+ # based on their IP address, represented as a 2-letter ISO-3166 code (e.g. US
1063
+ # for the United States).
1064
+ # Corresponds to the JSON property `dimensions`
1065
+ # @return [Array<String>]
1066
+ attr_accessor :dimensions
1067
+
1068
+ # Filters to apply to data. The filtering expression follows [AIP-160](https://
1069
+ # google.aip.dev/160) standard and supports filtering by equality of all
1070
+ # breakdown dimensions.
1071
+ # Corresponds to the JSON property `filter`
1072
+ # @return [String]
1073
+ attr_accessor :filter
1074
+
1075
+ # Metrics to aggregate. **Supported metrics:** * `stuckBgWakelockRate` (`google.
1076
+ # type.Decimal`): Percentage of distinct users in the aggregation period that
1077
+ # had a wakelock held in the background for longer than 1 hour. If your app
1078
+ # exhibits a stuck background wakelock rate equal to or higher than the
1079
+ # threshold, it's in the bottom 25% of the top 1,000 apps on Google Play (by
1080
+ # number of installs). * `stuckBgWakelockRate7dUserWeighted` (`google.type.
1081
+ # Decimal`): Rolling average value of `stuckBgWakelockRate` in the last 7 days.
1082
+ # The daily values are weighted by the count of distinct users for the day. * `
1083
+ # stuckBgWakelockRate28dUserWeighted` (`google.type.Decimal`): Rolling average
1084
+ # value of `stuckBgWakelockRate` in the last 28 days. The daily values are
1085
+ # weighted by the count of distinct users for the day. * `distinctUsers` (`
1086
+ # google.type.Decimal`): Count of distinct users in the aggregation period that
1087
+ # were used as normalization value for the `stuckBgWakelockRate` metric. A user
1088
+ # is counted in this metric if they app was doing any work on the device, i.e.,
1089
+ # not just active foreground usage but also background work. Care must be taken
1090
+ # not to aggregate this count further, as it may result in users being counted
1091
+ # multiple times.
1092
+ # Corresponds to the JSON property `metrics`
1093
+ # @return [Array<String>]
1094
+ attr_accessor :metrics
1095
+
1096
+ # Maximum size of the returned data. If unspecified, at most 1000 rows will be
1097
+ # returned. The maximum value is 100000; values above 100000 will be coerced to
1098
+ # 100000.
1099
+ # Corresponds to the JSON property `pageSize`
1100
+ # @return [Fixnum]
1101
+ attr_accessor :page_size
1102
+
1103
+ # A page token, received from a previous call. Provide this to retrieve the
1104
+ # subsequent page. When paginating, all other parameters provided to the request
1105
+ # must match the call that provided the page token.
1106
+ # Corresponds to the JSON property `pageToken`
1107
+ # @return [String]
1108
+ attr_accessor :page_token
1109
+
1110
+ # Specification of the time-related aggregation parameters of a timeline.
1111
+ # Timelines have an aggregation period (`DAILY`, `HOURLY`, etc) which defines
1112
+ # how events are aggregated in metrics. The points in a timeline are defined by
1113
+ # the starting DateTime of the aggregation period. The duration is implicit in
1114
+ # the AggregationPeriod. Hourly aggregation periods, when supported by a metric
1115
+ # set, are always specified in UTC to avoid ambiguities around daylight saving
1116
+ # time transitions, where an hour is skipped when adopting DST, and repeated
1117
+ # when abandoning DST. For example, the timestamp '2021-11-07 01:00:00 America/
1118
+ # Los_Angeles' is ambiguous since it can correspond to '2021-11-07 08:00:00 UTC'
1119
+ # or '2021-11-07 09:00:00 UTC'. Daily aggregation periods require specifying a
1120
+ # timezone which will determine the precise instants of the start and the end of
1121
+ # the day. Not all metric sets support all timezones, so make sure to check
1122
+ # which timezones are supported by the metric set you want to query.
1123
+ # Corresponds to the JSON property `timelineSpec`
1124
+ # @return [Google::Apis::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1TimelineSpec]
1125
+ attr_accessor :timeline_spec
1126
+
1127
+ def initialize(**args)
1128
+ update!(**args)
1129
+ end
1130
+
1131
+ # Update properties of this object
1132
+ def update!(**args)
1133
+ @dimensions = args[:dimensions] if args.key?(:dimensions)
1134
+ @filter = args[:filter] if args.key?(:filter)
1135
+ @metrics = args[:metrics] if args.key?(:metrics)
1136
+ @page_size = args[:page_size] if args.key?(:page_size)
1137
+ @page_token = args[:page_token] if args.key?(:page_token)
1138
+ @timeline_spec = args[:timeline_spec] if args.key?(:timeline_spec)
1139
+ end
1140
+ end
1141
+
1142
+ # Response message for QueryStuckBackgroundWakelockRateMetricSet.
1143
+ class GooglePlayDeveloperReportingV1alpha1QueryStuckBackgroundWakelockRateMetricSetResponse
1144
+ include Google::Apis::Core::Hashable
1145
+
1146
+ # Continuation token to fetch the next page of data.
1147
+ # Corresponds to the JSON property `nextPageToken`
1148
+ # @return [String]
1149
+ attr_accessor :next_page_token
1150
+
1151
+ # Returned rows of data.
1152
+ # Corresponds to the JSON property `rows`
1153
+ # @return [Array<Google::Apis::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1MetricsRow>]
1154
+ attr_accessor :rows
1155
+
1156
+ def initialize(**args)
1157
+ update!(**args)
1158
+ end
1159
+
1160
+ # Update properties of this object
1161
+ def update!(**args)
1162
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1163
+ @rows = args[:rows] if args.key?(:rows)
1164
+ end
1165
+ end
1166
+
1167
+ # Response with a paginated list of issues that matched the request.
1168
+ class GooglePlayDeveloperReportingV1alpha1SearchErrorIssuesResponse
1169
+ include Google::Apis::Core::Hashable
1170
+
1171
+ # ErrorIssues that were found.
1172
+ # Corresponds to the JSON property `errorIssues`
1173
+ # @return [Array<Google::Apis::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1ErrorIssue>]
1174
+ attr_accessor :error_issues
1175
+
1176
+ # Continuation token to fetch the next page of data.
1177
+ # Corresponds to the JSON property `nextPageToken`
1178
+ # @return [String]
1179
+ attr_accessor :next_page_token
1180
+
1181
+ def initialize(**args)
1182
+ update!(**args)
1183
+ end
1184
+
1185
+ # Update properties of this object
1186
+ def update!(**args)
1187
+ @error_issues = args[:error_issues] if args.key?(:error_issues)
1188
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1189
+ end
1190
+ end
1191
+
1192
+ # Response with a paginated list of error reports matching the search query.
1193
+ class GooglePlayDeveloperReportingV1alpha1SearchErrorReportsResponse
1194
+ include Google::Apis::Core::Hashable
1195
+
1196
+ # Error reports that were found.
1197
+ # Corresponds to the JSON property `errorReports`
1198
+ # @return [Array<Google::Apis::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1ErrorReport>]
1199
+ attr_accessor :error_reports
1200
+
1201
+ # Page token to fetch the next page of reports.
1202
+ # Corresponds to the JSON property `nextPageToken`
1203
+ # @return [String]
1204
+ attr_accessor :next_page_token
1205
+
1206
+ def initialize(**args)
1207
+ update!(**args)
1208
+ end
1209
+
1210
+ # Update properties of this object
1211
+ def update!(**args)
1212
+ @error_reports = args[:error_reports] if args.key?(:error_reports)
1213
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1214
+ end
1215
+ end
1216
+
1217
+ # Singleton resource representing the set of Stuck Background Wakelocks metrics.
1218
+ # This metric set contains PowerManager wakelock duration data combined with
1219
+ # process state data to produce a normalized metric independent of user counts. *
1220
+ # *Supported aggregation periods:** * DAILY: metrics are aggregated in calendar
1221
+ # date intervals. Due to historical constraints, the only supported timezone is `
1222
+ # America/Los_Angeles`. **Supported metrics:** * `stuckBgWakelockRate` (`google.
1223
+ # type.Decimal`): Percentage of distinct users in the aggregation period that
1224
+ # had a wakelock held in the background for longer than 1 hour. If your app
1225
+ # exhibits a stuck background wakelocks rate equal to or higher than the
1226
+ # threshold, it's in the bottom 25% of the top 1,000 apps on Google Play (by
1227
+ # number of installs). * `stuckBgWakelockRate7dUserWeighted` (`google.type.
1228
+ # Decimal`): Rolling average value of `stuckBgWakelockRate` in the last 7 days.
1229
+ # The daily values are weighted by the count of distinct users for the day. * `
1230
+ # stuckBgWakelockRate28dUserWeighted` (`google.type.Decimal`): Rolling average
1231
+ # value of `stuckBgWakelockRate` in the last 28 days. The daily values are
1232
+ # weighted by the count of distinct users for the day. * `distinctUsers` (`
1233
+ # google.type.Decimal`): Count of distinct users in the aggregation period that
1234
+ # were used as normalization value for the `stuckBgWakelockRate` metric. A user
1235
+ # is counted in this metric if their app was doing any work on the device, i.e.,
1236
+ # not just active foreground usage but also background work. Care must be taken
1237
+ # not to aggregate this count further, as it may result in users being counted
1238
+ # multiple times. **Supported dimensions:** * `apiLevel` (string): the API level
1239
+ # of Android that was running on the user's device. * `versionCode` (int64):
1240
+ # version of the app that was running on the user's device. * `deviceModel` (
1241
+ # string): unique identifier of the user's device model. * `deviceType` (string):
1242
+ # the type (also known as form factor) of the user's device. * `countryCode` (
1243
+ # string): the country or region of the user's device based on their IP address,
1244
+ # represented as a 2-letter ISO-3166 code (e.g. US for the United States). **
1245
+ # Required permissions**: to access this resource, the calling user needs the
1246
+ # _View app information (read-only)_ permission for the app.
1247
+ class GooglePlayDeveloperReportingV1alpha1StuckBackgroundWakelockRateMetricSet
1248
+ include Google::Apis::Core::Hashable
1249
+
1250
+ # Represents the latest available time that can be requested in a TimelineSpec.
1251
+ # Different aggregation periods have different freshness. For example, `DAILY`
1252
+ # aggregation may lag behind `HOURLY` in cases where such aggregation is
1253
+ # computed only once at the end of the day.
1254
+ # Corresponds to the JSON property `freshnessInfo`
1255
+ # @return [Google::Apis::PlaydeveloperreportingV1alpha1::GooglePlayDeveloperReportingV1alpha1FreshnessInfo]
1256
+ attr_accessor :freshness_info
1257
+
1258
+ # The resource name. Format: apps/`app`/stuckBackgroundWakelockRateMetricSet
1259
+ # Corresponds to the JSON property `name`
1260
+ # @return [String]
1261
+ attr_accessor :name
1262
+
1263
+ def initialize(**args)
1264
+ update!(**args)
1265
+ end
1266
+
1267
+ # Update properties of this object
1268
+ def update!(**args)
1269
+ @freshness_info = args[:freshness_info] if args.key?(:freshness_info)
1270
+ @name = args[:name] if args.key?(:name)
1271
+ end
1272
+ end
1273
+
1274
+ # Specification of the time-related aggregation parameters of a timeline.
1275
+ # Timelines have an aggregation period (`DAILY`, `HOURLY`, etc) which defines
1276
+ # how events are aggregated in metrics. The points in a timeline are defined by
1277
+ # the starting DateTime of the aggregation period. The duration is implicit in
1278
+ # the AggregationPeriod. Hourly aggregation periods, when supported by a metric
1279
+ # set, are always specified in UTC to avoid ambiguities around daylight saving
1280
+ # time transitions, where an hour is skipped when adopting DST, and repeated
1281
+ # when abandoning DST. For example, the timestamp '2021-11-07 01:00:00 America/
1282
+ # Los_Angeles' is ambiguous since it can correspond to '2021-11-07 08:00:00 UTC'
1283
+ # or '2021-11-07 09:00:00 UTC'. Daily aggregation periods require specifying a
1284
+ # timezone which will determine the precise instants of the start and the end of
1285
+ # the day. Not all metric sets support all timezones, so make sure to check
1286
+ # which timezones are supported by the metric set you want to query.
1287
+ class GooglePlayDeveloperReportingV1alpha1TimelineSpec
1288
+ include Google::Apis::Core::Hashable
1289
+
1290
+ # Type of the aggregation period of the datapoints in the timeline. Intervals
1291
+ # are identified by the date and time at the start of the interval.
1292
+ # Corresponds to the JSON property `aggregationPeriod`
1293
+ # @return [String]
1294
+ attr_accessor :aggregation_period
1295
+
1296
+ # Represents civil time (or occasionally physical time). This type can represent
1297
+ # a civil time in one of a few possible ways: * When utc_offset is set and
1298
+ # time_zone is unset: a civil time on a calendar day with a particular offset
1299
+ # from UTC. * When time_zone is set and utc_offset is unset: a civil time on a
1300
+ # calendar day in a particular time zone. * When neither time_zone nor
1301
+ # utc_offset is set: a civil time on a calendar day in local time. The date is
1302
+ # relative to the Proleptic Gregorian Calendar. If year is 0, the DateTime is
1303
+ # considered not to have a specific year. month and day must have valid, non-
1304
+ # zero values. This type may also be used to represent a physical time if all
1305
+ # the date and time fields are set and either case of the `time_offset` oneof is
1306
+ # set. Consider using `Timestamp` message for physical time instead. If your use
1307
+ # case also would like to store the user's timezone, that can be done in another
1308
+ # field. This type is more flexible than some applications may want. Make sure
1309
+ # to document and validate your application's limitations.
1310
+ # Corresponds to the JSON property `endTime`
1311
+ # @return [Google::Apis::PlaydeveloperreportingV1alpha1::GoogleTypeDateTime]
1312
+ attr_accessor :end_time
1313
+
1314
+ # Represents civil time (or occasionally physical time). This type can represent
1315
+ # a civil time in one of a few possible ways: * When utc_offset is set and
1316
+ # time_zone is unset: a civil time on a calendar day with a particular offset
1317
+ # from UTC. * When time_zone is set and utc_offset is unset: a civil time on a
1318
+ # calendar day in a particular time zone. * When neither time_zone nor
1319
+ # utc_offset is set: a civil time on a calendar day in local time. The date is
1320
+ # relative to the Proleptic Gregorian Calendar. If year is 0, the DateTime is
1321
+ # considered not to have a specific year. month and day must have valid, non-
1322
+ # zero values. This type may also be used to represent a physical time if all
1323
+ # the date and time fields are set and either case of the `time_offset` oneof is
1324
+ # set. Consider using `Timestamp` message for physical time instead. If your use
1325
+ # case also would like to store the user's timezone, that can be done in another
1326
+ # field. This type is more flexible than some applications may want. Make sure
1327
+ # to document and validate your application's limitations.
1328
+ # Corresponds to the JSON property `startTime`
1329
+ # @return [Google::Apis::PlaydeveloperreportingV1alpha1::GoogleTypeDateTime]
1330
+ attr_accessor :start_time
1331
+
1332
+ def initialize(**args)
1333
+ update!(**args)
1334
+ end
1335
+
1336
+ # Update properties of this object
1337
+ def update!(**args)
1338
+ @aggregation_period = args[:aggregation_period] if args.key?(:aggregation_period)
1339
+ @end_time = args[:end_time] if args.key?(:end_time)
1340
+ @start_time = args[:start_time] if args.key?(:start_time)
1341
+ end
1342
+ end
1343
+
1344
+ # Represents civil time (or occasionally physical time). This type can represent
1345
+ # a civil time in one of a few possible ways: * When utc_offset is set and
1346
+ # time_zone is unset: a civil time on a calendar day with a particular offset
1347
+ # from UTC. * When time_zone is set and utc_offset is unset: a civil time on a
1348
+ # calendar day in a particular time zone. * When neither time_zone nor
1349
+ # utc_offset is set: a civil time on a calendar day in local time. The date is
1350
+ # relative to the Proleptic Gregorian Calendar. If year is 0, the DateTime is
1351
+ # considered not to have a specific year. month and day must have valid, non-
1352
+ # zero values. This type may also be used to represent a physical time if all
1353
+ # the date and time fields are set and either case of the `time_offset` oneof is
1354
+ # set. Consider using `Timestamp` message for physical time instead. If your use
1355
+ # case also would like to store the user's timezone, that can be done in another
1356
+ # field. This type is more flexible than some applications may want. Make sure
1357
+ # to document and validate your application's limitations.
1358
+ class GoogleTypeDateTime
1359
+ include Google::Apis::Core::Hashable
1360
+
1361
+ # Required. Day of month. Must be from 1 to 31 and valid for the year and month.
1362
+ # Corresponds to the JSON property `day`
1363
+ # @return [Fixnum]
1364
+ attr_accessor :day
1365
+
1366
+ # Required. Hours of day in 24 hour format. Should be from 0 to 23. An API may
1367
+ # choose to allow the value "24:00:00" for scenarios like business closing time.
1368
+ # Corresponds to the JSON property `hours`
1369
+ # @return [Fixnum]
1370
+ attr_accessor :hours
1371
+
1372
+ # Required. Minutes of hour of day. Must be from 0 to 59.
1373
+ # Corresponds to the JSON property `minutes`
1374
+ # @return [Fixnum]
1375
+ attr_accessor :minutes
1376
+
1377
+ # Required. Month of year. Must be from 1 to 12.
1378
+ # Corresponds to the JSON property `month`
1379
+ # @return [Fixnum]
1380
+ attr_accessor :month
1381
+
1382
+ # Required. Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
1383
+ # Corresponds to the JSON property `nanos`
1384
+ # @return [Fixnum]
1385
+ attr_accessor :nanos
1386
+
1387
+ # Required. Seconds of minutes of the time. Must normally be from 0 to 59. An
1388
+ # API may allow the value 60 if it allows leap-seconds.
1389
+ # Corresponds to the JSON property `seconds`
1390
+ # @return [Fixnum]
1391
+ attr_accessor :seconds
1392
+
1393
+ # Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/
1394
+ # time-zones).
1395
+ # Corresponds to the JSON property `timeZone`
1396
+ # @return [Google::Apis::PlaydeveloperreportingV1alpha1::GoogleTypeTimeZone]
1397
+ attr_accessor :time_zone
1398
+
1399
+ # UTC offset. Must be whole seconds, between -18 hours and +18 hours. For
1400
+ # example, a UTC offset of -4:00 would be represented as ` seconds: -14400 `.
1401
+ # Corresponds to the JSON property `utcOffset`
1402
+ # @return [String]
1403
+ attr_accessor :utc_offset
1404
+
1405
+ # Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a datetime
1406
+ # without a year.
1407
+ # Corresponds to the JSON property `year`
1408
+ # @return [Fixnum]
1409
+ attr_accessor :year
1410
+
1411
+ def initialize(**args)
1412
+ update!(**args)
1413
+ end
1414
+
1415
+ # Update properties of this object
1416
+ def update!(**args)
1417
+ @day = args[:day] if args.key?(:day)
1418
+ @hours = args[:hours] if args.key?(:hours)
1419
+ @minutes = args[:minutes] if args.key?(:minutes)
1420
+ @month = args[:month] if args.key?(:month)
1421
+ @nanos = args[:nanos] if args.key?(:nanos)
1422
+ @seconds = args[:seconds] if args.key?(:seconds)
1423
+ @time_zone = args[:time_zone] if args.key?(:time_zone)
1424
+ @utc_offset = args[:utc_offset] if args.key?(:utc_offset)
1425
+ @year = args[:year] if args.key?(:year)
1426
+ end
1427
+ end
1428
+
1429
+ # A representation of a decimal value, such as 2.5. Clients may convert values
1430
+ # into language-native decimal formats, such as Java's BigDecimal or Python's
1431
+ # decimal.Decimal. [BigDecimal]: https://docs.oracle.com/en/java/javase/11/docs/
1432
+ # api/java.base/java/math/BigDecimal.html [decimal.Decimal]: https://docs.python.
1433
+ # org/3/library/decimal.html
1434
+ class GoogleTypeDecimal
1435
+ include Google::Apis::Core::Hashable
1436
+
1437
+ # The decimal value, as a string. The string representation consists of an
1438
+ # optional sign, `+` (`U+002B`) or `-` (`U+002D`), followed by a sequence of
1439
+ # zero or more decimal digits ("the integer"), optionally followed by a fraction,
1440
+ # optionally followed by an exponent. The fraction consists of a decimal point
1441
+ # followed by zero or more decimal digits. The string must contain at least one
1442
+ # digit in either the integer or the fraction. The number formed by the sign,
1443
+ # the integer and the fraction is referred to as the significand. The exponent
1444
+ # consists of the character `e` (`U+0065`) or `E` (`U+0045`) followed by one or
1445
+ # more decimal digits. Services **should** normalize decimal values before
1446
+ # storing them by: - Removing an explicitly-provided `+` sign (`+2.5` -> `2.5`).
1447
+ # - Replacing a zero-length integer value with `0` (`.5` -> `0.5`). - Coercing
1448
+ # the exponent character to lower-case (`2.5E8` -> `2.5e8`). - Removing an
1449
+ # explicitly-provided zero exponent (`2.5e0` -> `2.5`). Services **may** perform
1450
+ # additional normalization based on its own needs and the internal decimal
1451
+ # implementation selected, such as shifting the decimal point and exponent value
1452
+ # together (example: `2.5e-1` <-> `0.25`). Additionally, services **may**
1453
+ # preserve trailing zeroes in the fraction to indicate increased precision, but
1454
+ # are not required to do so. Note that only the `.` character is supported to
1455
+ # divide the integer and the fraction; `,` **should not** be supported
1456
+ # regardless of locale. Additionally, thousand separators **should not** be
1457
+ # supported. If a service does support them, values **must** be normalized. The
1458
+ # ENBF grammar is: DecimalString = [Sign] Significand [Exponent]; Sign = '+' | '-
1459
+ # '; Significand = Digits '.' | [Digits] '.' Digits; Exponent = ('e' | 'E') [
1460
+ # Sign] Digits; Digits = ` '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' |
1461
+ # '9' `; Services **should** clearly document the range of supported values, the
1462
+ # maximum supported precision (total number of digits), and, if applicable, the
1463
+ # scale (number of digits after the decimal point), as well as how it behaves
1464
+ # when receiving out-of-bounds values. Services **may** choose to accept values
1465
+ # passed as input even when the value has a higher precision or scale than the
1466
+ # service supports, and **should** round the value to fit the supported scale.
1467
+ # Alternatively, the service **may** error with `400 Bad Request` (`
1468
+ # INVALID_ARGUMENT` in gRPC) if precision would be lost. Services **should**
1469
+ # error with `400 Bad Request` (`INVALID_ARGUMENT` in gRPC) if the service
1470
+ # receives a value outside of the supported range.
1471
+ # Corresponds to the JSON property `value`
1472
+ # @return [String]
1473
+ attr_accessor :value
1474
+
1475
+ def initialize(**args)
1476
+ update!(**args)
1477
+ end
1478
+
1479
+ # Update properties of this object
1480
+ def update!(**args)
1481
+ @value = args[:value] if args.key?(:value)
1482
+ end
1483
+ end
1484
+
1485
+ # Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/
1486
+ # time-zones).
1487
+ class GoogleTypeTimeZone
1488
+ include Google::Apis::Core::Hashable
1489
+
1490
+ # IANA Time Zone Database time zone, e.g. "America/New_York".
1491
+ # Corresponds to the JSON property `id`
1492
+ # @return [String]
1493
+ attr_accessor :id
1494
+
1495
+ # Optional. IANA Time Zone Database version number, e.g. "2019a".
1496
+ # Corresponds to the JSON property `version`
1497
+ # @return [String]
1498
+ attr_accessor :version
1499
+
1500
+ def initialize(**args)
1501
+ update!(**args)
1502
+ end
1503
+
1504
+ # Update properties of this object
1505
+ def update!(**args)
1506
+ @id = args[:id] if args.key?(:id)
1507
+ @version = args[:version] if args.key?(:version)
1508
+ end
1509
+ end
1510
+ end
1511
+ end
1512
+ end