# 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. Only data from the specified data source ID # will be included in the aggregation. If specified, this data source must # exist; the OAuth scopes in the supplied credentials must grant read access # to this data type. The dataset in the response will have the same data # source ID. Note: Data can be aggregated by either the dataTypeName or the # dataSourceId, not both. # 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.android.gms:aggregated. # If the user has no data for this data type, an empty data set will be # returned. Note: Data can be aggregated by either the dataTypeName or the # dataSourceId, not both. # 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 # DO NOT POPULATE THIS FIELD. It is ignored. # 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. # WARNING: do not rely on this field for anything other than debugging. The # value of this field, if it is set at all, is an implementation detail and # is not guaranteed to remain consistent. # 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 # Information about an application which feeds sensor data into the platform. # Corresponds to the JSON property `application` # @return [Google::Apis::FitnessV1::Application] attr_accessor :application # DO NOT POPULATE THIS FIELD. It is never populated in responses from the # platform, and is ignored in queries. It will be removed in a future version # entirely. # 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 make up the data stream ID are absent, # 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 and device UID are 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. This means a client will see a different set of # data_stream_ids than another client with different credentials. # 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 # The data type defines the schema for a stream of data being collected by, # inserted into, or queried from the Fitness API. # 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 second 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. # The obfuscation preserves equality; that is, given two IDs, if id1 == id2, # obfuscated(id1) == obfuscated(id2). # 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, and # startTime and endTime are omitted, this will include # sessions which were deleted since the last sync. # Corresponds to the JSON property `deletedSession` # @return [Array] attr_accessor :deleted_session # Flag to indicate server has more data to transfer. # DO NOT USE THIS FIELD. It is never populated in responses from the server. # Corresponds to the JSON property `hasMoreData` # @return [Boolean] attr_accessor :has_more_data alias_method :has_more_data?, :has_more_data # The sync token which is used to sync further changes. This will only be # provided if both startTime and endTime are omitted # from the request. # 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 # The application that created the session. # 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. 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