google-apis-playdeveloperreporting_v1alpha1 0.1.0

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