-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Google Fitness SDK.
--   
--   Stores and accesses user data in the fitness store from apps on any
--   platform.
--   
--   <i>Warning:</i> This is an experimental prototype/preview release
--   which is still under exploratory development and not intended for
--   public use, caveat emptor!
--   
--   This library is compatible with version <tt>v1</tt> of the API.
@package gogol-fitness
@version 0.3.0


module Network.Google.Fitness.Types

-- | Default request referring to version <tt>v1</tt> of the Fitness. This
--   contains the host and root path used as a starting point for
--   constructing service requests.
fitnessService :: ServiceConfig

-- | View body temperature data in Google Fit
fitnessBodyTemperatureReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.body_temperature.read"]

-- | View body sensor information in Google Fit
fitnessBodyReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.body.read"]

-- | View nutrition information in Google Fit
fitnessNutritionReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.nutrition.read"]

-- | View reproductive health data in Google Fit
fitnessReProductiveHealthReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.reproductive_health.read"]

-- | View your activity information in Google Fit
fitnessActivityReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.activity.read"]

-- | View and store reproductive health data in Google Fit
fitnessReProductiveHealthWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.reproductive_health.write"]

-- | View and store your activity information in Google Fit
fitnessActivityWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.activity.write"]

-- | View and store blood pressure data in Google Fit
fitnessBloodPressureWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.blood_pressure.write"]

-- | View and store body temperature data in Google Fit
fitnessBodyTemperatureWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.body_temperature.write"]

-- | View oxygen saturation data in Google Fit
fitnessOxygenSaturationReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.oxygen_saturation.read"]

-- | View and store blood glucose data in Google Fit
fitnessBloodGlucoseWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.blood_glucose.write"]

-- | View blood pressure data in Google Fit
fitnessBloodPressureReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.blood_pressure.read"]

-- | View your stored location data in Google Fit
fitnessLocationReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.location.read"]

-- | View and store your location data in Google Fit
fitnessLocationWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.location.write"]

-- | View and store nutrition information in Google Fit
fitnessNutritionWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.nutrition.write"]

-- | View and store body sensor data in Google Fit
fitnessBodyWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.body.write"]

-- | View blood glucose data in Google Fit
fitnessBloodGlucoseReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.blood_glucose.read"]

-- | View and store oxygen saturation data in Google Fit
fitnessOxygenSaturationWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.oxygen_saturation.write"]

-- | The type of a bucket signifies how the data aggregation is performed
--   in the bucket.
data AggregateBucketType

-- | <pre>
--   activitySegment
--   </pre>
ABTActivitySegment :: AggregateBucketType

-- | <pre>
--   activityType
--   </pre>
ABTActivityType :: AggregateBucketType

-- | <pre>
--   session
--   </pre>
ABTSession :: AggregateBucketType

-- | <pre>
--   time
--   </pre>
ABTTime :: AggregateBucketType

-- | <pre>
--   unknown
--   </pre>
ABTUnknown :: AggregateBucketType

-- | 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.
--   
--   <i>See:</i> <a>dataSet</a> smart constructor.
data DataSet

-- | Creates a value of <a>DataSet</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsNextPageToken</a></li>
--   <li><a>dsDataSourceId</a></li>
--   <li><a>dsPoint</a></li>
--   <li><a>dsMinStartTimeNs</a></li>
--   <li><a>dsMaxEndTimeNs</a></li>
--   </ul>
dataSet :: DataSet

-- | 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.
dsNextPageToken :: Lens' DataSet (Maybe Text)

-- | The data stream ID of the data source that created the points in this
--   dataset.
dsDataSourceId :: Lens' DataSet (Maybe Text)

-- | 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.
dsPoint :: Lens' DataSet [DataPoint]

-- | 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.
dsMinStartTimeNs :: Lens' DataSet (Maybe Int64)

-- | 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.
dsMaxEndTimeNs :: Lens' DataSet (Maybe Int64)

-- | <i>See:</i> <a>application</a> smart constructor.
data Application

-- | Creates a value of <a>Application</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aPackageName</a></li>
--   <li><a>aName</a></li>
--   <li><a>aVersion</a></li>
--   <li><a>aDetailsURL</a></li>
--   </ul>
application :: Application

-- | 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.
aPackageName :: Lens' Application (Maybe Text)

-- | 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.
aName :: Lens' Application (Maybe Text)

-- | Version of the application. You should update this field whenever the
--   application changes in a way that affects the computation of the data.
aVersion :: Lens' Application (Maybe Text)

-- | An optional URI that can be used to link back to the application.
aDetailsURL :: Lens' Application (Maybe Text)
data AggregateResponse

-- | Creates a value of <a>AggregateResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>arBucket</a></li>
--   </ul>
aggregateResponse :: AggregateResponse

-- | A list of buckets containing the aggregated data.
arBucket :: Lens' AggregateResponse [AggregateBucket]

-- | The specification of which data to aggregate.
--   
--   <i>See:</i> <a>aggregateBy</a> smart constructor.
data AggregateBy

-- | Creates a value of <a>AggregateBy</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>abDataTypeName</a></li>
--   <li><a>abDataSourceId</a></li>
--   </ul>
aggregateBy :: AggregateBy

-- | 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
abDataTypeName :: Lens' AggregateBy (Maybe Text)

-- | 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.
abDataSourceId :: Lens' AggregateBy (Maybe Text)

-- | A constant describing the type of this data source. Indicates whether
--   this data source produces raw or derived data.
data DataSourceType

-- | <pre>
--   derived
--   </pre>
Derived :: DataSourceType

-- | <pre>
--   raw
--   </pre>
Raw :: DataSourceType
data BucketByTimePeriodType

-- | <pre>
--   day
--   </pre>
Day :: BucketByTimePeriodType

-- | <pre>
--   month
--   </pre>
Month :: BucketByTimePeriodType

-- | <pre>
--   week
--   </pre>
Week :: BucketByTimePeriodType
data BucketByActivity

-- | Creates a value of <a>BucketByActivity</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bbaMinDurationMillis</a></li>
--   <li><a>bbaActivityDataSourceId</a></li>
--   </ul>
bucketByActivity :: BucketByActivity

-- | Specifies that only activity segments of duration longer than
--   minDurationMillis are considered and used as a container for
--   aggregated data.
bbaMinDurationMillis :: Lens' BucketByActivity (Maybe Int64)

-- | The default activity stream will be used if a specific
--   activityDataSourceId is not specified.
bbaActivityDataSourceId :: Lens' BucketByActivity (Maybe Text)

-- | Next id: 10
--   
--   <i>See:</i> <a>aggregateRequest</a> smart constructor.
data AggregateRequest

-- | Creates a value of <a>AggregateRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>arEndTimeMillis</a></li>
--   <li><a>arFilteredDataQualityStandard</a></li>
--   <li><a>arAggregateBy</a></li>
--   <li><a>arBucketBySession</a></li>
--   <li><a>arBucketByActivityType</a></li>
--   <li><a>arBucketByTime</a></li>
--   <li><a>arStartTimeMillis</a></li>
--   <li><a>arBucketByActivitySegment</a></li>
--   </ul>
aggregateRequest :: AggregateRequest

-- | 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.
arEndTimeMillis :: Lens' AggregateRequest (Maybe Int64)

-- | 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.
arFilteredDataQualityStandard :: Lens' AggregateRequest [AggregateRequestFilteredDataQualityStandardItem]

-- | 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.
arAggregateBy :: Lens' AggregateRequest [AggregateBy]

-- | 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.
arBucketBySession :: Lens' AggregateRequest (Maybe BucketBySession)

-- | 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.
arBucketByActivityType :: Lens' AggregateRequest (Maybe BucketByActivity)

-- | Specifies that data be aggregated by a single time interval. Mutually
--   exclusive of other bucketing specifications.
arBucketByTime :: Lens' AggregateRequest (Maybe BucketByTime)

-- | 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.
arStartTimeMillis :: Lens' AggregateRequest (Maybe Int64)

-- | 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.
arBucketByActivitySegment :: Lens' AggregateRequest (Maybe BucketByActivity)

-- | 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.
--   
--   <i>See:</i> <a>device</a> smart constructor.
data Device

-- | Creates a value of <a>Device</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dManufacturer</a></li>
--   <li><a>dUid</a></li>
--   <li><a>dModel</a></li>
--   <li><a>dVersion</a></li>
--   <li><a>dType</a></li>
--   </ul>
device :: Device

-- | Manufacturer of the product/hardware.
dManufacturer :: Lens' Device (Maybe Text)

-- | 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.
dUid :: Lens' Device (Maybe Text)

-- | End-user visible model name for the device.
dModel :: Lens' Device (Maybe Text)

-- | Version string for the device hardware/software.
dVersion :: Lens' Device (Maybe Text)

-- | A constant representing the type of the device.
dType :: Lens' Device (Maybe DeviceType)

-- | 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
--   
--   <i>See:</i> <a>value</a> smart constructor.
data Value

-- | Creates a value of <a>Value</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vMapVal</a></li>
--   <li><a>vFpVal</a></li>
--   <li><a>vIntVal</a></li>
--   <li><a>vStringVal</a></li>
--   </ul>
value :: Value

-- | 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.
vMapVal :: Lens' Value [ValueMapValEntry]

-- | Floating point value. When this is set, other values must not be set.
vFpVal :: Lens' Value (Maybe Double)

-- | Integer value. When this is set, other values must not be set.
vIntVal :: Lens' Value (Maybe Int32)

-- | 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.
vStringVal :: Lens' Value (Maybe Text)
data BucketBySession

-- | Creates a value of <a>BucketBySession</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bbsMinDurationMillis</a></li>
--   </ul>
bucketBySession :: BucketBySession

-- | Specifies that only sessions of duration longer than minDurationMillis
--   are considered and used as a container for aggregated data.
bbsMinDurationMillis :: Lens' BucketBySession (Maybe Int64)

-- | 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.
--   
--   <i>See:</i> <a>dataPoint</a> smart constructor.
data DataPoint

