# Copyright 2015 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. require 'date' require 'google/apis/core/base_service' require 'google/apis/core/json_representation' require 'google/apis/core/hashable' require 'google/apis/errors' module Google module Apis module FitnessV1 # class AggregateBucket include Google::Apis::Core::Hashable # Available for Bucket.Type.ACTIVITY_TYPE, Bucket.Type.ACTIVITY_SEGMENT # Corresponds to the JSON property `activity` # @return [Fixnum] attr_accessor :activity # There will be one dataset per AggregateBy in the request. # Corresponds to the JSON property `dataset` # @return [Array] attr_accessor :dataset # The end time for the aggregated data, in milliseconds since epoch, inclusive. # Corresponds to the JSON property `endTimeMillis` # @return [Fixnum] attr_accessor :end_time_millis # Sessions contain metadata, such as a user-friendly name and time interval # information. # Corresponds to the JSON property `session` # @return [Google::Apis::FitnessV1::Session] attr_accessor :session # The start time for the aggregated data, in milliseconds since epoch, inclusive. # Corresponds to the JSON property `startTimeMillis` # @return [Fixnum] attr_accessor :start_time_millis # The type of a bucket signifies how the data aggregation is performed in the # bucket. # Corresponds to the JSON property `type` # @return [String] attr_accessor :type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @activity = args[:activity] if args.key?(:activity) @dataset = args[:dataset] if args.key?(:dataset) @end_time_millis = args[:end_time_millis] if args.key?(:end_time_millis) @session = args[:session] if args.key?(:session) @start_time_millis = args[:start_time_millis] if args.key?(:start_time_millis) @type = args[:type] if args.key?(:type) end end # The specification of which data to aggregate. class AggregateBy include Google::Apis::Core::Hashable # A data source ID to aggregate. Mutually exclusive of dataTypeName. Only data # from the specified data source ID will be included in the aggregation. The # dataset in the response will have the same data source ID. # Corresponds to the JSON property `dataSourceId` # @return [String] attr_accessor :data_source_id # The data type to aggregate. All data sources providing this data type will # contribute data to the aggregation. The response will contain a single dataset # for this data type name. The dataset will have a data source ID of derived:com. # google.:com.google.android.gms:aggregated # Corresponds to the JSON property `dataTypeName` # @return [String] attr_accessor :data_type_name def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @data_source_id = args[:data_source_id] if args.key?(:data_source_id) @data_type_name = args[:data_type_name] if args.key?(:data_type_name) end end # Next id: 10 class AggregateRequest include Google::Apis::Core::Hashable # The specification of data to be aggregated. At least one aggregateBy spec must # be provided. All data that is specified will be aggregated using the same # bucketing criteria. There will be one dataset in the response for every # aggregateBy spec. # Corresponds to the JSON property `aggregateBy` # @return [Array] attr_accessor :aggregate_by # Specifies that data be aggregated each activity segment recored for a user. # Similar to bucketByActivitySegment, but bucketing is done for each activity # segment rather than all segments of the same type. Mutually exclusive of other # bucketing specifications. # Corresponds to the JSON property `bucketByActivitySegment` # @return [Google::Apis::FitnessV1::BucketByActivity] attr_accessor :bucket_by_activity_segment # Specifies that data be aggregated by the type of activity being performed when # the data was recorded. All data that was recorded during a certain activity # type (for the given time range) will be aggregated into the same bucket. Data # that was recorded while the user was not active will not be included in the # response. Mutually exclusive of other bucketing specifications. # Corresponds to the JSON property `bucketByActivityType` # @return [Google::Apis::FitnessV1::BucketByActivity] attr_accessor :bucket_by_activity_type # Specifies that data be aggregated by user sessions. Data that does not fall # within the time range of a session will not be included in the response. # Mutually exclusive of other bucketing specifications. # Corresponds to the JSON property `bucketBySession` # @return [Google::Apis::FitnessV1::BucketBySession] attr_accessor :bucket_by_session # Specifies that data be aggregated by a single time interval. Mutually # exclusive of other bucketing specifications. # Corresponds to the JSON property `bucketByTime` # @return [Google::Apis::FitnessV1::BucketByTime] attr_accessor :bucket_by_time # The end of a window of time. Data that intersects with this time window will # be aggregated. The time is in milliseconds since epoch, inclusive. # Corresponds to the JSON property `endTimeMillis` # @return [Fixnum] attr_accessor :end_time_millis # A list of acceptable data quality standards. Only data points which conform to # at least one of the specified data quality standards will be returned. If the # list is empty, all data points are returned. # Corresponds to the JSON property `filteredDataQualityStandard` # @return [Array] attr_accessor :filtered_data_quality_standard # The start of a window of time. Data that intersects with this time window will # be aggregated. The time is in milliseconds since epoch, inclusive. # Corresponds to the JSON property `startTimeMillis` # @return [Fixnum] attr_accessor :start_time_millis def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @aggregate_by = args[:aggregate_by] if args.key?(:aggregate_by) @bucket_by_activity_segment = args[:bucket_by_activity_segment] if args.key?(:bucket_by_activity_segment) @bucket_by_activity_type = args[:bucket_by_activity_type] if args.key?(:bucket_by_activity_type) @bucket_by_session = args[:bucket_by_session] if args.key?(:bucket_by_session) @bucket_by_time = args[:bucket_by_time] if args.key?(:bucket_by_time) @end_time_millis = args[:end_time_millis] if args.key?(:end_time_millis) @filtered_data_quality_standard = args[:filtered_data_quality_standard] if args.key?(:filtered_data_quality_standard) @start_time_millis = args[:start_time_millis] if args.key?(:start_time_millis) end end # class AggregateResponse include Google::Apis::Core::Hashable # A list of buckets containing the aggregated data. # Corresponds to the JSON property `bucket` # @return [Array] attr_accessor :bucket def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @bucket = args[:bucket] if args.key?(:bucket) end end # class Application include Google::Apis::Core::Hashable # An optional URI that can be used to link back to the application. # Corresponds to the JSON property `detailsUrl` # @return [String] attr_accessor :details_url # The name of this application. This is required for REST clients, but we do not # enforce uniqueness of this name. It is provided as a matter of convenience for # other developers who would like to identify which REST created an Application # or Data Source. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # Package name for this application. This is used as a unique identifier when # created by Android applications, but cannot be specified by REST clients. REST # clients will have their developer project number reflected into the Data # Source data stream IDs, instead of the packageName. # Corresponds to the JSON property `packageName` # @return [String] attr_accessor :package_name # Version of the application. You should update this field whenever the # application changes in a way that affects the computation of the data. # Corresponds to the JSON property `version` # @return [String] attr_accessor :version def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @details_url = args[:details_url] if args.key?(:details_url) @name = args[:name] if args.key?(:name) @package_name = args[:package_name] if args.key?(:package_name) @version = args[:version] if args.key?(:version) end end # class BucketByActivity include Google::Apis::Core::Hashable # The default activity stream will be used if a specific activityDataSourceId is # not specified. # Corresponds to the JSON property `activityDataSourceId` # @return [String] attr_accessor :activity_data_source_id # Specifies that only activity segments of duration longer than # minDurationMillis are considered and used as a container for aggregated data. # Corresponds to the JSON property `minDurationMillis` # @return [Fixnum] attr_accessor :min_duration_millis def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @activity_data_source_id = args[:activity_data_source_id] if args.key?(:activity_data_source_id) @min_duration_millis = args[:min_duration_millis] if args.key?(:min_duration_millis) end end # class BucketBySession include Google::Apis::Core::Hashable # Specifies that only sessions of duration longer than minDurationMillis are # considered and used as a container for aggregated data. # Corresponds to the JSON property `minDurationMillis` # @return [Fixnum] attr_accessor :min_duration_millis def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @min_duration_millis = args[:min_duration_millis] if args.key?(:min_duration_millis) end end # class BucketByTime include Google::Apis::Core::Hashable # Specifies that result buckets aggregate data by exactly durationMillis time # frames. Time frames that contain no data will be included in the response with # an empty dataset. # Corresponds to the JSON property `durationMillis` # @return [Fixnum] attr_accessor :duration_millis # # Corresponds to the JSON property `period` # @return [Google::Apis::FitnessV1::BucketByTimePeriod] attr_accessor :period def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @duration_millis = args[:duration_millis] if args.key?(:duration_millis) @period = args[:period] if args.key?(:period) end end # class BucketByTimePeriod include Google::Apis::Core::Hashable # org.joda.timezone.DateTimeZone # Corresponds to the JSON property `timeZoneId` # @return [String] attr_accessor :time_zone_id # # Corresponds to the JSON property `type` # @return [String] attr_accessor :type # # Corresponds to the JSON property `value` # @return [Fixnum] attr_accessor :value def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @time_zone_id = args[:time_zone_id] if args.key?(:time_zone_id) @type = args[:type] if args.key?(:type) @value = args[:value] if args.key?(:value) end end # Represents a single data point, generated by a particular data source. A data # point holds a value for each field, an end timestamp and an optional start # time. The exact semantics of each of these attributes are specified in the # documentation for the particular data type. # A data point can represent an instantaneous measurement, reading or input # observation, as well as averages or aggregates over a time interval. Check the # data type documentation to determine which is the case for a particular data # type. # Data points always contain one value for each field of the data type. class DataPoint include Google::Apis::Core::Hashable # DO NOT USE THIS FIELD. It is ignored, and not stored. # Corresponds to the JSON property `computationTimeMillis` # @return [Fixnum] attr_accessor :computation_time_millis # The data type defining the format of the values in this data point. # Corresponds to the JSON property `dataTypeName` # @return [String] attr_accessor :data_type_name # The end time of the interval represented by this data point, in nanoseconds # since epoch. # Corresponds to the JSON property `endTimeNanos` # @return [Fixnum] attr_accessor :end_time_nanos # Indicates the last time this data point was modified. Useful only in contexts # where we are listing the data changes, rather than representing the current # state of the data. # Corresponds to the JSON property `modifiedTimeMillis` # @return [Fixnum] attr_accessor :modified_time_millis # If the data point is contained in a dataset for a derived data source, this # field will be populated with the data source stream ID that created the data # point originally. # Corresponds to the JSON property `originDataSourceId` # @return [String] attr_accessor :origin_data_source_id # The raw timestamp from the original SensorEvent. # Corresponds to the JSON property `rawTimestampNanos` # @return [Fixnum] attr_accessor :raw_timestamp_nanos # The start time of the interval represented by this data point, in nanoseconds # since epoch. # Corresponds to the JSON property `startTimeNanos` # @return [Fixnum] attr_accessor :start_time_nanos # Values of each data type field for the data point. It is expected that each # value corresponding to a data type field will occur in the same order that the # field is listed with in the data type specified in a data source. # Only one of integer and floating point fields will be populated, depending on # the format enum value within data source's type field. # Corresponds to the JSON property `value` # @return [Array] attr_accessor :value def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @computation_time_millis = args[:computation_time_millis] if args.key?(:computation_time_millis) @data_type_name = args[:data_type_name] if args.key?(:data_type_name) @end_time_nanos = args[:end_time_nanos] if args.key?(:end_time_nanos) @modified_time_millis = args[:modified_time_millis] if args.key?(:modified_time_millis) @origin_data_source_id = args[:origin_data_source_id] if args.key?(:origin_data_source_id) @raw_timestamp_nanos = args[:raw_timestamp_nanos] if args.key?(:raw_timestamp_nanos) @start_time_nanos = args[:start_time_nanos] if args.key?(:start_time_nanos) @value = args[:value] if args.key?(:value) end end # Definition of a unique source of sensor data. Data sources can expose raw data # coming from hardware sensors on local or companion devices. They can also # expose derived data, created by transforming or merging other data sources. # Multiple data sources can exist for the same data type. Every data point # inserted into or read from this service has an associated data source. # The data source contains enough information to uniquely identify its data, # including the hardware device and the application that collected and/or # transformed the data. It also holds useful metadata, such as the hardware and # application versions, and the device type. # Each data source produces a unique stream of data, with a unique identifier. # Not all changes to data source affect the stream identifier, so that data # collected by updated versions of the same application/device can still be # considered to belong to the same data stream. class DataSource include Google::Apis::Core::Hashable # # Corresponds to the JSON property `application` # @return [Google::Apis::FitnessV1::Application] attr_accessor :application # DO NOT USE THIS FIELD. It is never populated in responses from the platform, # and is ignored in queries. # Corresponds to the JSON property `dataQualityStandard` # @return [Array] attr_accessor :data_quality_standard # A unique identifier for the data stream produced by this data source. The # identifier includes: # # - The physical device's manufacturer, model, and serial number (UID). # - The application's package name or name. Package name is used when the data # source was created by an Android application. The developer project number is # used when the data source was created by a REST client. # - The data source's type. # - The data source's stream name. Note that not all attributes of the data # source are used as part of the stream identifier. In particular, the version # of the hardware/the application isn't used. This allows us to preserve the # same stream through version updates. This also means that two DataSource # objects may represent the same data stream even if they're not equal. # The exact format of the data stream ID created by an Android application is: # type:dataType.name:application.packageName:device.manufacturer:device.model: # device.uid:dataStreamName # The exact format of the data stream ID created by a REST client is: type: # dataType.name:developer project number:device.manufacturer:device.model:device. # uid:dataStreamName # When any of the optional fields that comprise of the data stream ID are blank, # they will be omitted from the data stream ID. The minimum viable data stream # ID would be: type:dataType.name:developer project number # Finally, the developer project number is obfuscated when read by any REST or # Android client that did not create the data source. Only the data source # creator will see the developer project number in clear and normal form. # Corresponds to the JSON property `dataStreamId` # @return [String] attr_accessor :data_stream_id # The stream name uniquely identifies this particular data source among other # data sources of the same type from the same underlying producer. Setting the # stream name is optional, but should be done whenever an application exposes # two streams for the same data type, or when a device has two equivalent # sensors. # Corresponds to the JSON property `dataStreamName` # @return [String] attr_accessor :data_stream_name # # Corresponds to the JSON property `dataType` # @return [Google::Apis::FitnessV1::DataType] attr_accessor :data_type # Representation of an integrated device (such as a phone or a wearable) that # can hold sensors. Each sensor is exposed as a data source. # The main purpose of the device information contained in this class is to # identify the hardware of a particular data source. This can be useful in # different ways, including: # - Distinguishing two similar sensors on different devices (the step counter on # two nexus 5 phones, for instance) # - Display the source of data to the user (by using the device make / model) # - Treat data differently depending on sensor type (accelerometers on a watch # may give different patterns than those on a phone) # - Build different analysis models for each device/version. # Corresponds to the JSON property `device` # @return [Google::Apis::FitnessV1::Device] attr_accessor :device # An end-user visible name for this data source. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # A constant describing the type of this data source. Indicates whether this # data source produces raw or derived data. # Corresponds to the JSON property `type` # @return [String] attr_accessor :type def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @application = args[:application] if args.key?(:application) @data_quality_standard = args[:data_quality_standard] if args.key?(:data_quality_standard) @data_stream_id = args[:data_stream_id] if args.key?(:data_stream_id) @data_stream_name = args[:data_stream_name] if args.key?(:data_stream_name) @data_type = args[:data_type] if args.key?(:data_type) @device = args[:device] if args.key?(:device) @name = args[:name] if args.key?(:name) @type = args[:type] if args.key?(:type) end end # class DataType include Google::Apis::Core::Hashable # A field represents one dimension of a data type. # Corresponds to the JSON property `field` # @return [Array] attr_accessor :field # Each data type has a unique, namespaced, name. All data types in the com. # google namespace are shared as part of the platform. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @field = args[:field] if args.key?(:field) @name = args[:name] if args.key?(:name) end end # In case of multi-dimensional data (such as an accelerometer with x, y, and z # axes) each field represents one dimension. Each data type field has a unique # name which identifies it. The field also defines the format of the data (int, # float, etc.). # This message is only instantiated in code and not used for wire comms or # stored in any way. class DataTypeField include Google::Apis::Core::Hashable # The different supported formats for each field in a data type. # Corresponds to the JSON property `format` # @return [String] attr_accessor :format # Defines the name and format of data. Unlike data type names, field names are # not namespaced, and only need to be unique within the data type. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # # Corresponds to the JSON property `optional` # @return [Boolean] attr_accessor :optional alias_method :optional?, :optional def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @format = args[:format] if args.key?(:format) @name = args[:name] if args.key?(:name) @optional = args[:optional] if args.key?(:optional) end end # A dataset represents a projection container for data points. They do not carry # any info of their own. Datasets represent a set of data points from a # particular data source. A data point can be found in more than one dataset. class Dataset include Google::Apis::Core::Hashable # The data stream ID of the data source that created the points in this dataset. # Corresponds to the JSON property `dataSourceId` # @return [String] attr_accessor :data_source_id # The largest end time of all data points in this possibly partial # representation of the dataset. Time is in nanoseconds from epoch. This should # also match the first part of the dataset identifier. # Corresponds to the JSON property `maxEndTimeNs` # @return [Fixnum] attr_accessor :max_end_time_ns # The smallest start time of all data points in this possibly partial # representation of the dataset. Time is in nanoseconds from epoch. This should # also match the first part of the dataset identifier. # Corresponds to the JSON property `minStartTimeNs` # @return [Fixnum] attr_accessor :min_start_time_ns # This token will be set when a dataset is received in response to a GET request # and the dataset is too large to be included in a single response. Provide this # value in a subsequent GET request to return the next page of data points # within this dataset. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # A partial list of data points contained in the dataset, ordered by largest # endTimeNanos first. This list is considered complete when retrieving a small # dataset and partial when patching a dataset or retrieving a dataset that is # too large to include in a single response. # Corresponds to the JSON property `point` # @return [Array] attr_accessor :point def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @data_source_id = args[:data_source_id] if args.key?(:data_source_id) @max_end_time_ns = args[:max_end_time_ns] if args.key?(:max_end_time_ns) @min_start_time_ns = args[:min_start_time_ns] if args.key?(:min_start_time_ns) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @point = args[:point] if args.key?(:point) end end # Representation of an integrated device (such as a phone or a wearable) that # can hold sensors. Each sensor is exposed as a data source. # The main purpose of the device information contained in this class is to # identify the hardware of a particular data source. This can be useful in # different ways, including: # - Distinguishing two similar sensors on different devices (the step counter on # two nexus 5 phones, for instance) # - Display the source of data to the user (by using the device make / model) # - Treat data differently depending on sensor type (accelerometers on a watch # may give different patterns than those on a phone) # - Build different analysis models for each device/version. class Device include Google::Apis::Core::Hashable # Manufacturer of the product/hardware. # Corresponds to the JSON property `manufacturer` # @return [String] attr_accessor :manufacturer # End-user visible model name for the device. # Corresponds to the JSON property `model` # @return [String] attr_accessor :model # A constant representing the type of the device. # Corresponds to the JSON property `type` # @return [String] attr_accessor :type # The serial number or other unique ID for the hardware. This field is # obfuscated when read by any REST or Android client that did not create the # data source. Only the data source creator will see the uid field in clear and # normal form. # Corresponds to the JSON property `uid` # @return [String] attr_accessor :uid # Version string for the device hardware/software. # Corresponds to the JSON property `version` # @return [String] attr_accessor :version def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @manufacturer = args[:manufacturer] if args.key?(:manufacturer) @model = args[:model] if args.key?(:model) @type = args[:type] if args.key?(:type) @uid = args[:uid] if args.key?(:uid) @version = args[:version] if args.key?(:version) end end # class ListDataPointChangesResponse include Google::Apis::Core::Hashable # The data stream ID of the data source with data point changes. # Corresponds to the JSON property `dataSourceId` # @return [String] attr_accessor :data_source_id # Deleted data points for the user. Note, for modifications this should be # parsed before handling insertions. # Corresponds to the JSON property `deletedDataPoint` # @return [Array] attr_accessor :deleted_data_point # Inserted data points for the user. # Corresponds to the JSON property `insertedDataPoint` # @return [Array] attr_accessor :inserted_data_point # The continuation token, which is used to page through large result sets. # Provide this value in a subsequent request to return the next page of results. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @data_source_id = args[:data_source_id] if args.key?(:data_source_id) @deleted_data_point = args[:deleted_data_point] if args.key?(:deleted_data_point) @inserted_data_point = args[:inserted_data_point] if args.key?(:inserted_data_point) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) end end # class ListDataSourcesResponse include Google::Apis::Core::Hashable # A previously created data source. # Corresponds to the JSON property `dataSource` # @return [Array] attr_accessor :data_source def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @data_source = args[:data_source] if args.key?(:data_source) end end # class ListSessionsResponse include Google::Apis::Core::Hashable # If includeDeleted is set to true in the request, this list will contain # sessions deleted with original end times that are within the startTime and # endTime frame. # Corresponds to the JSON property `deletedSession` # @return [Array] attr_accessor :deleted_session # Flag to indicate server has more data to transfer # Corresponds to the JSON property `hasMoreData` # @return [Boolean] attr_accessor :has_more_data alias_method :has_more_data?, :has_more_data # The continuation token, which is used to page through large result sets. # Provide this value in a subsequent request to return the next page of results. # Corresponds to the JSON property `nextPageToken` # @return [String] attr_accessor :next_page_token # Sessions with an end time that is between startTime and endTime of the request. # Corresponds to the JSON property `session` # @return [Array] attr_accessor :session def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @deleted_session = args[:deleted_session] if args.key?(:deleted_session) @has_more_data = args[:has_more_data] if args.key?(:has_more_data) @next_page_token = args[:next_page_token] if args.key?(:next_page_token) @session = args[:session] if args.key?(:session) end end # Holder object for the value of an entry in a map field of a data point. # A map value supports a subset of the formats that the regular Value supports. class MapValue include Google::Apis::Core::Hashable # Floating point value. # Corresponds to the JSON property `fpVal` # @return [Float] attr_accessor :fp_val def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @fp_val = args[:fp_val] if args.key?(:fp_val) end end # Sessions contain metadata, such as a user-friendly name and time interval # information. class Session include Google::Apis::Core::Hashable # Session active time. While start_time_millis and end_time_millis define the # full session time, the active time can be shorter and specified by # active_time_millis. If the inactive time during the session is known, it # should also be inserted via a com.google.activity.segment data point with a # STILL activity value # Corresponds to the JSON property `activeTimeMillis` # @return [Fixnum] attr_accessor :active_time_millis # The type of activity this session represents. # Corresponds to the JSON property `activityType` # @return [Fixnum] attr_accessor :activity_type # # Corresponds to the JSON property `application` # @return [Google::Apis::FitnessV1::Application] attr_accessor :application # A description for this session. # Corresponds to the JSON property `description` # @return [String] attr_accessor :description # An end time, in milliseconds since epoch, inclusive. # Corresponds to the JSON property `endTimeMillis` # @return [Fixnum] attr_accessor :end_time_millis # A client-generated identifier that is unique across all sessions owned by this # particular user. # Corresponds to the JSON property `id` # @return [String] attr_accessor :id # A timestamp that indicates when the session was last modified. # Corresponds to the JSON property `modifiedTimeMillis` # @return [Fixnum] attr_accessor :modified_time_millis # A human readable name of the session. # Corresponds to the JSON property `name` # @return [String] attr_accessor :name # A start time, in milliseconds since epoch, inclusive. # Corresponds to the JSON property `startTimeMillis` # @return [Fixnum] attr_accessor :start_time_millis def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @active_time_millis = args[:active_time_millis] if args.key?(:active_time_millis) @activity_type = args[:activity_type] if args.key?(:activity_type) @application = args[:application] if args.key?(:application) @description = args[:description] if args.key?(:description) @end_time_millis = args[:end_time_millis] if args.key?(:end_time_millis) @id = args[:id] if args.key?(:id) @modified_time_millis = args[:modified_time_millis] if args.key?(:modified_time_millis) @name = args[:name] if args.key?(:name) @start_time_millis = args[:start_time_millis] if args.key?(:start_time_millis) end end # Holder object for the value of a single field in a data point. # A field value has a particular format and is only ever set to one of an # integer or a floating point value. LINT.IfChange class Value include Google::Apis::Core::Hashable # Floating point value. When this is set, other values must not be set. # Corresponds to the JSON property `fpVal` # @return [Float] attr_accessor :fp_val # Integer value. When this is set, other values must not be set. # Corresponds to the JSON property `intVal` # @return [Fixnum] attr_accessor :int_val # Map value. The valid key space and units for the corresponding value of each # entry should be documented as part of the data type definition. Keys should be # kept small whenever possible. Data streams with large keys and high data # frequency may be down sampled. # Corresponds to the JSON property `mapVal` # @return [Array] attr_accessor :map_val # String value. When this is set, other values must not be set. Strings should # be kept small whenever possible. Data streams with large string values and # high data frequency may be down sampled. # Corresponds to the JSON property `stringVal` # @return [String] attr_accessor :string_val def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @fp_val = args[:fp_val] if args.key?(:fp_val) @int_val = args[:int_val] if args.key?(:int_val) @map_val = args[:map_val] if args.key?(:map_val) @string_val = args[:string_val] if args.key?(:string_val) end end # class ValueMapValEntry include Google::Apis::Core::Hashable # # Corresponds to the JSON property `key` # @return [String] attr_accessor :key # Holder object for the value of an entry in a map field of a data point. # A map value supports a subset of the formats that the regular Value supports. # Corresponds to the JSON property `value` # @return [Google::Apis::FitnessV1::MapValue] attr_accessor :value def initialize(**args) update!(**args) end # Update properties of this object def update!(**args) @key = args[:key] if args.key?(:key) @value = args[:value] if args.key?(:value) end end end end end