-- | Creates a value of <a>DataPoint</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dpOriginDataSourceId</a></li>
--   <li><a>dpRawTimestampNanos</a></li>
--   <li><a>dpDataTypeName</a></li>
--   <li><a>dpValue</a></li>
--   <li><a>dpComputationTimeMillis</a></li>
--   <li><a>dpEndTimeNanos</a></li>
--   <li><a>dpModifiedTimeMillis</a></li>
--   <li><a>dpStartTimeNanos</a></li>
--   </ul>
dataPoint :: DataPoint

-- | 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.
dpOriginDataSourceId :: Lens' DataPoint (Maybe Text)

-- | The raw timestamp from the original SensorEvent.
dpRawTimestampNanos :: Lens' DataPoint (Maybe Int64)

-- | The data type defining the format of the values in this data point.
dpDataTypeName :: Lens' DataPoint (Maybe Text)

-- | 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.
dpValue :: Lens' DataPoint [Value]

-- | Used for version checking during transformation; that is, a datapoint
--   can only replace another datapoint that has an older computation time
--   stamp.
dpComputationTimeMillis :: Lens' DataPoint (Maybe Int64)

-- | The end time of the interval represented by this data point, in
--   nanoseconds since epoch.
dpEndTimeNanos :: Lens' DataPoint (Maybe Int64)

-- | 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.
dpModifiedTimeMillis :: Lens' DataPoint (Maybe Int64)

-- | The start time of the interval represented by this data point, in
--   nanoseconds since epoch.
dpStartTimeNanos :: Lens' DataPoint (Maybe Int64)
data ListSessionsResponse

-- | Creates a value of <a>ListSessionsResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsrNextPageToken</a></li>
--   <li><a>lsrDeletedSession</a></li>
--   <li><a>lsrHasMoreData</a></li>
--   <li><a>lsrSession</a></li>
--   </ul>
listSessionsResponse :: ListSessionsResponse

-- | 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.
lsrNextPageToken :: Lens' ListSessionsResponse (Maybe Text)

-- | 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.
lsrDeletedSession :: Lens' ListSessionsResponse [Session]

-- | Flag to indicate server has more data to transfer
lsrHasMoreData :: Lens' ListSessionsResponse (Maybe Bool)

-- | Sessions with an end time that is between startTime and endTime of the
--   request.
lsrSession :: Lens' ListSessionsResponse [Session]
data AggregateBucket

-- | Creates a value of <a>AggregateBucket</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>abEndTimeMillis</a></li>
--   <li><a>abDataSet</a></li>
--   <li><a>abActivity</a></li>
--   <li><a>abType</a></li>
--   <li><a>abStartTimeMillis</a></li>
--   <li><a>abSession</a></li>
--   </ul>
aggregateBucket :: AggregateBucket

-- | The end time for the aggregated data, in milliseconds since epoch,
--   inclusive.
abEndTimeMillis :: Lens' AggregateBucket (Maybe Int64)

-- | There will be one dataset per AggregateBy in the request.
abDataSet :: Lens' AggregateBucket [DataSet]

-- | Available for Bucket.Type.ACTIVITY_TYPE, Bucket.Type.ACTIVITY_SEGMENT
abActivity :: Lens' AggregateBucket (Maybe Int32)

-- | The type of a bucket signifies how the data aggregation is performed
--   in the bucket.
abType :: Lens' AggregateBucket (Maybe AggregateBucketType)

-- | The start time for the aggregated data, in milliseconds since epoch,
--   inclusive.
abStartTimeMillis :: Lens' AggregateBucket (Maybe Int64)

-- | Available for Bucket.Type.SESSION
abSession :: Lens' AggregateBucket (Maybe Session)

-- | 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.
--   
--   <i>See:</i> <a>mapValue</a> smart constructor.
data MapValue

-- | Creates a value of <a>MapValue</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mvFpVal</a></li>
--   </ul>
mapValue :: MapValue

-- | Floating point value.
mvFpVal :: Lens' MapValue (Maybe Double)
data ListDataSourcesResponse

-- | Creates a value of <a>ListDataSourcesResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ldsrDataSource</a></li>
--   </ul>
listDataSourcesResponse :: ListDataSourcesResponse

-- | A previously created data source.
ldsrDataSource :: Lens' ListDataSourcesResponse [DataSource]

-- | 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.
--   
--   <i>See:</i> <a>dataTypeField</a> smart constructor.
data DataTypeField

-- | Creates a value of <a>DataTypeField</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtfFormat</a></li>
--   <li><a>dtfName</a></li>
--   <li><a>dtfOptional</a></li>
--   </ul>
dataTypeField :: DataTypeField

-- | The different supported formats for each field in a data type.
dtfFormat :: Lens' DataTypeField (Maybe DataTypeFieldFormat)

-- | 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.
dtfName :: Lens' DataTypeField (Maybe Text)
dtfOptional :: Lens' DataTypeField (Maybe Bool)
data AggregateRequestFilteredDataQualityStandardItem

-- | <pre>
--   dataQualityBloodGlucoseIso151972003
--   </pre>
DATAQUALITYBLOODGLUCOSEISO151972003 :: AggregateRequestFilteredDataQualityStandardItem

-- | <pre>
--   dataQualityBloodGlucoseIso151972013
--   </pre>
DATAQUALITYBLOODGLUCOSEISO151972013 :: AggregateRequestFilteredDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureAami
--   </pre>
DataQualityBloodPressureAami :: AggregateRequestFilteredDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureBhsAA
--   </pre>
DataQualityBloodPressureBhsAA :: AggregateRequestFilteredDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureBhsAB
--   </pre>
DataQualityBloodPressureBhsAB :: AggregateRequestFilteredDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureBhsBA
--   </pre>
DataQualityBloodPressureBhsBA :: AggregateRequestFilteredDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureBhsBB
--   </pre>
DataQualityBloodPressureBhsBB :: AggregateRequestFilteredDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureEsh2002
--   </pre>
DATAQUALITYBLOODPRESSUREESH2002 :: AggregateRequestFilteredDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureEsh2010
--   </pre>
DATAQUALITYBLOODPRESSUREESH2010 :: AggregateRequestFilteredDataQualityStandardItem

-- | <pre>
--   dataQualityUnknown
--   </pre>
DataQualityUnknown :: AggregateRequestFilteredDataQualityStandardItem

-- | 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.
--   
--   <i>See:</i> <a>dataSource</a> smart constructor.
data DataSource

-- | Creates a value of <a>DataSource</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsApplication</a></li>
--   <li><a>dsDevice</a></li>
--   <li><a>dsDataQualityStandard</a></li>
--   <li><a>dsName</a></li>
--   <li><a>dsDataType</a></li>
--   <li><a>dsType</a></li>
--   <li><a>dsDataStreamName</a></li>
--   <li><a>dsDataStreamId</a></li>
--   </ul>
dataSource :: DataSource

-- | Information about an application which feeds sensor data into the
--   platform.
dsApplication :: Lens' DataSource (Maybe Application)

-- | Representation of an integrated device (such as a phone or a wearable)
--   that can hold sensors.
dsDevice :: Lens' DataSource (Maybe Device)
dsDataQualityStandard :: Lens' DataSource [DataSourceDataQualityStandardItem]

-- | An end-user visible name for this data source.
dsName :: Lens' DataSource (Maybe Text)

-- | The data type defines the schema for a stream of data being collected
--   by, inserted into, or queried from the Fitness API.
dsDataType :: Lens' DataSource (Maybe DataType)

-- | A constant describing the type of this data source. Indicates whether
--   this data source produces raw or derived data.
dsType :: Lens' DataSource (Maybe DataSourceType)

-- | 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.
dsDataStreamName :: Lens' DataSource (Maybe Text)

-- | 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 minnimum
--   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.
dsDataStreamId :: Lens' DataSource (Maybe Text)
data BucketByTimePeriod

-- | Creates a value of <a>BucketByTimePeriod</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bbtpValue</a></li>
--   <li><a>bbtpType</a></li>
--   <li><a>bbtpTimeZoneId</a></li>
--   </ul>
bucketByTimePeriod :: BucketByTimePeriod
bbtpValue :: Lens' BucketByTimePeriod (Maybe Int32)
bbtpType :: Lens' BucketByTimePeriod (Maybe BucketByTimePeriodType)

-- | org.joda.timezone.DateTimeZone
bbtpTimeZoneId :: Lens' BucketByTimePeriod (Maybe Text)

-- | A constant representing the type of the device.
data DeviceType

-- | <pre>
--   chestStrap
--   </pre>
ChestStrap :: DeviceType

-- | <pre>
--   headMounted
--   </pre>
HeadMounted :: DeviceType

-- | <pre>
--   phone
--   </pre>
Phone :: DeviceType

-- | <pre>
--   scale
--   </pre>
Scale :: DeviceType

-- | <pre>
--   tablet
--   </pre>
Tablet :: DeviceType

-- | <pre>
--   unknown
--   </pre>
Unknown :: DeviceType

-- | <pre>
--   watch
--   </pre>
Watch :: DeviceType
data ValueMapValEntry

-- | Creates a value of <a>ValueMapValEntry</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vmveValue</a></li>
--   <li><a>vmveKey</a></li>
--   </ul>
valueMapValEntry :: ValueMapValEntry
vmveValue :: Lens' ValueMapValEntry (Maybe MapValue)
vmveKey :: Lens' ValueMapValEntry (Maybe Text)
data BucketByTime

-- | Creates a value of <a>BucketByTime</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bbtPeriod</a></li>
--   <li><a>bbtDurationMillis</a></li>
--   </ul>
bucketByTime :: BucketByTime
bbtPeriod :: Lens' BucketByTime (Maybe BucketByTimePeriod)

-- | 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.
bbtDurationMillis :: Lens' BucketByTime (Maybe Int64)

-- | <i>See:</i> <a>dataType</a> smart constructor.
data DataType

-- | Creates a value of <a>DataType</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtField</a></li>
--   <li><a>dtName</a></li>
--   </ul>
dataType :: DataType

-- | A field represents one dimension of a data type.
dtField :: Lens' DataType [DataTypeField]

-- | Each data type has a unique, namespaced, name. All data types in the
--   com.google namespace are shared as part of the platform.
dtName :: Lens' DataType (Maybe Text)

-- | Sessions contain metadata, such as a user-friendly name and time
--   interval information.
--   
--   <i>See:</i> <a>session</a> smart constructor.
data Session

-- | Creates a value of <a>Session</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sEndTimeMillis</a></li>
--   <li><a>sActiveTimeMillis</a></li>
--   <li><a>sApplication</a></li>
--   <li><a>sActivityType</a></li>
--   <li><a>sName</a></li>
--   <li><a>sModifiedTimeMillis</a></li>
--   <li><a>sId</a></li>
--   <li><a>sStartTimeMillis</a></li>
--   <li><a>sDescription</a></li>
--   </ul>
session :: Session

-- | An end time, in milliseconds since epoch, inclusive.
sEndTimeMillis :: Lens' Session (Maybe Int64)

-- | 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
sActiveTimeMillis :: Lens' Session (Maybe Int64)

-- | The application that created the session.
sApplication :: Lens' Session (Maybe Application)

-- | The type of activity this session represents.
sActivityType :: Lens' Session (Maybe Int32)

-- | A human readable name of the session.
sName :: Lens' Session (Maybe Text)

-- | A timestamp that indicates when the session was last modified.
sModifiedTimeMillis :: Lens' Session (Maybe Int64)

-- | A client-generated identifier that is unique across all sessions owned
--   by this particular user.
sId :: Lens' Session (Maybe Text)

-- | A start time, in milliseconds since epoch, inclusive.
sStartTimeMillis :: Lens' Session (Maybe Int64)

-- | A description for this session.
sDescription :: Lens' Session (Maybe Text)
data DataSourceDataQualityStandardItem

-- | <pre>
--   dataQualityBloodGlucoseIso151972003
--   </pre>
DSDQSIDATAQUALITYBLOODGLUCOSEISO151972003 :: DataSourceDataQualityStandardItem

-- | <pre>
--   dataQualityBloodGlucoseIso151972013
--   </pre>
DSDQSIDATAQUALITYBLOODGLUCOSEISO151972013 :: DataSourceDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureAami
--   </pre>
DSDQSIDataQualityBloodPressureAami :: DataSourceDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureBhsAA
--   </pre>
DSDQSIDataQualityBloodPressureBhsAA :: DataSourceDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureBhsAB
--   </pre>
DSDQSIDataQualityBloodPressureBhsAB :: DataSourceDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureBhsBA
--   </pre>
DSDQSIDataQualityBloodPressureBhsBA :: DataSourceDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureBhsBB
--   </pre>
DSDQSIDataQualityBloodPressureBhsBB :: DataSourceDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureEsh2002
--   </pre>
DSDQSIDATAQUALITYBLOODPRESSUREESH2002 :: DataSourceDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureEsh2010
--   </pre>
DSDQSIDATAQUALITYBLOODPRESSUREESH2010 :: DataSourceDataQualityStandardItem

-- | <pre>
--   dataQualityUnknown
--   </pre>
DSDQSIDataQualityUnknown :: DataSourceDataQualityStandardItem

-- | The different supported formats for each field in a data type.
data DataTypeFieldFormat

-- | <pre>
--   blob
--   </pre>
Blob :: DataTypeFieldFormat

-- | <pre>
--   floatList
--   </pre>
FloatList :: DataTypeFieldFormat

-- | <pre>
--   floatPoint
--   </pre>
FloatPoint :: DataTypeFieldFormat

-- | <pre>
--   integer
--   </pre>
Integer :: DataTypeFieldFormat

-- | <pre>
--   integerList
--   </pre>
IntegerList :: DataTypeFieldFormat

-- | <pre>
--   map
--   </pre>
Map :: DataTypeFieldFormat

-- | <pre>
--   string
--   </pre>
String :: DataTypeFieldFormat


-- | Aggregates data of a certain type or stream into buckets divided by a
--   given type of boundary. Multiple data sets of multiple types and from
--   multiple sources can be aggreated into exactly one bucket type per
--   request.
--   
--   <i>See:</i> <a>Fitness Reference</a> for
--   <tt>fitness.users.dataset.aggregate</tt>.
module Network.Google.Resource.Fitness.Users.DataSet.Aggregate

-- | A resource alias for <tt>fitness.users.dataset.aggregate</tt> method
--   which the <a>UsersDataSetAggregate</a> request conforms to.
type UsersDataSetAggregateResource = "fitness" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("dataset:aggregate" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] AggregateRequest :> Post '[JSON] AggregateResponse))))))

-- | Creates a value of <a>UsersDataSetAggregate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>udsaPayload</a></li>
--   <li><a>udsaUserId</a></li>
--   </ul>
usersDataSetAggregate :: AggregateRequest -> Text -> UsersDataSetAggregate

-- | Aggregates data of a certain type or stream into buckets divided by a
--   given type of boundary. Multiple data sets of multiple types and from
--   multiple sources can be aggreated into exactly one bucket type per
--   request.
--   
--   <i>See:</i> <a>usersDataSetAggregate</a> smart constructor.
data UsersDataSetAggregate

-- | Multipart request metadata.
udsaPayload :: Lens' UsersDataSetAggregate AggregateRequest

-- | Aggregate data for the person identified. Use me to indicate the
--   authenticated user. Only me is supported at this time.
udsaUserId :: Lens' UsersDataSetAggregate Text
instance GHC.Generics.Generic Network.Google.Resource.Fitness.Users.DataSet.Aggregate.UsersDataSetAggregate
instance Data.Data.Data Network.Google.Resource.Fitness.Users.DataSet.Aggregate.UsersDataSetAggregate
instance GHC.Show.Show Network.Google.Resource.Fitness.Users.DataSet.Aggregate.UsersDataSetAggregate
instance GHC.Classes.Eq Network.Google.Resource.Fitness.Users.DataSet.Aggregate.UsersDataSetAggregate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Fitness.Users.DataSet.Aggregate.UsersDataSetAggregate


-- | Creates a new data source that is unique across all data sources
--   belonging to this user. The data stream ID field can be omitted and
--   will be generated by the server with the correct format. The data
--   stream ID is an ordered combination of some fields from the data
--   source. In addition to the data source fields reflected into the data
--   source ID, the developer project number that is authenticated when
--   creating the data source is included. This developer project number is
--   obfuscated when read by any other developer reading public data types.
--   
--   <i>See:</i> <a>Fitness Reference</a> for
--   <tt>fitness.users.dataSources.create</tt>.
module Network.Google.Resource.Fitness.Users.DataSources.Create

-- | A resource alias for <tt>fitness.users.dataSources.create</tt> method
--   which the <a>UsersDataSourcesCreate</a> request conforms to.
type UsersDataSourcesCreateResource = "fitness" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("dataSources" :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] DataSource :> Post '[JSON] DataSource))))))

-- | Creates a value of <a>UsersDataSourcesCreate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>udscPayload</a></li>
--   <li><a>udscUserId</a></li>
--   </ul>
usersDataSourcesCreate :: DataSource -> Text -> UsersDataSourcesCreate

-- | Creates a new data source that is unique across all data sources
--   belonging to this user. The data stream ID field can be omitted and
--   will be generated by the server with the correct format. The data
--   stream ID is an ordered combination of some fields from the data
--   source. In addition to the data source fields reflected into the data
--   source ID, the developer project number that is authenticated when
--   creating the data source is included. This developer project number is
--   obfuscated when read by any other developer reading public data types.
--   
--   <i>See:</i> <a>usersDataSourcesCreate</a> smart constructor.
data UsersDataSourcesCreate

-- | Multipart request metadata.
udscPayload :: Lens' UsersDataSourcesCreate DataSource

-- | Create the data source for the person identified. Use me to indicate
--   the authenticated user. Only me is supported at this time.
udscUserId :: Lens' UsersDataSourcesCreate Text
instance GHC.Generics.Generic Network.Google.Resource.Fitness.Users.DataSources.Create.UsersDataSourcesCreate
instance Data.Data.Data Network.Google.Resource.Fitness.Users.DataSources.Create.UsersDataSourcesCreate
instance GHC.Show.Show Network.Google.Resource.Fitness.Users.DataSources.Create.UsersDataSourcesCreate
instance GHC.Classes.Eq Network.Google.Resource.Fitness.Users.DataSources.Create.UsersDataSourcesCreate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Fitness.Users.DataSources.Create.UsersDataSourcesCreate


-- | Performs an inclusive delete of all data points whose start and end
--   times have any overlap with the time range specified by the dataset
--   ID. For most data types, the entire data point will be deleted. For
--   data types where the time span represents a consistent value (such as
--   com.google.activity.segment), and a data point straddles either end
--   point of the dataset, only the overlapping portion of the data point
--   will be deleted.
--   
--   <i>See:</i> <a>Fitness Reference</a> for
--   <tt>fitness.users.dataSources.datasets.delete</tt>.
module Network.Google.Resource.Fitness.Users.DataSources.DataSets.Delete

-- | A resource alias for
--   <tt>fitness.users.dataSources.datasets.delete</tt> method which the
--   <a>UsersDataSourcesDataSetsDelete</a> request conforms to.
type UsersDataSourcesDataSetsDeleteResource = "fitness" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("dataSources" :> (Capture "dataSourceId" Text :> ("datasets" :> (Capture "datasetId" Text :> (QueryParam "modifiedTimeMillis" (Textual Int64) :> (QueryParam "currentTimeMillis" (Textual Int64) :> (QueryParam "alt" AltJSON :> Delete '[JSON] ()))))))))))

-- | Creates a value of <a>UsersDataSourcesDataSetsDelete</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>udsdsdDataSourceId</a></li>
--   <li><a>udsdsdUserId</a></li>
--   <li><a>udsdsdDataSetId</a></li>
--   <li><a>udsdsdModifiedTimeMillis</a></li>
--   <li><a>udsdsdCurrentTimeMillis</a></li>
--   </ul>
usersDataSourcesDataSetsDelete :: Text -> Text -> Text -> UsersDataSourcesDataSetsDelete

-- | Performs an inclusive delete of all data points whose start and end
--   times have any overlap with the time range specified by the dataset
--   ID. For most data types, the entire data point will be deleted. For
--   data types where the time span represents a consistent value (such as
--   com.google.activity.segment), and a data point straddles either end
--   point of the dataset, only the overlapping portion of the data point
--   will be deleted.
--   
--   <i>See:</i> <a>usersDataSourcesDataSetsDelete</a> smart constructor.
data UsersDataSourcesDataSetsDelete

-- | The data stream ID of the data source that created the dataset.
udsdsdDataSourceId :: Lens' UsersDataSourcesDataSetsDelete Text

-- | Delete a dataset for the person identified. Use me to indicate the
--   authenticated user. Only me is supported at this time.
udsdsdUserId :: Lens' UsersDataSourcesDataSetsDelete Text

-- | Dataset identifier that is a composite of the minimum data point start
--   time and maximum data point end time represented as nanoseconds from
--   the epoch. The ID is formatted like: "startTime-endTime" where
--   startTime and endTime are 64 bit integers.
udsdsdDataSetId :: Lens' UsersDataSourcesDataSetsDelete Text

-- | When the operation was performed on the client.
udsdsdModifiedTimeMillis :: Lens' UsersDataSourcesDataSetsDelete (Maybe Int64)

-- | The client's current time in milliseconds since epoch.
udsdsdCurrentTimeMillis :: Lens' UsersDataSourcesDataSetsDelete (Maybe Int64)
instance GHC.Generics.Generic Network.Google.Resource.Fitness.Users.DataSources.DataSets.Delete.UsersDataSourcesDataSetsDelete
instance Data.Data.Data Network.Google.Resource.Fitness.Users.DataSources.DataSets.Delete.UsersDataSourcesDataSetsDelete
instance GHC.Show.Show Network.Google.Resource.Fitness.Users.DataSources.DataSets.Delete.UsersDataSourcesDataSetsDelete
instance GHC.Classes.Eq Network.Google.Resource.Fitness.Users.DataSources.DataSets.Delete.UsersDataSourcesDataSetsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Fitness.Users.DataSources.DataSets.Delete.UsersDataSourcesDataSetsDelete


-- | Returns a dataset containing all data points whose start and end times
--   overlap with the specified range of the dataset minimum start time and
--   maximum end time. Specifically, any data point whose start time is
--   less than or equal to the dataset end time and whose end time is
--   greater than or equal to the dataset start time.
--   
--   <i>See:</i> <a>Fitness Reference</a> for
--   <tt>fitness.users.dataSources.datasets.get</tt>.
module Network.Google.Resource.Fitness.Users.DataSources.DataSets.Get

-- | A resource alias for <tt>fitness.users.dataSources.datasets.get</tt>
--   method which the <a>UsersDataSourcesDataSetsGet</a> request conforms
--   to.
type UsersDataSourcesDataSetsGetResource = "fitness" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("dataSources" :> (Capture "dataSourceId" Text :> ("datasets" :> (Capture "datasetId" Text :> (QueryParam "limit" (Textual Int32) :> (QueryParam "pageToken" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] DataSet))))))))))

-- | Creates a value of <a>UsersDataSourcesDataSetsGet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>udsdsgDataSourceId</a></li>
--   <li><a>udsdsgUserId</a></li>
--   <li><a>udsdsgDataSetId</a></li>
--   <li><a>udsdsgLimit</a></li>
--   <li><a>udsdsgPageToken</a></li>
--   </ul>
usersDataSourcesDataSetsGet :: Text -> Text -> Text -> UsersDataSourcesDataSetsGet

-- | Returns a dataset containing all data points whose start and end times
--   overlap with the specified range of the dataset minimum start time and
--   maximum end time. Specifically, any data point whose start time is
--   less than or equal to the dataset end time and whose end time is
--   greater than or equal to the dataset start time.
--   
--   <i>See:</i> <a>usersDataSourcesDataSetsGet</a> smart constructor.
data UsersDataSourcesDataSetsGet

-- | The data stream ID of the data source that created the dataset.
udsdsgDataSourceId :: Lens' UsersDataSourcesDataSetsGet Text

-- | Retrieve a dataset for the person identified. Use me to indicate the
--   authenticated user. Only me is supported at this time.
udsdsgUserId :: Lens' UsersDataSourcesDataSetsGet Text

-- | Dataset identifier that is a composite of the minimum data point start
--   time and maximum data point end time represented as nanoseconds from
--   the epoch. The ID is formatted like: "startTime-endTime" where
--   startTime and endTime are 64 bit integers.
udsdsgDataSetId :: Lens' UsersDataSourcesDataSetsGet Text

-- | If specified, no more than this many data points will be included in
--   the dataset. If there are more data points in the dataset,
--   nextPageToken will be set in the dataset response.
udsdsgLimit :: Lens' UsersDataSourcesDataSetsGet (Maybe Int32)

-- | The continuation token, which is used to page through large datasets.
--   To get the next page of a dataset, set this parameter to the value of
--   nextPageToken from the previous response. Each subsequent call will
--   yield a partial dataset with data point end timestamps that are
--   strictly smaller than those in the previous partial response.
udsdsgPageToken :: Lens' UsersDataSourcesDataSetsGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Fitness.Users.DataSources.DataSets.Get.UsersDataSourcesDataSetsGet
instance Data.Data.Data Network.Google.Resource.Fitness.Users.DataSources.DataSets.Get.UsersDataSourcesDataSetsGet
instance GHC.Show.Show Network.Google.Resource.Fitness.Users.DataSources.DataSets.Get.UsersDataSourcesDataSetsGet
instance GHC.Classes.Eq Network.Google.Resource.Fitness.Users.DataSources.DataSets.Get.UsersDataSourcesDataSetsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Fitness.Users.DataSources.DataSets.Get.UsersDataSourcesDataSetsGet


-- | Adds data points to a dataset. The dataset need not be previously
--   created. All points within the given dataset will be returned with
--   subsquent calls to retrieve this dataset. Data points can belong to
--   more than one dataset. This method does not use patch semantics.
--   
--   <i>See:</i> <a>Fitness Reference</a> for
--   <tt>fitness.users.dataSources.datasets.patch</tt>.
module Network.Google.Resource.Fitness.Users.DataSources.DataSets.Patch

-- | A resource alias for <tt>fitness.users.dataSources.datasets.patch</tt>
--   method which the <a>UsersDataSourcesDataSetsPatch</a> request conforms
--   to.
type UsersDataSourcesDataSetsPatchResource = "fitness" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("dataSources" :> (Capture "dataSourceId" Text :> ("datasets" :> (Capture "datasetId" Text :> (QueryParam "currentTimeMillis" (Textual Int64) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] DataSet :> Patch '[JSON] DataSet))))))))))

-- | Creates a value of <a>UsersDataSourcesDataSetsPatch</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>udsdspDataSourceId</a></li>
--   <li><a>udsdspPayload</a></li>
--   <li><a>udsdspUserId</a></li>
--   <li><a>udsdspDataSetId</a></li>
--   <li><a>udsdspCurrentTimeMillis</a></li>
--   </ul>
usersDataSourcesDataSetsPatch :: Text -> DataSet -> Text -> Text -> UsersDataSourcesDataSetsPatch

-- | Adds data points to a dataset. The dataset need not be previously
--   created. All points within the given dataset will be returned with
--   subsquent calls to retrieve this dataset. Data points can belong to
--   more than one dataset. This method does not use patch semantics.
--   
--   <i>See:</i> <a>usersDataSourcesDataSetsPatch</a> smart constructor.
data UsersDataSourcesDataSetsPatch

-- | The data stream ID of the data source that created the dataset.
udsdspDataSourceId :: Lens' UsersDataSourcesDataSetsPatch Text

-- | Multipart request metadata.
udsdspPayload :: Lens' UsersDataSourcesDataSetsPatch DataSet

-- | Patch a dataset for the person identified. Use me to indicate the
--   authenticated user. Only me is supported at this time.
udsdspUserId :: Lens' UsersDataSourcesDataSetsPatch Text

-- | Dataset identifier that is a composite of the minimum data point start
--   time and maximum data point end time represented as nanoseconds from
--   the epoch. The ID is formatted like: "startTime-endTime" where
--   startTime and endTime are 64 bit integers.
udsdspDataSetId :: Lens' UsersDataSourcesDataSetsPatch Text

-- | The client's current time in milliseconds since epoch. Note that the
--   minStartTimeNs and maxEndTimeNs properties in the request body are in
--   nanoseconds instead of milliseconds.
udsdspCurrentTimeMillis :: Lens' UsersDataSourcesDataSetsPatch (Maybe Int64)
instance GHC.Generics.Generic Network.Google.Resource.Fitness.Users.DataSources.DataSets.Patch.UsersDataSourcesDataSetsPatch
instance Data.Data.Data Network.Google.Resource.Fitness.Users.DataSources.DataSets.Patch.UsersDataSourcesDataSetsPatch
instance GHC.Show.Show Network.Google.Resource.Fitness.Users.DataSources.DataSets.Patch.UsersDataSourcesDataSetsPatch
instance GHC.Classes.Eq Network.Google.Resource.Fitness.Users.DataSources.DataSets.Patch.UsersDataSourcesDataSetsPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Fitness.Users.DataSources.DataSets.Patch.UsersDataSourcesDataSetsPatch


-- | Deletes the specified data source. The request will fail if the data
--   source contains any data points.
--   
--   <i>See:</i> <a>Fitness Reference</a> for
--   <tt>fitness.users.dataSources.delete</tt>.
module Network.Google.Resource.Fitness.Users.DataSources.Delete

-- | A resource alias for <tt>fitness.users.dataSources.delete</tt> method
--   which the <a>UsersDataSourcesDelete</a> request conforms to.
type UsersDataSourcesDeleteResource = "fitness" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("dataSources" :> (Capture "dataSourceId" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] DataSource))))))

-- | Creates a value of <a>UsersDataSourcesDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>udsdDataSourceId</a></li>
--   <li><a>udsdUserId</a></li>
--   </ul>
usersDataSourcesDelete :: Text -> Text -> UsersDataSourcesDelete

-- | Deletes the specified data source. The request will fail if the data
--   source contains any data points.
--   
--   <i>See:</i> <a>usersDataSourcesDelete</a> smart constructor.
data UsersDataSourcesDelete

-- | The data stream ID of the data source to delete.
udsdDataSourceId :: Lens' UsersDataSourcesDelete Text

-- | Retrieve a data source for the person identified. Use me to indicate
--   the authenticated user. Only me is supported at this time.
udsdUserId :: Lens' UsersDataSourcesDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Fitness.Users.DataSources.Delete.UsersDataSourcesDelete
instance Data.Data.Data Network.Google.Resource.Fitness.Users.DataSources.Delete.UsersDataSourcesDelete
instance GHC.Show.Show Network.Google.Resource.Fitness.Users.DataSources.Delete.UsersDataSourcesDelete
instance GHC.Classes.Eq Network.Google.Resource.Fitness.Users.DataSources.Delete.UsersDataSourcesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Fitness.Users.DataSources.Delete.UsersDataSourcesDelete


-- | Returns the specified data source.
--   
--   <i>See:</i> <a>Fitness Reference</a> for
--   <tt>fitness.users.dataSources.get</tt>.
module Network.Google.Resource.Fitness.Users.DataSources.Get

-- | A resource alias for <tt>fitness.users.dataSources.get</tt> method
--   which the <a>UsersDataSourcesGet</a> request conforms to.
type UsersDataSourcesGetResource = "fitness" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("dataSources" :> (Capture "dataSourceId" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] DataSource))))))

-- | Creates a value of <a>UsersDataSourcesGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>udsgDataSourceId</a></li>
--   <li><a>udsgUserId</a></li>
--   </ul>
usersDataSourcesGet :: Text -> Text -> UsersDataSourcesGet

-- | Returns the specified data source.
--   
--   <i>See:</i> <a>usersDataSourcesGet</a> smart constructor.
data UsersDataSourcesGet

-- | The data stream ID of the data source to retrieve.
udsgDataSourceId :: Lens' UsersDataSourcesGet Text

-- | Retrieve a data source for the person identified. Use me to indicate
--   the authenticated user. Only me is supported at this time.
udsgUserId :: Lens' UsersDataSourcesGet Text
instance GHC.Generics.Generic Network.Google.Resource.Fitness.Users.DataSources.Get.UsersDataSourcesGet
instance Data.Data.Data Network.Google.Resource.Fitness.Users.DataSources.Get.UsersDataSourcesGet
instance GHC.Show.Show Network.Google.Resource.Fitness.Users.DataSources.Get.UsersDataSourcesGet
instance GHC.Classes.Eq Network.Google.Resource.Fitness.Users.DataSources.Get.UsersDataSourcesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Fitness.Users.DataSources.Get.UsersDataSourcesGet


-- | Lists all data sources that are visible to the developer, using the
--   OAuth scopes provided. The list is not exhaustive; the user may have
--   private data sources that are only visible to other developers, or
--   calls using other scopes.
--   
--   <i>See:</i> <a>Fitness Reference</a> for
--   <tt>fitness.users.dataSources.list</tt>.
module Network.Google.Resource.Fitness.Users.DataSources.List

-- | A resource alias for <tt>fitness.users.dataSources.list</tt> method
--   which the <a>UsersDataSourcesList</a> request conforms to.
type UsersDataSourcesListResource = "fitness" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("dataSources" :> (QueryParams "dataTypeName" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ListDataSourcesResponse))))))

-- | Creates a value of <a>UsersDataSourcesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>udslDataTypeName</a></li>
--   <li><a>udslUserId</a></li>
--   </ul>
usersDataSourcesList :: Text -> UsersDataSourcesList

-- | Lists all data sources that are visible to the developer, using the
--   OAuth scopes provided. The list is not exhaustive; the user may have
--   private data sources that are only visible to other developers, or
--   calls using other scopes.
--   
--   <i>See:</i> <a>usersDataSourcesList</a> smart constructor.
data UsersDataSourcesList

-- | The names of data types to include in the list. If not specified, all
--   data sources will be returned.
udslDataTypeName :: Lens' UsersDataSourcesList [Text]

-- | List data sources for the person identified. Use me to indicate the
--   authenticated user. Only me is supported at this time.
udslUserId :: Lens' UsersDataSourcesList Text
instance GHC.Generics.Generic Network.Google.Resource.Fitness.Users.DataSources.List.UsersDataSourcesList
instance Data.Data.Data Network.Google.Resource.Fitness.Users.DataSources.List.UsersDataSourcesList
instance GHC.Show.Show Network.Google.Resource.Fitness.Users.DataSources.List.UsersDataSourcesList
instance GHC.Classes.Eq Network.Google.Resource.Fitness.Users.DataSources.List.UsersDataSourcesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Fitness.Users.DataSources.List.UsersDataSourcesList


-- | Updates the specified data source. The dataStreamId, dataType, type,
--   dataStreamName, and device properties with the exception of version,
--   cannot be modified. Data sources are identified by their dataStreamId.
--   This method supports patch semantics.
--   
--   <i>See:</i> <a>Fitness Reference</a> for
--   <tt>fitness.users.dataSources.patch</tt>.
module Network.Google.Resource.Fitness.Users.DataSources.Patch

-- | A resource alias for <tt>fitness.users.dataSources.patch</tt> method
--   which the <a>UsersDataSourcesPatch</a> request conforms to.
type UsersDataSourcesPatchResource = "fitness" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("dataSources" :> (Capture "dataSourceId" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] DataSource :> Patch '[JSON] DataSource)))))))

-- | Creates a value of <a>UsersDataSourcesPatch</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>udspDataSourceId</a></li>
--   <li><a>udspPayload</a></li>
--   <li><a>udspUserId</a></li>
--   </ul>
usersDataSourcesPatch :: Text -> DataSource -> Text -> UsersDataSourcesPatch

-- | Updates the specified data source. The dataStreamId, dataType, type,
--   dataStreamName, and device properties with the exception of version,
--   cannot be modified. Data sources are identified by their dataStreamId.
--   This method supports patch semantics.
--   
--   <i>See:</i> <a>usersDataSourcesPatch</a> smart constructor.
data UsersDataSourcesPatch

-- | The data stream ID of the data source to update.
udspDataSourceId :: Lens' UsersDataSourcesPatch Text

-- | Multipart request metadata.
udspPayload :: Lens' UsersDataSourcesPatch DataSource

-- | Update the data source for the person identified. Use me to indicate
--   the authenticated user. Only me is supported at this time.
udspUserId :: Lens' UsersDataSourcesPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Fitness.Users.DataSources.Patch.UsersDataSourcesPatch
instance Data.Data.Data Network.Google.Resource.Fitness.Users.DataSources.Patch.UsersDataSourcesPatch
instance GHC.Show.Show Network.Google.Resource.Fitness.Users.DataSources.Patch.UsersDataSourcesPatch
instance GHC.Classes.Eq Network.Google.Resource.Fitness.Users.DataSources.Patch.UsersDataSourcesPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Fitness.Users.DataSources.Patch.UsersDataSourcesPatch


-- | Updates the specified data source. The dataStreamId, dataType, type,
--   dataStreamName, and device properties with the exception of version,
--   cannot be modified. Data sources are identified by their dataStreamId.
--   
--   <i>See:</i> <a>Fitness Reference</a> for
--   <tt>fitness.users.dataSources.update</tt>.
module Network.Google.Resource.Fitness.Users.DataSources.Update

-- | A resource alias for <tt>fitness.users.dataSources.update</tt> method
--   which the <a>UsersDataSourcesUpdate</a> request conforms to.
type UsersDataSourcesUpdateResource = "fitness" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("dataSources" :> (Capture "dataSourceId" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] DataSource :> Put '[JSON] DataSource)))))))

-- | Creates a value of <a>UsersDataSourcesUpdate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>udsuDataSourceId</a></li>
--   <li><a>udsuPayload</a></li>
--   <li><a>udsuUserId</a></li>
--   </ul>
usersDataSourcesUpdate :: Text -> DataSource -> Text -> UsersDataSourcesUpdate

-- | Updates the specified data source. The dataStreamId, dataType, type,
--   dataStreamName, and device properties with the exception of version,
--   cannot be modified. Data sources are identified by their dataStreamId.
--   
--   <i>See:</i> <a>usersDataSourcesUpdate</a> smart constructor.
data UsersDataSourcesUpdate

-- | The data stream ID of the data source to update.
udsuDataSourceId :: Lens' UsersDataSourcesUpdate Text

-- | Multipart request metadata.
udsuPayload :: Lens' UsersDataSourcesUpdate DataSource

-- | Update the data source for the person identified. Use me to indicate
--   the authenticated user. Only me is supported at this time.
udsuUserId :: Lens' UsersDataSourcesUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Fitness.Users.DataSources.Update.UsersDataSourcesUpdate
instance Data.Data.Data Network.Google.Resource.Fitness.Users.DataSources.Update.UsersDataSourcesUpdate
instance GHC.Show.Show Network.Google.Resource.Fitness.Users.DataSources.Update.UsersDataSourcesUpdate
instance GHC.Classes.Eq Network.Google.Resource.Fitness.Users.DataSources.Update.UsersDataSourcesUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Fitness.Users.DataSources.Update.UsersDataSourcesUpdate


-- | Deletes a session specified by the given session ID.
--   
--   <i>See:</i> <a>Fitness Reference</a> for
--   <tt>fitness.users.sessions.delete</tt>.
module Network.Google.Resource.Fitness.Users.Sessions.Delete

-- | A resource alias for <tt>fitness.users.sessions.delete</tt> method
--   which the <a>UsersSessionsDelete</a> request conforms to.
type UsersSessionsDeleteResource = "fitness" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("sessions" :> (Capture "sessionId" Text :> (QueryParam "currentTimeMillis" (Textual Int64) :> (QueryParam "alt" AltJSON :> Delete '[JSON] ())))))))

-- | Creates a value of <a>UsersSessionsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>usdUserId</a></li>
--   <li><a>usdCurrentTimeMillis</a></li>
--   <li><a>usdSessionId</a></li>
--   </ul>
usersSessionsDelete :: Text -> Text -> UsersSessionsDelete

-- | Deletes a session specified by the given session ID.
--   
--   <i>See:</i> <a>usersSessionsDelete</a> smart constructor.
data UsersSessionsDelete

-- | Delete a session for the person identified. Use me to indicate the
--   authenticated user. Only me is supported at this time.
usdUserId :: Lens' UsersSessionsDelete Text

-- | The client's current time in milliseconds since epoch.
usdCurrentTimeMillis :: Lens' UsersSessionsDelete (Maybe Int64)

-- | The ID of the session to be deleted.
usdSessionId :: Lens' UsersSessionsDelete Text
instance GHC.Generics.Generic Network.Google.Resource.Fitness.Users.Sessions.Delete.UsersSessionsDelete
instance Data.Data.Data Network.Google.Resource.Fitness.Users.Sessions.Delete.UsersSessionsDelete
instance GHC.Show.Show Network.Google.Resource.Fitness.Users.Sessions.Delete.UsersSessionsDelete
instance GHC.Classes.Eq Network.Google.Resource.Fitness.Users.Sessions.Delete.UsersSessionsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Fitness.Users.Sessions.Delete.UsersSessionsDelete


-- | Lists sessions previously created.
--   
--   <i>See:</i> <a>Fitness Reference</a> for
--   <tt>fitness.users.sessions.list</tt>.
module Network.Google.Resource.Fitness.Users.Sessions.List

-- | A resource alias for <tt>fitness.users.sessions.list</tt> method which
--   the <a>UsersSessionsList</a> request conforms to.
type UsersSessionsListResource = "fitness" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("sessions" :> (QueryParam "startTime" Text :> (QueryParam "endTime" Text :> (QueryParam "pageToken" Text :> (QueryParam "includeDeleted" Bool :> (QueryParam "alt" AltJSON :> Get '[JSON] ListSessionsResponse)))))))))

-- | Creates a value of <a>UsersSessionsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>uslStartTime</a></li>
--   <li><a>uslUserId</a></li>
--   <li><a>uslEndTime</a></li>
--   <li><a>uslPageToken</a></li>
--   <li><a>uslIncludeDeleted</a></li>
--   </ul>
usersSessionsList :: Text -> UsersSessionsList

-- | Lists sessions previously created.
--   
--   <i>See:</i> <a>usersSessionsList</a> smart constructor.
data UsersSessionsList

-- | An RFC3339 timestamp. Only sessions ending between the start and end
--   times will be included in the response.
uslStartTime :: Lens' UsersSessionsList (Maybe Text)

-- | List sessions for the person identified. Use me to indicate the
--   authenticated user. Only me is supported at this time.
uslUserId :: Lens' UsersSessionsList Text

-- | An RFC3339 timestamp. Only sessions ending between the start and end
--   times will be included in the response.
uslEndTime :: Lens' UsersSessionsList (Maybe Text)

-- | The continuation token, which is used to page through large result
--   sets. To get the next page of results, set this parameter to the value
--   of nextPageToken from the previous response.
uslPageToken :: Lens' UsersSessionsList (Maybe Text)

-- | If true, deleted sessions will be returned. When set to true, sessions
--   returned in this response will only have an ID and will not have any
--   other fields.
uslIncludeDeleted :: Lens' UsersSessionsList (Maybe Bool)
instance GHC.Generics.Generic Network.Google.Resource.Fitness.Users.Sessions.List.UsersSessionsList
instance Data.Data.Data Network.Google.Resource.Fitness.Users.Sessions.List.UsersSessionsList
instance GHC.Show.Show Network.Google.Resource.Fitness.Users.Sessions.List.UsersSessionsList
instance GHC.Classes.Eq Network.Google.Resource.Fitness.Users.Sessions.List.UsersSessionsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Fitness.Users.Sessions.List.UsersSessionsList


-- | Updates or insert a given session.
--   
--   <i>See:</i> <a>Fitness Reference</a> for
--   <tt>fitness.users.sessions.update</tt>.
module Network.Google.Resource.Fitness.Users.Sessions.Update

-- | A resource alias for <tt>fitness.users.sessions.update</tt> method
--   which the <a>UsersSessionsUpdate</a> request conforms to.
type UsersSessionsUpdateResource = "fitness" :> ("v1" :> ("users" :> (Capture "userId" Text :> ("sessions" :> (Capture "sessionId" Text :> (QueryParam "currentTimeMillis" (Textual Int64) :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Session :> Put '[JSON] Session))))))))

-- | Creates a value of <a>UsersSessionsUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>usuPayload</a></li>
--   <li><a>usuUserId</a></li>
--   <li><a>usuCurrentTimeMillis</a></li>
--   <li><a>usuSessionId</a></li>
--   </ul>
usersSessionsUpdate :: Session -> Text -> Text -> UsersSessionsUpdate

-- | Updates or insert a given session.
--   
--   <i>See:</i> <a>usersSessionsUpdate</a> smart constructor.
data UsersSessionsUpdate

-- | Multipart request metadata.
usuPayload :: Lens' UsersSessionsUpdate Session

-- | Create sessions for the person identified. Use me to indicate the
--   authenticated user. Only me is supported at this time.
usuUserId :: Lens' UsersSessionsUpdate Text

-- | The client's current time in milliseconds since epoch.
usuCurrentTimeMillis :: Lens' UsersSessionsUpdate (Maybe Int64)

-- | The ID of the session to be created.
usuSessionId :: Lens' UsersSessionsUpdate Text
instance GHC.Generics.Generic Network.Google.Resource.Fitness.Users.Sessions.Update.UsersSessionsUpdate
instance Data.Data.Data Network.Google.Resource.Fitness.Users.Sessions.Update.UsersSessionsUpdate
instance GHC.Show.Show Network.Google.Resource.Fitness.Users.Sessions.Update.UsersSessionsUpdate
instance GHC.Classes.Eq Network.Google.Resource.Fitness.Users.Sessions.Update.UsersSessionsUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Fitness.Users.Sessions.Update.UsersSessionsUpdate


-- | Stores and accesses user data in the fitness store from apps on any
--   platform.
--   
--   <i>See:</i> <a>Fitness Reference</a>
module Network.Google.Fitness

-- | Default request referring to version <tt>v1</tt> of the Fitness. This
--   contains the host and root path used as a starting point for
--   constructing service requests.
fitnessService :: ServiceConfig

-- | View body temperature data in Google Fit
fitnessBodyTemperatureReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.body_temperature.read"]

-- | View body sensor information in Google Fit
fitnessBodyReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.body.read"]

-- | View nutrition information in Google Fit
fitnessNutritionReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.nutrition.read"]

-- | View reproductive health data in Google Fit
fitnessReProductiveHealthReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.reproductive_health.read"]

-- | View your activity information in Google Fit
fitnessActivityReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.activity.read"]

-- | View and store reproductive health data in Google Fit
fitnessReProductiveHealthWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.reproductive_health.write"]

-- | View and store your activity information in Google Fit
fitnessActivityWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.activity.write"]

-- | View and store blood pressure data in Google Fit
fitnessBloodPressureWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.blood_pressure.write"]

-- | View and store body temperature data in Google Fit
fitnessBodyTemperatureWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.body_temperature.write"]

-- | View oxygen saturation data in Google Fit
fitnessOxygenSaturationReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.oxygen_saturation.read"]

-- | View and store blood glucose data in Google Fit
fitnessBloodGlucoseWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.blood_glucose.write"]

-- | View blood pressure data in Google Fit
fitnessBloodPressureReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.blood_pressure.read"]

-- | View your stored location data in Google Fit
fitnessLocationReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.location.read"]

-- | View and store your location data in Google Fit
fitnessLocationWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.location.write"]

-- | View and store nutrition information in Google Fit
fitnessNutritionWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.nutrition.write"]

-- | View and store body sensor data in Google Fit
fitnessBodyWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.body.write"]

-- | View blood glucose data in Google Fit
fitnessBloodGlucoseReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.blood_glucose.read"]

-- | View and store oxygen saturation data in Google Fit
fitnessOxygenSaturationWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.oxygen_saturation.write"]

-- | Represents the entirety of the methods and resources available for the
--   Fitness service.
type FitnessAPI = UsersDataSetAggregateResource :<|> (UsersDataSourcesDataSetsPatchResource :<|> (UsersDataSourcesDataSetsGetResource :<|> (UsersDataSourcesDataSetsDeleteResource :<|> (UsersDataSourcesListResource :<|> (UsersDataSourcesPatchResource :<|> (UsersDataSourcesGetResource :<|> (UsersDataSourcesCreateResource :<|> (UsersDataSourcesDeleteResource :<|> (UsersDataSourcesUpdateResource :<|> (UsersSessionsListResource :<|> (UsersSessionsDeleteResource :<|> UsersSessionsUpdateResource)))))))))))

-- | The type of a bucket signifies how the data aggregation is performed
--   in the bucket.
data AggregateBucketType

-- | <pre>
--   activitySegment
--   </pre>
ABTActivitySegment :: AggregateBucketType

-- | <pre>
--   activityType
--   </pre>
ABTActivityType :: AggregateBucketType

-- | <pre>
--   session
--   </pre>
ABTSession :: AggregateBucketType

-- | <pre>
--   time
--   </pre>
ABTTime :: AggregateBucketType

-- | <pre>
--   unknown
--   </pre>
ABTUnknown :: AggregateBucketType

-- | 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.
--   
--   <i>See:</i> <a>dataSet</a> smart constructor.
data DataSet

-- | Creates a value of <a>DataSet</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsNextPageToken</a></li>
--   <li><a>dsDataSourceId</a></li>
--   <li><a>dsPoint</a></li>
--   <li><a>dsMinStartTimeNs</a></li>
--   <li><a>dsMaxEndTimeNs</a></li>
--   </ul>
dataSet :: DataSet

-- | 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.
dsNextPageToken :: Lens' DataSet (Maybe Text)

-- | The data stream ID of the data source that created the points in this
--   dataset.
dsDataSourceId :: Lens' DataSet (Maybe Text)

-- | 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.
dsPoint :: Lens' DataSet [DataPoint]

-- | 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.
dsMinStartTimeNs :: Lens' DataSet (Maybe Int64)

-- | 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.
dsMaxEndTimeNs :: Lens' DataSet (Maybe Int64)

-- | <i>See:</i> <a>application</a> smart constructor.
data Application

-- | Creates a value of <a>Application</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aPackageName</a></li>
--   <li><a>aName</a></li>
--   <li><a>aVersion</a></li>
--   <li><a>aDetailsURL</a></li>
--   </ul>
application :: Application

-- | 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.
aPackageName :: Lens' Application (Maybe Text)

-- | 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.
aName :: Lens' Application (Maybe Text)

-- | Version of the application. You should update this field whenever the
--   application changes in a way that affects the computation of the data.
aVersion :: Lens' Application (Maybe Text)

-- | An optional URI that can be used to link back to the application.
aDetailsURL :: Lens' Application (Maybe Text)
data AggregateResponse

-- | Creates a value of <a>AggregateResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>arBucket</a></li>
--   </ul>
aggregateResponse :: AggregateResponse

-- | A list of buckets containing the aggregated data.
arBucket :: Lens' AggregateResponse [AggregateBucket]

-- | The specification of which data to aggregate.
--   
--   <i>See:</i> <a>aggregateBy</a> smart constructor.
data AggregateBy

-- | Creates a value of <a>AggregateBy</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>abDataTypeName</a></li>
--   <li><a>abDataSourceId</a></li>
--   </ul>
aggregateBy :: AggregateBy

-- | 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
abDataTypeName :: Lens' AggregateBy (Maybe Text)

-- | 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.
abDataSourceId :: Lens' AggregateBy (Maybe Text)

-- | A constant describing the type of this data source. Indicates whether
--   this data source produces raw or derived data.
data DataSourceType

-- | <pre>
--   derived
--   </pre>
Derived :: DataSourceType

-- | <pre>
--   raw
--   </pre>
Raw :: DataSourceType
data BucketByTimePeriodType

-- | <pre>
--   day
--   </pre>
Day :: BucketByTimePeriodType

-- | <pre>
--   month
--   </pre>
Month :: BucketByTimePeriodType

-- | <pre>
--   week
--   </pre>
Week :: BucketByTimePeriodType
data BucketByActivity

-- | Creates a value of <a>BucketByActivity</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bbaMinDurationMillis</a></li>
--   <li><a>bbaActivityDataSourceId</a></li>
--   </ul>
bucketByActivity :: BucketByActivity

-- | Specifies that only activity segments of duration longer than
--   minDurationMillis are considered and used as a container for
--   aggregated data.
bbaMinDurationMillis :: Lens' BucketByActivity (Maybe Int64)

-- | The default activity stream will be used if a specific
--   activityDataSourceId is not specified.
bbaActivityDataSourceId :: Lens' BucketByActivity (Maybe Text)

-- | Next id: 10
--   
--   <i>See:</i> <a>aggregateRequest</a> smart constructor.
data AggregateRequest

-- | Creates a value of <a>AggregateRequest</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>arEndTimeMillis</a></li>
--   <li><a>arFilteredDataQualityStandard</a></li>
--   <li><a>arAggregateBy</a></li>
--   <li><a>arBucketBySession</a></li>
--   <li><a>arBucketByActivityType</a></li>
--   <li><a>arBucketByTime</a></li>
--   <li><a>arStartTimeMillis</a></li>
--   <li><a>arBucketByActivitySegment</a></li>
--   </ul>
aggregateRequest :: AggregateRequest

-- | 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.
arEndTimeMillis :: Lens' AggregateRequest (Maybe Int64)

-- | 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.
arFilteredDataQualityStandard :: Lens' AggregateRequest [AggregateRequestFilteredDataQualityStandardItem]

-- | 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.
arAggregateBy :: Lens' AggregateRequest [AggregateBy]

-- | 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.
arBucketBySession :: Lens' AggregateRequest (Maybe BucketBySession)

-- | 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.
arBucketByActivityType :: Lens' AggregateRequest (Maybe BucketByActivity)

-- | Specifies that data be aggregated by a single time interval. Mutually
--   exclusive of other bucketing specifications.
arBucketByTime :: Lens' AggregateRequest (Maybe BucketByTime)

-- | 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.
arStartTimeMillis :: Lens' AggregateRequest (Maybe Int64)

-- | 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.
arBucketByActivitySegment :: Lens' AggregateRequest (Maybe BucketByActivity)

-- | 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.
--   
--   <i>See:</i> <a>device</a> smart constructor.
data Device

-- | Creates a value of <a>Device</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dManufacturer</a></li>
--   <li><a>dUid</a></li>
--   <li><a>dModel</a></li>
--   <li><a>dVersion</a></li>
--   <li><a>dType</a></li>
--   </ul>
device :: Device

-- | Manufacturer of the product/hardware.
dManufacturer :: Lens' Device (Maybe Text)

-- | 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.
dUid :: Lens' Device (Maybe Text)

-- | End-user visible model name for the device.
dModel :: Lens' Device (Maybe Text)

-- | Version string for the device hardware/software.
dVersion :: Lens' Device (Maybe Text)

-- | A constant representing the type of the device.
dType :: Lens' Device (Maybe DeviceType)

-- | 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
--   
--   <i>See:</i> <a>value</a> smart constructor.
data Value

-- | Creates a value of <a>Value</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vMapVal</a></li>
--   <li><a>vFpVal</a></li>
--   <li><a>vIntVal</a></li>
--   <li><a>vStringVal</a></li>
--   </ul>
value :: Value

-- | 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.
vMapVal :: Lens' Value [ValueMapValEntry]

-- | Floating point value. When this is set, other values must not be set.
vFpVal :: Lens' Value (Maybe Double)

-- | Integer value. When this is set, other values must not be set.
vIntVal :: Lens' Value (Maybe Int32)

-- | 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.
vStringVal :: Lens' Value (Maybe Text)
data BucketBySession

-- | Creates a value of <a>BucketBySession</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bbsMinDurationMillis</a></li>
--   </ul>
bucketBySession :: BucketBySession

-- | Specifies that only sessions of duration longer than minDurationMillis
--   are considered and used as a container for aggregated data.
bbsMinDurationMillis :: Lens' BucketBySession (Maybe Int64)

-- | 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.
--   
--   <i>See:</i> <a>dataPoint</a> smart constructor.
data DataPoint

-- | Creates a value of <a>DataPoint</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dpOriginDataSourceId</a></li>
--   <li><a>dpRawTimestampNanos</a></li>
--   <li><a>dpDataTypeName</a></li>
--   <li><a>dpValue</a></li>
--   <li><a>dpComputationTimeMillis</a></li>
--   <li><a>dpEndTimeNanos</a></li>
--   <li><a>dpModifiedTimeMillis</a></li>
--   <li><a>dpStartTimeNanos</a></li>
--   </ul>
dataPoint :: DataPoint

-- | 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.
dpOriginDataSourceId :: Lens' DataPoint (Maybe Text)

-- | The raw timestamp from the original SensorEvent.
dpRawTimestampNanos :: Lens' DataPoint (Maybe Int64)

-- | The data type defining the format of the values in this data point.
dpDataTypeName :: Lens' DataPoint (Maybe Text)

-- | 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.
dpValue :: Lens' DataPoint [Value]

-- | Used for version checking during transformation; that is, a datapoint
--   can only replace another datapoint that has an older computation time
--   stamp.
dpComputationTimeMillis :: Lens' DataPoint (Maybe Int64)

-- | The end time of the interval represented by this data point, in
--   nanoseconds since epoch.
dpEndTimeNanos :: Lens' DataPoint (Maybe Int64)

-- | 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.
dpModifiedTimeMillis :: Lens' DataPoint (Maybe Int64)

-- | The start time of the interval represented by this data point, in
--   nanoseconds since epoch.
dpStartTimeNanos :: Lens' DataPoint (Maybe Int64)
data ListSessionsResponse

-- | Creates a value of <a>ListSessionsResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsrNextPageToken</a></li>
--   <li><a>lsrDeletedSession</a></li>
--   <li><a>lsrHasMoreData</a></li>
--   <li><a>lsrSession</a></li>
--   </ul>
listSessionsResponse :: ListSessionsResponse

-- | 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.
lsrNextPageToken :: Lens' ListSessionsResponse (Maybe Text)

-- | 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.
lsrDeletedSession :: Lens' ListSessionsResponse [Session]

-- | Flag to indicate server has more data to transfer
lsrHasMoreData :: Lens' ListSessionsResponse (Maybe Bool)

-- | Sessions with an end time that is between startTime and endTime of the
--   request.
lsrSession :: Lens' ListSessionsResponse [Session]
data AggregateBucket

-- | Creates a value of <a>AggregateBucket</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>abEndTimeMillis</a></li>
--   <li><a>abDataSet</a></li>
--   <li><a>abActivity</a></li>
--   <li><a>abType</a></li>
--   <li><a>abStartTimeMillis</a></li>
--   <li><a>abSession</a></li>
--   </ul>
aggregateBucket :: AggregateBucket

-- | The end time for the aggregated data, in milliseconds since epoch,
--   inclusive.
abEndTimeMillis :: Lens' AggregateBucket (Maybe Int64)

-- | There will be one dataset per AggregateBy in the request.
abDataSet :: Lens' AggregateBucket [DataSet]

-- | Available for Bucket.Type.ACTIVITY_TYPE, Bucket.Type.ACTIVITY_SEGMENT
abActivity :: Lens' AggregateBucket (Maybe Int32)

-- | The type of a bucket signifies how the data aggregation is performed
--   in the bucket.
abType :: Lens' AggregateBucket (Maybe AggregateBucketType)

-- | The start time for the aggregated data, in milliseconds since epoch,
--   inclusive.
abStartTimeMillis :: Lens' AggregateBucket (Maybe Int64)

-- | Available for Bucket.Type.SESSION
abSession :: Lens' AggregateBucket (Maybe Session)

-- | 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.
--   
--   <i>See:</i> <a>mapValue</a> smart constructor.
data MapValue

-- | Creates a value of <a>MapValue</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mvFpVal</a></li>
--   </ul>
mapValue :: MapValue

-- | Floating point value.
mvFpVal :: Lens' MapValue (Maybe Double)
data ListDataSourcesResponse

-- | Creates a value of <a>ListDataSourcesResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ldsrDataSource</a></li>
--   </ul>
listDataSourcesResponse :: ListDataSourcesResponse

-- | A previously created data source.
ldsrDataSource :: Lens' ListDataSourcesResponse [DataSource]

-- | 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.
--   
--   <i>See:</i> <a>dataTypeField</a> smart constructor.
data DataTypeField

-- | Creates a value of <a>DataTypeField</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtfFormat</a></li>
--   <li><a>dtfName</a></li>
--   <li><a>dtfOptional</a></li>
--   </ul>
dataTypeField :: DataTypeField

-- | The different supported formats for each field in a data type.
dtfFormat :: Lens' DataTypeField (Maybe DataTypeFieldFormat)

-- | 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.
dtfName :: Lens' DataTypeField (Maybe Text)
dtfOptional :: Lens' DataTypeField (Maybe Bool)
data AggregateRequestFilteredDataQualityStandardItem

-- | <pre>
--   dataQualityBloodGlucoseIso151972003
--   </pre>
DATAQUALITYBLOODGLUCOSEISO151972003 :: AggregateRequestFilteredDataQualityStandardItem

-- | <pre>
--   dataQualityBloodGlucoseIso151972013
--   </pre>
DATAQUALITYBLOODGLUCOSEISO151972013 :: AggregateRequestFilteredDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureAami
--   </pre>
DataQualityBloodPressureAami :: AggregateRequestFilteredDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureBhsAA
--   </pre>
DataQualityBloodPressureBhsAA :: AggregateRequestFilteredDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureBhsAB
--   </pre>
DataQualityBloodPressureBhsAB :: AggregateRequestFilteredDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureBhsBA
--   </pre>
DataQualityBloodPressureBhsBA :: AggregateRequestFilteredDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureBhsBB
--   </pre>
DataQualityBloodPressureBhsBB :: AggregateRequestFilteredDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureEsh2002
--   </pre>
DATAQUALITYBLOODPRESSUREESH2002 :: AggregateRequestFilteredDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureEsh2010
--   </pre>
DATAQUALITYBLOODPRESSUREESH2010 :: AggregateRequestFilteredDataQualityStandardItem

-- | <pre>
--   dataQualityUnknown
--   </pre>
DataQualityUnknown :: AggregateRequestFilteredDataQualityStandardItem

-- | 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.
--   
--   <i>See:</i> <a>dataSource</a> smart constructor.
data DataSource

-- | Creates a value of <a>DataSource</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dsApplication</a></li>
--   <li><a>dsDevice</a></li>
--   <li><a>dsDataQualityStandard</a></li>
--   <li><a>dsName</a></li>
--   <li><a>dsDataType</a></li>
--   <li><a>dsType</a></li>
--   <li><a>dsDataStreamName</a></li>
--   <li><a>dsDataStreamId</a></li>
--   </ul>
dataSource :: DataSource

-- | Information about an application which feeds sensor data into the
--   platform.
dsApplication :: Lens' DataSource (Maybe Application)

-- | Representation of an integrated device (such as a phone or a wearable)
--   that can hold sensors.
dsDevice :: Lens' DataSource (Maybe Device)
dsDataQualityStandard :: Lens' DataSource [DataSourceDataQualityStandardItem]

-- | An end-user visible name for this data source.
dsName :: Lens' DataSource (Maybe Text)

-- | The data type defines the schema for a stream of data being collected
--   by, inserted into, or queried from the Fitness API.
dsDataType :: Lens' DataSource (Maybe DataType)

-- | A constant describing the type of this data source. Indicates whether
--   this data source produces raw or derived data.
dsType :: Lens' DataSource (Maybe DataSourceType)

-- | 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.
dsDataStreamName :: Lens' DataSource (Maybe Text)

-- | 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 minnimum
--   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.
dsDataStreamId :: Lens' DataSource (Maybe Text)
data BucketByTimePeriod

-- | Creates a value of <a>BucketByTimePeriod</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bbtpValue</a></li>
--   <li><a>bbtpType</a></li>
--   <li><a>bbtpTimeZoneId</a></li>
--   </ul>
bucketByTimePeriod :: BucketByTimePeriod
bbtpValue :: Lens' BucketByTimePeriod (Maybe Int32)
bbtpType :: Lens' BucketByTimePeriod (Maybe BucketByTimePeriodType)

-- | org.joda.timezone.DateTimeZone
bbtpTimeZoneId :: Lens' BucketByTimePeriod (Maybe Text)

-- | A constant representing the type of the device.
data DeviceType

-- | <pre>
--   chestStrap
--   </pre>
ChestStrap :: DeviceType

-- | <pre>
--   headMounted
--   </pre>
HeadMounted :: DeviceType

-- | <pre>
--   phone
--   </pre>
Phone :: DeviceType

-- | <pre>
--   scale
--   </pre>
Scale :: DeviceType

-- | <pre>
--   tablet
--   </pre>
Tablet :: DeviceType

-- | <pre>
--   unknown
--   </pre>
Unknown :: DeviceType

-- | <pre>
--   watch
--   </pre>
Watch :: DeviceType
data ValueMapValEntry

-- | Creates a value of <a>ValueMapValEntry</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>vmveValue</a></li>
--   <li><a>vmveKey</a></li>
--   </ul>
valueMapValEntry :: ValueMapValEntry
vmveValue :: Lens' ValueMapValEntry (Maybe MapValue)
vmveKey :: Lens' ValueMapValEntry (Maybe Text)
data BucketByTime

-- | Creates a value of <a>BucketByTime</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>bbtPeriod</a></li>
--   <li><a>bbtDurationMillis</a></li>
--   </ul>
bucketByTime :: BucketByTime
bbtPeriod :: Lens' BucketByTime (Maybe BucketByTimePeriod)

-- | 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.
bbtDurationMillis :: Lens' BucketByTime (Maybe Int64)

-- | <i>See:</i> <a>dataType</a> smart constructor.
data DataType

-- | Creates a value of <a>DataType</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dtField</a></li>
--   <li><a>dtName</a></li>
--   </ul>
dataType :: DataType

-- | A field represents one dimension of a data type.
dtField :: Lens' DataType [DataTypeField]

-- | Each data type has a unique, namespaced, name. All data types in the
--   com.google namespace are shared as part of the platform.
dtName :: Lens' DataType (Maybe Text)

-- | Sessions contain metadata, such as a user-friendly name and time
--   interval information.
--   
--   <i>See:</i> <a>session</a> smart constructor.
data Session

-- | Creates a value of <a>Session</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sEndTimeMillis</a></li>
--   <li><a>sActiveTimeMillis</a></li>
--   <li><a>sApplication</a></li>
--   <li><a>sActivityType</a></li>
--   <li><a>sName</a></li>
--   <li><a>sModifiedTimeMillis</a></li>
--   <li><a>sId</a></li>
--   <li><a>sStartTimeMillis</a></li>
--   <li><a>sDescription</a></li>
--   </ul>
session :: Session

-- | An end time, in milliseconds since epoch, inclusive.
sEndTimeMillis :: Lens' Session (Maybe Int64)

-- | 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
sActiveTimeMillis :: Lens' Session (Maybe Int64)

-- | The application that created the session.
sApplication :: Lens' Session (Maybe Application)

-- | The type of activity this session represents.
sActivityType :: Lens' Session (Maybe Int32)

-- | A human readable name of the session.
sName :: Lens' Session (Maybe Text)

-- | A timestamp that indicates when the session was last modified.
sModifiedTimeMillis :: Lens' Session (Maybe Int64)

-- | A client-generated identifier that is unique across all sessions owned
--   by this particular user.
sId :: Lens' Session (Maybe Text)

-- | A start time, in milliseconds since epoch, inclusive.
sStartTimeMillis :: Lens' Session (Maybe Int64)

-- | A description for this session.
sDescription :: Lens' Session (Maybe Text)
data DataSourceDataQualityStandardItem

-- | <pre>
--   dataQualityBloodGlucoseIso151972003
--   </pre>
DSDQSIDATAQUALITYBLOODGLUCOSEISO151972003 :: DataSourceDataQualityStandardItem

-- | <pre>
--   dataQualityBloodGlucoseIso151972013
--   </pre>
DSDQSIDATAQUALITYBLOODGLUCOSEISO151972013 :: DataSourceDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureAami
--   </pre>
DSDQSIDataQualityBloodPressureAami :: DataSourceDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureBhsAA
--   </pre>
DSDQSIDataQualityBloodPressureBhsAA :: DataSourceDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureBhsAB
--   </pre>
DSDQSIDataQualityBloodPressureBhsAB :: DataSourceDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureBhsBA
--   </pre>
DSDQSIDataQualityBloodPressureBhsBA :: DataSourceDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureBhsBB
--   </pre>
DSDQSIDataQualityBloodPressureBhsBB :: DataSourceDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureEsh2002
--   </pre>
DSDQSIDATAQUALITYBLOODPRESSUREESH2002 :: DataSourceDataQualityStandardItem

-- | <pre>
--   dataQualityBloodPressureEsh2010
--   </pre>
DSDQSIDATAQUALITYBLOODPRESSUREESH2010 :: DataSourceDataQualityStandardItem

-- | <pre>
--   dataQualityUnknown
--   </pre>
DSDQSIDataQualityUnknown :: DataSourceDataQualityStandardItem

-- | The different supported formats for each field in a data type.
data DataTypeFieldFormat

-- | <pre>
--   blob
--   </pre>
Blob :: DataTypeFieldFormat

-- | <pre>
--   floatList
--   </pre>
FloatList :: DataTypeFieldFormat

-- | <pre>
--   floatPoint
--   </pre>
FloatPoint :: DataTypeFieldFormat

-- | <pre>
--   integer
--   </pre>
Integer :: DataTypeFieldFormat

-- | <pre>
--   integerList
--   </pre>
IntegerList :: DataTypeFieldFormat

-- | <pre>
--   map
--   </pre>
Map :: DataTypeFieldFormat

-- | <pre>
--   string
--   </pre>
String :: DataTypeFieldFormat
