diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`0.5.0`
+`1.0.0`
 
 
 ## Description
diff --git a/Setup.hs b/Setup.hs
--- a/Setup.hs
+++ b/Setup.hs
@@ -1,2 +1,3 @@
-import           Distribution.Simple
+import Distribution.Simple
+
 main = defaultMain
diff --git a/gen/Gogol/Fitness.hs b/gen/Gogol/Fitness.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Fitness.hs
@@ -0,0 +1,254 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Fitness
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- The Fitness API for managing users\' fitness tracking data.
+--
+-- /See:/ <https://developers.google.com/fit/rest/v1/get-started Fitness API Reference>
+module Gogol.Fitness
+  ( -- * Configuration
+    fitnessService,
+
+    -- * OAuth Scopes
+    Fitness'Activity'Read,
+    Fitness'Activity'Write,
+    Fitness'BloodGlucose'Read,
+    Fitness'BloodGlucose'Write,
+    Fitness'BloodPressure'Read,
+    Fitness'BloodPressure'Write,
+    Fitness'Body'Read,
+    Fitness'Body'Write,
+    Fitness'BodyTemperature'Read,
+    Fitness'BodyTemperature'Write,
+    Fitness'HeartRate'Read,
+    Fitness'HeartRate'Write,
+    Fitness'Location'Read,
+    Fitness'Location'Write,
+    Fitness'Nutrition'Read,
+    Fitness'Nutrition'Write,
+    Fitness'OxygenSaturation'Read,
+    Fitness'OxygenSaturation'Write,
+    Fitness'ReproductiveHealth'Read,
+    Fitness'ReproductiveHealth'Write,
+    Fitness'Sleep'Read,
+    Fitness'Sleep'Write,
+
+    -- * Resources
+
+    -- ** fitness.users.dataSources.create
+    FitnessUsersDataSourcesCreateResource,
+    FitnessUsersDataSourcesCreate (..),
+    newFitnessUsersDataSourcesCreate,
+
+    -- ** fitness.users.dataSources.dataPointChanges.list
+    FitnessUsersDataSourcesDataPointChangesListResource,
+    FitnessUsersDataSourcesDataPointChangesList (..),
+    newFitnessUsersDataSourcesDataPointChangesList,
+
+    -- ** fitness.users.dataSources.datasets.delete
+    FitnessUsersDataSourcesDatasetsDeleteResource,
+    FitnessUsersDataSourcesDatasetsDelete (..),
+    newFitnessUsersDataSourcesDatasetsDelete,
+
+    -- ** fitness.users.dataSources.datasets.get
+    FitnessUsersDataSourcesDatasetsGetResource,
+    FitnessUsersDataSourcesDatasetsGet (..),
+    newFitnessUsersDataSourcesDatasetsGet,
+
+    -- ** fitness.users.dataSources.datasets.patch
+    FitnessUsersDataSourcesDatasetsPatchResource,
+    FitnessUsersDataSourcesDatasetsPatch (..),
+    newFitnessUsersDataSourcesDatasetsPatch,
+
+    -- ** fitness.users.dataSources.delete
+    FitnessUsersDataSourcesDeleteResource,
+    FitnessUsersDataSourcesDelete (..),
+    newFitnessUsersDataSourcesDelete,
+
+    -- ** fitness.users.dataSources.get
+    FitnessUsersDataSourcesGetResource,
+    FitnessUsersDataSourcesGet (..),
+    newFitnessUsersDataSourcesGet,
+
+    -- ** fitness.users.dataSources.list
+    FitnessUsersDataSourcesListResource,
+    FitnessUsersDataSourcesList (..),
+    newFitnessUsersDataSourcesList,
+
+    -- ** fitness.users.dataSources.update
+    FitnessUsersDataSourcesUpdateResource,
+    FitnessUsersDataSourcesUpdate (..),
+    newFitnessUsersDataSourcesUpdate,
+
+    -- ** fitness.users.dataset.aggregate
+    FitnessUsersDatasetAggregateResource,
+    FitnessUsersDatasetAggregate (..),
+    newFitnessUsersDatasetAggregate,
+
+    -- ** fitness.users.sessions.delete
+    FitnessUsersSessionsDeleteResource,
+    FitnessUsersSessionsDelete (..),
+    newFitnessUsersSessionsDelete,
+
+    -- ** fitness.users.sessions.list
+    FitnessUsersSessionsListResource,
+    FitnessUsersSessionsList (..),
+    newFitnessUsersSessionsList,
+
+    -- ** fitness.users.sessions.update
+    FitnessUsersSessionsUpdateResource,
+    FitnessUsersSessionsUpdate (..),
+    newFitnessUsersSessionsUpdate,
+
+    -- * Types
+
+    -- ** Xgafv
+    Xgafv (..),
+
+    -- ** AggregateBucket
+    AggregateBucket (..),
+    newAggregateBucket,
+
+    -- ** AggregateBucket_Type
+    AggregateBucket_Type (..),
+
+    -- ** AggregateBy
+    AggregateBy (..),
+    newAggregateBy,
+
+    -- ** AggregateRequest
+    AggregateRequest (..),
+    newAggregateRequest,
+
+    -- ** AggregateRequest_FilteredDataQualityStandardItem
+    AggregateRequest_FilteredDataQualityStandardItem (..),
+
+    -- ** AggregateResponse
+    AggregateResponse (..),
+    newAggregateResponse,
+
+    -- ** Application
+    Application (..),
+    newApplication,
+
+    -- ** BucketByActivity
+    BucketByActivity (..),
+    newBucketByActivity,
+
+    -- ** BucketBySession
+    BucketBySession (..),
+    newBucketBySession,
+
+    -- ** BucketByTime
+    BucketByTime (..),
+    newBucketByTime,
+
+    -- ** BucketByTimePeriod
+    BucketByTimePeriod (..),
+    newBucketByTimePeriod,
+
+    -- ** BucketByTimePeriod_Type
+    BucketByTimePeriod_Type (..),
+
+    -- ** DataPoint
+    DataPoint (..),
+    newDataPoint,
+
+    -- ** DataSource
+    DataSource (..),
+    newDataSource,
+
+    -- ** DataSource_DataQualityStandardItem
+    DataSource_DataQualityStandardItem (..),
+
+    -- ** DataSource_Type
+    DataSource_Type (..),
+
+    -- ** DataType
+    DataType (..),
+    newDataType,
+
+    -- ** DataTypeField
+    DataTypeField (..),
+    newDataTypeField,
+
+    -- ** DataTypeField_Format
+    DataTypeField_Format (..),
+
+    -- ** Dataset
+    Dataset (..),
+    newDataset,
+
+    -- ** Device
+    Device (..),
+    newDevice,
+
+    -- ** Device_Type
+    Device_Type (..),
+
+    -- ** ListDataPointChangesResponse
+    ListDataPointChangesResponse (..),
+    newListDataPointChangesResponse,
+
+    -- ** ListDataSourcesResponse
+    ListDataSourcesResponse (..),
+    newListDataSourcesResponse,
+
+    -- ** ListSessionsResponse
+    ListSessionsResponse (..),
+    newListSessionsResponse,
+
+    -- ** MapValue
+    MapValue (..),
+    newMapValue,
+
+    -- ** Session
+    Session (..),
+    newSession,
+
+    -- ** Value
+    Value (..),
+    newValue,
+
+    -- ** ValueMapValEntry
+    ValueMapValEntry (..),
+    newValueMapValEntry,
+  )
+where
+
+import Gogol.Fitness.Types
+import Gogol.Fitness.Users.DataSources.Create
+import Gogol.Fitness.Users.DataSources.DataPointChanges.List
+import Gogol.Fitness.Users.DataSources.Datasets.Delete
+import Gogol.Fitness.Users.DataSources.Datasets.Get
+import Gogol.Fitness.Users.DataSources.Datasets.Patch
+import Gogol.Fitness.Users.DataSources.Delete
+import Gogol.Fitness.Users.DataSources.Get
+import Gogol.Fitness.Users.DataSources.List
+import Gogol.Fitness.Users.DataSources.Update
+import Gogol.Fitness.Users.Dataset.Aggregate
+import Gogol.Fitness.Users.Sessions.Delete
+import Gogol.Fitness.Users.Sessions.List
+import Gogol.Fitness.Users.Sessions.Update
diff --git a/gen/Gogol/Fitness/Internal/Product.hs b/gen/Gogol/Fitness/Internal/Product.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Fitness/Internal/Product.hs
@@ -0,0 +1,1172 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Fitness.Internal.Product
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Gogol.Fitness.Internal.Product
+  ( -- * AggregateBucket
+    AggregateBucket (..),
+    newAggregateBucket,
+
+    -- * AggregateBy
+    AggregateBy (..),
+    newAggregateBy,
+
+    -- * AggregateRequest
+    AggregateRequest (..),
+    newAggregateRequest,
+
+    -- * AggregateResponse
+    AggregateResponse (..),
+    newAggregateResponse,
+
+    -- * Application
+    Application (..),
+    newApplication,
+
+    -- * BucketByActivity
+    BucketByActivity (..),
+    newBucketByActivity,
+
+    -- * BucketBySession
+    BucketBySession (..),
+    newBucketBySession,
+
+    -- * BucketByTime
+    BucketByTime (..),
+    newBucketByTime,
+
+    -- * BucketByTimePeriod
+    BucketByTimePeriod (..),
+    newBucketByTimePeriod,
+
+    -- * DataPoint
+    DataPoint (..),
+    newDataPoint,
+
+    -- * DataSource
+    DataSource (..),
+    newDataSource,
+
+    -- * DataType
+    DataType (..),
+    newDataType,
+
+    -- * DataTypeField
+    DataTypeField (..),
+    newDataTypeField,
+
+    -- * Dataset
+    Dataset (..),
+    newDataset,
+
+    -- * Device
+    Device (..),
+    newDevice,
+
+    -- * ListDataPointChangesResponse
+    ListDataPointChangesResponse (..),
+    newListDataPointChangesResponse,
+
+    -- * ListDataSourcesResponse
+    ListDataSourcesResponse (..),
+    newListDataSourcesResponse,
+
+    -- * ListSessionsResponse
+    ListSessionsResponse (..),
+    newListSessionsResponse,
+
+    -- * MapValue
+    MapValue (..),
+    newMapValue,
+
+    -- * Session
+    Session (..),
+    newSession,
+
+    -- * Value
+    Value (..),
+    newValue,
+
+    -- * ValueMapValEntry
+    ValueMapValEntry (..),
+    newValueMapValEntry,
+  )
+where
+
+import Gogol.Fitness.Internal.Sum
+import Gogol.Prelude qualified as Core
+
+--
+-- /See:/ 'newAggregateBucket' smart constructor.
+data AggregateBucket = AggregateBucket
+  { -- | Available for Bucket.Type.ACTIVITY/TYPE, Bucket.Type.ACTIVITY/SEGMENT
+    activity :: (Core.Maybe Core.Int32),
+    -- | There will be one dataset per AggregateBy in the request.
+    dataset :: (Core.Maybe [Dataset]),
+    -- | The end time for the aggregated data, in milliseconds since epoch, inclusive.
+    endTimeMillis :: (Core.Maybe Core.Int64),
+    -- | Available for Bucket.Type.SESSION
+    session :: (Core.Maybe Session),
+    -- | The start time for the aggregated data, in milliseconds since epoch, inclusive.
+    startTimeMillis :: (Core.Maybe Core.Int64),
+    -- | The type of a bucket signifies how the data aggregation is performed in the bucket.
+    type' :: (Core.Maybe AggregateBucket_Type)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AggregateBucket' with the minimum fields required to make a request.
+newAggregateBucket ::
+  AggregateBucket
+newAggregateBucket =
+  AggregateBucket
+    { activity = Core.Nothing,
+      dataset = Core.Nothing,
+      endTimeMillis = Core.Nothing,
+      session = Core.Nothing,
+      startTimeMillis = Core.Nothing,
+      type' = Core.Nothing
+    }
+
+instance Core.FromJSON AggregateBucket where
+  parseJSON =
+    Core.withObject
+      "AggregateBucket"
+      ( \o ->
+          AggregateBucket
+            Core.<$> (o Core..:? "activity")
+            Core.<*> (o Core..:? "dataset")
+            Core.<*> (o Core..:? "endTimeMillis" Core.<&> Core.fmap Core.fromAsText)
+            Core.<*> (o Core..:? "session")
+            Core.<*> (o Core..:? "startTimeMillis" Core.<&> Core.fmap Core.fromAsText)
+            Core.<*> (o Core..:? "type")
+      )
+
+instance Core.ToJSON AggregateBucket where
+  toJSON AggregateBucket {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("activity" Core..=) Core.<$> activity,
+            ("dataset" Core..=) Core.<$> dataset,
+            ("endTimeMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> endTimeMillis,
+            ("session" Core..=) Core.<$> session,
+            ("startTimeMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> startTimeMillis,
+            ("type" Core..=) Core.<$> type'
+          ]
+      )
+
+-- | The specification of which data to aggregate.
+--
+-- /See:/ 'newAggregateBy' smart constructor.
+data AggregateBy = AggregateBy
+  { -- | A data source ID to aggregate. Only data from the specified data source ID will be included in the aggregation. If specified, this data source must exist; the OAuth scopes in the supplied credentials must grant read access to this data type. The dataset in the response will have the same data source ID. Note: Data can be aggregated by either the dataTypeName or the dataSourceId, not both.
+    dataSourceId :: (Core.Maybe Core.Text),
+    -- | The data type to aggregate. All data sources providing this data type will contribute data to the aggregation. The response will contain a single dataset for this data type name. The dataset will have a data source ID of derived::com.google.android.gms:aggregated. If the user has no data for this data type, an empty data set will be returned. Note: Data can be aggregated by either the dataTypeName or the dataSourceId, not both.
+    dataTypeName :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AggregateBy' with the minimum fields required to make a request.
+newAggregateBy ::
+  AggregateBy
+newAggregateBy =
+  AggregateBy
+    { dataSourceId = Core.Nothing,
+      dataTypeName = Core.Nothing
+    }
+
+instance Core.FromJSON AggregateBy where
+  parseJSON =
+    Core.withObject
+      "AggregateBy"
+      ( \o ->
+          AggregateBy
+            Core.<$> (o Core..:? "dataSourceId")
+            Core.<*> (o Core..:? "dataTypeName")
+      )
+
+instance Core.ToJSON AggregateBy where
+  toJSON AggregateBy {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataSourceId" Core..=) Core.<$> dataSourceId,
+            ("dataTypeName" Core..=) Core.<$> dataTypeName
+          ]
+      )
+
+-- | Next id: 10
+--
+-- /See:/ 'newAggregateRequest' smart constructor.
+data AggregateRequest = AggregateRequest
+  { -- | 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.
+    aggregateBy :: (Core.Maybe [AggregateBy]),
+    -- | Specifies that data be aggregated each activity segment recorded 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.
+    bucketByActivitySegment :: (Core.Maybe BucketByActivity),
+    -- | 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.
+    bucketByActivityType :: (Core.Maybe BucketByActivity),
+    -- | 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.
+    bucketBySession :: (Core.Maybe BucketBySession),
+    -- | Specifies that data be aggregated by a single time interval. Mutually exclusive of other bucketing specifications.
+    bucketByTime :: (Core.Maybe BucketByTime),
+    -- | 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. The maximum allowed difference between start/time/millis \/\/ and end/time/millis is 7776000000 (roughly 90 days).
+    endTimeMillis :: (Core.Maybe Core.Int64),
+    -- | DO NOT POPULATE THIS FIELD. It is ignored.
+    filteredDataQualityStandard :: (Core.Maybe [AggregateRequest_FilteredDataQualityStandardItem]),
+    -- | 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.
+    startTimeMillis :: (Core.Maybe Core.Int64)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AggregateRequest' with the minimum fields required to make a request.
+newAggregateRequest ::
+  AggregateRequest
+newAggregateRequest =
+  AggregateRequest
+    { aggregateBy = Core.Nothing,
+      bucketByActivitySegment = Core.Nothing,
+      bucketByActivityType = Core.Nothing,
+      bucketBySession = Core.Nothing,
+      bucketByTime = Core.Nothing,
+      endTimeMillis = Core.Nothing,
+      filteredDataQualityStandard = Core.Nothing,
+      startTimeMillis = Core.Nothing
+    }
+
+instance Core.FromJSON AggregateRequest where
+  parseJSON =
+    Core.withObject
+      "AggregateRequest"
+      ( \o ->
+          AggregateRequest
+            Core.<$> (o Core..:? "aggregateBy")
+            Core.<*> (o Core..:? "bucketByActivitySegment")
+            Core.<*> (o Core..:? "bucketByActivityType")
+            Core.<*> (o Core..:? "bucketBySession")
+            Core.<*> (o Core..:? "bucketByTime")
+            Core.<*> (o Core..:? "endTimeMillis" Core.<&> Core.fmap Core.fromAsText)
+            Core.<*> (o Core..:? "filteredDataQualityStandard")
+            Core.<*> (o Core..:? "startTimeMillis" Core.<&> Core.fmap Core.fromAsText)
+      )
+
+instance Core.ToJSON AggregateRequest where
+  toJSON AggregateRequest {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("aggregateBy" Core..=) Core.<$> aggregateBy,
+            ("bucketByActivitySegment" Core..=)
+              Core.<$> bucketByActivitySegment,
+            ("bucketByActivityType" Core..=) Core.<$> bucketByActivityType,
+            ("bucketBySession" Core..=) Core.<$> bucketBySession,
+            ("bucketByTime" Core..=) Core.<$> bucketByTime,
+            ("endTimeMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> endTimeMillis,
+            ("filteredDataQualityStandard" Core..=)
+              Core.<$> filteredDataQualityStandard,
+            ("startTimeMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> startTimeMillis
+          ]
+      )
+
+--
+-- /See:/ 'newAggregateResponse' smart constructor.
+newtype AggregateResponse = AggregateResponse
+  { -- | A list of buckets containing the aggregated data.
+    bucket :: (Core.Maybe [AggregateBucket])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'AggregateResponse' with the minimum fields required to make a request.
+newAggregateResponse ::
+  AggregateResponse
+newAggregateResponse = AggregateResponse {bucket = Core.Nothing}
+
+instance Core.FromJSON AggregateResponse where
+  parseJSON =
+    Core.withObject
+      "AggregateResponse"
+      (\o -> AggregateResponse Core.<$> (o Core..:? "bucket"))
+
+instance Core.ToJSON AggregateResponse where
+  toJSON AggregateResponse {..} =
+    Core.object (Core.catMaybes [("bucket" Core..=) Core.<$> bucket])
+
+--
+-- /See:/ 'newApplication' smart constructor.
+data Application = Application
+  { -- | An optional URI that can be used to link back to the application.
+    detailsUrl :: (Core.Maybe Core.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.
+    name :: (Core.Maybe Core.Text),
+    -- | 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.
+    packageName :: (Core.Maybe Core.Text),
+    -- | Version of the application. You should update this field whenever the application changes in a way that affects the computation of the data.
+    version :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Application' with the minimum fields required to make a request.
+newApplication ::
+  Application
+newApplication =
+  Application
+    { detailsUrl = Core.Nothing,
+      name = Core.Nothing,
+      packageName = Core.Nothing,
+      version = Core.Nothing
+    }
+
+instance Core.FromJSON Application where
+  parseJSON =
+    Core.withObject
+      "Application"
+      ( \o ->
+          Application
+            Core.<$> (o Core..:? "detailsUrl")
+            Core.<*> (o Core..:? "name")
+            Core.<*> (o Core..:? "packageName")
+            Core.<*> (o Core..:? "version")
+      )
+
+instance Core.ToJSON Application where
+  toJSON Application {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("detailsUrl" Core..=) Core.<$> detailsUrl,
+            ("name" Core..=) Core.<$> name,
+            ("packageName" Core..=) Core.<$> packageName,
+            ("version" Core..=) Core.<$> version
+          ]
+      )
+
+--
+-- /See:/ 'newBucketByActivity' smart constructor.
+data BucketByActivity = BucketByActivity
+  { -- | The default activity stream will be used if a specific activityDataSourceId is not specified.
+    activityDataSourceId :: (Core.Maybe Core.Text),
+    -- | Specifies that only activity segments of duration longer than minDurationMillis are considered and used as a container for aggregated data.
+    minDurationMillis :: (Core.Maybe Core.Int64)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BucketByActivity' with the minimum fields required to make a request.
+newBucketByActivity ::
+  BucketByActivity
+newBucketByActivity =
+  BucketByActivity
+    { activityDataSourceId = Core.Nothing,
+      minDurationMillis = Core.Nothing
+    }
+
+instance Core.FromJSON BucketByActivity where
+  parseJSON =
+    Core.withObject
+      "BucketByActivity"
+      ( \o ->
+          BucketByActivity
+            Core.<$> (o Core..:? "activityDataSourceId")
+            Core.<*> ( o
+                         Core..:? "minDurationMillis"
+                         Core.<&> Core.fmap Core.fromAsText
+                     )
+      )
+
+instance Core.ToJSON BucketByActivity where
+  toJSON BucketByActivity {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("activityDataSourceId" Core..=) Core.<$> activityDataSourceId,
+            ("minDurationMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> minDurationMillis
+          ]
+      )
+
+--
+-- /See:/ 'newBucketBySession' smart constructor.
+newtype BucketBySession = BucketBySession
+  { -- | Specifies that only sessions of duration longer than minDurationMillis are considered and used as a container for aggregated data.
+    minDurationMillis :: (Core.Maybe Core.Int64)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BucketBySession' with the minimum fields required to make a request.
+newBucketBySession ::
+  BucketBySession
+newBucketBySession =
+  BucketBySession {minDurationMillis = Core.Nothing}
+
+instance Core.FromJSON BucketBySession where
+  parseJSON =
+    Core.withObject
+      "BucketBySession"
+      ( \o ->
+          BucketBySession
+            Core.<$> ( o
+                         Core..:? "minDurationMillis"
+                         Core.<&> Core.fmap Core.fromAsText
+                     )
+      )
+
+instance Core.ToJSON BucketBySession where
+  toJSON BucketBySession {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("minDurationMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> minDurationMillis
+          ]
+      )
+
+--
+-- /See:/ 'newBucketByTime' smart constructor.
+data BucketByTime = BucketByTime
+  { -- | 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.
+    durationMillis :: (Core.Maybe Core.Int64),
+    period :: (Core.Maybe BucketByTimePeriod)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BucketByTime' with the minimum fields required to make a request.
+newBucketByTime ::
+  BucketByTime
+newBucketByTime =
+  BucketByTime
+    { durationMillis = Core.Nothing,
+      period = Core.Nothing
+    }
+
+instance Core.FromJSON BucketByTime where
+  parseJSON =
+    Core.withObject
+      "BucketByTime"
+      ( \o ->
+          BucketByTime
+            Core.<$> (o Core..:? "durationMillis" Core.<&> Core.fmap Core.fromAsText)
+            Core.<*> (o Core..:? "period")
+      )
+
+instance Core.ToJSON BucketByTime where
+  toJSON BucketByTime {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("durationMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> durationMillis,
+            ("period" Core..=) Core.<$> period
+          ]
+      )
+
+--
+-- /See:/ 'newBucketByTimePeriod' smart constructor.
+data BucketByTimePeriod = BucketByTimePeriod
+  { -- | org.joda.timezone.DateTimeZone
+    timeZoneId :: (Core.Maybe Core.Text),
+    type' :: (Core.Maybe BucketByTimePeriod_Type),
+    value :: (Core.Maybe Core.Int32)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'BucketByTimePeriod' with the minimum fields required to make a request.
+newBucketByTimePeriod ::
+  BucketByTimePeriod
+newBucketByTimePeriod =
+  BucketByTimePeriod
+    { timeZoneId = Core.Nothing,
+      type' = Core.Nothing,
+      value = Core.Nothing
+    }
+
+instance Core.FromJSON BucketByTimePeriod where
+  parseJSON =
+    Core.withObject
+      "BucketByTimePeriod"
+      ( \o ->
+          BucketByTimePeriod
+            Core.<$> (o Core..:? "timeZoneId")
+            Core.<*> (o Core..:? "type")
+            Core.<*> (o Core..:? "value")
+      )
+
+instance Core.ToJSON BucketByTimePeriod where
+  toJSON BucketByTimePeriod {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("timeZoneId" Core..=) Core.<$> timeZoneId,
+            ("type" Core..=) Core.<$> type',
+            ("value" Core..=) Core.<$> value
+          ]
+      )
+
+-- | 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.
+--
+-- /See:/ 'newDataPoint' smart constructor.
+data DataPoint = DataPoint
+  { -- | DO NOT USE THIS FIELD. It is ignored, and not stored.
+    computationTimeMillis :: (Core.Maybe Core.Int64),
+    -- | The data type defining the format of the values in this data point.
+    dataTypeName :: (Core.Maybe Core.Text),
+    -- | The end time of the interval represented by this data point, in nanoseconds since epoch.
+    endTimeNanos :: (Core.Maybe Core.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.
+    modifiedTimeMillis :: (Core.Maybe Core.Int64),
+    -- | If the data point is contained in a dataset for a derived data source, this field will be populated with the data source stream ID that created the data point originally. WARNING: do not rely on this field for anything other than debugging. The value of this field, if it is set at all, is an implementation detail and is not guaranteed to remain consistent.
+    originDataSourceId :: (Core.Maybe Core.Text),
+    -- | The raw timestamp from the original SensorEvent.
+    rawTimestampNanos :: (Core.Maybe Core.Int64),
+    -- | The start time of the interval represented by this data point, in nanoseconds since epoch.
+    startTimeNanos :: (Core.Maybe Core.Int64),
+    -- | 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.
+    value :: (Core.Maybe [Value])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataPoint' with the minimum fields required to make a request.
+newDataPoint ::
+  DataPoint
+newDataPoint =
+  DataPoint
+    { computationTimeMillis = Core.Nothing,
+      dataTypeName = Core.Nothing,
+      endTimeNanos = Core.Nothing,
+      modifiedTimeMillis = Core.Nothing,
+      originDataSourceId = Core.Nothing,
+      rawTimestampNanos = Core.Nothing,
+      startTimeNanos = Core.Nothing,
+      value = Core.Nothing
+    }
+
+instance Core.FromJSON DataPoint where
+  parseJSON =
+    Core.withObject
+      "DataPoint"
+      ( \o ->
+          DataPoint
+            Core.<$> ( o
+                         Core..:? "computationTimeMillis"
+                         Core.<&> Core.fmap Core.fromAsText
+                     )
+            Core.<*> (o Core..:? "dataTypeName")
+            Core.<*> (o Core..:? "endTimeNanos" Core.<&> Core.fmap Core.fromAsText)
+            Core.<*> ( o
+                         Core..:? "modifiedTimeMillis"
+                         Core.<&> Core.fmap Core.fromAsText
+                     )
+            Core.<*> (o Core..:? "originDataSourceId")
+            Core.<*> (o Core..:? "rawTimestampNanos" Core.<&> Core.fmap Core.fromAsText)
+            Core.<*> (o Core..:? "startTimeNanos" Core.<&> Core.fmap Core.fromAsText)
+            Core.<*> (o Core..:? "value")
+      )
+
+instance Core.ToJSON DataPoint where
+  toJSON DataPoint {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("computationTimeMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> computationTimeMillis,
+            ("dataTypeName" Core..=) Core.<$> dataTypeName,
+            ("endTimeNanos" Core..=) Core.. Core.AsText Core.<$> endTimeNanos,
+            ("modifiedTimeMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> modifiedTimeMillis,
+            ("originDataSourceId" Core..=) Core.<$> originDataSourceId,
+            ("rawTimestampNanos" Core..=)
+              Core.. Core.AsText
+              Core.<$> rawTimestampNanos,
+            ("startTimeNanos" Core..=)
+              Core.. Core.AsText
+              Core.<$> startTimeNanos,
+            ("value" Core..=) Core.<$> value
+          ]
+      )
+
+-- | 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.
+--
+-- /See:/ 'newDataSource' smart constructor.
+data DataSource = DataSource
+  { -- | Information about an application which feeds sensor data into the platform.
+    application :: (Core.Maybe Application),
+    -- | DO NOT POPULATE THIS FIELD. It is never populated in responses from the platform, and is ignored in queries. It will be removed in a future version entirely.
+    dataQualityStandard :: (Core.Maybe [DataSource_DataQualityStandardItem]),
+    -- | A unique identifier for the data stream produced by this data source. The identifier includes: - The physical device\'s manufacturer, model, and serial number (UID). - The application\'s package name or name. Package name is used when the data source was created by an Android application. The developer project number is used when the data source was created by a REST client. - The data source\'s type. - The data source\'s stream name. Note that not all attributes of the data source are used as part of the stream identifier. In particular, the version of the hardware\/the application isn\'t used. This allows us to preserve the same stream through version updates. This also means that two DataSource objects may represent the same data stream even if they\'re not equal. The exact format of the data stream ID created by an Android application is: type:dataType.name:application.packageName:device.manufacturer:device.model:device.uid:dataStreamName The exact format of the data stream ID created by a REST client is:
+    -- type:dataType.name:developer project number:device.manufacturer:device.model:device.uid:dataStreamName When any of the optional fields that make up the data stream ID are absent, they will be omitted from the data stream ID. The minimum viable data stream ID would be: type:dataType.name:developer project number Finally, the developer project number and device UID are obfuscated when read by any REST or Android client that did not create the data source. Only the data source creator will see the developer project number in clear and normal form. This means a client will see a different set of data/stream/ids than another client with different credentials.
+    dataStreamId :: (Core.Maybe Core.Text),
+    -- | 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.
+    dataStreamName :: (Core.Maybe Core.Text),
+    -- | The data type defines the schema for a stream of data being collected by, inserted into, or queried from the Fitness API.
+    dataType :: (Core.Maybe DataType),
+    -- | Representation of an integrated device (such as a phone or a wearable) that can hold sensors.
+    device :: (Core.Maybe Device),
+    -- | An end-user visible name for this data source.
+    name :: (Core.Maybe Core.Text),
+    -- | A constant describing the type of this data source. Indicates whether this data source produces raw or derived data.
+    type' :: (Core.Maybe DataSource_Type)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataSource' with the minimum fields required to make a request.
+newDataSource ::
+  DataSource
+newDataSource =
+  DataSource
+    { application = Core.Nothing,
+      dataQualityStandard = Core.Nothing,
+      dataStreamId = Core.Nothing,
+      dataStreamName = Core.Nothing,
+      dataType = Core.Nothing,
+      device = Core.Nothing,
+      name = Core.Nothing,
+      type' = Core.Nothing
+    }
+
+instance Core.FromJSON DataSource where
+  parseJSON =
+    Core.withObject
+      "DataSource"
+      ( \o ->
+          DataSource
+            Core.<$> (o Core..:? "application")
+            Core.<*> (o Core..:? "dataQualityStandard")
+            Core.<*> (o Core..:? "dataStreamId")
+            Core.<*> (o Core..:? "dataStreamName")
+            Core.<*> (o Core..:? "dataType")
+            Core.<*> (o Core..:? "device")
+            Core.<*> (o Core..:? "name")
+            Core.<*> (o Core..:? "type")
+      )
+
+instance Core.ToJSON DataSource where
+  toJSON DataSource {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("application" Core..=) Core.<$> application,
+            ("dataQualityStandard" Core..=) Core.<$> dataQualityStandard,
+            ("dataStreamId" Core..=) Core.<$> dataStreamId,
+            ("dataStreamName" Core..=) Core.<$> dataStreamName,
+            ("dataType" Core..=) Core.<$> dataType,
+            ("device" Core..=) Core.<$> device,
+            ("name" Core..=) Core.<$> name,
+            ("type" Core..=) Core.<$> type'
+          ]
+      )
+
+--
+-- /See:/ 'newDataType' smart constructor.
+data DataType = DataType
+  { -- | A field represents one dimension of a data type.
+    field :: (Core.Maybe [DataTypeField]),
+    -- | Each data type has a unique, namespaced, name. All data types in the com.google namespace are shared as part of the platform.
+    name :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataType' with the minimum fields required to make a request.
+newDataType ::
+  DataType
+newDataType = DataType {field = Core.Nothing, name = Core.Nothing}
+
+instance Core.FromJSON DataType where
+  parseJSON =
+    Core.withObject
+      "DataType"
+      ( \o ->
+          DataType
+            Core.<$> (o Core..:? "field")
+            Core.<*> (o Core..:? "name")
+      )
+
+instance Core.ToJSON DataType where
+  toJSON DataType {..} =
+    Core.object
+      ( Core.catMaybes
+          [("field" Core..=) Core.<$> field, ("name" Core..=) Core.<$> name]
+      )
+
+-- | 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.
+--
+-- /See:/ 'newDataTypeField' smart constructor.
+data DataTypeField = DataTypeField
+  { -- | The different supported formats for each field in a data type.
+    format :: (Core.Maybe DataTypeField_Format),
+    -- | Defines the name and format of data. Unlike data type names, field names are not namespaced, and only need to be unique within the data type.
+    name :: (Core.Maybe Core.Text),
+    optional :: (Core.Maybe Core.Bool)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'DataTypeField' with the minimum fields required to make a request.
+newDataTypeField ::
+  DataTypeField
+newDataTypeField =
+  DataTypeField
+    { format = Core.Nothing,
+      name = Core.Nothing,
+      optional = Core.Nothing
+    }
+
+instance Core.FromJSON DataTypeField where
+  parseJSON =
+    Core.withObject
+      "DataTypeField"
+      ( \o ->
+          DataTypeField
+            Core.<$> (o Core..:? "format")
+            Core.<*> (o Core..:? "name")
+            Core.<*> (o Core..:? "optional")
+      )
+
+instance Core.ToJSON DataTypeField where
+  toJSON DataTypeField {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("format" Core..=) Core.<$> format,
+            ("name" Core..=) Core.<$> name,
+            ("optional" Core..=) Core.<$> optional
+          ]
+      )
+
+-- | 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.
+--
+-- /See:/ 'newDataset' smart constructor.
+data Dataset = Dataset
+  { -- | The data stream ID of the data source that created the points in this dataset.
+    dataSourceId :: (Core.Maybe Core.Text),
+    -- | The largest end time of all data points in this possibly partial representation of the dataset. Time is in nanoseconds from epoch. This should also match the second part of the dataset identifier.
+    maxEndTimeNs :: (Core.Maybe Core.Int64),
+    -- | 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.
+    minStartTimeNs :: (Core.Maybe Core.Int64),
+    -- | 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.
+    nextPageToken :: (Core.Maybe Core.Text),
+    -- | A partial list of data points contained in the dataset, ordered by endTimeNanos. 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.
+    point :: (Core.Maybe [DataPoint])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Dataset' with the minimum fields required to make a request.
+newDataset ::
+  Dataset
+newDataset =
+  Dataset
+    { dataSourceId = Core.Nothing,
+      maxEndTimeNs = Core.Nothing,
+      minStartTimeNs = Core.Nothing,
+      nextPageToken = Core.Nothing,
+      point = Core.Nothing
+    }
+
+instance Core.FromJSON Dataset where
+  parseJSON =
+    Core.withObject
+      "Dataset"
+      ( \o ->
+          Dataset
+            Core.<$> (o Core..:? "dataSourceId")
+            Core.<*> (o Core..:? "maxEndTimeNs" Core.<&> Core.fmap Core.fromAsText)
+            Core.<*> (o Core..:? "minStartTimeNs" Core.<&> Core.fmap Core.fromAsText)
+            Core.<*> (o Core..:? "nextPageToken")
+            Core.<*> (o Core..:? "point")
+      )
+
+instance Core.ToJSON Dataset where
+  toJSON Dataset {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataSourceId" Core..=) Core.<$> dataSourceId,
+            ("maxEndTimeNs" Core..=) Core.. Core.AsText Core.<$> maxEndTimeNs,
+            ("minStartTimeNs" Core..=)
+              Core.. Core.AsText
+              Core.<$> minStartTimeNs,
+            ("nextPageToken" Core..=) Core.<$> nextPageToken,
+            ("point" Core..=) Core.<$> point
+          ]
+      )
+
+-- | 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.
+--
+-- /See:/ 'newDevice' smart constructor.
+data Device = Device
+  { -- | Manufacturer of the product\/hardware.
+    manufacturer :: (Core.Maybe Core.Text),
+    -- | End-user visible model name for the device.
+    model :: (Core.Maybe Core.Text),
+    -- | A constant representing the type of the device.
+    type' :: (Core.Maybe Device_Type),
+    -- | The serial number or other unique ID for the hardware. This field is obfuscated when read by any REST or Android client that did not create the data source. Only the data source creator will see the uid field in clear and normal form. The obfuscation preserves equality; that is, given two IDs, if id1 == id2, obfuscated(id1) == obfuscated(id2).
+    uid :: (Core.Maybe Core.Text),
+    -- | Version string for the device hardware\/software.
+    version :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Device' with the minimum fields required to make a request.
+newDevice ::
+  Device
+newDevice =
+  Device
+    { manufacturer = Core.Nothing,
+      model = Core.Nothing,
+      type' = Core.Nothing,
+      uid = Core.Nothing,
+      version = Core.Nothing
+    }
+
+instance Core.FromJSON Device where
+  parseJSON =
+    Core.withObject
+      "Device"
+      ( \o ->
+          Device
+            Core.<$> (o Core..:? "manufacturer")
+            Core.<*> (o Core..:? "model")
+            Core.<*> (o Core..:? "type")
+            Core.<*> (o Core..:? "uid")
+            Core.<*> (o Core..:? "version")
+      )
+
+instance Core.ToJSON Device where
+  toJSON Device {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("manufacturer" Core..=) Core.<$> manufacturer,
+            ("model" Core..=) Core.<$> model,
+            ("type" Core..=) Core.<$> type',
+            ("uid" Core..=) Core.<$> uid,
+            ("version" Core..=) Core.<$> version
+          ]
+      )
+
+--
+-- /See:/ 'newListDataPointChangesResponse' smart constructor.
+data ListDataPointChangesResponse = ListDataPointChangesResponse
+  { -- | The data stream ID of the data source with data point changes.
+    dataSourceId :: (Core.Maybe Core.Text),
+    -- | Deleted data points for the user. Note, for modifications this should be parsed before handling insertions.
+    deletedDataPoint :: (Core.Maybe [DataPoint]),
+    -- | Inserted data points for the user.
+    insertedDataPoint :: (Core.Maybe [DataPoint]),
+    -- | 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.
+    nextPageToken :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ListDataPointChangesResponse' with the minimum fields required to make a request.
+newListDataPointChangesResponse ::
+  ListDataPointChangesResponse
+newListDataPointChangesResponse =
+  ListDataPointChangesResponse
+    { dataSourceId = Core.Nothing,
+      deletedDataPoint = Core.Nothing,
+      insertedDataPoint = Core.Nothing,
+      nextPageToken = Core.Nothing
+    }
+
+instance Core.FromJSON ListDataPointChangesResponse where
+  parseJSON =
+    Core.withObject
+      "ListDataPointChangesResponse"
+      ( \o ->
+          ListDataPointChangesResponse
+            Core.<$> (o Core..:? "dataSourceId")
+            Core.<*> (o Core..:? "deletedDataPoint")
+            Core.<*> (o Core..:? "insertedDataPoint")
+            Core.<*> (o Core..:? "nextPageToken")
+      )
+
+instance Core.ToJSON ListDataPointChangesResponse where
+  toJSON ListDataPointChangesResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("dataSourceId" Core..=) Core.<$> dataSourceId,
+            ("deletedDataPoint" Core..=) Core.<$> deletedDataPoint,
+            ("insertedDataPoint" Core..=) Core.<$> insertedDataPoint,
+            ("nextPageToken" Core..=) Core.<$> nextPageToken
+          ]
+      )
+
+--
+-- /See:/ 'newListDataSourcesResponse' smart constructor.
+newtype ListDataSourcesResponse = ListDataSourcesResponse
+  { -- | A previously created data source.
+    dataSource :: (Core.Maybe [DataSource])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ListDataSourcesResponse' with the minimum fields required to make a request.
+newListDataSourcesResponse ::
+  ListDataSourcesResponse
+newListDataSourcesResponse =
+  ListDataSourcesResponse {dataSource = Core.Nothing}
+
+instance Core.FromJSON ListDataSourcesResponse where
+  parseJSON =
+    Core.withObject
+      "ListDataSourcesResponse"
+      (\o -> ListDataSourcesResponse Core.<$> (o Core..:? "dataSource"))
+
+instance Core.ToJSON ListDataSourcesResponse where
+  toJSON ListDataSourcesResponse {..} =
+    Core.object
+      (Core.catMaybes [("dataSource" Core..=) Core.<$> dataSource])
+
+--
+-- /See:/ 'newListSessionsResponse' smart constructor.
+data ListSessionsResponse = ListSessionsResponse
+  { -- | If includeDeleted is set to true in the request, and startTime and endTime are omitted, this will include sessions which were deleted since the last sync.
+    deletedSession :: (Core.Maybe [Session]),
+    -- | Flag to indicate server has more data to transfer. DO NOT USE THIS FIELD. It is never populated in responses from the server.
+    hasMoreData :: (Core.Maybe Core.Bool),
+    -- | The sync token which is used to sync further changes. This will only be provided if both startTime and endTime are omitted from the request.
+    nextPageToken :: (Core.Maybe Core.Text),
+    -- | Sessions with an end time that is between startTime and endTime of the request.
+    session :: (Core.Maybe [Session])
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ListSessionsResponse' with the minimum fields required to make a request.
+newListSessionsResponse ::
+  ListSessionsResponse
+newListSessionsResponse =
+  ListSessionsResponse
+    { deletedSession = Core.Nothing,
+      hasMoreData = Core.Nothing,
+      nextPageToken = Core.Nothing,
+      session = Core.Nothing
+    }
+
+instance Core.FromJSON ListSessionsResponse where
+  parseJSON =
+    Core.withObject
+      "ListSessionsResponse"
+      ( \o ->
+          ListSessionsResponse
+            Core.<$> (o Core..:? "deletedSession")
+            Core.<*> (o Core..:? "hasMoreData")
+            Core.<*> (o Core..:? "nextPageToken")
+            Core.<*> (o Core..:? "session")
+      )
+
+instance Core.ToJSON ListSessionsResponse where
+  toJSON ListSessionsResponse {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("deletedSession" Core..=) Core.<$> deletedSession,
+            ("hasMoreData" Core..=) Core.<$> hasMoreData,
+            ("nextPageToken" Core..=) Core.<$> nextPageToken,
+            ("session" Core..=) Core.<$> 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.
+--
+-- /See:/ 'newMapValue' smart constructor.
+newtype MapValue = MapValue
+  { -- | Floating point value.
+    fpVal :: (Core.Maybe Core.Double)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'MapValue' with the minimum fields required to make a request.
+newMapValue ::
+  MapValue
+newMapValue = MapValue {fpVal = Core.Nothing}
+
+instance Core.FromJSON MapValue where
+  parseJSON =
+    Core.withObject
+      "MapValue"
+      (\o -> MapValue Core.<$> (o Core..:? "fpVal"))
+
+instance Core.ToJSON MapValue where
+  toJSON MapValue {..} =
+    Core.object (Core.catMaybes [("fpVal" Core..=) Core.<$> fpVal])
+
+-- | Sessions contain metadata, such as a user-friendly name and time interval information.
+--
+-- /See:/ 'newSession' smart constructor.
+data Session = Session
+  { -- | 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
+    activeTimeMillis :: (Core.Maybe Core.Int64),
+    -- | The type of activity this session represents.
+    activityType :: (Core.Maybe Core.Int32),
+    -- | The application that created the session.
+    application :: (Core.Maybe Application),
+    -- | A description for this session.
+    description :: (Core.Maybe Core.Text),
+    -- | An end time, in milliseconds since epoch, inclusive.
+    endTimeMillis :: (Core.Maybe Core.Int64),
+    -- | A client-generated identifier that is unique across all sessions owned by this particular user.
+    id :: (Core.Maybe Core.Text),
+    -- | A timestamp that indicates when the session was last modified.
+    modifiedTimeMillis :: (Core.Maybe Core.Int64),
+    -- | A human readable name of the session.
+    name :: (Core.Maybe Core.Text),
+    -- | A start time, in milliseconds since epoch, inclusive.
+    startTimeMillis :: (Core.Maybe Core.Int64)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Session' with the minimum fields required to make a request.
+newSession ::
+  Session
+newSession =
+  Session
+    { activeTimeMillis = Core.Nothing,
+      activityType = Core.Nothing,
+      application = Core.Nothing,
+      description = Core.Nothing,
+      endTimeMillis = Core.Nothing,
+      id = Core.Nothing,
+      modifiedTimeMillis = Core.Nothing,
+      name = Core.Nothing,
+      startTimeMillis = Core.Nothing
+    }
+
+instance Core.FromJSON Session where
+  parseJSON =
+    Core.withObject
+      "Session"
+      ( \o ->
+          Session
+            Core.<$> (o Core..:? "activeTimeMillis" Core.<&> Core.fmap Core.fromAsText)
+            Core.<*> (o Core..:? "activityType")
+            Core.<*> (o Core..:? "application")
+            Core.<*> (o Core..:? "description")
+            Core.<*> (o Core..:? "endTimeMillis" Core.<&> Core.fmap Core.fromAsText)
+            Core.<*> (o Core..:? "id")
+            Core.<*> ( o
+                         Core..:? "modifiedTimeMillis"
+                         Core.<&> Core.fmap Core.fromAsText
+                     )
+            Core.<*> (o Core..:? "name")
+            Core.<*> (o Core..:? "startTimeMillis" Core.<&> Core.fmap Core.fromAsText)
+      )
+
+instance Core.ToJSON Session where
+  toJSON Session {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("activeTimeMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> activeTimeMillis,
+            ("activityType" Core..=) Core.<$> activityType,
+            ("application" Core..=) Core.<$> application,
+            ("description" Core..=) Core.<$> description,
+            ("endTimeMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> endTimeMillis,
+            ("id" Core..=) Core.<$> id,
+            ("modifiedTimeMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> modifiedTimeMillis,
+            ("name" Core..=) Core.<$> name,
+            ("startTimeMillis" Core..=)
+              Core.. Core.AsText
+              Core.<$> startTimeMillis
+          ]
+      )
+
+-- | 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.
+--
+-- /See:/ 'newValue' smart constructor.
+data Value = Value
+  { -- | Floating point value. When this is set, other values must not be set.
+    fpVal :: (Core.Maybe Core.Double),
+    -- | Integer value. When this is set, other values must not be set.
+    intVal :: (Core.Maybe Core.Int32),
+    -- | 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.
+    mapVal :: (Core.Maybe [ValueMapValEntry]),
+    -- | 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.
+    stringVal :: (Core.Maybe Core.Text)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'Value' with the minimum fields required to make a request.
+newValue ::
+  Value
+newValue =
+  Value
+    { fpVal = Core.Nothing,
+      intVal = Core.Nothing,
+      mapVal = Core.Nothing,
+      stringVal = Core.Nothing
+    }
+
+instance Core.FromJSON Value where
+  parseJSON =
+    Core.withObject
+      "Value"
+      ( \o ->
+          Value
+            Core.<$> (o Core..:? "fpVal")
+            Core.<*> (o Core..:? "intVal")
+            Core.<*> (o Core..:? "mapVal")
+            Core.<*> (o Core..:? "stringVal")
+      )
+
+instance Core.ToJSON Value where
+  toJSON Value {..} =
+    Core.object
+      ( Core.catMaybes
+          [ ("fpVal" Core..=) Core.<$> fpVal,
+            ("intVal" Core..=) Core.<$> intVal,
+            ("mapVal" Core..=) Core.<$> mapVal,
+            ("stringVal" Core..=) Core.<$> stringVal
+          ]
+      )
+
+--
+-- /See:/ 'newValueMapValEntry' smart constructor.
+data ValueMapValEntry = ValueMapValEntry
+  { key :: (Core.Maybe Core.Text),
+    value :: (Core.Maybe MapValue)
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'ValueMapValEntry' with the minimum fields required to make a request.
+newValueMapValEntry ::
+  ValueMapValEntry
+newValueMapValEntry =
+  ValueMapValEntry {key = Core.Nothing, value = Core.Nothing}
+
+instance Core.FromJSON ValueMapValEntry where
+  parseJSON =
+    Core.withObject
+      "ValueMapValEntry"
+      ( \o ->
+          ValueMapValEntry
+            Core.<$> (o Core..:? "key")
+            Core.<*> (o Core..:? "value")
+      )
+
+instance Core.ToJSON ValueMapValEntry where
+  toJSON ValueMapValEntry {..} =
+    Core.object
+      ( Core.catMaybes
+          [("key" Core..=) Core.<$> key, ("value" Core..=) Core.<$> value]
+      )
diff --git a/gen/Gogol/Fitness/Internal/Sum.hs b/gen/Gogol/Fitness/Internal/Sum.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Fitness/Internal/Sum.hs
@@ -0,0 +1,451 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Fitness.Internal.Sum
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Gogol.Fitness.Internal.Sum
+  ( -- * Xgafv
+    Xgafv
+      ( Xgafv_1,
+        Xgafv_2,
+        ..
+      ),
+
+    -- * AggregateBucket_Type
+    AggregateBucket_Type
+      ( AggregateBucket_Type_Unknown,
+        AggregateBucket_Type_Time,
+        AggregateBucket_Type_Session,
+        AggregateBucket_Type_ActivityType,
+        AggregateBucket_Type_ActivitySegment,
+        ..
+      ),
+
+    -- * AggregateRequest_FilteredDataQualityStandardItem
+    AggregateRequest_FilteredDataQualityStandardItem
+      ( AggregateRequest_FilteredDataQualityStandardItem_DataQualityUnknown,
+        AggregateRequest_FilteredDataQualityStandardItem_DATAQUALITYBLOODPRESSUREESH2002,
+        AggregateRequest_FilteredDataQualityStandardItem_DATAQUALITYBLOODPRESSUREESH2010,
+        AggregateRequest_FilteredDataQualityStandardItem_DataQualityBloodPressureAami,
+        AggregateRequest_FilteredDataQualityStandardItem_DataQualityBloodPressureBhsAA,
+        AggregateRequest_FilteredDataQualityStandardItem_DataQualityBloodPressureBhsAB,
+        AggregateRequest_FilteredDataQualityStandardItem_DataQualityBloodPressureBhsBA,
+        AggregateRequest_FilteredDataQualityStandardItem_DataQualityBloodPressureBhsBB,
+        AggregateRequest_FilteredDataQualityStandardItem_DATAQUALITYBLOODGLUCOSEISO151972003,
+        AggregateRequest_FilteredDataQualityStandardItem_DATAQUALITYBLOODGLUCOSEISO151972013,
+        ..
+      ),
+
+    -- * BucketByTimePeriod_Type
+    BucketByTimePeriod_Type
+      ( BucketByTimePeriod_Type_Day,
+        BucketByTimePeriod_Type_Week,
+        BucketByTimePeriod_Type_Month,
+        ..
+      ),
+
+    -- * DataSource_DataQualityStandardItem
+    DataSource_DataQualityStandardItem
+      ( DataSource_DataQualityStandardItem_DataQualityUnknown,
+        DataSource_DataQualityStandardItem_DATAQUALITYBLOODPRESSUREESH2002,
+        DataSource_DataQualityStandardItem_DATAQUALITYBLOODPRESSUREESH2010,
+        DataSource_DataQualityStandardItem_DataQualityBloodPressureAami,
+        DataSource_DataQualityStandardItem_DataQualityBloodPressureBhsAA,
+        DataSource_DataQualityStandardItem_DataQualityBloodPressureBhsAB,
+        DataSource_DataQualityStandardItem_DataQualityBloodPressureBhsBA,
+        DataSource_DataQualityStandardItem_DataQualityBloodPressureBhsBB,
+        DataSource_DataQualityStandardItem_DATAQUALITYBLOODGLUCOSEISO151972003,
+        DataSource_DataQualityStandardItem_DATAQUALITYBLOODGLUCOSEISO151972013,
+        ..
+      ),
+
+    -- * DataSource_Type
+    DataSource_Type
+      ( DataSource_Type_Raw,
+        DataSource_Type_Derived,
+        ..
+      ),
+
+    -- * DataTypeField_Format
+    DataTypeField_Format
+      ( DataTypeField_Format_Integer,
+        DataTypeField_Format_FloatPoint,
+        DataTypeField_Format_String,
+        DataTypeField_Format_Map,
+        DataTypeField_Format_IntegerList,
+        DataTypeField_Format_FloatList,
+        DataTypeField_Format_Blob,
+        ..
+      ),
+
+    -- * Device_Type
+    Device_Type
+      ( Device_Type_Unknown,
+        Device_Type_Phone,
+        Device_Type_Tablet,
+        Device_Type_Watch,
+        Device_Type_ChestStrap,
+        Device_Type_Scale,
+        Device_Type_HeadMounted,
+        Device_Type_SmartDisplay,
+        ..
+      ),
+  )
+where
+
+import Gogol.Prelude qualified as Core
+
+-- | V1 error format.
+newtype Xgafv = Xgafv {fromXgafv :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | v1 error format
+pattern Xgafv_1 :: Xgafv
+pattern Xgafv_1 = Xgafv "1"
+
+-- | v2 error format
+pattern Xgafv_2 :: Xgafv
+pattern Xgafv_2 = Xgafv "2"
+
+{-# COMPLETE
+  Xgafv_1,
+  Xgafv_2,
+  Xgafv
+  #-}
+
+-- | The type of a bucket signifies how the data aggregation is performed in the bucket.
+newtype AggregateBucket_Type = AggregateBucket_Type {fromAggregateBucket_Type :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+pattern AggregateBucket_Type_Unknown :: AggregateBucket_Type
+pattern AggregateBucket_Type_Unknown = AggregateBucket_Type "unknown"
+
+-- | Denotes that bucketing by time is requested. When this is specified, the timeBucketDurationMillis field is used to determine how many buckets will be returned.
+pattern AggregateBucket_Type_Time :: AggregateBucket_Type
+pattern AggregateBucket_Type_Time = AggregateBucket_Type "time"
+
+-- | Denotes that bucketing by session is requested. When this is specified, only data that occurs within sessions that begin and end within the dataset time frame, is included in the results.
+pattern AggregateBucket_Type_Session :: AggregateBucket_Type
+pattern AggregateBucket_Type_Session = AggregateBucket_Type "session"
+
+-- | Denotes that bucketing by activity type is requested. When this is specified, there will be one bucket for each unique activity type that a user participated in, during the dataset time frame of interest.
+pattern AggregateBucket_Type_ActivityType :: AggregateBucket_Type
+pattern AggregateBucket_Type_ActivityType = AggregateBucket_Type "activityType"
+
+-- | Denotes that bucketing by individual activity segment is requested. This will aggregate data by the time boundaries specified by each activity segment occurring within the dataset time frame of interest.
+pattern AggregateBucket_Type_ActivitySegment :: AggregateBucket_Type
+pattern AggregateBucket_Type_ActivitySegment = AggregateBucket_Type "activitySegment"
+
+{-# COMPLETE
+  AggregateBucket_Type_Unknown,
+  AggregateBucket_Type_Time,
+  AggregateBucket_Type_Session,
+  AggregateBucket_Type_ActivityType,
+  AggregateBucket_Type_ActivitySegment,
+  AggregateBucket_Type
+  #-}
+
+newtype AggregateRequest_FilteredDataQualityStandardItem = AggregateRequest_FilteredDataQualityStandardItem {fromAggregateRequest_FilteredDataQualityStandardItem :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+pattern AggregateRequest_FilteredDataQualityStandardItem_DataQualityUnknown :: AggregateRequest_FilteredDataQualityStandardItem
+pattern AggregateRequest_FilteredDataQualityStandardItem_DataQualityUnknown = AggregateRequest_FilteredDataQualityStandardItem "dataQualityUnknown"
+
+pattern AggregateRequest_FilteredDataQualityStandardItem_DATAQUALITYBLOODPRESSUREESH2002 :: AggregateRequest_FilteredDataQualityStandardItem
+pattern AggregateRequest_FilteredDataQualityStandardItem_DATAQUALITYBLOODPRESSUREESH2002 = AggregateRequest_FilteredDataQualityStandardItem "dataQualityBloodPressureEsh2002"
+
+pattern AggregateRequest_FilteredDataQualityStandardItem_DATAQUALITYBLOODPRESSUREESH2010 :: AggregateRequest_FilteredDataQualityStandardItem
+pattern AggregateRequest_FilteredDataQualityStandardItem_DATAQUALITYBLOODPRESSUREESH2010 = AggregateRequest_FilteredDataQualityStandardItem "dataQualityBloodPressureEsh2010"
+
+pattern AggregateRequest_FilteredDataQualityStandardItem_DataQualityBloodPressureAami :: AggregateRequest_FilteredDataQualityStandardItem
+pattern AggregateRequest_FilteredDataQualityStandardItem_DataQualityBloodPressureAami = AggregateRequest_FilteredDataQualityStandardItem "dataQualityBloodPressureAami"
+
+pattern AggregateRequest_FilteredDataQualityStandardItem_DataQualityBloodPressureBhsAA :: AggregateRequest_FilteredDataQualityStandardItem
+pattern AggregateRequest_FilteredDataQualityStandardItem_DataQualityBloodPressureBhsAA = AggregateRequest_FilteredDataQualityStandardItem "dataQualityBloodPressureBhsAA"
+
+pattern AggregateRequest_FilteredDataQualityStandardItem_DataQualityBloodPressureBhsAB :: AggregateRequest_FilteredDataQualityStandardItem
+pattern AggregateRequest_FilteredDataQualityStandardItem_DataQualityBloodPressureBhsAB = AggregateRequest_FilteredDataQualityStandardItem "dataQualityBloodPressureBhsAB"
+
+pattern AggregateRequest_FilteredDataQualityStandardItem_DataQualityBloodPressureBhsBA :: AggregateRequest_FilteredDataQualityStandardItem
+pattern AggregateRequest_FilteredDataQualityStandardItem_DataQualityBloodPressureBhsBA = AggregateRequest_FilteredDataQualityStandardItem "dataQualityBloodPressureBhsBA"
+
+pattern AggregateRequest_FilteredDataQualityStandardItem_DataQualityBloodPressureBhsBB :: AggregateRequest_FilteredDataQualityStandardItem
+pattern AggregateRequest_FilteredDataQualityStandardItem_DataQualityBloodPressureBhsBB = AggregateRequest_FilteredDataQualityStandardItem "dataQualityBloodPressureBhsBB"
+
+pattern AggregateRequest_FilteredDataQualityStandardItem_DATAQUALITYBLOODGLUCOSEISO151972003 :: AggregateRequest_FilteredDataQualityStandardItem
+pattern AggregateRequest_FilteredDataQualityStandardItem_DATAQUALITYBLOODGLUCOSEISO151972003 = AggregateRequest_FilteredDataQualityStandardItem "dataQualityBloodGlucoseIso151972003"
+
+pattern AggregateRequest_FilteredDataQualityStandardItem_DATAQUALITYBLOODGLUCOSEISO151972013 :: AggregateRequest_FilteredDataQualityStandardItem
+pattern AggregateRequest_FilteredDataQualityStandardItem_DATAQUALITYBLOODGLUCOSEISO151972013 = AggregateRequest_FilteredDataQualityStandardItem "dataQualityBloodGlucoseIso151972013"
+
+{-# COMPLETE
+  AggregateRequest_FilteredDataQualityStandardItem_DataQualityUnknown,
+  AggregateRequest_FilteredDataQualityStandardItem_DATAQUALITYBLOODPRESSUREESH2002,
+  AggregateRequest_FilteredDataQualityStandardItem_DATAQUALITYBLOODPRESSUREESH2010,
+  AggregateRequest_FilteredDataQualityStandardItem_DataQualityBloodPressureAami,
+  AggregateRequest_FilteredDataQualityStandardItem_DataQualityBloodPressureBhsAA,
+  AggregateRequest_FilteredDataQualityStandardItem_DataQualityBloodPressureBhsAB,
+  AggregateRequest_FilteredDataQualityStandardItem_DataQualityBloodPressureBhsBA,
+  AggregateRequest_FilteredDataQualityStandardItem_DataQualityBloodPressureBhsBB,
+  AggregateRequest_FilteredDataQualityStandardItem_DATAQUALITYBLOODGLUCOSEISO151972003,
+  AggregateRequest_FilteredDataQualityStandardItem_DATAQUALITYBLOODGLUCOSEISO151972013,
+  AggregateRequest_FilteredDataQualityStandardItem
+  #-}
+
+newtype BucketByTimePeriod_Type = BucketByTimePeriod_Type {fromBucketByTimePeriod_Type :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+pattern BucketByTimePeriod_Type_Day :: BucketByTimePeriod_Type
+pattern BucketByTimePeriod_Type_Day = BucketByTimePeriod_Type "day"
+
+pattern BucketByTimePeriod_Type_Week :: BucketByTimePeriod_Type
+pattern BucketByTimePeriod_Type_Week = BucketByTimePeriod_Type "week"
+
+pattern BucketByTimePeriod_Type_Month :: BucketByTimePeriod_Type
+pattern BucketByTimePeriod_Type_Month = BucketByTimePeriod_Type "month"
+
+{-# COMPLETE
+  BucketByTimePeriod_Type_Day,
+  BucketByTimePeriod_Type_Week,
+  BucketByTimePeriod_Type_Month,
+  BucketByTimePeriod_Type
+  #-}
+
+newtype DataSource_DataQualityStandardItem = DataSource_DataQualityStandardItem {fromDataSource_DataQualityStandardItem :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+pattern DataSource_DataQualityStandardItem_DataQualityUnknown :: DataSource_DataQualityStandardItem
+pattern DataSource_DataQualityStandardItem_DataQualityUnknown = DataSource_DataQualityStandardItem "dataQualityUnknown"
+
+pattern DataSource_DataQualityStandardItem_DATAQUALITYBLOODPRESSUREESH2002 :: DataSource_DataQualityStandardItem
+pattern DataSource_DataQualityStandardItem_DATAQUALITYBLOODPRESSUREESH2002 = DataSource_DataQualityStandardItem "dataQualityBloodPressureEsh2002"
+
+pattern DataSource_DataQualityStandardItem_DATAQUALITYBLOODPRESSUREESH2010 :: DataSource_DataQualityStandardItem
+pattern DataSource_DataQualityStandardItem_DATAQUALITYBLOODPRESSUREESH2010 = DataSource_DataQualityStandardItem "dataQualityBloodPressureEsh2010"
+
+pattern DataSource_DataQualityStandardItem_DataQualityBloodPressureAami :: DataSource_DataQualityStandardItem
+pattern DataSource_DataQualityStandardItem_DataQualityBloodPressureAami = DataSource_DataQualityStandardItem "dataQualityBloodPressureAami"
+
+pattern DataSource_DataQualityStandardItem_DataQualityBloodPressureBhsAA :: DataSource_DataQualityStandardItem
+pattern DataSource_DataQualityStandardItem_DataQualityBloodPressureBhsAA = DataSource_DataQualityStandardItem "dataQualityBloodPressureBhsAA"
+
+pattern DataSource_DataQualityStandardItem_DataQualityBloodPressureBhsAB :: DataSource_DataQualityStandardItem
+pattern DataSource_DataQualityStandardItem_DataQualityBloodPressureBhsAB = DataSource_DataQualityStandardItem "dataQualityBloodPressureBhsAB"
+
+pattern DataSource_DataQualityStandardItem_DataQualityBloodPressureBhsBA :: DataSource_DataQualityStandardItem
+pattern DataSource_DataQualityStandardItem_DataQualityBloodPressureBhsBA = DataSource_DataQualityStandardItem "dataQualityBloodPressureBhsBA"
+
+pattern DataSource_DataQualityStandardItem_DataQualityBloodPressureBhsBB :: DataSource_DataQualityStandardItem
+pattern DataSource_DataQualityStandardItem_DataQualityBloodPressureBhsBB = DataSource_DataQualityStandardItem "dataQualityBloodPressureBhsBB"
+
+pattern DataSource_DataQualityStandardItem_DATAQUALITYBLOODGLUCOSEISO151972003 :: DataSource_DataQualityStandardItem
+pattern DataSource_DataQualityStandardItem_DATAQUALITYBLOODGLUCOSEISO151972003 = DataSource_DataQualityStandardItem "dataQualityBloodGlucoseIso151972003"
+
+pattern DataSource_DataQualityStandardItem_DATAQUALITYBLOODGLUCOSEISO151972013 :: DataSource_DataQualityStandardItem
+pattern DataSource_DataQualityStandardItem_DATAQUALITYBLOODGLUCOSEISO151972013 = DataSource_DataQualityStandardItem "dataQualityBloodGlucoseIso151972013"
+
+{-# COMPLETE
+  DataSource_DataQualityStandardItem_DataQualityUnknown,
+  DataSource_DataQualityStandardItem_DATAQUALITYBLOODPRESSUREESH2002,
+  DataSource_DataQualityStandardItem_DATAQUALITYBLOODPRESSUREESH2010,
+  DataSource_DataQualityStandardItem_DataQualityBloodPressureAami,
+  DataSource_DataQualityStandardItem_DataQualityBloodPressureBhsAA,
+  DataSource_DataQualityStandardItem_DataQualityBloodPressureBhsAB,
+  DataSource_DataQualityStandardItem_DataQualityBloodPressureBhsBA,
+  DataSource_DataQualityStandardItem_DataQualityBloodPressureBhsBB,
+  DataSource_DataQualityStandardItem_DATAQUALITYBLOODGLUCOSEISO151972003,
+  DataSource_DataQualityStandardItem_DATAQUALITYBLOODGLUCOSEISO151972013,
+  DataSource_DataQualityStandardItem
+  #-}
+
+-- | A constant describing the type of this data source. Indicates whether this data source produces raw or derived data.
+newtype DataSource_Type = DataSource_Type {fromDataSource_Type :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+pattern DataSource_Type_Raw :: DataSource_Type
+pattern DataSource_Type_Raw = DataSource_Type "raw"
+
+pattern DataSource_Type_Derived :: DataSource_Type
+pattern DataSource_Type_Derived = DataSource_Type "derived"
+
+{-# COMPLETE
+  DataSource_Type_Raw,
+  DataSource_Type_Derived,
+  DataSource_Type
+  #-}
+
+-- | The different supported formats for each field in a data type.
+newtype DataTypeField_Format = DataTypeField_Format {fromDataTypeField_Format :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+pattern DataTypeField_Format_Integer :: DataTypeField_Format
+pattern DataTypeField_Format_Integer = DataTypeField_Format "integer"
+
+pattern DataTypeField_Format_FloatPoint :: DataTypeField_Format
+pattern DataTypeField_Format_FloatPoint = DataTypeField_Format "floatPoint"
+
+pattern DataTypeField_Format_String :: DataTypeField_Format
+pattern DataTypeField_Format_String = DataTypeField_Format "string"
+
+pattern DataTypeField_Format_Map :: DataTypeField_Format
+pattern DataTypeField_Format_Map = DataTypeField_Format "map"
+
+pattern DataTypeField_Format_IntegerList :: DataTypeField_Format
+pattern DataTypeField_Format_IntegerList = DataTypeField_Format "integerList"
+
+pattern DataTypeField_Format_FloatList :: DataTypeField_Format
+pattern DataTypeField_Format_FloatList = DataTypeField_Format "floatList"
+
+pattern DataTypeField_Format_Blob :: DataTypeField_Format
+pattern DataTypeField_Format_Blob = DataTypeField_Format "blob"
+
+{-# COMPLETE
+  DataTypeField_Format_Integer,
+  DataTypeField_Format_FloatPoint,
+  DataTypeField_Format_String,
+  DataTypeField_Format_Map,
+  DataTypeField_Format_IntegerList,
+  DataTypeField_Format_FloatList,
+  DataTypeField_Format_Blob,
+  DataTypeField_Format
+  #-}
+
+-- | A constant representing the type of the device.
+newtype Device_Type = Device_Type {fromDevice_Type :: Core.Text}
+  deriving stock (Core.Show, Core.Read, Core.Eq, Core.Ord, Core.Generic)
+  deriving newtype
+    ( Core.Hashable,
+      Core.ToHttpApiData,
+      Core.FromHttpApiData,
+      Core.ToJSON,
+      Core.ToJSONKey,
+      Core.FromJSON,
+      Core.FromJSONKey
+    )
+
+-- | Device type is not known.
+pattern Device_Type_Unknown :: Device_Type
+pattern Device_Type_Unknown = Device_Type "unknown"
+
+-- | An Android phone.
+pattern Device_Type_Phone :: Device_Type
+pattern Device_Type_Phone = Device_Type "phone"
+
+-- | An Android tablet.
+pattern Device_Type_Tablet :: Device_Type
+pattern Device_Type_Tablet = Device_Type "tablet"
+
+-- | A watch or other wrist-mounted band.
+pattern Device_Type_Watch :: Device_Type
+pattern Device_Type_Watch = Device_Type "watch"
+
+-- | A chest strap.
+pattern Device_Type_ChestStrap :: Device_Type
+pattern Device_Type_ChestStrap = Device_Type "chestStrap"
+
+-- | A scale.
+pattern Device_Type_Scale :: Device_Type
+pattern Device_Type_Scale = Device_Type "scale"
+
+-- | Glass or other head-mounted device.
+pattern Device_Type_HeadMounted :: Device_Type
+pattern Device_Type_HeadMounted = Device_Type "headMounted"
+
+-- | A smart display e.g. Nest device.
+pattern Device_Type_SmartDisplay :: Device_Type
+pattern Device_Type_SmartDisplay = Device_Type "smartDisplay"
+
+{-# COMPLETE
+  Device_Type_Unknown,
+  Device_Type_Phone,
+  Device_Type_Tablet,
+  Device_Type_Watch,
+  Device_Type_ChestStrap,
+  Device_Type_Scale,
+  Device_Type_HeadMounted,
+  Device_Type_SmartDisplay,
+  Device_Type
+  #-}
diff --git a/gen/Gogol/Fitness/Types.hs b/gen/Gogol/Fitness/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Fitness/Types.hs
@@ -0,0 +1,267 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Fitness.Types
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Gogol.Fitness.Types
+  ( -- * Configuration
+    fitnessService,
+
+    -- * OAuth Scopes
+    Fitness'Activity'Read,
+    Fitness'Activity'Write,
+    Fitness'BloodGlucose'Read,
+    Fitness'BloodGlucose'Write,
+    Fitness'BloodPressure'Read,
+    Fitness'BloodPressure'Write,
+    Fitness'Body'Read,
+    Fitness'Body'Write,
+    Fitness'BodyTemperature'Read,
+    Fitness'BodyTemperature'Write,
+    Fitness'HeartRate'Read,
+    Fitness'HeartRate'Write,
+    Fitness'Location'Read,
+    Fitness'Location'Write,
+    Fitness'Nutrition'Read,
+    Fitness'Nutrition'Write,
+    Fitness'OxygenSaturation'Read,
+    Fitness'OxygenSaturation'Write,
+    Fitness'ReproductiveHealth'Read,
+    Fitness'ReproductiveHealth'Write,
+    Fitness'Sleep'Read,
+    Fitness'Sleep'Write,
+
+    -- * Types
+
+    -- ** Xgafv
+    Xgafv (..),
+
+    -- ** AggregateBucket
+    AggregateBucket (..),
+    newAggregateBucket,
+
+    -- ** AggregateBucket_Type
+    AggregateBucket_Type (..),
+
+    -- ** AggregateBy
+    AggregateBy (..),
+    newAggregateBy,
+
+    -- ** AggregateRequest
+    AggregateRequest (..),
+    newAggregateRequest,
+
+    -- ** AggregateRequest_FilteredDataQualityStandardItem
+    AggregateRequest_FilteredDataQualityStandardItem (..),
+
+    -- ** AggregateResponse
+    AggregateResponse (..),
+    newAggregateResponse,
+
+    -- ** Application
+    Application (..),
+    newApplication,
+
+    -- ** BucketByActivity
+    BucketByActivity (..),
+    newBucketByActivity,
+
+    -- ** BucketBySession
+    BucketBySession (..),
+    newBucketBySession,
+
+    -- ** BucketByTime
+    BucketByTime (..),
+    newBucketByTime,
+
+    -- ** BucketByTimePeriod
+    BucketByTimePeriod (..),
+    newBucketByTimePeriod,
+
+    -- ** BucketByTimePeriod_Type
+    BucketByTimePeriod_Type (..),
+
+    -- ** DataPoint
+    DataPoint (..),
+    newDataPoint,
+
+    -- ** DataSource
+    DataSource (..),
+    newDataSource,
+
+    -- ** DataSource_DataQualityStandardItem
+    DataSource_DataQualityStandardItem (..),
+
+    -- ** DataSource_Type
+    DataSource_Type (..),
+
+    -- ** DataType
+    DataType (..),
+    newDataType,
+
+    -- ** DataTypeField
+    DataTypeField (..),
+    newDataTypeField,
+
+    -- ** DataTypeField_Format
+    DataTypeField_Format (..),
+
+    -- ** Dataset
+    Dataset (..),
+    newDataset,
+
+    -- ** Device
+    Device (..),
+    newDevice,
+
+    -- ** Device_Type
+    Device_Type (..),
+
+    -- ** ListDataPointChangesResponse
+    ListDataPointChangesResponse (..),
+    newListDataPointChangesResponse,
+
+    -- ** ListDataSourcesResponse
+    ListDataSourcesResponse (..),
+    newListDataSourcesResponse,
+
+    -- ** ListSessionsResponse
+    ListSessionsResponse (..),
+    newListSessionsResponse,
+
+    -- ** MapValue
+    MapValue (..),
+    newMapValue,
+
+    -- ** Session
+    Session (..),
+    newSession,
+
+    -- ** Value
+    Value (..),
+    newValue,
+
+    -- ** ValueMapValEntry
+    ValueMapValEntry (..),
+    newValueMapValEntry,
+  )
+where
+
+import Gogol.Fitness.Internal.Product
+import Gogol.Fitness.Internal.Sum
+import Gogol.Prelude qualified as Core
+
+-- | Default request referring to version @v1@ of the Fitness API. This contains the host and root path used as a starting point for constructing service requests.
+fitnessService :: Core.ServiceConfig
+fitnessService =
+  Core.defaultService
+    (Core.ServiceId "fitness:v1")
+    "fitness.googleapis.com"
+
+-- | Use Google Fit to see and store your physical activity data
+type Fitness'Activity'Read =
+  "https://www.googleapis.com/auth/fitness.activity.read"
+
+-- | Add to your Google Fit physical activity data
+type Fitness'Activity'Write =
+  "https://www.googleapis.com/auth/fitness.activity.write"
+
+-- | See info about your blood glucose in Google Fit. I consent to Google sharing my blood glucose information with this app.
+type Fitness'BloodGlucose'Read =
+  "https://www.googleapis.com/auth/fitness.blood_glucose.read"
+
+-- | Add info about your blood glucose to Google Fit. I consent to Google using my blood glucose information with this app.
+type Fitness'BloodGlucose'Write =
+  "https://www.googleapis.com/auth/fitness.blood_glucose.write"
+
+-- | See info about your blood pressure in Google Fit. I consent to Google sharing my blood pressure information with this app.
+type Fitness'BloodPressure'Read =
+  "https://www.googleapis.com/auth/fitness.blood_pressure.read"
+
+-- | Add info about your blood pressure in Google Fit. I consent to Google using my blood pressure information with this app.
+type Fitness'BloodPressure'Write =
+  "https://www.googleapis.com/auth/fitness.blood_pressure.write"
+
+-- | See info about your body measurements in Google Fit
+type Fitness'Body'Read =
+  "https://www.googleapis.com/auth/fitness.body.read"
+
+-- | Add info about your body measurements to Google Fit
+type Fitness'Body'Write =
+  "https://www.googleapis.com/auth/fitness.body.write"
+
+-- | See info about your body temperature in Google Fit. I consent to Google sharing my body temperature information with this app.
+type Fitness'BodyTemperature'Read =
+  "https://www.googleapis.com/auth/fitness.body_temperature.read"
+
+-- | Add to info about your body temperature in Google Fit. I consent to Google using my body temperature information with this app.
+type Fitness'BodyTemperature'Write =
+  "https://www.googleapis.com/auth/fitness.body_temperature.write"
+
+-- | See your heart rate data in Google Fit. I consent to Google sharing my heart rate information with this app.
+type Fitness'HeartRate'Read =
+  "https://www.googleapis.com/auth/fitness.heart_rate.read"
+
+-- | Add to your heart rate data in Google Fit. I consent to Google using my heart rate information with this app.
+type Fitness'HeartRate'Write =
+  "https://www.googleapis.com/auth/fitness.heart_rate.write"
+
+-- | See your Google Fit speed and distance data
+type Fitness'Location'Read =
+  "https://www.googleapis.com/auth/fitness.location.read"
+
+-- | Add to your Google Fit location data
+type Fitness'Location'Write =
+  "https://www.googleapis.com/auth/fitness.location.write"
+
+-- | See info about your nutrition in Google Fit
+type Fitness'Nutrition'Read =
+  "https://www.googleapis.com/auth/fitness.nutrition.read"
+
+-- | Add to info about your nutrition in Google Fit
+type Fitness'Nutrition'Write =
+  "https://www.googleapis.com/auth/fitness.nutrition.write"
+
+-- | See info about your oxygen saturation in Google Fit. I consent to Google sharing my oxygen saturation information with this app.
+type Fitness'OxygenSaturation'Read =
+  "https://www.googleapis.com/auth/fitness.oxygen_saturation.read"
+
+-- | Add info about your oxygen saturation in Google Fit. I consent to Google using my oxygen saturation information with this app.
+type Fitness'OxygenSaturation'Write =
+  "https://www.googleapis.com/auth/fitness.oxygen_saturation.write"
+
+-- | See info about your reproductive health in Google Fit. I consent to Google sharing my reproductive health information with this app.
+type Fitness'ReproductiveHealth'Read =
+  "https://www.googleapis.com/auth/fitness.reproductive_health.read"
+
+-- | Add info about your reproductive health in Google Fit. I consent to Google using my reproductive health information with this app.
+type Fitness'ReproductiveHealth'Write =
+  "https://www.googleapis.com/auth/fitness.reproductive_health.write"
+
+-- | See your sleep data in Google Fit. I consent to Google sharing my sleep information with this app.
+type Fitness'Sleep'Read =
+  "https://www.googleapis.com/auth/fitness.sleep.read"
+
+-- | Add to your sleep data in Google Fit. I consent to Google using my sleep information with this app.
+type Fitness'Sleep'Write =
+  "https://www.googleapis.com/auth/fitness.sleep.write"
diff --git a/gen/Gogol/Fitness/Users/DataSources/Create.hs b/gen/Gogol/Fitness/Users/DataSources/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Fitness/Users/DataSources/Create.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Fitness.Users.DataSources.Create
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new data source that is unique across all data sources belonging to this user. A data source is 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 in every dataset inserted into or read from the Fitness API has an associated data source. Each data source produces a unique stream of dataset updates, with a unique data source identifier. Not all changes to data source affect the data stream ID, so that data collected by updated versions of the same application\/device can still be considered to belong to the same data source. Data sources are identified using a string generated by the server, based on the contents of the source being created. The dataStreamId field should not be set when invoking this method. It will be automatically generated by the server with the
+-- correct format. If a dataStreamId is set, it must match the format that the server would generate. This format is a combination of some fields from the data source, and has a specific order. If it doesn\'t match, the request will fail with an error. Specifying a DataType which is not a known type (beginning with \"com.google.\") will create a DataSource with a /custom data type/. Custom data types are only readable by the application that created them. Custom data types are /deprecated/; use standard data types instead. In addition to the data source fields included in 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.
+--
+-- /See:/ <https://developers.google.com/fit/rest/v1/get-started Fitness API Reference> for @fitness.users.dataSources.create@.
+module Gogol.Fitness.Users.DataSources.Create
+  ( -- * Resource
+    FitnessUsersDataSourcesCreateResource,
+
+    -- ** Constructing a Request
+    FitnessUsersDataSourcesCreate (..),
+    newFitnessUsersDataSourcesCreate,
+  )
+where
+
+import Gogol.Fitness.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @fitness.users.dataSources.create@ method which the
+-- 'FitnessUsersDataSourcesCreate' request conforms to.
+type FitnessUsersDataSourcesCreateResource =
+  "fitness"
+    Core.:> "v1"
+    Core.:> "users"
+    Core.:> Core.Capture "userId" Core.Text
+    Core.:> "dataSources"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] DataSource
+    Core.:> Core.Post '[Core.JSON] DataSource
+
+-- | Creates a new data source that is unique across all data sources belonging to this user. A data source is 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 in every dataset inserted into or read from the Fitness API has an associated data source. Each data source produces a unique stream of dataset updates, with a unique data source identifier. Not all changes to data source affect the data stream ID, so that data collected by updated versions of the same application\/device can still be considered to belong to the same data source. Data sources are identified using a string generated by the server, based on the contents of the source being created. The dataStreamId field should not be set when invoking this method. It will be automatically generated by the server with the
+-- correct format. If a dataStreamId is set, it must match the format that the server would generate. This format is a combination of some fields from the data source, and has a specific order. If it doesn\'t match, the request will fail with an error. Specifying a DataType which is not a known type (beginning with \"com.google.\") will create a DataSource with a /custom data type/. Custom data types are only readable by the application that created them. Custom data types are /deprecated/; use standard data types instead. In addition to the data source fields included in 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.
+--
+-- /See:/ 'newFitnessUsersDataSourcesCreate' smart constructor.
+data FitnessUsersDataSourcesCreate = FitnessUsersDataSourcesCreate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Multipart request metadata.
+    payload :: DataSource,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | Create the data source for the person identified. Use me to indicate the authenticated user. Only me is supported at this time.
+    userId :: Core.Text
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FitnessUsersDataSourcesCreate' with the minimum fields required to make a request.
+newFitnessUsersDataSourcesCreate ::
+  -- |  Multipart request metadata. See 'payload'.
+  DataSource ->
+  -- |  Create the data source for the person identified. Use me to indicate the authenticated user. Only me is supported at this time. See 'userId'.
+  Core.Text ->
+  FitnessUsersDataSourcesCreate
+newFitnessUsersDataSourcesCreate payload userId =
+  FitnessUsersDataSourcesCreate
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing,
+      userId = userId
+    }
+
+instance Core.GoogleRequest FitnessUsersDataSourcesCreate where
+  type Rs FitnessUsersDataSourcesCreate = DataSource
+  type
+    Scopes FitnessUsersDataSourcesCreate =
+      '[ Fitness'Activity'Write,
+         Fitness'BloodGlucose'Write,
+         Fitness'BloodPressure'Write,
+         Fitness'Body'Write,
+         Fitness'BodyTemperature'Write,
+         Fitness'HeartRate'Write,
+         Fitness'Location'Write,
+         Fitness'Nutrition'Write,
+         Fitness'OxygenSaturation'Write,
+         Fitness'ReproductiveHealth'Write,
+         Fitness'Sleep'Write
+       ]
+  requestClient FitnessUsersDataSourcesCreate {..} =
+    go
+      userId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      fitnessService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy FitnessUsersDataSourcesCreateResource)
+          Core.mempty
diff --git a/gen/Gogol/Fitness/Users/DataSources/DataPointChanges/List.hs b/gen/Gogol/Fitness/Users/DataSources/DataPointChanges/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Fitness/Users/DataSources/DataPointChanges/List.hs
@@ -0,0 +1,159 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Fitness.Users.DataSources.DataPointChanges.List
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Queries for user\'s data point changes for a particular data source.
+--
+-- /See:/ <https://developers.google.com/fit/rest/v1/get-started Fitness API Reference> for @fitness.users.dataSources.dataPointChanges.list@.
+module Gogol.Fitness.Users.DataSources.DataPointChanges.List
+  ( -- * Resource
+    FitnessUsersDataSourcesDataPointChangesListResource,
+
+    -- ** Constructing a Request
+    FitnessUsersDataSourcesDataPointChangesList (..),
+    newFitnessUsersDataSourcesDataPointChangesList,
+  )
+where
+
+import Gogol.Fitness.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @fitness.users.dataSources.dataPointChanges.list@ method which the
+-- 'FitnessUsersDataSourcesDataPointChangesList' request conforms to.
+type FitnessUsersDataSourcesDataPointChangesListResource =
+  "fitness"
+    Core.:> "v1"
+    Core.:> "users"
+    Core.:> Core.Capture "userId" Core.Text
+    Core.:> "dataSources"
+    Core.:> Core.Capture "dataSourceId" Core.Text
+    Core.:> "dataPointChanges"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "limit" Core.Int32
+    Core.:> Core.QueryParam "pageToken" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] ListDataPointChangesResponse
+
+-- | Queries for user\'s data point changes for a particular data source.
+--
+-- /See:/ 'newFitnessUsersDataSourcesDataPointChangesList' smart constructor.
+data FitnessUsersDataSourcesDataPointChangesList = FitnessUsersDataSourcesDataPointChangesList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The data stream ID of the data source that created the dataset.
+    dataSourceId :: Core.Text,
+    -- | If specified, no more than this many data point changes will be included in the response.
+    limit :: (Core.Maybe Core.Int32),
+    -- | 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.
+    pageToken :: (Core.Maybe Core.Text),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | List data points for the person identified. Use me to indicate the authenticated user. Only me is supported at this time.
+    userId :: Core.Text
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FitnessUsersDataSourcesDataPointChangesList' with the minimum fields required to make a request.
+newFitnessUsersDataSourcesDataPointChangesList ::
+  -- |  The data stream ID of the data source that created the dataset. See 'dataSourceId'.
+  Core.Text ->
+  -- |  List data points for the person identified. Use me to indicate the authenticated user. Only me is supported at this time. See 'userId'.
+  Core.Text ->
+  FitnessUsersDataSourcesDataPointChangesList
+newFitnessUsersDataSourcesDataPointChangesList dataSourceId userId =
+  FitnessUsersDataSourcesDataPointChangesList
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      dataSourceId = dataSourceId,
+      limit = Core.Nothing,
+      pageToken = Core.Nothing,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing,
+      userId = userId
+    }
+
+instance
+  Core.GoogleRequest
+    FitnessUsersDataSourcesDataPointChangesList
+  where
+  type
+    Rs FitnessUsersDataSourcesDataPointChangesList =
+      ListDataPointChangesResponse
+  type
+    Scopes FitnessUsersDataSourcesDataPointChangesList =
+      '[ Fitness'Activity'Read,
+         Fitness'Activity'Write,
+         Fitness'BloodGlucose'Read,
+         Fitness'BloodGlucose'Write,
+         Fitness'BloodPressure'Read,
+         Fitness'BloodPressure'Write,
+         Fitness'Body'Read,
+         Fitness'Body'Write,
+         Fitness'BodyTemperature'Read,
+         Fitness'BodyTemperature'Write,
+         Fitness'HeartRate'Read,
+         Fitness'HeartRate'Write,
+         Fitness'Location'Read,
+         Fitness'Location'Write,
+         Fitness'Nutrition'Read,
+         Fitness'Nutrition'Write,
+         Fitness'OxygenSaturation'Read,
+         Fitness'OxygenSaturation'Write,
+         Fitness'ReproductiveHealth'Read,
+         Fitness'ReproductiveHealth'Write,
+         Fitness'Sleep'Read,
+         Fitness'Sleep'Write
+       ]
+  requestClient FitnessUsersDataSourcesDataPointChangesList {..} =
+    go
+      userId
+      dataSourceId
+      xgafv
+      accessToken
+      callback
+      limit
+      pageToken
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      fitnessService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy FitnessUsersDataSourcesDataPointChangesListResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/Fitness/Users/DataSources/Datasets/Delete.hs b/gen/Gogol/Fitness/Users/DataSources/Datasets/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Fitness/Users/DataSources/Datasets/Delete.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Fitness.Users.DataSources.Datasets.Delete
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+--
+-- /See:/ <https://developers.google.com/fit/rest/v1/get-started Fitness API Reference> for @fitness.users.dataSources.datasets.delete@.
+module Gogol.Fitness.Users.DataSources.Datasets.Delete
+  ( -- * Resource
+    FitnessUsersDataSourcesDatasetsDeleteResource,
+
+    -- ** Constructing a Request
+    FitnessUsersDataSourcesDatasetsDelete (..),
+    newFitnessUsersDataSourcesDatasetsDelete,
+  )
+where
+
+import Gogol.Fitness.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @fitness.users.dataSources.datasets.delete@ method which the
+-- 'FitnessUsersDataSourcesDatasetsDelete' request conforms to.
+type FitnessUsersDataSourcesDatasetsDeleteResource =
+  "fitness"
+    Core.:> "v1"
+    Core.:> "users"
+    Core.:> Core.Capture "userId" Core.Text
+    Core.:> "dataSources"
+    Core.:> Core.Capture "dataSourceId" Core.Text
+    Core.:> "datasets"
+    Core.:> Core.Capture "datasetId" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Delete '[Core.JSON] ()
+
+-- | 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.
+--
+-- /See:/ 'newFitnessUsersDataSourcesDatasetsDelete' smart constructor.
+data FitnessUsersDataSourcesDatasetsDelete = FitnessUsersDataSourcesDatasetsDelete
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The data stream ID of the data source that created the dataset.
+    dataSourceId :: Core.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.
+    datasetId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | Delete a dataset for the person identified. Use me to indicate the authenticated user. Only me is supported at this time.
+    userId :: Core.Text
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FitnessUsersDataSourcesDatasetsDelete' with the minimum fields required to make a request.
+newFitnessUsersDataSourcesDatasetsDelete ::
+  -- |  The data stream ID of the data source that created the dataset. See 'dataSourceId'.
+  Core.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. See 'datasetId'.
+  Core.Text ->
+  -- |  Delete a dataset for the person identified. Use me to indicate the authenticated user. Only me is supported at this time. See 'userId'.
+  Core.Text ->
+  FitnessUsersDataSourcesDatasetsDelete
+newFitnessUsersDataSourcesDatasetsDelete
+  dataSourceId
+  datasetId
+  userId =
+    FitnessUsersDataSourcesDatasetsDelete
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        dataSourceId = dataSourceId,
+        datasetId = datasetId,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing,
+        userId = userId
+      }
+
+instance Core.GoogleRequest FitnessUsersDataSourcesDatasetsDelete where
+  type Rs FitnessUsersDataSourcesDatasetsDelete = ()
+  type
+    Scopes FitnessUsersDataSourcesDatasetsDelete =
+      '[ Fitness'Activity'Write,
+         Fitness'BloodGlucose'Write,
+         Fitness'BloodPressure'Write,
+         Fitness'Body'Write,
+         Fitness'BodyTemperature'Write,
+         Fitness'HeartRate'Write,
+         Fitness'Location'Write,
+         Fitness'Nutrition'Write,
+         Fitness'OxygenSaturation'Write,
+         Fitness'ReproductiveHealth'Write,
+         Fitness'Sleep'Write
+       ]
+  requestClient FitnessUsersDataSourcesDatasetsDelete {..} =
+    go
+      userId
+      dataSourceId
+      datasetId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      fitnessService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy FitnessUsersDataSourcesDatasetsDeleteResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/Fitness/Users/DataSources/Datasets/Get.hs b/gen/Gogol/Fitness/Users/DataSources/Datasets/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Fitness/Users/DataSources/Datasets/Get.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Fitness.Users.DataSources.Datasets.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+--
+-- /See:/ <https://developers.google.com/fit/rest/v1/get-started Fitness API Reference> for @fitness.users.dataSources.datasets.get@.
+module Gogol.Fitness.Users.DataSources.Datasets.Get
+  ( -- * Resource
+    FitnessUsersDataSourcesDatasetsGetResource,
+
+    -- ** Constructing a Request
+    FitnessUsersDataSourcesDatasetsGet (..),
+    newFitnessUsersDataSourcesDatasetsGet,
+  )
+where
+
+import Gogol.Fitness.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @fitness.users.dataSources.datasets.get@ method which the
+-- 'FitnessUsersDataSourcesDatasetsGet' request conforms to.
+type FitnessUsersDataSourcesDatasetsGetResource =
+  "fitness"
+    Core.:> "v1"
+    Core.:> "users"
+    Core.:> Core.Capture "userId" Core.Text
+    Core.:> "dataSources"
+    Core.:> Core.Capture "dataSourceId" Core.Text
+    Core.:> "datasets"
+    Core.:> Core.Capture "datasetId" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "limit" Core.Int32
+    Core.:> Core.QueryParam "pageToken" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] Dataset
+
+-- | 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.
+--
+-- /See:/ 'newFitnessUsersDataSourcesDatasetsGet' smart constructor.
+data FitnessUsersDataSourcesDatasetsGet = FitnessUsersDataSourcesDatasetsGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The data stream ID of the data source that created the dataset.
+    dataSourceId :: Core.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.
+    datasetId :: Core.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. The limit is applied from the end of the time range. That is, if pageToken is absent, the limit most recent data points will be returned.
+    limit :: (Core.Maybe Core.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.
+    pageToken :: (Core.Maybe Core.Text),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | Retrieve a dataset for the person identified. Use me to indicate the authenticated user. Only me is supported at this time.
+    userId :: Core.Text
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FitnessUsersDataSourcesDatasetsGet' with the minimum fields required to make a request.
+newFitnessUsersDataSourcesDatasetsGet ::
+  -- |  The data stream ID of the data source that created the dataset. See 'dataSourceId'.
+  Core.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. See 'datasetId'.
+  Core.Text ->
+  -- |  Retrieve a dataset for the person identified. Use me to indicate the authenticated user. Only me is supported at this time. See 'userId'.
+  Core.Text ->
+  FitnessUsersDataSourcesDatasetsGet
+newFitnessUsersDataSourcesDatasetsGet dataSourceId datasetId userId =
+  FitnessUsersDataSourcesDatasetsGet
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      dataSourceId = dataSourceId,
+      datasetId = datasetId,
+      limit = Core.Nothing,
+      pageToken = Core.Nothing,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing,
+      userId = userId
+    }
+
+instance Core.GoogleRequest FitnessUsersDataSourcesDatasetsGet where
+  type Rs FitnessUsersDataSourcesDatasetsGet = Dataset
+  type
+    Scopes FitnessUsersDataSourcesDatasetsGet =
+      '[ Fitness'Activity'Read,
+         Fitness'Activity'Write,
+         Fitness'BloodGlucose'Read,
+         Fitness'BloodGlucose'Write,
+         Fitness'BloodPressure'Read,
+         Fitness'BloodPressure'Write,
+         Fitness'Body'Read,
+         Fitness'Body'Write,
+         Fitness'BodyTemperature'Read,
+         Fitness'BodyTemperature'Write,
+         Fitness'HeartRate'Read,
+         Fitness'HeartRate'Write,
+         Fitness'Location'Read,
+         Fitness'Location'Write,
+         Fitness'Nutrition'Read,
+         Fitness'Nutrition'Write,
+         Fitness'OxygenSaturation'Read,
+         Fitness'OxygenSaturation'Write,
+         Fitness'ReproductiveHealth'Read,
+         Fitness'ReproductiveHealth'Write,
+         Fitness'Sleep'Read,
+         Fitness'Sleep'Write
+       ]
+  requestClient FitnessUsersDataSourcesDatasetsGet {..} =
+    go
+      userId
+      dataSourceId
+      datasetId
+      xgafv
+      accessToken
+      callback
+      limit
+      pageToken
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      fitnessService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy FitnessUsersDataSourcesDatasetsGetResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/Fitness/Users/DataSources/Datasets/Patch.hs b/gen/Gogol/Fitness/Users/DataSources/Datasets/Patch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Fitness/Users/DataSources/Datasets/Patch.hs
@@ -0,0 +1,151 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Fitness.Users.DataSources.Datasets.Patch
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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: the data points provided are merely inserted, with no existing data replaced.
+--
+-- /See:/ <https://developers.google.com/fit/rest/v1/get-started Fitness API Reference> for @fitness.users.dataSources.datasets.patch@.
+module Gogol.Fitness.Users.DataSources.Datasets.Patch
+  ( -- * Resource
+    FitnessUsersDataSourcesDatasetsPatchResource,
+
+    -- ** Constructing a Request
+    FitnessUsersDataSourcesDatasetsPatch (..),
+    newFitnessUsersDataSourcesDatasetsPatch,
+  )
+where
+
+import Gogol.Fitness.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @fitness.users.dataSources.datasets.patch@ method which the
+-- 'FitnessUsersDataSourcesDatasetsPatch' request conforms to.
+type FitnessUsersDataSourcesDatasetsPatchResource =
+  "fitness"
+    Core.:> "v1"
+    Core.:> "users"
+    Core.:> Core.Capture "userId" Core.Text
+    Core.:> "dataSources"
+    Core.:> Core.Capture "dataSourceId" Core.Text
+    Core.:> "datasets"
+    Core.:> Core.Capture "datasetId" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] Dataset
+    Core.:> Core.Patch '[Core.JSON] Dataset
+
+-- | 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: the data points provided are merely inserted, with no existing data replaced.
+--
+-- /See:/ 'newFitnessUsersDataSourcesDatasetsPatch' smart constructor.
+data FitnessUsersDataSourcesDatasetsPatch = FitnessUsersDataSourcesDatasetsPatch
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The data stream ID of the data source that created the dataset.
+    dataSourceId :: Core.Text,
+    -- | This field is not used, and can be safely omitted.
+    datasetId :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: Dataset,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | Patch a dataset for the person identified. Use me to indicate the authenticated user. Only me is supported at this time.
+    userId :: Core.Text
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FitnessUsersDataSourcesDatasetsPatch' with the minimum fields required to make a request.
+newFitnessUsersDataSourcesDatasetsPatch ::
+  -- |  The data stream ID of the data source that created the dataset. See 'dataSourceId'.
+  Core.Text ->
+  -- |  This field is not used, and can be safely omitted. See 'datasetId'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  Dataset ->
+  -- |  Patch a dataset for the person identified. Use me to indicate the authenticated user. Only me is supported at this time. See 'userId'.
+  Core.Text ->
+  FitnessUsersDataSourcesDatasetsPatch
+newFitnessUsersDataSourcesDatasetsPatch
+  dataSourceId
+  datasetId
+  payload
+  userId =
+    FitnessUsersDataSourcesDatasetsPatch
+      { xgafv = Core.Nothing,
+        accessToken = Core.Nothing,
+        callback = Core.Nothing,
+        dataSourceId = dataSourceId,
+        datasetId = datasetId,
+        payload = payload,
+        uploadType = Core.Nothing,
+        uploadProtocol = Core.Nothing,
+        userId = userId
+      }
+
+instance Core.GoogleRequest FitnessUsersDataSourcesDatasetsPatch where
+  type Rs FitnessUsersDataSourcesDatasetsPatch = Dataset
+  type
+    Scopes FitnessUsersDataSourcesDatasetsPatch =
+      '[ Fitness'Activity'Write,
+         Fitness'BloodGlucose'Write,
+         Fitness'BloodPressure'Write,
+         Fitness'Body'Write,
+         Fitness'BodyTemperature'Write,
+         Fitness'HeartRate'Write,
+         Fitness'Location'Write,
+         Fitness'Nutrition'Write,
+         Fitness'OxygenSaturation'Write,
+         Fitness'ReproductiveHealth'Write,
+         Fitness'Sleep'Write
+       ]
+  requestClient FitnessUsersDataSourcesDatasetsPatch {..} =
+    go
+      userId
+      dataSourceId
+      datasetId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      fitnessService
+    where
+      go =
+        Core.buildClient
+          ( Core.Proxy ::
+              Core.Proxy FitnessUsersDataSourcesDatasetsPatchResource
+          )
+          Core.mempty
diff --git a/gen/Gogol/Fitness/Users/DataSources/Delete.hs b/gen/Gogol/Fitness/Users/DataSources/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Fitness/Users/DataSources/Delete.hs
@@ -0,0 +1,130 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Fitness.Users.DataSources.Delete
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specified data source. The request will fail if the data source contains any data points.
+--
+-- /See:/ <https://developers.google.com/fit/rest/v1/get-started Fitness API Reference> for @fitness.users.dataSources.delete@.
+module Gogol.Fitness.Users.DataSources.Delete
+  ( -- * Resource
+    FitnessUsersDataSourcesDeleteResource,
+
+    -- ** Constructing a Request
+    FitnessUsersDataSourcesDelete (..),
+    newFitnessUsersDataSourcesDelete,
+  )
+where
+
+import Gogol.Fitness.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @fitness.users.dataSources.delete@ method which the
+-- 'FitnessUsersDataSourcesDelete' request conforms to.
+type FitnessUsersDataSourcesDeleteResource =
+  "fitness"
+    Core.:> "v1"
+    Core.:> "users"
+    Core.:> Core.Capture "userId" Core.Text
+    Core.:> "dataSources"
+    Core.:> Core.Capture "dataSourceId" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Delete '[Core.JSON] DataSource
+
+-- | Deletes the specified data source. The request will fail if the data source contains any data points.
+--
+-- /See:/ 'newFitnessUsersDataSourcesDelete' smart constructor.
+data FitnessUsersDataSourcesDelete = FitnessUsersDataSourcesDelete
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The data stream ID of the data source to delete.
+    dataSourceId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | Retrieve a data source for the person identified. Use me to indicate the authenticated user. Only me is supported at this time.
+    userId :: Core.Text
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FitnessUsersDataSourcesDelete' with the minimum fields required to make a request.
+newFitnessUsersDataSourcesDelete ::
+  -- |  The data stream ID of the data source to delete. See 'dataSourceId'.
+  Core.Text ->
+  -- |  Retrieve a data source for the person identified. Use me to indicate the authenticated user. Only me is supported at this time. See 'userId'.
+  Core.Text ->
+  FitnessUsersDataSourcesDelete
+newFitnessUsersDataSourcesDelete dataSourceId userId =
+  FitnessUsersDataSourcesDelete
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      dataSourceId = dataSourceId,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing,
+      userId = userId
+    }
+
+instance Core.GoogleRequest FitnessUsersDataSourcesDelete where
+  type Rs FitnessUsersDataSourcesDelete = DataSource
+  type
+    Scopes FitnessUsersDataSourcesDelete =
+      '[ Fitness'Activity'Write,
+         Fitness'BloodGlucose'Write,
+         Fitness'BloodPressure'Write,
+         Fitness'Body'Write,
+         Fitness'BodyTemperature'Write,
+         Fitness'HeartRate'Write,
+         Fitness'Location'Write,
+         Fitness'Nutrition'Write,
+         Fitness'OxygenSaturation'Write,
+         Fitness'ReproductiveHealth'Write,
+         Fitness'Sleep'Write
+       ]
+  requestClient FitnessUsersDataSourcesDelete {..} =
+    go
+      userId
+      dataSourceId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      fitnessService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy FitnessUsersDataSourcesDeleteResource)
+          Core.mempty
diff --git a/gen/Gogol/Fitness/Users/DataSources/Get.hs b/gen/Gogol/Fitness/Users/DataSources/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Fitness/Users/DataSources/Get.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Fitness.Users.DataSources.Get
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Returns the specified data source.
+--
+-- /See:/ <https://developers.google.com/fit/rest/v1/get-started Fitness API Reference> for @fitness.users.dataSources.get@.
+module Gogol.Fitness.Users.DataSources.Get
+  ( -- * Resource
+    FitnessUsersDataSourcesGetResource,
+
+    -- ** Constructing a Request
+    FitnessUsersDataSourcesGet (..),
+    newFitnessUsersDataSourcesGet,
+  )
+where
+
+import Gogol.Fitness.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @fitness.users.dataSources.get@ method which the
+-- 'FitnessUsersDataSourcesGet' request conforms to.
+type FitnessUsersDataSourcesGetResource =
+  "fitness"
+    Core.:> "v1"
+    Core.:> "users"
+    Core.:> Core.Capture "userId" Core.Text
+    Core.:> "dataSources"
+    Core.:> Core.Capture "dataSourceId" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] DataSource
+
+-- | Returns the specified data source.
+--
+-- /See:/ 'newFitnessUsersDataSourcesGet' smart constructor.
+data FitnessUsersDataSourcesGet = FitnessUsersDataSourcesGet
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The data stream ID of the data source to retrieve.
+    dataSourceId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | Retrieve a data source for the person identified. Use me to indicate the authenticated user. Only me is supported at this time.
+    userId :: Core.Text
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FitnessUsersDataSourcesGet' with the minimum fields required to make a request.
+newFitnessUsersDataSourcesGet ::
+  -- |  The data stream ID of the data source to retrieve. See 'dataSourceId'.
+  Core.Text ->
+  -- |  Retrieve a data source for the person identified. Use me to indicate the authenticated user. Only me is supported at this time. See 'userId'.
+  Core.Text ->
+  FitnessUsersDataSourcesGet
+newFitnessUsersDataSourcesGet dataSourceId userId =
+  FitnessUsersDataSourcesGet
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      dataSourceId = dataSourceId,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing,
+      userId = userId
+    }
+
+instance Core.GoogleRequest FitnessUsersDataSourcesGet where
+  type Rs FitnessUsersDataSourcesGet = DataSource
+  type
+    Scopes FitnessUsersDataSourcesGet =
+      '[ Fitness'Activity'Read,
+         Fitness'Activity'Write,
+         Fitness'BloodGlucose'Read,
+         Fitness'BloodGlucose'Write,
+         Fitness'BloodPressure'Read,
+         Fitness'BloodPressure'Write,
+         Fitness'Body'Read,
+         Fitness'Body'Write,
+         Fitness'BodyTemperature'Read,
+         Fitness'BodyTemperature'Write,
+         Fitness'HeartRate'Read,
+         Fitness'HeartRate'Write,
+         Fitness'Location'Read,
+         Fitness'Location'Write,
+         Fitness'Nutrition'Read,
+         Fitness'Nutrition'Write,
+         Fitness'OxygenSaturation'Read,
+         Fitness'OxygenSaturation'Write,
+         Fitness'ReproductiveHealth'Read,
+         Fitness'ReproductiveHealth'Write,
+         Fitness'Sleep'Read,
+         Fitness'Sleep'Write
+       ]
+  requestClient FitnessUsersDataSourcesGet {..} =
+    go
+      userId
+      dataSourceId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      fitnessService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy FitnessUsersDataSourcesGetResource)
+          Core.mempty
diff --git a/gen/Gogol/Fitness/Users/DataSources/List.hs b/gen/Gogol/Fitness/Users/DataSources/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Fitness/Users/DataSources/List.hs
@@ -0,0 +1,139 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Fitness.Users.DataSources.List
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+--
+-- /See:/ <https://developers.google.com/fit/rest/v1/get-started Fitness API Reference> for @fitness.users.dataSources.list@.
+module Gogol.Fitness.Users.DataSources.List
+  ( -- * Resource
+    FitnessUsersDataSourcesListResource,
+
+    -- ** Constructing a Request
+    FitnessUsersDataSourcesList (..),
+    newFitnessUsersDataSourcesList,
+  )
+where
+
+import Gogol.Fitness.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @fitness.users.dataSources.list@ method which the
+-- 'FitnessUsersDataSourcesList' request conforms to.
+type FitnessUsersDataSourcesListResource =
+  "fitness"
+    Core.:> "v1"
+    Core.:> "users"
+    Core.:> Core.Capture "userId" Core.Text
+    Core.:> "dataSources"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParams "dataTypeName" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] ListDataSourcesResponse
+
+-- | 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.
+--
+-- /See:/ 'newFitnessUsersDataSourcesList' smart constructor.
+data FitnessUsersDataSourcesList = FitnessUsersDataSourcesList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The names of data types to include in the list. If not specified, all data sources will be returned.
+    dataTypeName :: (Core.Maybe [Core.Text]),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | List data sources for the person identified. Use me to indicate the authenticated user. Only me is supported at this time.
+    userId :: Core.Text
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FitnessUsersDataSourcesList' with the minimum fields required to make a request.
+newFitnessUsersDataSourcesList ::
+  -- |  List data sources for the person identified. Use me to indicate the authenticated user. Only me is supported at this time. See 'userId'.
+  Core.Text ->
+  FitnessUsersDataSourcesList
+newFitnessUsersDataSourcesList userId =
+  FitnessUsersDataSourcesList
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      dataTypeName = Core.Nothing,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing,
+      userId = userId
+    }
+
+instance Core.GoogleRequest FitnessUsersDataSourcesList where
+  type Rs FitnessUsersDataSourcesList = ListDataSourcesResponse
+  type
+    Scopes FitnessUsersDataSourcesList =
+      '[ Fitness'Activity'Read,
+         Fitness'Activity'Write,
+         Fitness'BloodGlucose'Read,
+         Fitness'BloodGlucose'Write,
+         Fitness'BloodPressure'Read,
+         Fitness'BloodPressure'Write,
+         Fitness'Body'Read,
+         Fitness'Body'Write,
+         Fitness'BodyTemperature'Read,
+         Fitness'BodyTemperature'Write,
+         Fitness'HeartRate'Read,
+         Fitness'HeartRate'Write,
+         Fitness'Location'Read,
+         Fitness'Location'Write,
+         Fitness'Nutrition'Read,
+         Fitness'Nutrition'Write,
+         Fitness'OxygenSaturation'Read,
+         Fitness'OxygenSaturation'Write,
+         Fitness'ReproductiveHealth'Read,
+         Fitness'ReproductiveHealth'Write,
+         Fitness'Sleep'Read,
+         Fitness'Sleep'Write
+       ]
+  requestClient FitnessUsersDataSourcesList {..} =
+    go
+      userId
+      xgafv
+      accessToken
+      callback
+      (dataTypeName Core.^. Core._Default)
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      fitnessService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy FitnessUsersDataSourcesListResource)
+          Core.mempty
diff --git a/gen/Gogol/Fitness/Users/DataSources/Update.hs b/gen/Gogol/Fitness/Users/DataSources/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Fitness/Users/DataSources/Update.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Fitness.Users.DataSources.Update
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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.
+--
+-- /See:/ <https://developers.google.com/fit/rest/v1/get-started Fitness API Reference> for @fitness.users.dataSources.update@.
+module Gogol.Fitness.Users.DataSources.Update
+  ( -- * Resource
+    FitnessUsersDataSourcesUpdateResource,
+
+    -- ** Constructing a Request
+    FitnessUsersDataSourcesUpdate (..),
+    newFitnessUsersDataSourcesUpdate,
+  )
+where
+
+import Gogol.Fitness.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @fitness.users.dataSources.update@ method which the
+-- 'FitnessUsersDataSourcesUpdate' request conforms to.
+type FitnessUsersDataSourcesUpdateResource =
+  "fitness"
+    Core.:> "v1"
+    Core.:> "users"
+    Core.:> Core.Capture "userId" Core.Text
+    Core.:> "dataSources"
+    Core.:> Core.Capture "dataSourceId" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] DataSource
+    Core.:> Core.Put '[Core.JSON] DataSource
+
+-- | 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.
+--
+-- /See:/ 'newFitnessUsersDataSourcesUpdate' smart constructor.
+data FitnessUsersDataSourcesUpdate = FitnessUsersDataSourcesUpdate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The data stream ID of the data source to update.
+    dataSourceId :: Core.Text,
+    -- | Multipart request metadata.
+    payload :: DataSource,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | Update the data source for the person identified. Use me to indicate the authenticated user. Only me is supported at this time.
+    userId :: Core.Text
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FitnessUsersDataSourcesUpdate' with the minimum fields required to make a request.
+newFitnessUsersDataSourcesUpdate ::
+  -- |  The data stream ID of the data source to update. See 'dataSourceId'.
+  Core.Text ->
+  -- |  Multipart request metadata. See 'payload'.
+  DataSource ->
+  -- |  Update the data source for the person identified. Use me to indicate the authenticated user. Only me is supported at this time. See 'userId'.
+  Core.Text ->
+  FitnessUsersDataSourcesUpdate
+newFitnessUsersDataSourcesUpdate dataSourceId payload userId =
+  FitnessUsersDataSourcesUpdate
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      dataSourceId = dataSourceId,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing,
+      userId = userId
+    }
+
+instance Core.GoogleRequest FitnessUsersDataSourcesUpdate where
+  type Rs FitnessUsersDataSourcesUpdate = DataSource
+  type
+    Scopes FitnessUsersDataSourcesUpdate =
+      '[ Fitness'Activity'Write,
+         Fitness'BloodGlucose'Write,
+         Fitness'BloodPressure'Write,
+         Fitness'Body'Write,
+         Fitness'BodyTemperature'Write,
+         Fitness'HeartRate'Write,
+         Fitness'Location'Write,
+         Fitness'Nutrition'Write,
+         Fitness'OxygenSaturation'Write,
+         Fitness'ReproductiveHealth'Write,
+         Fitness'Sleep'Write
+       ]
+  requestClient FitnessUsersDataSourcesUpdate {..} =
+    go
+      userId
+      dataSourceId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      fitnessService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy FitnessUsersDataSourcesUpdateResource)
+          Core.mempty
diff --git a/gen/Gogol/Fitness/Users/Dataset/Aggregate.hs b/gen/Gogol/Fitness/Users/Dataset/Aggregate.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Fitness/Users/Dataset/Aggregate.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Fitness.Users.Dataset.Aggregate
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- 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 aggregated into exactly one bucket type per request.
+--
+-- /See:/ <https://developers.google.com/fit/rest/v1/get-started Fitness API Reference> for @fitness.users.dataset.aggregate@.
+module Gogol.Fitness.Users.Dataset.Aggregate
+  ( -- * Resource
+    FitnessUsersDatasetAggregateResource,
+
+    -- ** Constructing a Request
+    FitnessUsersDatasetAggregate (..),
+    newFitnessUsersDatasetAggregate,
+  )
+where
+
+import Gogol.Fitness.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @fitness.users.dataset.aggregate@ method which the
+-- 'FitnessUsersDatasetAggregate' request conforms to.
+type FitnessUsersDatasetAggregateResource =
+  "fitness"
+    Core.:> "v1"
+    Core.:> "users"
+    Core.:> Core.Capture "userId" Core.Text
+    Core.:> "dataset:aggregate"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] AggregateRequest
+    Core.:> Core.Post '[Core.JSON] AggregateResponse
+
+-- | 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 aggregated into exactly one bucket type per request.
+--
+-- /See:/ 'newFitnessUsersDatasetAggregate' smart constructor.
+data FitnessUsersDatasetAggregate = FitnessUsersDatasetAggregate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Multipart request metadata.
+    payload :: AggregateRequest,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | Aggregate data for the person identified. Use me to indicate the authenticated user. Only me is supported at this time.
+    userId :: Core.Text
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FitnessUsersDatasetAggregate' with the minimum fields required to make a request.
+newFitnessUsersDatasetAggregate ::
+  -- |  Multipart request metadata. See 'payload'.
+  AggregateRequest ->
+  -- |  Aggregate data for the person identified. Use me to indicate the authenticated user. Only me is supported at this time. See 'userId'.
+  Core.Text ->
+  FitnessUsersDatasetAggregate
+newFitnessUsersDatasetAggregate payload userId =
+  FitnessUsersDatasetAggregate
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      payload = payload,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing,
+      userId = userId
+    }
+
+instance Core.GoogleRequest FitnessUsersDatasetAggregate where
+  type Rs FitnessUsersDatasetAggregate = AggregateResponse
+  type
+    Scopes FitnessUsersDatasetAggregate =
+      '[ Fitness'Activity'Read,
+         Fitness'Activity'Write,
+         Fitness'BloodGlucose'Read,
+         Fitness'BloodGlucose'Write,
+         Fitness'BloodPressure'Read,
+         Fitness'BloodPressure'Write,
+         Fitness'Body'Read,
+         Fitness'Body'Write,
+         Fitness'BodyTemperature'Read,
+         Fitness'BodyTemperature'Write,
+         Fitness'HeartRate'Read,
+         Fitness'HeartRate'Write,
+         Fitness'Location'Read,
+         Fitness'Location'Write,
+         Fitness'Nutrition'Read,
+         Fitness'Nutrition'Write,
+         Fitness'OxygenSaturation'Read,
+         Fitness'OxygenSaturation'Write,
+         Fitness'ReproductiveHealth'Read,
+         Fitness'ReproductiveHealth'Write,
+         Fitness'Sleep'Read,
+         Fitness'Sleep'Write
+       ]
+  requestClient FitnessUsersDatasetAggregate {..} =
+    go
+      userId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      fitnessService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy FitnessUsersDatasetAggregateResource)
+          Core.mempty
diff --git a/gen/Gogol/Fitness/Users/Sessions/Delete.hs b/gen/Gogol/Fitness/Users/Sessions/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Fitness/Users/Sessions/Delete.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Fitness.Users.Sessions.Delete
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes a session specified by the given session ID.
+--
+-- /See:/ <https://developers.google.com/fit/rest/v1/get-started Fitness API Reference> for @fitness.users.sessions.delete@.
+module Gogol.Fitness.Users.Sessions.Delete
+  ( -- * Resource
+    FitnessUsersSessionsDeleteResource,
+
+    -- ** Constructing a Request
+    FitnessUsersSessionsDelete (..),
+    newFitnessUsersSessionsDelete,
+  )
+where
+
+import Gogol.Fitness.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @fitness.users.sessions.delete@ method which the
+-- 'FitnessUsersSessionsDelete' request conforms to.
+type FitnessUsersSessionsDeleteResource =
+  "fitness"
+    Core.:> "v1"
+    Core.:> "users"
+    Core.:> Core.Capture "userId" Core.Text
+    Core.:> "sessions"
+    Core.:> Core.Capture "sessionId" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Delete '[Core.JSON] ()
+
+-- | Deletes a session specified by the given session ID.
+--
+-- /See:/ 'newFitnessUsersSessionsDelete' smart constructor.
+data FitnessUsersSessionsDelete = FitnessUsersSessionsDelete
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | The ID of the session to be deleted.
+    sessionId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | Delete a session for the person identified. Use me to indicate the authenticated user. Only me is supported at this time.
+    userId :: Core.Text
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FitnessUsersSessionsDelete' with the minimum fields required to make a request.
+newFitnessUsersSessionsDelete ::
+  -- |  The ID of the session to be deleted. See 'sessionId'.
+  Core.Text ->
+  -- |  Delete a session for the person identified. Use me to indicate the authenticated user. Only me is supported at this time. See 'userId'.
+  Core.Text ->
+  FitnessUsersSessionsDelete
+newFitnessUsersSessionsDelete sessionId userId =
+  FitnessUsersSessionsDelete
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      sessionId = sessionId,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing,
+      userId = userId
+    }
+
+instance Core.GoogleRequest FitnessUsersSessionsDelete where
+  type Rs FitnessUsersSessionsDelete = ()
+  type
+    Scopes FitnessUsersSessionsDelete =
+      '[Fitness'Activity'Write, Fitness'Sleep'Write]
+  requestClient FitnessUsersSessionsDelete {..} =
+    go
+      userId
+      sessionId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      fitnessService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy FitnessUsersSessionsDeleteResource)
+          Core.mempty
diff --git a/gen/Gogol/Fitness/Users/Sessions/List.hs b/gen/Gogol/Fitness/Users/Sessions/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Fitness/Users/Sessions/List.hs
@@ -0,0 +1,159 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Fitness.Users.Sessions.List
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists sessions previously created.
+--
+-- /See:/ <https://developers.google.com/fit/rest/v1/get-started Fitness API Reference> for @fitness.users.sessions.list@.
+module Gogol.Fitness.Users.Sessions.List
+  ( -- * Resource
+    FitnessUsersSessionsListResource,
+
+    -- ** Constructing a Request
+    FitnessUsersSessionsList (..),
+    newFitnessUsersSessionsList,
+  )
+where
+
+import Gogol.Fitness.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @fitness.users.sessions.list@ method which the
+-- 'FitnessUsersSessionsList' request conforms to.
+type FitnessUsersSessionsListResource =
+  "fitness"
+    Core.:> "v1"
+    Core.:> "users"
+    Core.:> Core.Capture "userId" Core.Text
+    Core.:> "sessions"
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParams "activityType" Core.Int32
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "endTime" Core.Text
+    Core.:> Core.QueryParam "includeDeleted" Core.Bool
+    Core.:> Core.QueryParam "pageToken" Core.Text
+    Core.:> Core.QueryParam "startTime" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.Get '[Core.JSON] ListSessionsResponse
+
+-- | Lists sessions previously created.
+--
+-- /See:/ 'newFitnessUsersSessionsList' smart constructor.
+data FitnessUsersSessionsList = FitnessUsersSessionsList
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | If non-empty, only sessions with these activity types should be returned.
+    activityType :: (Core.Maybe [Core.Int32]),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | An RFC3339 timestamp. Only sessions ending between the start and end times will be included in the response. If this time is omitted but startTime is specified, all sessions from startTime to the end of time will be returned.
+    endTime :: (Core.Maybe Core.Text),
+    -- | If true, and if both startTime and endTime are omitted, session deletions will be returned.
+    includeDeleted :: (Core.Maybe Core.Bool),
+    -- | The continuation token, which is used for incremental syncing. To get the next batch of changes, set this parameter to the value of nextPageToken from the previous response. The page token is ignored if either start or end time is specified. If none of start time, end time, and the page token is specified, sessions modified in the last 30 days are returned.
+    pageToken :: (Core.Maybe Core.Text),
+    -- | An RFC3339 timestamp. Only sessions ending between the start and end times will be included in the response. If this time is omitted but endTime is specified, all sessions from the start of time up to endTime will be returned.
+    startTime :: (Core.Maybe Core.Text),
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | List sessions for the person identified. Use me to indicate the authenticated user. Only me is supported at this time.
+    userId :: Core.Text
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FitnessUsersSessionsList' with the minimum fields required to make a request.
+newFitnessUsersSessionsList ::
+  -- |  List sessions for the person identified. Use me to indicate the authenticated user. Only me is supported at this time. See 'userId'.
+  Core.Text ->
+  FitnessUsersSessionsList
+newFitnessUsersSessionsList userId =
+  FitnessUsersSessionsList
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      activityType = Core.Nothing,
+      callback = Core.Nothing,
+      endTime = Core.Nothing,
+      includeDeleted = Core.Nothing,
+      pageToken = Core.Nothing,
+      startTime = Core.Nothing,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing,
+      userId = userId
+    }
+
+instance Core.GoogleRequest FitnessUsersSessionsList where
+  type Rs FitnessUsersSessionsList = ListSessionsResponse
+  type
+    Scopes FitnessUsersSessionsList =
+      '[ Fitness'Activity'Read,
+         Fitness'Activity'Write,
+         Fitness'BloodGlucose'Read,
+         Fitness'BloodGlucose'Write,
+         Fitness'BloodPressure'Read,
+         Fitness'BloodPressure'Write,
+         Fitness'Body'Read,
+         Fitness'Body'Write,
+         Fitness'BodyTemperature'Read,
+         Fitness'BodyTemperature'Write,
+         Fitness'HeartRate'Read,
+         Fitness'HeartRate'Write,
+         Fitness'Location'Read,
+         Fitness'Location'Write,
+         Fitness'Nutrition'Read,
+         Fitness'Nutrition'Write,
+         Fitness'OxygenSaturation'Read,
+         Fitness'OxygenSaturation'Write,
+         Fitness'ReproductiveHealth'Read,
+         Fitness'ReproductiveHealth'Write,
+         Fitness'Sleep'Read,
+         Fitness'Sleep'Write
+       ]
+  requestClient FitnessUsersSessionsList {..} =
+    go
+      userId
+      xgafv
+      accessToken
+      (activityType Core.^. Core._Default)
+      callback
+      endTime
+      includeDeleted
+      pageToken
+      startTime
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      fitnessService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy FitnessUsersSessionsListResource)
+          Core.mempty
diff --git a/gen/Gogol/Fitness/Users/Sessions/Update.hs b/gen/Gogol/Fitness/Users/Sessions/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Gogol/Fitness/Users/Sessions/Update.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE DataKinds #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE ImportQualifiedPost #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- |
+-- Module      : Gogol.Fitness.Users.Sessions.Update
+-- Copyright   : (c) 2015-2025 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay+gogol@gmail.com>
+--               Toni Cebrián <toni@tonicebrian.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates or insert a given session.
+--
+-- /See:/ <https://developers.google.com/fit/rest/v1/get-started Fitness API Reference> for @fitness.users.sessions.update@.
+module Gogol.Fitness.Users.Sessions.Update
+  ( -- * Resource
+    FitnessUsersSessionsUpdateResource,
+
+    -- ** Constructing a Request
+    FitnessUsersSessionsUpdate (..),
+    newFitnessUsersSessionsUpdate,
+  )
+where
+
+import Gogol.Fitness.Types
+import Gogol.Prelude qualified as Core
+
+-- | A resource alias for @fitness.users.sessions.update@ method which the
+-- 'FitnessUsersSessionsUpdate' request conforms to.
+type FitnessUsersSessionsUpdateResource =
+  "fitness"
+    Core.:> "v1"
+    Core.:> "users"
+    Core.:> Core.Capture "userId" Core.Text
+    Core.:> "sessions"
+    Core.:> Core.Capture "sessionId" Core.Text
+    Core.:> Core.QueryParam "$.xgafv" Xgafv
+    Core.:> Core.QueryParam "access_token" Core.Text
+    Core.:> Core.QueryParam "callback" Core.Text
+    Core.:> Core.QueryParam "uploadType" Core.Text
+    Core.:> Core.QueryParam "upload_protocol" Core.Text
+    Core.:> Core.QueryParam "alt" Core.AltJSON
+    Core.:> Core.ReqBody '[Core.JSON] Session
+    Core.:> Core.Put '[Core.JSON] Session
+
+-- | Updates or insert a given session.
+--
+-- /See:/ 'newFitnessUsersSessionsUpdate' smart constructor.
+data FitnessUsersSessionsUpdate = FitnessUsersSessionsUpdate
+  { -- | V1 error format.
+    xgafv :: (Core.Maybe Xgafv),
+    -- | OAuth access token.
+    accessToken :: (Core.Maybe Core.Text),
+    -- | JSONP
+    callback :: (Core.Maybe Core.Text),
+    -- | Multipart request metadata.
+    payload :: Session,
+    -- | The ID of the session to be created.
+    sessionId :: Core.Text,
+    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
+    uploadType :: (Core.Maybe Core.Text),
+    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
+    uploadProtocol :: (Core.Maybe Core.Text),
+    -- | Create sessions for the person identified. Use me to indicate the authenticated user. Only me is supported at this time.
+    userId :: Core.Text
+  }
+  deriving (Core.Eq, Core.Show, Core.Generic)
+
+-- | Creates a value of 'FitnessUsersSessionsUpdate' with the minimum fields required to make a request.
+newFitnessUsersSessionsUpdate ::
+  -- |  Multipart request metadata. See 'payload'.
+  Session ->
+  -- |  The ID of the session to be created. See 'sessionId'.
+  Core.Text ->
+  -- |  Create sessions for the person identified. Use me to indicate the authenticated user. Only me is supported at this time. See 'userId'.
+  Core.Text ->
+  FitnessUsersSessionsUpdate
+newFitnessUsersSessionsUpdate payload sessionId userId =
+  FitnessUsersSessionsUpdate
+    { xgafv = Core.Nothing,
+      accessToken = Core.Nothing,
+      callback = Core.Nothing,
+      payload = payload,
+      sessionId = sessionId,
+      uploadType = Core.Nothing,
+      uploadProtocol = Core.Nothing,
+      userId = userId
+    }
+
+instance Core.GoogleRequest FitnessUsersSessionsUpdate where
+  type Rs FitnessUsersSessionsUpdate = Session
+  type
+    Scopes FitnessUsersSessionsUpdate =
+      '[Fitness'Activity'Write, Fitness'Sleep'Write]
+  requestClient FitnessUsersSessionsUpdate {..} =
+    go
+      userId
+      sessionId
+      xgafv
+      accessToken
+      callback
+      uploadType
+      uploadProtocol
+      (Core.Just Core.AltJSON)
+      payload
+      fitnessService
+    where
+      go =
+        Core.buildClient
+          (Core.Proxy :: Core.Proxy FitnessUsersSessionsUpdateResource)
+          Core.mempty
diff --git a/gen/Network/Google/Fitness.hs b/gen/Network/Google/Fitness.hs
deleted file mode 100644
--- a/gen/Network/Google/Fitness.hs
+++ /dev/null
@@ -1,320 +0,0 @@
-{-# LANGUAGE DataKinds         #-}
-{-# LANGUAGE NoImplicitPrelude #-}
-{-# LANGUAGE TypeOperators     #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-
--- |
--- Module      : Network.Google.Fitness
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Stores and accesses user data in the fitness store from apps on any
--- platform.
---
--- /See:/ <https://developers.google.com/fit/rest/ Fitness Reference>
-module Network.Google.Fitness
-    (
-    -- * Service Configuration
-      fitnessService
-
-    -- * OAuth Scopes
-    , fitnessBodyTemperatureReadScope
-    , fitnessBodyReadScope
-    , fitnessNutritionReadScope
-    , fitnessReProductiveHealthReadScope
-    , fitnessActivityReadScope
-    , fitnessReProductiveHealthWriteScope
-    , fitnessActivityWriteScope
-    , fitnessBloodPressureWriteScope
-    , fitnessBodyTemperatureWriteScope
-    , fitnessOxygenSaturationReadScope
-    , fitnessBloodGlucoseWriteScope
-    , fitnessBloodPressureReadScope
-    , fitnessLocationReadScope
-    , fitnessLocationWriteScope
-    , fitnessNutritionWriteScope
-    , fitnessBodyWriteScope
-    , fitnessBloodGlucoseReadScope
-    , fitnessOxygenSaturationWriteScope
-
-    -- * API Declaration
-    , FitnessAPI
-
-    -- * Resources
-
-    -- ** fitness.users.dataSources.create
-    , module Network.Google.Resource.Fitness.Users.DataSources.Create
-
-    -- ** fitness.users.dataSources.dataPointChanges.list
-    , module Network.Google.Resource.Fitness.Users.DataSources.DataPointChanges.List
-
-    -- ** fitness.users.dataSources.datasets.delete
-    , module Network.Google.Resource.Fitness.Users.DataSources.DataSets.Delete
-
-    -- ** fitness.users.dataSources.datasets.get
-    , module Network.Google.Resource.Fitness.Users.DataSources.DataSets.Get
-
-    -- ** fitness.users.dataSources.datasets.patch
-    , module Network.Google.Resource.Fitness.Users.DataSources.DataSets.Patch
-
-    -- ** fitness.users.dataSources.delete
-    , module Network.Google.Resource.Fitness.Users.DataSources.Delete
-
-    -- ** fitness.users.dataSources.get
-    , module Network.Google.Resource.Fitness.Users.DataSources.Get
-
-    -- ** fitness.users.dataSources.list
-    , module Network.Google.Resource.Fitness.Users.DataSources.List
-
-    -- ** fitness.users.dataSources.update
-    , module Network.Google.Resource.Fitness.Users.DataSources.Update
-
-    -- ** fitness.users.dataset.aggregate
-    , module Network.Google.Resource.Fitness.Users.DataSet.Aggregate
-
-    -- ** fitness.users.sessions.delete
-    , module Network.Google.Resource.Fitness.Users.Sessions.Delete
-
-    -- ** fitness.users.sessions.list
-    , module Network.Google.Resource.Fitness.Users.Sessions.List
-
-    -- ** fitness.users.sessions.update
-    , module Network.Google.Resource.Fitness.Users.Sessions.Update
-
-    -- * Types
-
-    -- ** AggregateBucketType
-    , AggregateBucketType (..)
-
-    -- ** DataSet
-    , DataSet
-    , dataSet
-    , dsNextPageToken
-    , dsDataSourceId
-    , dsPoint
-    , dsMinStartTimeNs
-    , dsMaxEndTimeNs
-
-    -- ** Application
-    , Application
-    , application
-    , aPackageName
-    , aName
-    , aVersion
-    , aDetailsURL
-
-    -- ** AggregateResponse
-    , AggregateResponse
-    , aggregateResponse
-    , arBucket
-
-    -- ** AggregateBy
-    , AggregateBy
-    , aggregateBy
-    , abDataTypeName
-    , abDataSourceId
-
-    -- ** DataSourceType
-    , DataSourceType (..)
-
-    -- ** BucketByTimePeriodType
-    , BucketByTimePeriodType (..)
-
-    -- ** BucketByActivity
-    , BucketByActivity
-    , bucketByActivity
-    , bbaMinDurationMillis
-    , bbaActivityDataSourceId
-
-    -- ** AggregateRequest
-    , AggregateRequest
-    , aggregateRequest
-    , arEndTimeMillis
-    , arFilteredDataQualityStandard
-    , arAggregateBy
-    , arBucketBySession
-    , arBucketByActivityType
-    , arBucketByTime
-    , arStartTimeMillis
-    , arBucketByActivitySegment
-
-    -- ** Device
-    , Device
-    , device
-    , dManufacturer
-    , dUid
-    , dModel
-    , dVersion
-    , dType
-
-    -- ** Value
-    , Value
-    , value
-    , vMapVal
-    , vFpVal
-    , vIntVal
-    , vStringVal
-
-    -- ** BucketBySession
-    , BucketBySession
-    , bucketBySession
-    , bbsMinDurationMillis
-
-    -- ** DataPoint
-    , DataPoint
-    , dataPoint
-    , dpOriginDataSourceId
-    , dpRawTimestampNanos
-    , dpDataTypeName
-    , dpValue
-    , dpComputationTimeMillis
-    , dpEndTimeNanos
-    , dpModifiedTimeMillis
-    , dpStartTimeNanos
-
-    -- ** ListSessionsResponse
-    , ListSessionsResponse
-    , listSessionsResponse
-    , lsrNextPageToken
-    , lsrDeletedSession
-    , lsrHasMoreData
-    , lsrSession
-
-    -- ** AggregateBucket
-    , AggregateBucket
-    , aggregateBucket
-    , abEndTimeMillis
-    , abDataSet
-    , abActivity
-    , abType
-    , abStartTimeMillis
-    , abSession
-
-    -- ** MapValue
-    , MapValue
-    , mapValue
-    , mvFpVal
-
-    -- ** ListDataSourcesResponse
-    , ListDataSourcesResponse
-    , listDataSourcesResponse
-    , ldsrDataSource
-
-    -- ** DataTypeField
-    , DataTypeField
-    , dataTypeField
-    , dtfFormat
-    , dtfName
-    , dtfOptional
-
-    -- ** AggregateRequestFilteredDataQualityStandardItem
-    , AggregateRequestFilteredDataQualityStandardItem (..)
-
-    -- ** DataSource
-    , DataSource
-    , dataSource
-    , dsApplication
-    , dsDevice
-    , dsDataQualityStandard
-    , dsName
-    , dsDataType
-    , dsType
-    , dsDataStreamName
-    , dsDataStreamId
-
-    -- ** BucketByTimePeriod
-    , BucketByTimePeriod
-    , bucketByTimePeriod
-    , bbtpValue
-    , bbtpType
-    , bbtpTimeZoneId
-
-    -- ** DeviceType
-    , DeviceType (..)
-
-    -- ** ValueMapValEntry
-    , ValueMapValEntry
-    , valueMapValEntry
-    , vmveValue
-    , vmveKey
-
-    -- ** BucketByTime
-    , BucketByTime
-    , bucketByTime
-    , bbtPeriod
-    , bbtDurationMillis
-
-    -- ** DataType
-    , DataType
-    , dataType
-    , dtField
-    , dtName
-
-    -- ** ListDataPointChangesResponse
-    , ListDataPointChangesResponse
-    , listDataPointChangesResponse
-    , ldpcrNextPageToken
-    , ldpcrInsertedDataPoint
-    , ldpcrDataSourceId
-    , ldpcrDeletedDataPoint
-
-    -- ** Session
-    , Session
-    , session
-    , sEndTimeMillis
-    , sActiveTimeMillis
-    , sApplication
-    , sActivityType
-    , sName
-    , sModifiedTimeMillis
-    , sId
-    , sStartTimeMillis
-    , sDescription
-
-    -- ** DataSourceDataQualityStandardItem
-    , DataSourceDataQualityStandardItem (..)
-
-    -- ** DataTypeFieldFormat
-    , DataTypeFieldFormat (..)
-    ) where
-
-import           Network.Google.Fitness.Types
-import           Network.Google.Prelude
-import           Network.Google.Resource.Fitness.Users.DataSet.Aggregate
-import           Network.Google.Resource.Fitness.Users.DataSources.Create
-import           Network.Google.Resource.Fitness.Users.DataSources.DataPointChanges.List
-import           Network.Google.Resource.Fitness.Users.DataSources.DataSets.Delete
-import           Network.Google.Resource.Fitness.Users.DataSources.DataSets.Get
-import           Network.Google.Resource.Fitness.Users.DataSources.DataSets.Patch
-import           Network.Google.Resource.Fitness.Users.DataSources.Delete
-import           Network.Google.Resource.Fitness.Users.DataSources.Get
-import           Network.Google.Resource.Fitness.Users.DataSources.List
-import           Network.Google.Resource.Fitness.Users.DataSources.Update
-import           Network.Google.Resource.Fitness.Users.Sessions.Delete
-import           Network.Google.Resource.Fitness.Users.Sessions.List
-import           Network.Google.Resource.Fitness.Users.Sessions.Update
-
-{- $resources
-TODO
--}
-
--- | Represents the entirety of the methods and resources available for the Fitness service.
-type FitnessAPI =
-     UsersDataSetAggregateResource :<|>
-       UsersDataSourcesDataSetsPatchResource
-       :<|> UsersDataSourcesDataSetsGetResource
-       :<|> UsersDataSourcesDataSetsDeleteResource
-       :<|> UsersDataSourcesDataPointChangesListResource
-       :<|> UsersDataSourcesListResource
-       :<|> UsersDataSourcesGetResource
-       :<|> UsersDataSourcesCreateResource
-       :<|> UsersDataSourcesDeleteResource
-       :<|> UsersDataSourcesUpdateResource
-       :<|> UsersSessionsListResource
-       :<|> UsersSessionsDeleteResource
-       :<|> UsersSessionsUpdateResource
diff --git a/gen/Network/Google/Fitness/Types.hs b/gen/Network/Google/Fitness/Types.hs
deleted file mode 100644
--- a/gen/Network/Google/Fitness/Types.hs
+++ /dev/null
@@ -1,317 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- |
--- Module      : Network.Google.Fitness.Types
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.Google.Fitness.Types
-    (
-    -- * Service Configuration
-      fitnessService
-
-    -- * OAuth Scopes
-    , fitnessBodyTemperatureReadScope
-    , fitnessBodyReadScope
-    , fitnessNutritionReadScope
-    , fitnessReProductiveHealthReadScope
-    , fitnessActivityReadScope
-    , fitnessReProductiveHealthWriteScope
-    , fitnessActivityWriteScope
-    , fitnessBloodPressureWriteScope
-    , fitnessBodyTemperatureWriteScope
-    , fitnessOxygenSaturationReadScope
-    , fitnessBloodGlucoseWriteScope
-    , fitnessBloodPressureReadScope
-    , fitnessLocationReadScope
-    , fitnessLocationWriteScope
-    , fitnessNutritionWriteScope
-    , fitnessBodyWriteScope
-    , fitnessBloodGlucoseReadScope
-    , fitnessOxygenSaturationWriteScope
-
-    -- * AggregateBucketType
-    , AggregateBucketType (..)
-
-    -- * DataSet
-    , DataSet
-    , dataSet
-    , dsNextPageToken
-    , dsDataSourceId
-    , dsPoint
-    , dsMinStartTimeNs
-    , dsMaxEndTimeNs
-
-    -- * Application
-    , Application
-    , application
-    , aPackageName
-    , aName
-    , aVersion
-    , aDetailsURL
-
-    -- * AggregateResponse
-    , AggregateResponse
-    , aggregateResponse
-    , arBucket
-
-    -- * AggregateBy
-    , AggregateBy
-    , aggregateBy
-    , abDataTypeName
-    , abDataSourceId
-
-    -- * DataSourceType
-    , DataSourceType (..)
-
-    -- * BucketByTimePeriodType
-    , BucketByTimePeriodType (..)
-
-    -- * BucketByActivity
-    , BucketByActivity
-    , bucketByActivity
-    , bbaMinDurationMillis
-    , bbaActivityDataSourceId
-
-    -- * AggregateRequest
-    , AggregateRequest
-    , aggregateRequest
-    , arEndTimeMillis
-    , arFilteredDataQualityStandard
-    , arAggregateBy
-    , arBucketBySession
-    , arBucketByActivityType
-    , arBucketByTime
-    , arStartTimeMillis
-    , arBucketByActivitySegment
-
-    -- * Device
-    , Device
-    , device
-    , dManufacturer
-    , dUid
-    , dModel
-    , dVersion
-    , dType
-
-    -- * Value
-    , Value
-    , value
-    , vMapVal
-    , vFpVal
-    , vIntVal
-    , vStringVal
-
-    -- * BucketBySession
-    , BucketBySession
-    , bucketBySession
-    , bbsMinDurationMillis
-
-    -- * DataPoint
-    , DataPoint
-    , dataPoint
-    , dpOriginDataSourceId
-    , dpRawTimestampNanos
-    , dpDataTypeName
-    , dpValue
-    , dpComputationTimeMillis
-    , dpEndTimeNanos
-    , dpModifiedTimeMillis
-    , dpStartTimeNanos
-
-    -- * ListSessionsResponse
-    , ListSessionsResponse
-    , listSessionsResponse
-    , lsrNextPageToken
-    , lsrDeletedSession
-    , lsrHasMoreData
-    , lsrSession
-
-    -- * AggregateBucket
-    , AggregateBucket
-    , aggregateBucket
-    , abEndTimeMillis
-    , abDataSet
-    , abActivity
-    , abType
-    , abStartTimeMillis
-    , abSession
-
-    -- * MapValue
-    , MapValue
-    , mapValue
-    , mvFpVal
-
-    -- * ListDataSourcesResponse
-    , ListDataSourcesResponse
-    , listDataSourcesResponse
-    , ldsrDataSource
-
-    -- * DataTypeField
-    , DataTypeField
-    , dataTypeField
-    , dtfFormat
-    , dtfName
-    , dtfOptional
-
-    -- * AggregateRequestFilteredDataQualityStandardItem
-    , AggregateRequestFilteredDataQualityStandardItem (..)
-
-    -- * DataSource
-    , DataSource
-    , dataSource
-    , dsApplication
-    , dsDevice
-    , dsDataQualityStandard
-    , dsName
-    , dsDataType
-    , dsType
-    , dsDataStreamName
-    , dsDataStreamId
-
-    -- * BucketByTimePeriod
-    , BucketByTimePeriod
-    , bucketByTimePeriod
-    , bbtpValue
-    , bbtpType
-    , bbtpTimeZoneId
-
-    -- * DeviceType
-    , DeviceType (..)
-
-    -- * ValueMapValEntry
-    , ValueMapValEntry
-    , valueMapValEntry
-    , vmveValue
-    , vmveKey
-
-    -- * BucketByTime
-    , BucketByTime
-    , bucketByTime
-    , bbtPeriod
-    , bbtDurationMillis
-
-    -- * DataType
-    , DataType
-    , dataType
-    , dtField
-    , dtName
-
-    -- * ListDataPointChangesResponse
-    , ListDataPointChangesResponse
-    , listDataPointChangesResponse
-    , ldpcrNextPageToken
-    , ldpcrInsertedDataPoint
-    , ldpcrDataSourceId
-    , ldpcrDeletedDataPoint
-
-    -- * Session
-    , Session
-    , session
-    , sEndTimeMillis
-    , sActiveTimeMillis
-    , sApplication
-    , sActivityType
-    , sName
-    , sModifiedTimeMillis
-    , sId
-    , sStartTimeMillis
-    , sDescription
-
-    -- * DataSourceDataQualityStandardItem
-    , DataSourceDataQualityStandardItem (..)
-
-    -- * DataTypeFieldFormat
-    , DataTypeFieldFormat (..)
-    ) where
-
-import           Network.Google.Fitness.Types.Product
-import           Network.Google.Fitness.Types.Sum
-import           Network.Google.Prelude
-
--- | Default request referring to version 'v1' of the Fitness. This contains the host and root path used as a starting point for constructing service requests.
-fitnessService :: ServiceConfig
-fitnessService
-  = defaultService (ServiceId "fitness:v1")
-      "www.googleapis.com"
-
--- | View body temperature data in Google Fit
-fitnessBodyTemperatureReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.body_temperature.read"]
-fitnessBodyTemperatureReadScope = Proxy
-
--- | View body sensor information in Google Fit
-fitnessBodyReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.body.read"]
-fitnessBodyReadScope = Proxy
-
--- | View nutrition information in Google Fit
-fitnessNutritionReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.nutrition.read"]
-fitnessNutritionReadScope = Proxy
-
--- | View reproductive health data in Google Fit
-fitnessReProductiveHealthReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.reproductive_health.read"]
-fitnessReProductiveHealthReadScope = Proxy
-
--- | View your activity information in Google Fit
-fitnessActivityReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.activity.read"]
-fitnessActivityReadScope = Proxy
-
--- | View and store reproductive health data in Google Fit
-fitnessReProductiveHealthWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.reproductive_health.write"]
-fitnessReProductiveHealthWriteScope = Proxy
-
--- | View and store your activity information in Google Fit
-fitnessActivityWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.activity.write"]
-fitnessActivityWriteScope = Proxy
-
--- | View and store blood pressure data in Google Fit
-fitnessBloodPressureWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.blood_pressure.write"]
-fitnessBloodPressureWriteScope = Proxy
-
--- | View and store body temperature data in Google Fit
-fitnessBodyTemperatureWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.body_temperature.write"]
-fitnessBodyTemperatureWriteScope = Proxy
-
--- | View oxygen saturation data in Google Fit
-fitnessOxygenSaturationReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.oxygen_saturation.read"]
-fitnessOxygenSaturationReadScope = Proxy
-
--- | View and store blood glucose data in Google Fit
-fitnessBloodGlucoseWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.blood_glucose.write"]
-fitnessBloodGlucoseWriteScope = Proxy
-
--- | View blood pressure data in Google Fit
-fitnessBloodPressureReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.blood_pressure.read"]
-fitnessBloodPressureReadScope = Proxy
-
--- | View your stored location data in Google Fit
-fitnessLocationReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.location.read"]
-fitnessLocationReadScope = Proxy
-
--- | View and store your location data in Google Fit
-fitnessLocationWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.location.write"]
-fitnessLocationWriteScope = Proxy
-
--- | View and store nutrition information in Google Fit
-fitnessNutritionWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.nutrition.write"]
-fitnessNutritionWriteScope = Proxy
-
--- | View and store body sensor data in Google Fit
-fitnessBodyWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.body.write"]
-fitnessBodyWriteScope = Proxy
-
--- | View blood glucose data in Google Fit
-fitnessBloodGlucoseReadScope :: Proxy '["https://www.googleapis.com/auth/fitness.blood_glucose.read"]
-fitnessBloodGlucoseReadScope = Proxy
-
--- | View and store oxygen saturation data in Google Fit
-fitnessOxygenSaturationWriteScope :: Proxy '["https://www.googleapis.com/auth/fitness.oxygen_saturation.write"]
-fitnessOxygenSaturationWriteScope = Proxy
diff --git a/gen/Network/Google/Fitness/Types/Product.hs b/gen/Network/Google/Fitness/Types/Product.hs
deleted file mode 100644
--- a/gen/Network/Google/Fitness/Types/Product.hs
+++ /dev/null
@@ -1,1788 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- |
--- Module      : Network.Google.Fitness.Types.Product
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.Google.Fitness.Types.Product where
-
-import           Network.Google.Fitness.Types.Sum
-import           Network.Google.Prelude
-
--- | 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.
---
--- /See:/ 'dataSet' smart constructor.
-data DataSet =
-  DataSet'
-    { _dsNextPageToken  :: !(Maybe Text)
-    , _dsDataSourceId   :: !(Maybe Text)
-    , _dsPoint          :: !(Maybe [DataPoint])
-    , _dsMinStartTimeNs :: !(Maybe (Textual Int64))
-    , _dsMaxEndTimeNs   :: !(Maybe (Textual Int64))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DataSet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dsNextPageToken'
---
--- * 'dsDataSourceId'
---
--- * 'dsPoint'
---
--- * 'dsMinStartTimeNs'
---
--- * 'dsMaxEndTimeNs'
-dataSet
-    :: DataSet
-dataSet =
-  DataSet'
-    { _dsNextPageToken = Nothing
-    , _dsDataSourceId = Nothing
-    , _dsPoint = Nothing
-    , _dsMinStartTimeNs = Nothing
-    , _dsMaxEndTimeNs = Nothing
-    }
-
-
--- | 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)
-dsNextPageToken
-  = lens _dsNextPageToken
-      (\ s a -> s{_dsNextPageToken = a})
-
--- | The data stream ID of the data source that created the points in this
--- dataset.
-dsDataSourceId :: Lens' DataSet (Maybe Text)
-dsDataSourceId
-  = lens _dsDataSourceId
-      (\ s a -> s{_dsDataSourceId = a})
-
--- | 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]
-dsPoint
-  = lens _dsPoint (\ s a -> s{_dsPoint = a}) . _Default
-      . _Coerce
-
--- | 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)
-dsMinStartTimeNs
-  = lens _dsMinStartTimeNs
-      (\ s a -> s{_dsMinStartTimeNs = a})
-      . mapping _Coerce
-
--- | The largest end time of all data points in this possibly partial
--- representation of the dataset. Time is in nanoseconds from epoch. This
--- should also match the second part of the dataset identifier.
-dsMaxEndTimeNs :: Lens' DataSet (Maybe Int64)
-dsMaxEndTimeNs
-  = lens _dsMaxEndTimeNs
-      (\ s a -> s{_dsMaxEndTimeNs = a})
-      . mapping _Coerce
-
-instance FromJSON DataSet where
-        parseJSON
-          = withObject "DataSet"
-              (\ o ->
-                 DataSet' <$>
-                   (o .:? "nextPageToken") <*> (o .:? "dataSourceId")
-                     <*> (o .:? "point" .!= mempty)
-                     <*> (o .:? "minStartTimeNs")
-                     <*> (o .:? "maxEndTimeNs"))
-
-instance ToJSON DataSet where
-        toJSON DataSet'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _dsNextPageToken,
-                  ("dataSourceId" .=) <$> _dsDataSourceId,
-                  ("point" .=) <$> _dsPoint,
-                  ("minStartTimeNs" .=) <$> _dsMinStartTimeNs,
-                  ("maxEndTimeNs" .=) <$> _dsMaxEndTimeNs])
-
--- |
---
--- /See:/ 'application' smart constructor.
-data Application =
-  Application'
-    { _aPackageName :: !(Maybe Text)
-    , _aName        :: !(Maybe Text)
-    , _aVersion     :: !(Maybe Text)
-    , _aDetailsURL  :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Application' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aPackageName'
---
--- * 'aName'
---
--- * 'aVersion'
---
--- * 'aDetailsURL'
-application
-    :: Application
-application =
-  Application'
-    { _aPackageName = Nothing
-    , _aName = Nothing
-    , _aVersion = Nothing
-    , _aDetailsURL = Nothing
-    }
-
-
--- | 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)
-aPackageName
-  = lens _aPackageName (\ s a -> s{_aPackageName = a})
-
--- | 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)
-aName = lens _aName (\ s a -> s{_aName = a})
-
--- | 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)
-aVersion = lens _aVersion (\ s a -> s{_aVersion = a})
-
--- | An optional URI that can be used to link back to the application.
-aDetailsURL :: Lens' Application (Maybe Text)
-aDetailsURL
-  = lens _aDetailsURL (\ s a -> s{_aDetailsURL = a})
-
-instance FromJSON Application where
-        parseJSON
-          = withObject "Application"
-              (\ o ->
-                 Application' <$>
-                   (o .:? "packageName") <*> (o .:? "name") <*>
-                     (o .:? "version")
-                     <*> (o .:? "detailsUrl"))
-
-instance ToJSON Application where
-        toJSON Application'{..}
-          = object
-              (catMaybes
-                 [("packageName" .=) <$> _aPackageName,
-                  ("name" .=) <$> _aName, ("version" .=) <$> _aVersion,
-                  ("detailsUrl" .=) <$> _aDetailsURL])
-
---
--- /See:/ 'aggregateResponse' smart constructor.
-newtype AggregateResponse =
-  AggregateResponse'
-    { _arBucket :: Maybe [AggregateBucket]
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AggregateResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'arBucket'
-aggregateResponse
-    :: AggregateResponse
-aggregateResponse = AggregateResponse' {_arBucket = Nothing}
-
-
--- | A list of buckets containing the aggregated data.
-arBucket :: Lens' AggregateResponse [AggregateBucket]
-arBucket
-  = lens _arBucket (\ s a -> s{_arBucket = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON AggregateResponse where
-        parseJSON
-          = withObject "AggregateResponse"
-              (\ o ->
-                 AggregateResponse' <$> (o .:? "bucket" .!= mempty))
-
-instance ToJSON AggregateResponse where
-        toJSON AggregateResponse'{..}
-          = object (catMaybes [("bucket" .=) <$> _arBucket])
-
--- | The specification of which data to aggregate.
---
--- /See:/ 'aggregateBy' smart constructor.
-data AggregateBy =
-  AggregateBy'
-    { _abDataTypeName :: !(Maybe Text)
-    , _abDataSourceId :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AggregateBy' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'abDataTypeName'
---
--- * 'abDataSourceId'
-aggregateBy
-    :: AggregateBy
-aggregateBy =
-  AggregateBy' {_abDataTypeName = Nothing, _abDataSourceId = Nothing}
-
-
--- | 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)
-abDataTypeName
-  = lens _abDataTypeName
-      (\ s a -> s{_abDataTypeName = a})
-
--- | 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)
-abDataSourceId
-  = lens _abDataSourceId
-      (\ s a -> s{_abDataSourceId = a})
-
-instance FromJSON AggregateBy where
-        parseJSON
-          = withObject "AggregateBy"
-              (\ o ->
-                 AggregateBy' <$>
-                   (o .:? "dataTypeName") <*> (o .:? "dataSourceId"))
-
-instance ToJSON AggregateBy where
-        toJSON AggregateBy'{..}
-          = object
-              (catMaybes
-                 [("dataTypeName" .=) <$> _abDataTypeName,
-                  ("dataSourceId" .=) <$> _abDataSourceId])
-
---
--- /See:/ 'bucketByActivity' smart constructor.
-data BucketByActivity =
-  BucketByActivity'
-    { _bbaMinDurationMillis    :: !(Maybe (Textual Int64))
-    , _bbaActivityDataSourceId :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BucketByActivity' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bbaMinDurationMillis'
---
--- * 'bbaActivityDataSourceId'
-bucketByActivity
-    :: BucketByActivity
-bucketByActivity =
-  BucketByActivity'
-    {_bbaMinDurationMillis = Nothing, _bbaActivityDataSourceId = Nothing}
-
-
--- | 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)
-bbaMinDurationMillis
-  = lens _bbaMinDurationMillis
-      (\ s a -> s{_bbaMinDurationMillis = a})
-      . mapping _Coerce
-
--- | The default activity stream will be used if a specific
--- activityDataSourceId is not specified.
-bbaActivityDataSourceId :: Lens' BucketByActivity (Maybe Text)
-bbaActivityDataSourceId
-  = lens _bbaActivityDataSourceId
-      (\ s a -> s{_bbaActivityDataSourceId = a})
-
-instance FromJSON BucketByActivity where
-        parseJSON
-          = withObject "BucketByActivity"
-              (\ o ->
-                 BucketByActivity' <$>
-                   (o .:? "minDurationMillis") <*>
-                     (o .:? "activityDataSourceId"))
-
-instance ToJSON BucketByActivity where
-        toJSON BucketByActivity'{..}
-          = object
-              (catMaybes
-                 [("minDurationMillis" .=) <$> _bbaMinDurationMillis,
-                  ("activityDataSourceId" .=) <$>
-                    _bbaActivityDataSourceId])
-
--- | Next id: 10
---
--- /See:/ 'aggregateRequest' smart constructor.
-data AggregateRequest =
-  AggregateRequest'
-    { _arEndTimeMillis               :: !(Maybe (Textual Int64))
-    , _arFilteredDataQualityStandard :: !(Maybe [AggregateRequestFilteredDataQualityStandardItem])
-    , _arAggregateBy                 :: !(Maybe [AggregateBy])
-    , _arBucketBySession             :: !(Maybe BucketBySession)
-    , _arBucketByActivityType        :: !(Maybe BucketByActivity)
-    , _arBucketByTime                :: !(Maybe BucketByTime)
-    , _arStartTimeMillis             :: !(Maybe (Textual Int64))
-    , _arBucketByActivitySegment     :: !(Maybe BucketByActivity)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AggregateRequest' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'arEndTimeMillis'
---
--- * 'arFilteredDataQualityStandard'
---
--- * 'arAggregateBy'
---
--- * 'arBucketBySession'
---
--- * 'arBucketByActivityType'
---
--- * 'arBucketByTime'
---
--- * 'arStartTimeMillis'
---
--- * 'arBucketByActivitySegment'
-aggregateRequest
-    :: AggregateRequest
-aggregateRequest =
-  AggregateRequest'
-    { _arEndTimeMillis = Nothing
-    , _arFilteredDataQualityStandard = Nothing
-    , _arAggregateBy = Nothing
-    , _arBucketBySession = Nothing
-    , _arBucketByActivityType = Nothing
-    , _arBucketByTime = Nothing
-    , _arStartTimeMillis = Nothing
-    , _arBucketByActivitySegment = Nothing
-    }
-
-
--- | 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)
-arEndTimeMillis
-  = lens _arEndTimeMillis
-      (\ s a -> s{_arEndTimeMillis = a})
-      . mapping _Coerce
-
--- | DO NOT POPULATE THIS FIELD. As data quality standards are deprecated,
--- filling it in will result in no data sources being returned. It will be
--- removed in a future version entirely.
-arFilteredDataQualityStandard :: Lens' AggregateRequest [AggregateRequestFilteredDataQualityStandardItem]
-arFilteredDataQualityStandard
-  = lens _arFilteredDataQualityStandard
-      (\ s a -> s{_arFilteredDataQualityStandard = a})
-      . _Default
-      . _Coerce
-
--- | 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]
-arAggregateBy
-  = lens _arAggregateBy
-      (\ s a -> s{_arAggregateBy = a})
-      . _Default
-      . _Coerce
-
--- | 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)
-arBucketBySession
-  = lens _arBucketBySession
-      (\ s a -> s{_arBucketBySession = a})
-
--- | 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)
-arBucketByActivityType
-  = lens _arBucketByActivityType
-      (\ s a -> s{_arBucketByActivityType = a})
-
--- | Specifies that data be aggregated by a single time interval. Mutually
--- exclusive of other bucketing specifications.
-arBucketByTime :: Lens' AggregateRequest (Maybe BucketByTime)
-arBucketByTime
-  = lens _arBucketByTime
-      (\ s a -> s{_arBucketByTime = a})
-
--- | 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)
-arStartTimeMillis
-  = lens _arStartTimeMillis
-      (\ s a -> s{_arStartTimeMillis = a})
-      . mapping _Coerce
-
--- | 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)
-arBucketByActivitySegment
-  = lens _arBucketByActivitySegment
-      (\ s a -> s{_arBucketByActivitySegment = a})
-
-instance FromJSON AggregateRequest where
-        parseJSON
-          = withObject "AggregateRequest"
-              (\ o ->
-                 AggregateRequest' <$>
-                   (o .:? "endTimeMillis") <*>
-                     (o .:? "filteredDataQualityStandard" .!= mempty)
-                     <*> (o .:? "aggregateBy" .!= mempty)
-                     <*> (o .:? "bucketBySession")
-                     <*> (o .:? "bucketByActivityType")
-                     <*> (o .:? "bucketByTime")
-                     <*> (o .:? "startTimeMillis")
-                     <*> (o .:? "bucketByActivitySegment"))
-
-instance ToJSON AggregateRequest where
-        toJSON AggregateRequest'{..}
-          = object
-              (catMaybes
-                 [("endTimeMillis" .=) <$> _arEndTimeMillis,
-                  ("filteredDataQualityStandard" .=) <$>
-                    _arFilteredDataQualityStandard,
-                  ("aggregateBy" .=) <$> _arAggregateBy,
-                  ("bucketBySession" .=) <$> _arBucketBySession,
-                  ("bucketByActivityType" .=) <$>
-                    _arBucketByActivityType,
-                  ("bucketByTime" .=) <$> _arBucketByTime,
-                  ("startTimeMillis" .=) <$> _arStartTimeMillis,
-                  ("bucketByActivitySegment" .=) <$>
-                    _arBucketByActivitySegment])
-
--- | 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.
---
--- /See:/ 'device' smart constructor.
-data Device =
-  Device'
-    { _dManufacturer :: !(Maybe Text)
-    , _dUid          :: !(Maybe Text)
-    , _dModel        :: !(Maybe Text)
-    , _dVersion      :: !(Maybe Text)
-    , _dType         :: !(Maybe DeviceType)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Device' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dManufacturer'
---
--- * 'dUid'
---
--- * 'dModel'
---
--- * 'dVersion'
---
--- * 'dType'
-device
-    :: Device
-device =
-  Device'
-    { _dManufacturer = Nothing
-    , _dUid = Nothing
-    , _dModel = Nothing
-    , _dVersion = Nothing
-    , _dType = Nothing
-    }
-
-
--- | Manufacturer of the product\/hardware.
-dManufacturer :: Lens' Device (Maybe Text)
-dManufacturer
-  = lens _dManufacturer
-      (\ s a -> s{_dManufacturer = a})
-
--- | 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)
-dUid = lens _dUid (\ s a -> s{_dUid = a})
-
--- | End-user visible model name for the device.
-dModel :: Lens' Device (Maybe Text)
-dModel = lens _dModel (\ s a -> s{_dModel = a})
-
--- | Version string for the device hardware\/software.
-dVersion :: Lens' Device (Maybe Text)
-dVersion = lens _dVersion (\ s a -> s{_dVersion = a})
-
--- | A constant representing the type of the device.
-dType :: Lens' Device (Maybe DeviceType)
-dType = lens _dType (\ s a -> s{_dType = a})
-
-instance FromJSON Device where
-        parseJSON
-          = withObject "Device"
-              (\ o ->
-                 Device' <$>
-                   (o .:? "manufacturer") <*> (o .:? "uid") <*>
-                     (o .:? "model")
-                     <*> (o .:? "version")
-                     <*> (o .:? "type"))
-
-instance ToJSON Device where
-        toJSON Device'{..}
-          = object
-              (catMaybes
-                 [("manufacturer" .=) <$> _dManufacturer,
-                  ("uid" .=) <$> _dUid, ("model" .=) <$> _dModel,
-                  ("version" .=) <$> _dVersion,
-                  ("type" .=) <$> _dType])
-
--- | 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
---
--- /See:/ 'value' smart constructor.
-data Value =
-  Value'
-    { _vMapVal    :: !(Maybe [ValueMapValEntry])
-    , _vFpVal     :: !(Maybe (Textual Double))
-    , _vIntVal    :: !(Maybe (Textual Int32))
-    , _vStringVal :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Value' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vMapVal'
---
--- * 'vFpVal'
---
--- * 'vIntVal'
---
--- * 'vStringVal'
-value
-    :: Value
-value =
-  Value'
-    { _vMapVal = Nothing
-    , _vFpVal = Nothing
-    , _vIntVal = Nothing
-    , _vStringVal = Nothing
-    }
-
-
--- | 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]
-vMapVal
-  = lens _vMapVal (\ s a -> s{_vMapVal = a}) . _Default
-      . _Coerce
-
--- | Floating point value. When this is set, other values must not be set.
-vFpVal :: Lens' Value (Maybe Double)
-vFpVal
-  = lens _vFpVal (\ s a -> s{_vFpVal = a}) .
-      mapping _Coerce
-
--- | Integer value. When this is set, other values must not be set.
-vIntVal :: Lens' Value (Maybe Int32)
-vIntVal
-  = lens _vIntVal (\ s a -> s{_vIntVal = a}) .
-      mapping _Coerce
-
--- | 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)
-vStringVal
-  = lens _vStringVal (\ s a -> s{_vStringVal = a})
-
-instance FromJSON Value where
-        parseJSON
-          = withObject "Value"
-              (\ o ->
-                 Value' <$>
-                   (o .:? "mapVal" .!= mempty) <*> (o .:? "fpVal") <*>
-                     (o .:? "intVal")
-                     <*> (o .:? "stringVal"))
-
-instance ToJSON Value where
-        toJSON Value'{..}
-          = object
-              (catMaybes
-                 [("mapVal" .=) <$> _vMapVal,
-                  ("fpVal" .=) <$> _vFpVal, ("intVal" .=) <$> _vIntVal,
-                  ("stringVal" .=) <$> _vStringVal])
-
---
--- /See:/ 'bucketBySession' smart constructor.
-newtype BucketBySession =
-  BucketBySession'
-    { _bbsMinDurationMillis :: Maybe (Textual Int64)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BucketBySession' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bbsMinDurationMillis'
-bucketBySession
-    :: BucketBySession
-bucketBySession = BucketBySession' {_bbsMinDurationMillis = Nothing}
-
-
--- | Specifies that only sessions of duration longer than minDurationMillis
--- are considered and used as a container for aggregated data.
-bbsMinDurationMillis :: Lens' BucketBySession (Maybe Int64)
-bbsMinDurationMillis
-  = lens _bbsMinDurationMillis
-      (\ s a -> s{_bbsMinDurationMillis = a})
-      . mapping _Coerce
-
-instance FromJSON BucketBySession where
-        parseJSON
-          = withObject "BucketBySession"
-              (\ o ->
-                 BucketBySession' <$> (o .:? "minDurationMillis"))
-
-instance ToJSON BucketBySession where
-        toJSON BucketBySession'{..}
-          = object
-              (catMaybes
-                 [("minDurationMillis" .=) <$> _bbsMinDurationMillis])
-
--- | 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.
---
--- /See:/ 'dataPoint' smart constructor.
-data DataPoint =
-  DataPoint'
-    { _dpOriginDataSourceId    :: !(Maybe Text)
-    , _dpRawTimestampNanos     :: !(Maybe (Textual Int64))
-    , _dpDataTypeName          :: !(Maybe Text)
-    , _dpValue                 :: !(Maybe [Value])
-    , _dpComputationTimeMillis :: !(Maybe (Textual Int64))
-    , _dpEndTimeNanos          :: !(Maybe (Textual Int64))
-    , _dpModifiedTimeMillis    :: !(Maybe (Textual Int64))
-    , _dpStartTimeNanos        :: !(Maybe (Textual Int64))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DataPoint' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dpOriginDataSourceId'
---
--- * 'dpRawTimestampNanos'
---
--- * 'dpDataTypeName'
---
--- * 'dpValue'
---
--- * 'dpComputationTimeMillis'
---
--- * 'dpEndTimeNanos'
---
--- * 'dpModifiedTimeMillis'
---
--- * 'dpStartTimeNanos'
-dataPoint
-    :: DataPoint
-dataPoint =
-  DataPoint'
-    { _dpOriginDataSourceId = Nothing
-    , _dpRawTimestampNanos = Nothing
-    , _dpDataTypeName = Nothing
-    , _dpValue = Nothing
-    , _dpComputationTimeMillis = Nothing
-    , _dpEndTimeNanos = Nothing
-    , _dpModifiedTimeMillis = Nothing
-    , _dpStartTimeNanos = Nothing
-    }
-
-
--- | If the data point is contained in a dataset for a derived data source,
--- this field will be populated with the data source stream ID that created
--- the data point originally. WARNING: do not rely on this field for
--- anything other than debugging. The value of this field, if it is set at
--- all, is an implementation detail and is not guaranteed to remain
--- consistent.
-dpOriginDataSourceId :: Lens' DataPoint (Maybe Text)
-dpOriginDataSourceId
-  = lens _dpOriginDataSourceId
-      (\ s a -> s{_dpOriginDataSourceId = a})
-
--- | The raw timestamp from the original SensorEvent.
-dpRawTimestampNanos :: Lens' DataPoint (Maybe Int64)
-dpRawTimestampNanos
-  = lens _dpRawTimestampNanos
-      (\ s a -> s{_dpRawTimestampNanos = a})
-      . mapping _Coerce
-
--- | The data type defining the format of the values in this data point.
-dpDataTypeName :: Lens' DataPoint (Maybe Text)
-dpDataTypeName
-  = lens _dpDataTypeName
-      (\ s a -> s{_dpDataTypeName = a})
-
--- | 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]
-dpValue
-  = lens _dpValue (\ s a -> s{_dpValue = a}) . _Default
-      . _Coerce
-
--- | DO NOT USE THIS FIELD. It is ignored, and not stored.
-dpComputationTimeMillis :: Lens' DataPoint (Maybe Int64)
-dpComputationTimeMillis
-  = lens _dpComputationTimeMillis
-      (\ s a -> s{_dpComputationTimeMillis = a})
-      . mapping _Coerce
-
--- | The end time of the interval represented by this data point, in
--- nanoseconds since epoch.
-dpEndTimeNanos :: Lens' DataPoint (Maybe Int64)
-dpEndTimeNanos
-  = lens _dpEndTimeNanos
-      (\ s a -> s{_dpEndTimeNanos = a})
-      . mapping _Coerce
-
--- | 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)
-dpModifiedTimeMillis
-  = lens _dpModifiedTimeMillis
-      (\ s a -> s{_dpModifiedTimeMillis = a})
-      . mapping _Coerce
-
--- | The start time of the interval represented by this data point, in
--- nanoseconds since epoch.
-dpStartTimeNanos :: Lens' DataPoint (Maybe Int64)
-dpStartTimeNanos
-  = lens _dpStartTimeNanos
-      (\ s a -> s{_dpStartTimeNanos = a})
-      . mapping _Coerce
-
-instance FromJSON DataPoint where
-        parseJSON
-          = withObject "DataPoint"
-              (\ o ->
-                 DataPoint' <$>
-                   (o .:? "originDataSourceId") <*>
-                     (o .:? "rawTimestampNanos")
-                     <*> (o .:? "dataTypeName")
-                     <*> (o .:? "value" .!= mempty)
-                     <*> (o .:? "computationTimeMillis")
-                     <*> (o .:? "endTimeNanos")
-                     <*> (o .:? "modifiedTimeMillis")
-                     <*> (o .:? "startTimeNanos"))
-
-instance ToJSON DataPoint where
-        toJSON DataPoint'{..}
-          = object
-              (catMaybes
-                 [("originDataSourceId" .=) <$> _dpOriginDataSourceId,
-                  ("rawTimestampNanos" .=) <$> _dpRawTimestampNanos,
-                  ("dataTypeName" .=) <$> _dpDataTypeName,
-                  ("value" .=) <$> _dpValue,
-                  ("computationTimeMillis" .=) <$>
-                    _dpComputationTimeMillis,
-                  ("endTimeNanos" .=) <$> _dpEndTimeNanos,
-                  ("modifiedTimeMillis" .=) <$> _dpModifiedTimeMillis,
-                  ("startTimeNanos" .=) <$> _dpStartTimeNanos])
-
---
--- /See:/ 'listSessionsResponse' smart constructor.
-data ListSessionsResponse =
-  ListSessionsResponse'
-    { _lsrNextPageToken  :: !(Maybe Text)
-    , _lsrDeletedSession :: !(Maybe [Session])
-    , _lsrHasMoreData    :: !(Maybe Bool)
-    , _lsrSession        :: !(Maybe [Session])
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListSessionsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lsrNextPageToken'
---
--- * 'lsrDeletedSession'
---
--- * 'lsrHasMoreData'
---
--- * 'lsrSession'
-listSessionsResponse
-    :: ListSessionsResponse
-listSessionsResponse =
-  ListSessionsResponse'
-    { _lsrNextPageToken = Nothing
-    , _lsrDeletedSession = Nothing
-    , _lsrHasMoreData = Nothing
-    , _lsrSession = Nothing
-    }
-
-
--- | 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)
-lsrNextPageToken
-  = lens _lsrNextPageToken
-      (\ s a -> s{_lsrNextPageToken = a})
-
--- | 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]
-lsrDeletedSession
-  = lens _lsrDeletedSession
-      (\ s a -> s{_lsrDeletedSession = a})
-      . _Default
-      . _Coerce
-
--- | Flag to indicate server has more data to transfer
-lsrHasMoreData :: Lens' ListSessionsResponse (Maybe Bool)
-lsrHasMoreData
-  = lens _lsrHasMoreData
-      (\ s a -> s{_lsrHasMoreData = a})
-
--- | Sessions with an end time that is between startTime and endTime of the
--- request.
-lsrSession :: Lens' ListSessionsResponse [Session]
-lsrSession
-  = lens _lsrSession (\ s a -> s{_lsrSession = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON ListSessionsResponse where
-        parseJSON
-          = withObject "ListSessionsResponse"
-              (\ o ->
-                 ListSessionsResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "deletedSession" .!= mempty)
-                     <*> (o .:? "hasMoreData")
-                     <*> (o .:? "session" .!= mempty))
-
-instance ToJSON ListSessionsResponse where
-        toJSON ListSessionsResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _lsrNextPageToken,
-                  ("deletedSession" .=) <$> _lsrDeletedSession,
-                  ("hasMoreData" .=) <$> _lsrHasMoreData,
-                  ("session" .=) <$> _lsrSession])
-
---
--- /See:/ 'aggregateBucket' smart constructor.
-data AggregateBucket =
-  AggregateBucket'
-    { _abEndTimeMillis   :: !(Maybe (Textual Int64))
-    , _abDataSet         :: !(Maybe [DataSet])
-    , _abActivity        :: !(Maybe (Textual Int32))
-    , _abType            :: !(Maybe AggregateBucketType)
-    , _abStartTimeMillis :: !(Maybe (Textual Int64))
-    , _abSession         :: !(Maybe Session)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AggregateBucket' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'abEndTimeMillis'
---
--- * 'abDataSet'
---
--- * 'abActivity'
---
--- * 'abType'
---
--- * 'abStartTimeMillis'
---
--- * 'abSession'
-aggregateBucket
-    :: AggregateBucket
-aggregateBucket =
-  AggregateBucket'
-    { _abEndTimeMillis = Nothing
-    , _abDataSet = Nothing
-    , _abActivity = Nothing
-    , _abType = Nothing
-    , _abStartTimeMillis = Nothing
-    , _abSession = Nothing
-    }
-
-
--- | The end time for the aggregated data, in milliseconds since epoch,
--- inclusive.
-abEndTimeMillis :: Lens' AggregateBucket (Maybe Int64)
-abEndTimeMillis
-  = lens _abEndTimeMillis
-      (\ s a -> s{_abEndTimeMillis = a})
-      . mapping _Coerce
-
--- | There will be one dataset per AggregateBy in the request.
-abDataSet :: Lens' AggregateBucket [DataSet]
-abDataSet
-  = lens _abDataSet (\ s a -> s{_abDataSet = a}) .
-      _Default
-      . _Coerce
-
--- | Available for Bucket.Type.ACTIVITY_TYPE, Bucket.Type.ACTIVITY_SEGMENT
-abActivity :: Lens' AggregateBucket (Maybe Int32)
-abActivity
-  = lens _abActivity (\ s a -> s{_abActivity = a}) .
-      mapping _Coerce
-
--- | The type of a bucket signifies how the data aggregation is performed in
--- the bucket.
-abType :: Lens' AggregateBucket (Maybe AggregateBucketType)
-abType = lens _abType (\ s a -> s{_abType = a})
-
--- | The start time for the aggregated data, in milliseconds since epoch,
--- inclusive.
-abStartTimeMillis :: Lens' AggregateBucket (Maybe Int64)
-abStartTimeMillis
-  = lens _abStartTimeMillis
-      (\ s a -> s{_abStartTimeMillis = a})
-      . mapping _Coerce
-
--- | Available for Bucket.Type.SESSION
-abSession :: Lens' AggregateBucket (Maybe Session)
-abSession
-  = lens _abSession (\ s a -> s{_abSession = a})
-
-instance FromJSON AggregateBucket where
-        parseJSON
-          = withObject "AggregateBucket"
-              (\ o ->
-                 AggregateBucket' <$>
-                   (o .:? "endTimeMillis") <*>
-                     (o .:? "dataset" .!= mempty)
-                     <*> (o .:? "activity")
-                     <*> (o .:? "type")
-                     <*> (o .:? "startTimeMillis")
-                     <*> (o .:? "session"))
-
-instance ToJSON AggregateBucket where
-        toJSON AggregateBucket'{..}
-          = object
-              (catMaybes
-                 [("endTimeMillis" .=) <$> _abEndTimeMillis,
-                  ("dataset" .=) <$> _abDataSet,
-                  ("activity" .=) <$> _abActivity,
-                  ("type" .=) <$> _abType,
-                  ("startTimeMillis" .=) <$> _abStartTimeMillis,
-                  ("session" .=) <$> _abSession])
-
--- | 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.
---
--- /See:/ 'mapValue' smart constructor.
-newtype MapValue =
-  MapValue'
-    { _mvFpVal :: Maybe (Textual Double)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'MapValue' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'mvFpVal'
-mapValue
-    :: MapValue
-mapValue = MapValue' {_mvFpVal = Nothing}
-
-
--- | Floating point value.
-mvFpVal :: Lens' MapValue (Maybe Double)
-mvFpVal
-  = lens _mvFpVal (\ s a -> s{_mvFpVal = a}) .
-      mapping _Coerce
-
-instance FromJSON MapValue where
-        parseJSON
-          = withObject "MapValue"
-              (\ o -> MapValue' <$> (o .:? "fpVal"))
-
-instance ToJSON MapValue where
-        toJSON MapValue'{..}
-          = object (catMaybes [("fpVal" .=) <$> _mvFpVal])
-
---
--- /See:/ 'listDataSourcesResponse' smart constructor.
-newtype ListDataSourcesResponse =
-  ListDataSourcesResponse'
-    { _ldsrDataSource :: Maybe [DataSource]
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListDataSourcesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ldsrDataSource'
-listDataSourcesResponse
-    :: ListDataSourcesResponse
-listDataSourcesResponse = ListDataSourcesResponse' {_ldsrDataSource = Nothing}
-
-
--- | A previously created data source.
-ldsrDataSource :: Lens' ListDataSourcesResponse [DataSource]
-ldsrDataSource
-  = lens _ldsrDataSource
-      (\ s a -> s{_ldsrDataSource = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ListDataSourcesResponse where
-        parseJSON
-          = withObject "ListDataSourcesResponse"
-              (\ o ->
-                 ListDataSourcesResponse' <$>
-                   (o .:? "dataSource" .!= mempty))
-
-instance ToJSON ListDataSourcesResponse where
-        toJSON ListDataSourcesResponse'{..}
-          = object
-              (catMaybes [("dataSource" .=) <$> _ldsrDataSource])
-
--- | 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.
---
--- /See:/ 'dataTypeField' smart constructor.
-data DataTypeField =
-  DataTypeField'
-    { _dtfFormat   :: !(Maybe DataTypeFieldFormat)
-    , _dtfName     :: !(Maybe Text)
-    , _dtfOptional :: !(Maybe Bool)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DataTypeField' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtfFormat'
---
--- * 'dtfName'
---
--- * 'dtfOptional'
-dataTypeField
-    :: DataTypeField
-dataTypeField =
-  DataTypeField'
-    {_dtfFormat = Nothing, _dtfName = Nothing, _dtfOptional = Nothing}
-
-
--- | The different supported formats for each field in a data type.
-dtfFormat :: Lens' DataTypeField (Maybe DataTypeFieldFormat)
-dtfFormat
-  = lens _dtfFormat (\ s a -> s{_dtfFormat = a})
-
--- | 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)
-dtfName = lens _dtfName (\ s a -> s{_dtfName = a})
-
-dtfOptional :: Lens' DataTypeField (Maybe Bool)
-dtfOptional
-  = lens _dtfOptional (\ s a -> s{_dtfOptional = a})
-
-instance FromJSON DataTypeField where
-        parseJSON
-          = withObject "DataTypeField"
-              (\ o ->
-                 DataTypeField' <$>
-                   (o .:? "format") <*> (o .:? "name") <*>
-                     (o .:? "optional"))
-
-instance ToJSON DataTypeField where
-        toJSON DataTypeField'{..}
-          = object
-              (catMaybes
-                 [("format" .=) <$> _dtfFormat,
-                  ("name" .=) <$> _dtfName,
-                  ("optional" .=) <$> _dtfOptional])
-
--- | 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.
---
--- /See:/ 'dataSource' smart constructor.
-data DataSource =
-  DataSource'
-    { _dsApplication         :: !(Maybe Application)
-    , _dsDevice              :: !(Maybe Device)
-    , _dsDataQualityStandard :: !(Maybe [DataSourceDataQualityStandardItem])
-    , _dsName                :: !(Maybe Text)
-    , _dsDataType            :: !(Maybe DataType)
-    , _dsType                :: !(Maybe DataSourceType)
-    , _dsDataStreamName      :: !(Maybe Text)
-    , _dsDataStreamId        :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DataSource' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dsApplication'
---
--- * 'dsDevice'
---
--- * 'dsDataQualityStandard'
---
--- * 'dsName'
---
--- * 'dsDataType'
---
--- * 'dsType'
---
--- * 'dsDataStreamName'
---
--- * 'dsDataStreamId'
-dataSource
-    :: DataSource
-dataSource =
-  DataSource'
-    { _dsApplication = Nothing
-    , _dsDevice = Nothing
-    , _dsDataQualityStandard = Nothing
-    , _dsName = Nothing
-    , _dsDataType = Nothing
-    , _dsType = Nothing
-    , _dsDataStreamName = Nothing
-    , _dsDataStreamId = Nothing
-    }
-
-
--- | Information about an application which feeds sensor data into the
--- platform.
-dsApplication :: Lens' DataSource (Maybe Application)
-dsApplication
-  = lens _dsApplication
-      (\ s a -> s{_dsApplication = a})
-
--- | Representation of an integrated device (such as a phone or a wearable)
--- that can hold sensors.
-dsDevice :: Lens' DataSource (Maybe Device)
-dsDevice = lens _dsDevice (\ s a -> s{_dsDevice = a})
-
--- | DO NOT POPULATE THIS FIELD. It is never populated in responses from the
--- platform, and is ignored in queries. It will be removed in a future
--- version entirely.
-dsDataQualityStandard :: Lens' DataSource [DataSourceDataQualityStandardItem]
-dsDataQualityStandard
-  = lens _dsDataQualityStandard
-      (\ s a -> s{_dsDataQualityStandard = a})
-      . _Default
-      . _Coerce
-
--- | An end-user visible name for this data source.
-dsName :: Lens' DataSource (Maybe Text)
-dsName = lens _dsName (\ s a -> s{_dsName = a})
-
--- | 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)
-dsDataType
-  = lens _dsDataType (\ s a -> s{_dsDataType = a})
-
--- | A constant describing the type of this data source. Indicates whether
--- this data source produces raw or derived data.
-dsType :: Lens' DataSource (Maybe DataSourceType)
-dsType = lens _dsType (\ s a -> s{_dsType = a})
-
--- | 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)
-dsDataStreamName
-  = lens _dsDataStreamName
-      (\ s a -> s{_dsDataStreamName = a})
-
--- | A unique identifier for the data stream produced by this data source.
--- The identifier includes: - The physical device\'s manufacturer, model,
--- and serial number (UID). - The application\'s package name or name.
--- Package name is used when the data source was created by an Android
--- application. The developer project number is used when the data source
--- was created by a REST client. - The data source\'s type. - The data
--- source\'s stream name. Note that not all attributes of the data source
--- are used as part of the stream identifier. In particular, the version of
--- the hardware\/the application isn\'t used. This allows us to preserve
--- the same stream through version updates. This also means that two
--- DataSource objects may represent the same data stream even if they\'re
--- not equal. The exact format of the data stream ID created by an Android
--- application is:
--- type:dataType.name:application.packageName:device.manufacturer:device.model:device.uid:dataStreamName
--- The exact format of the data stream ID created by a REST client is:
--- type:dataType.name:developer project
--- number:device.manufacturer:device.model:device.uid:dataStreamName When
--- any of the optional fields that make up the data stream ID are absent,
--- they will be omitted from the data stream ID. The minimum viable data
--- stream ID would be: type:dataType.name:developer project number Finally,
--- the developer project number 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)
-dsDataStreamId
-  = lens _dsDataStreamId
-      (\ s a -> s{_dsDataStreamId = a})
-
-instance FromJSON DataSource where
-        parseJSON
-          = withObject "DataSource"
-              (\ o ->
-                 DataSource' <$>
-                   (o .:? "application") <*> (o .:? "device") <*>
-                     (o .:? "dataQualityStandard" .!= mempty)
-                     <*> (o .:? "name")
-                     <*> (o .:? "dataType")
-                     <*> (o .:? "type")
-                     <*> (o .:? "dataStreamName")
-                     <*> (o .:? "dataStreamId"))
-
-instance ToJSON DataSource where
-        toJSON DataSource'{..}
-          = object
-              (catMaybes
-                 [("application" .=) <$> _dsApplication,
-                  ("device" .=) <$> _dsDevice,
-                  ("dataQualityStandard" .=) <$>
-                    _dsDataQualityStandard,
-                  ("name" .=) <$> _dsName,
-                  ("dataType" .=) <$> _dsDataType,
-                  ("type" .=) <$> _dsType,
-                  ("dataStreamName" .=) <$> _dsDataStreamName,
-                  ("dataStreamId" .=) <$> _dsDataStreamId])
-
---
--- /See:/ 'bucketByTimePeriod' smart constructor.
-data BucketByTimePeriod =
-  BucketByTimePeriod'
-    { _bbtpValue      :: !(Maybe (Textual Int32))
-    , _bbtpType       :: !(Maybe BucketByTimePeriodType)
-    , _bbtpTimeZoneId :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BucketByTimePeriod' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bbtpValue'
---
--- * 'bbtpType'
---
--- * 'bbtpTimeZoneId'
-bucketByTimePeriod
-    :: BucketByTimePeriod
-bucketByTimePeriod =
-  BucketByTimePeriod'
-    {_bbtpValue = Nothing, _bbtpType = Nothing, _bbtpTimeZoneId = Nothing}
-
-
-bbtpValue :: Lens' BucketByTimePeriod (Maybe Int32)
-bbtpValue
-  = lens _bbtpValue (\ s a -> s{_bbtpValue = a}) .
-      mapping _Coerce
-
-bbtpType :: Lens' BucketByTimePeriod (Maybe BucketByTimePeriodType)
-bbtpType = lens _bbtpType (\ s a -> s{_bbtpType = a})
-
--- | org.joda.timezone.DateTimeZone
-bbtpTimeZoneId :: Lens' BucketByTimePeriod (Maybe Text)
-bbtpTimeZoneId
-  = lens _bbtpTimeZoneId
-      (\ s a -> s{_bbtpTimeZoneId = a})
-
-instance FromJSON BucketByTimePeriod where
-        parseJSON
-          = withObject "BucketByTimePeriod"
-              (\ o ->
-                 BucketByTimePeriod' <$>
-                   (o .:? "value") <*> (o .:? "type") <*>
-                     (o .:? "timeZoneId"))
-
-instance ToJSON BucketByTimePeriod where
-        toJSON BucketByTimePeriod'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _bbtpValue,
-                  ("type" .=) <$> _bbtpType,
-                  ("timeZoneId" .=) <$> _bbtpTimeZoneId])
-
---
--- /See:/ 'valueMapValEntry' smart constructor.
-data ValueMapValEntry =
-  ValueMapValEntry'
-    { _vmveValue :: !(Maybe MapValue)
-    , _vmveKey   :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ValueMapValEntry' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'vmveValue'
---
--- * 'vmveKey'
-valueMapValEntry
-    :: ValueMapValEntry
-valueMapValEntry = ValueMapValEntry' {_vmveValue = Nothing, _vmveKey = Nothing}
-
-
-vmveValue :: Lens' ValueMapValEntry (Maybe MapValue)
-vmveValue
-  = lens _vmveValue (\ s a -> s{_vmveValue = a})
-
-vmveKey :: Lens' ValueMapValEntry (Maybe Text)
-vmveKey = lens _vmveKey (\ s a -> s{_vmveKey = a})
-
-instance FromJSON ValueMapValEntry where
-        parseJSON
-          = withObject "ValueMapValEntry"
-              (\ o ->
-                 ValueMapValEntry' <$>
-                   (o .:? "value") <*> (o .:? "key"))
-
-instance ToJSON ValueMapValEntry where
-        toJSON ValueMapValEntry'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _vmveValue,
-                  ("key" .=) <$> _vmveKey])
-
---
--- /See:/ 'bucketByTime' smart constructor.
-data BucketByTime =
-  BucketByTime'
-    { _bbtPeriod         :: !(Maybe BucketByTimePeriod)
-    , _bbtDurationMillis :: !(Maybe (Textual Int64))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BucketByTime' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bbtPeriod'
---
--- * 'bbtDurationMillis'
-bucketByTime
-    :: BucketByTime
-bucketByTime =
-  BucketByTime' {_bbtPeriod = Nothing, _bbtDurationMillis = Nothing}
-
-
-bbtPeriod :: Lens' BucketByTime (Maybe BucketByTimePeriod)
-bbtPeriod
-  = lens _bbtPeriod (\ s a -> s{_bbtPeriod = a})
-
--- | 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)
-bbtDurationMillis
-  = lens _bbtDurationMillis
-      (\ s a -> s{_bbtDurationMillis = a})
-      . mapping _Coerce
-
-instance FromJSON BucketByTime where
-        parseJSON
-          = withObject "BucketByTime"
-              (\ o ->
-                 BucketByTime' <$>
-                   (o .:? "period") <*> (o .:? "durationMillis"))
-
-instance ToJSON BucketByTime where
-        toJSON BucketByTime'{..}
-          = object
-              (catMaybes
-                 [("period" .=) <$> _bbtPeriod,
-                  ("durationMillis" .=) <$> _bbtDurationMillis])
-
--- |
---
--- /See:/ 'dataType' smart constructor.
-data DataType =
-  DataType'
-    { _dtField :: !(Maybe [DataTypeField])
-    , _dtName  :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DataType' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dtField'
---
--- * 'dtName'
-dataType
-    :: DataType
-dataType = DataType' {_dtField = Nothing, _dtName = Nothing}
-
-
--- | A field represents one dimension of a data type.
-dtField :: Lens' DataType [DataTypeField]
-dtField
-  = lens _dtField (\ s a -> s{_dtField = a}) . _Default
-      . _Coerce
-
--- | 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)
-dtName = lens _dtName (\ s a -> s{_dtName = a})
-
-instance FromJSON DataType where
-        parseJSON
-          = withObject "DataType"
-              (\ o ->
-                 DataType' <$>
-                   (o .:? "field" .!= mempty) <*> (o .:? "name"))
-
-instance ToJSON DataType where
-        toJSON DataType'{..}
-          = object
-              (catMaybes
-                 [("field" .=) <$> _dtField, ("name" .=) <$> _dtName])
-
---
--- /See:/ 'listDataPointChangesResponse' smart constructor.
-data ListDataPointChangesResponse =
-  ListDataPointChangesResponse'
-    { _ldpcrNextPageToken     :: !(Maybe Text)
-    , _ldpcrInsertedDataPoint :: !(Maybe [DataPoint])
-    , _ldpcrDataSourceId      :: !(Maybe Text)
-    , _ldpcrDeletedDataPoint  :: !(Maybe [DataPoint])
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListDataPointChangesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ldpcrNextPageToken'
---
--- * 'ldpcrInsertedDataPoint'
---
--- * 'ldpcrDataSourceId'
---
--- * 'ldpcrDeletedDataPoint'
-listDataPointChangesResponse
-    :: ListDataPointChangesResponse
-listDataPointChangesResponse =
-  ListDataPointChangesResponse'
-    { _ldpcrNextPageToken = Nothing
-    , _ldpcrInsertedDataPoint = Nothing
-    , _ldpcrDataSourceId = Nothing
-    , _ldpcrDeletedDataPoint = Nothing
-    }
-
-
--- | 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.
-ldpcrNextPageToken :: Lens' ListDataPointChangesResponse (Maybe Text)
-ldpcrNextPageToken
-  = lens _ldpcrNextPageToken
-      (\ s a -> s{_ldpcrNextPageToken = a})
-
--- | Inserted data points for the user.
-ldpcrInsertedDataPoint :: Lens' ListDataPointChangesResponse [DataPoint]
-ldpcrInsertedDataPoint
-  = lens _ldpcrInsertedDataPoint
-      (\ s a -> s{_ldpcrInsertedDataPoint = a})
-      . _Default
-      . _Coerce
-
--- | The data stream ID of the data source with data point changes.
-ldpcrDataSourceId :: Lens' ListDataPointChangesResponse (Maybe Text)
-ldpcrDataSourceId
-  = lens _ldpcrDataSourceId
-      (\ s a -> s{_ldpcrDataSourceId = a})
-
--- | Deleted data points for the user. Note, for modifications this should be
--- parsed before handling insertions.
-ldpcrDeletedDataPoint :: Lens' ListDataPointChangesResponse [DataPoint]
-ldpcrDeletedDataPoint
-  = lens _ldpcrDeletedDataPoint
-      (\ s a -> s{_ldpcrDeletedDataPoint = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON ListDataPointChangesResponse where
-        parseJSON
-          = withObject "ListDataPointChangesResponse"
-              (\ o ->
-                 ListDataPointChangesResponse' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "insertedDataPoint" .!= mempty)
-                     <*> (o .:? "dataSourceId")
-                     <*> (o .:? "deletedDataPoint" .!= mempty))
-
-instance ToJSON ListDataPointChangesResponse where
-        toJSON ListDataPointChangesResponse'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _ldpcrNextPageToken,
-                  ("insertedDataPoint" .=) <$> _ldpcrInsertedDataPoint,
-                  ("dataSourceId" .=) <$> _ldpcrDataSourceId,
-                  ("deletedDataPoint" .=) <$> _ldpcrDeletedDataPoint])
-
--- | Sessions contain metadata, such as a user-friendly name and time
--- interval information.
---
--- /See:/ 'session' smart constructor.
-data Session =
-  Session'
-    { _sEndTimeMillis      :: !(Maybe (Textual Int64))
-    , _sActiveTimeMillis   :: !(Maybe (Textual Int64))
-    , _sApplication        :: !(Maybe Application)
-    , _sActivityType       :: !(Maybe (Textual Int32))
-    , _sName               :: !(Maybe Text)
-    , _sModifiedTimeMillis :: !(Maybe (Textual Int64))
-    , _sId                 :: !(Maybe Text)
-    , _sStartTimeMillis    :: !(Maybe (Textual Int64))
-    , _sDescription        :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Session' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sEndTimeMillis'
---
--- * 'sActiveTimeMillis'
---
--- * 'sApplication'
---
--- * 'sActivityType'
---
--- * 'sName'
---
--- * 'sModifiedTimeMillis'
---
--- * 'sId'
---
--- * 'sStartTimeMillis'
---
--- * 'sDescription'
-session
-    :: Session
-session =
-  Session'
-    { _sEndTimeMillis = Nothing
-    , _sActiveTimeMillis = Nothing
-    , _sApplication = Nothing
-    , _sActivityType = Nothing
-    , _sName = Nothing
-    , _sModifiedTimeMillis = Nothing
-    , _sId = Nothing
-    , _sStartTimeMillis = Nothing
-    , _sDescription = Nothing
-    }
-
-
--- | An end time, in milliseconds since epoch, inclusive.
-sEndTimeMillis :: Lens' Session (Maybe Int64)
-sEndTimeMillis
-  = lens _sEndTimeMillis
-      (\ s a -> s{_sEndTimeMillis = a})
-      . mapping _Coerce
-
--- | 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)
-sActiveTimeMillis
-  = lens _sActiveTimeMillis
-      (\ s a -> s{_sActiveTimeMillis = a})
-      . mapping _Coerce
-
--- | The application that created the session.
-sApplication :: Lens' Session (Maybe Application)
-sApplication
-  = lens _sApplication (\ s a -> s{_sApplication = a})
-
--- | The type of activity this session represents.
-sActivityType :: Lens' Session (Maybe Int32)
-sActivityType
-  = lens _sActivityType
-      (\ s a -> s{_sActivityType = a})
-      . mapping _Coerce
-
--- | A human readable name of the session.
-sName :: Lens' Session (Maybe Text)
-sName = lens _sName (\ s a -> s{_sName = a})
-
--- | A timestamp that indicates when the session was last modified.
-sModifiedTimeMillis :: Lens' Session (Maybe Int64)
-sModifiedTimeMillis
-  = lens _sModifiedTimeMillis
-      (\ s a -> s{_sModifiedTimeMillis = a})
-      . mapping _Coerce
-
--- | A client-generated identifier that is unique across all sessions owned
--- by this particular user.
-sId :: Lens' Session (Maybe Text)
-sId = lens _sId (\ s a -> s{_sId = a})
-
--- | A start time, in milliseconds since epoch, inclusive.
-sStartTimeMillis :: Lens' Session (Maybe Int64)
-sStartTimeMillis
-  = lens _sStartTimeMillis
-      (\ s a -> s{_sStartTimeMillis = a})
-      . mapping _Coerce
-
--- | A description for this session.
-sDescription :: Lens' Session (Maybe Text)
-sDescription
-  = lens _sDescription (\ s a -> s{_sDescription = a})
-
-instance FromJSON Session where
-        parseJSON
-          = withObject "Session"
-              (\ o ->
-                 Session' <$>
-                   (o .:? "endTimeMillis") <*>
-                     (o .:? "activeTimeMillis")
-                     <*> (o .:? "application")
-                     <*> (o .:? "activityType")
-                     <*> (o .:? "name")
-                     <*> (o .:? "modifiedTimeMillis")
-                     <*> (o .:? "id")
-                     <*> (o .:? "startTimeMillis")
-                     <*> (o .:? "description"))
-
-instance ToJSON Session where
-        toJSON Session'{..}
-          = object
-              (catMaybes
-                 [("endTimeMillis" .=) <$> _sEndTimeMillis,
-                  ("activeTimeMillis" .=) <$> _sActiveTimeMillis,
-                  ("application" .=) <$> _sApplication,
-                  ("activityType" .=) <$> _sActivityType,
-                  ("name" .=) <$> _sName,
-                  ("modifiedTimeMillis" .=) <$> _sModifiedTimeMillis,
-                  ("id" .=) <$> _sId,
-                  ("startTimeMillis" .=) <$> _sStartTimeMillis,
-                  ("description" .=) <$> _sDescription])
diff --git a/gen/Network/Google/Fitness/Types/Sum.hs b/gen/Network/Google/Fitness/Types/Sum.hs
deleted file mode 100644
--- a/gen/Network/Google/Fitness/Types/Sum.hs
+++ /dev/null
@@ -1,327 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE LambdaCase         #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- |
--- Module      : Network.Google.Fitness.Types.Sum
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.Google.Fitness.Types.Sum where
-
-import           Network.Google.Prelude hiding (Bytes)
-
--- | The type of a bucket signifies how the data aggregation is performed in
--- the bucket.
-data AggregateBucketType
-    = ABTActivitySegment
-      -- ^ @activitySegment@
-    | ABTActivityType
-      -- ^ @activityType@
-    | ABTSession
-      -- ^ @session@
-    | ABTTime
-      -- ^ @time@
-    | ABTUnknown
-      -- ^ @unknown@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable AggregateBucketType
-
-instance FromHttpApiData AggregateBucketType where
-    parseQueryParam = \case
-        "activitySegment" -> Right ABTActivitySegment
-        "activityType" -> Right ABTActivityType
-        "session" -> Right ABTSession
-        "time" -> Right ABTTime
-        "unknown" -> Right ABTUnknown
-        x -> Left ("Unable to parse AggregateBucketType from: " <> x)
-
-instance ToHttpApiData AggregateBucketType where
-    toQueryParam = \case
-        ABTActivitySegment -> "activitySegment"
-        ABTActivityType -> "activityType"
-        ABTSession -> "session"
-        ABTTime -> "time"
-        ABTUnknown -> "unknown"
-
-instance FromJSON AggregateBucketType where
-    parseJSON = parseJSONText "AggregateBucketType"
-
-instance ToJSON AggregateBucketType where
-    toJSON = toJSONText
-
--- | A constant describing the type of this data source. Indicates whether
--- this data source produces raw or derived data.
-data DataSourceType
-    = Derived
-      -- ^ @derived@
-    | Raw
-      -- ^ @raw@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable DataSourceType
-
-instance FromHttpApiData DataSourceType where
-    parseQueryParam = \case
-        "derived" -> Right Derived
-        "raw" -> Right Raw
-        x -> Left ("Unable to parse DataSourceType from: " <> x)
-
-instance ToHttpApiData DataSourceType where
-    toQueryParam = \case
-        Derived -> "derived"
-        Raw -> "raw"
-
-instance FromJSON DataSourceType where
-    parseJSON = parseJSONText "DataSourceType"
-
-instance ToJSON DataSourceType where
-    toJSON = toJSONText
-
-data BucketByTimePeriodType
-    = Day
-      -- ^ @day@
-    | Month
-      -- ^ @month@
-    | Week
-      -- ^ @week@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable BucketByTimePeriodType
-
-instance FromHttpApiData BucketByTimePeriodType where
-    parseQueryParam = \case
-        "day" -> Right Day
-        "month" -> Right Month
-        "week" -> Right Week
-        x -> Left ("Unable to parse BucketByTimePeriodType from: " <> x)
-
-instance ToHttpApiData BucketByTimePeriodType where
-    toQueryParam = \case
-        Day -> "day"
-        Month -> "month"
-        Week -> "week"
-
-instance FromJSON BucketByTimePeriodType where
-    parseJSON = parseJSONText "BucketByTimePeriodType"
-
-instance ToJSON BucketByTimePeriodType where
-    toJSON = toJSONText
-
-data AggregateRequestFilteredDataQualityStandardItem
-    = DATAQUALITYBLOODGLUCOSEISO151972003
-      -- ^ @dataQualityBloodGlucoseIso151972003@
-    | DATAQUALITYBLOODGLUCOSEISO151972013
-      -- ^ @dataQualityBloodGlucoseIso151972013@
-    | DataQualityBloodPressureAami
-      -- ^ @dataQualityBloodPressureAami@
-    | DataQualityBloodPressureBhsAA
-      -- ^ @dataQualityBloodPressureBhsAA@
-    | DataQualityBloodPressureBhsAB
-      -- ^ @dataQualityBloodPressureBhsAB@
-    | DataQualityBloodPressureBhsBA
-      -- ^ @dataQualityBloodPressureBhsBA@
-    | DataQualityBloodPressureBhsBB
-      -- ^ @dataQualityBloodPressureBhsBB@
-    | DATAQUALITYBLOODPRESSUREESH2002
-      -- ^ @dataQualityBloodPressureEsh2002@
-    | DATAQUALITYBLOODPRESSUREESH2010
-      -- ^ @dataQualityBloodPressureEsh2010@
-    | DataQualityUnknown
-      -- ^ @dataQualityUnknown@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable AggregateRequestFilteredDataQualityStandardItem
-
-instance FromHttpApiData AggregateRequestFilteredDataQualityStandardItem where
-    parseQueryParam = \case
-        "dataQualityBloodGlucoseIso151972003" -> Right DATAQUALITYBLOODGLUCOSEISO151972003
-        "dataQualityBloodGlucoseIso151972013" -> Right DATAQUALITYBLOODGLUCOSEISO151972013
-        "dataQualityBloodPressureAami" -> Right DataQualityBloodPressureAami
-        "dataQualityBloodPressureBhsAA" -> Right DataQualityBloodPressureBhsAA
-        "dataQualityBloodPressureBhsAB" -> Right DataQualityBloodPressureBhsAB
-        "dataQualityBloodPressureBhsBA" -> Right DataQualityBloodPressureBhsBA
-        "dataQualityBloodPressureBhsBB" -> Right DataQualityBloodPressureBhsBB
-        "dataQualityBloodPressureEsh2002" -> Right DATAQUALITYBLOODPRESSUREESH2002
-        "dataQualityBloodPressureEsh2010" -> Right DATAQUALITYBLOODPRESSUREESH2010
-        "dataQualityUnknown" -> Right DataQualityUnknown
-        x -> Left ("Unable to parse AggregateRequestFilteredDataQualityStandardItem from: " <> x)
-
-instance ToHttpApiData AggregateRequestFilteredDataQualityStandardItem where
-    toQueryParam = \case
-        DATAQUALITYBLOODGLUCOSEISO151972003 -> "dataQualityBloodGlucoseIso151972003"
-        DATAQUALITYBLOODGLUCOSEISO151972013 -> "dataQualityBloodGlucoseIso151972013"
-        DataQualityBloodPressureAami -> "dataQualityBloodPressureAami"
-        DataQualityBloodPressureBhsAA -> "dataQualityBloodPressureBhsAA"
-        DataQualityBloodPressureBhsAB -> "dataQualityBloodPressureBhsAB"
-        DataQualityBloodPressureBhsBA -> "dataQualityBloodPressureBhsBA"
-        DataQualityBloodPressureBhsBB -> "dataQualityBloodPressureBhsBB"
-        DATAQUALITYBLOODPRESSUREESH2002 -> "dataQualityBloodPressureEsh2002"
-        DATAQUALITYBLOODPRESSUREESH2010 -> "dataQualityBloodPressureEsh2010"
-        DataQualityUnknown -> "dataQualityUnknown"
-
-instance FromJSON AggregateRequestFilteredDataQualityStandardItem where
-    parseJSON = parseJSONText "AggregateRequestFilteredDataQualityStandardItem"
-
-instance ToJSON AggregateRequestFilteredDataQualityStandardItem where
-    toJSON = toJSONText
-
--- | A constant representing the type of the device.
-data DeviceType
-    = ChestStrap
-      -- ^ @chestStrap@
-    | HeadMounted
-      -- ^ @headMounted@
-    | Phone
-      -- ^ @phone@
-    | Scale
-      -- ^ @scale@
-    | Tablet
-      -- ^ @tablet@
-    | Unknown
-      -- ^ @unknown@
-    | Watch
-      -- ^ @watch@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable DeviceType
-
-instance FromHttpApiData DeviceType where
-    parseQueryParam = \case
-        "chestStrap" -> Right ChestStrap
-        "headMounted" -> Right HeadMounted
-        "phone" -> Right Phone
-        "scale" -> Right Scale
-        "tablet" -> Right Tablet
-        "unknown" -> Right Unknown
-        "watch" -> Right Watch
-        x -> Left ("Unable to parse DeviceType from: " <> x)
-
-instance ToHttpApiData DeviceType where
-    toQueryParam = \case
-        ChestStrap -> "chestStrap"
-        HeadMounted -> "headMounted"
-        Phone -> "phone"
-        Scale -> "scale"
-        Tablet -> "tablet"
-        Unknown -> "unknown"
-        Watch -> "watch"
-
-instance FromJSON DeviceType where
-    parseJSON = parseJSONText "DeviceType"
-
-instance ToJSON DeviceType where
-    toJSON = toJSONText
-
-data DataSourceDataQualityStandardItem
-    = DSDQSIDATAQUALITYBLOODGLUCOSEISO151972003
-      -- ^ @dataQualityBloodGlucoseIso151972003@
-    | DSDQSIDATAQUALITYBLOODGLUCOSEISO151972013
-      -- ^ @dataQualityBloodGlucoseIso151972013@
-    | DSDQSIDataQualityBloodPressureAami
-      -- ^ @dataQualityBloodPressureAami@
-    | DSDQSIDataQualityBloodPressureBhsAA
-      -- ^ @dataQualityBloodPressureBhsAA@
-    | DSDQSIDataQualityBloodPressureBhsAB
-      -- ^ @dataQualityBloodPressureBhsAB@
-    | DSDQSIDataQualityBloodPressureBhsBA
-      -- ^ @dataQualityBloodPressureBhsBA@
-    | DSDQSIDataQualityBloodPressureBhsBB
-      -- ^ @dataQualityBloodPressureBhsBB@
-    | DSDQSIDATAQUALITYBLOODPRESSUREESH2002
-      -- ^ @dataQualityBloodPressureEsh2002@
-    | DSDQSIDATAQUALITYBLOODPRESSUREESH2010
-      -- ^ @dataQualityBloodPressureEsh2010@
-    | DSDQSIDataQualityUnknown
-      -- ^ @dataQualityUnknown@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable DataSourceDataQualityStandardItem
-
-instance FromHttpApiData DataSourceDataQualityStandardItem where
-    parseQueryParam = \case
-        "dataQualityBloodGlucoseIso151972003" -> Right DSDQSIDATAQUALITYBLOODGLUCOSEISO151972003
-        "dataQualityBloodGlucoseIso151972013" -> Right DSDQSIDATAQUALITYBLOODGLUCOSEISO151972013
-        "dataQualityBloodPressureAami" -> Right DSDQSIDataQualityBloodPressureAami
-        "dataQualityBloodPressureBhsAA" -> Right DSDQSIDataQualityBloodPressureBhsAA
-        "dataQualityBloodPressureBhsAB" -> Right DSDQSIDataQualityBloodPressureBhsAB
-        "dataQualityBloodPressureBhsBA" -> Right DSDQSIDataQualityBloodPressureBhsBA
-        "dataQualityBloodPressureBhsBB" -> Right DSDQSIDataQualityBloodPressureBhsBB
-        "dataQualityBloodPressureEsh2002" -> Right DSDQSIDATAQUALITYBLOODPRESSUREESH2002
-        "dataQualityBloodPressureEsh2010" -> Right DSDQSIDATAQUALITYBLOODPRESSUREESH2010
-        "dataQualityUnknown" -> Right DSDQSIDataQualityUnknown
-        x -> Left ("Unable to parse DataSourceDataQualityStandardItem from: " <> x)
-
-instance ToHttpApiData DataSourceDataQualityStandardItem where
-    toQueryParam = \case
-        DSDQSIDATAQUALITYBLOODGLUCOSEISO151972003 -> "dataQualityBloodGlucoseIso151972003"
-        DSDQSIDATAQUALITYBLOODGLUCOSEISO151972013 -> "dataQualityBloodGlucoseIso151972013"
-        DSDQSIDataQualityBloodPressureAami -> "dataQualityBloodPressureAami"
-        DSDQSIDataQualityBloodPressureBhsAA -> "dataQualityBloodPressureBhsAA"
-        DSDQSIDataQualityBloodPressureBhsAB -> "dataQualityBloodPressureBhsAB"
-        DSDQSIDataQualityBloodPressureBhsBA -> "dataQualityBloodPressureBhsBA"
-        DSDQSIDataQualityBloodPressureBhsBB -> "dataQualityBloodPressureBhsBB"
-        DSDQSIDATAQUALITYBLOODPRESSUREESH2002 -> "dataQualityBloodPressureEsh2002"
-        DSDQSIDATAQUALITYBLOODPRESSUREESH2010 -> "dataQualityBloodPressureEsh2010"
-        DSDQSIDataQualityUnknown -> "dataQualityUnknown"
-
-instance FromJSON DataSourceDataQualityStandardItem where
-    parseJSON = parseJSONText "DataSourceDataQualityStandardItem"
-
-instance ToJSON DataSourceDataQualityStandardItem where
-    toJSON = toJSONText
-
--- | The different supported formats for each field in a data type.
-data DataTypeFieldFormat
-    = Blob
-      -- ^ @blob@
-    | FloatList
-      -- ^ @floatList@
-    | FloatPoint
-      -- ^ @floatPoint@
-    | Integer
-      -- ^ @integer@
-    | IntegerList
-      -- ^ @integerList@
-    | Map
-      -- ^ @map@
-    | String
-      -- ^ @string@
-      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
-
-instance Hashable DataTypeFieldFormat
-
-instance FromHttpApiData DataTypeFieldFormat where
-    parseQueryParam = \case
-        "blob" -> Right Blob
-        "floatList" -> Right FloatList
-        "floatPoint" -> Right FloatPoint
-        "integer" -> Right Integer
-        "integerList" -> Right IntegerList
-        "map" -> Right Map
-        "string" -> Right String
-        x -> Left ("Unable to parse DataTypeFieldFormat from: " <> x)
-
-instance ToHttpApiData DataTypeFieldFormat where
-    toQueryParam = \case
-        Blob -> "blob"
-        FloatList -> "floatList"
-        FloatPoint -> "floatPoint"
-        Integer -> "integer"
-        IntegerList -> "integerList"
-        Map -> "map"
-        String -> "string"
-
-instance FromJSON DataTypeFieldFormat where
-    parseJSON = parseJSONText "DataTypeFieldFormat"
-
-instance ToJSON DataTypeFieldFormat where
-    toJSON = toJSONText
diff --git a/gen/Network/Google/Resource/Fitness/Users/DataSet/Aggregate.hs b/gen/Network/Google/Resource/Fitness/Users/DataSet/Aggregate.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Fitness/Users/DataSet/Aggregate.hs
+++ /dev/null
@@ -1,126 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Fitness.Users.DataSet.Aggregate
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- 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.
---
--- /See:/ <https://developers.google.com/fit/rest/ Fitness Reference> for @fitness.users.dataset.aggregate@.
-module Network.Google.Resource.Fitness.Users.DataSet.Aggregate
-    (
-    -- * REST Resource
-      UsersDataSetAggregateResource
-
-    -- * Creating a Request
-    , usersDataSetAggregate
-    , UsersDataSetAggregate
-
-    -- * Request Lenses
-    , udsaPayload
-    , udsaUserId
-    ) where
-
-import           Network.Google.Fitness.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @fitness.users.dataset.aggregate@ method which the
--- 'UsersDataSetAggregate' request conforms to.
-type UsersDataSetAggregateResource =
-     "fitness" :>
-       "v1" :>
-         "users" :>
-           Capture "userId" Text :>
-             "dataset:aggregate" :>
-               QueryParam "alt" AltJSON :>
-                 ReqBody '[JSON] AggregateRequest :>
-                   Post '[JSON] AggregateResponse
-
--- | 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.
---
--- /See:/ 'usersDataSetAggregate' smart constructor.
-data UsersDataSetAggregate =
-  UsersDataSetAggregate'
-    { _udsaPayload :: !AggregateRequest
-    , _udsaUserId  :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UsersDataSetAggregate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'udsaPayload'
---
--- * 'udsaUserId'
-usersDataSetAggregate
-    :: AggregateRequest -- ^ 'udsaPayload'
-    -> Text -- ^ 'udsaUserId'
-    -> UsersDataSetAggregate
-usersDataSetAggregate pUdsaPayload_ pUdsaUserId_ =
-  UsersDataSetAggregate'
-    {_udsaPayload = pUdsaPayload_, _udsaUserId = pUdsaUserId_}
-
-
--- | Multipart request metadata.
-udsaPayload :: Lens' UsersDataSetAggregate AggregateRequest
-udsaPayload
-  = lens _udsaPayload (\ s a -> s{_udsaPayload = a})
-
--- | Aggregate data for the person identified. Use me to indicate the
--- authenticated user. Only me is supported at this time.
-udsaUserId :: Lens' UsersDataSetAggregate Text
-udsaUserId
-  = lens _udsaUserId (\ s a -> s{_udsaUserId = a})
-
-instance GoogleRequest UsersDataSetAggregate where
-        type Rs UsersDataSetAggregate = AggregateResponse
-        type Scopes UsersDataSetAggregate =
-             '["https://www.googleapis.com/auth/fitness.activity.read",
-               "https://www.googleapis.com/auth/fitness.activity.write",
-               "https://www.googleapis.com/auth/fitness.blood_glucose.read",
-               "https://www.googleapis.com/auth/fitness.blood_glucose.write",
-               "https://www.googleapis.com/auth/fitness.blood_pressure.read",
-               "https://www.googleapis.com/auth/fitness.blood_pressure.write",
-               "https://www.googleapis.com/auth/fitness.body.read",
-               "https://www.googleapis.com/auth/fitness.body.write",
-               "https://www.googleapis.com/auth/fitness.body_temperature.read",
-               "https://www.googleapis.com/auth/fitness.body_temperature.write",
-               "https://www.googleapis.com/auth/fitness.location.read",
-               "https://www.googleapis.com/auth/fitness.location.write",
-               "https://www.googleapis.com/auth/fitness.nutrition.read",
-               "https://www.googleapis.com/auth/fitness.nutrition.write",
-               "https://www.googleapis.com/auth/fitness.oxygen_saturation.read",
-               "https://www.googleapis.com/auth/fitness.oxygen_saturation.write",
-               "https://www.googleapis.com/auth/fitness.reproductive_health.read",
-               "https://www.googleapis.com/auth/fitness.reproductive_health.write"]
-        requestClient UsersDataSetAggregate'{..}
-          = go _udsaUserId (Just AltJSON) _udsaPayload
-              fitnessService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy UsersDataSetAggregateResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Fitness/Users/DataSources/Create.hs b/gen/Network/Google/Resource/Fitness/Users/DataSources/Create.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Fitness/Users/DataSources/Create.hs
+++ /dev/null
@@ -1,124 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Fitness.Users.DataSources.Create
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- 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.
---
--- /See:/ <https://developers.google.com/fit/rest/ Fitness Reference> for @fitness.users.dataSources.create@.
-module Network.Google.Resource.Fitness.Users.DataSources.Create
-    (
-    -- * REST Resource
-      UsersDataSourcesCreateResource
-
-    -- * Creating a Request
-    , usersDataSourcesCreate
-    , UsersDataSourcesCreate
-
-    -- * Request Lenses
-    , udscPayload
-    , udscUserId
-    ) where
-
-import           Network.Google.Fitness.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @fitness.users.dataSources.create@ method which the
--- 'UsersDataSourcesCreate' request conforms to.
-type UsersDataSourcesCreateResource =
-     "fitness" :>
-       "v1" :>
-         "users" :>
-           Capture "userId" Text :>
-             "dataSources" :>
-               QueryParam "alt" AltJSON :>
-                 ReqBody '[JSON] DataSource :> Post '[JSON] DataSource
-
--- | 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.
---
--- /See:/ 'usersDataSourcesCreate' smart constructor.
-data UsersDataSourcesCreate =
-  UsersDataSourcesCreate'
-    { _udscPayload :: !DataSource
-    , _udscUserId  :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UsersDataSourcesCreate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'udscPayload'
---
--- * 'udscUserId'
-usersDataSourcesCreate
-    :: DataSource -- ^ 'udscPayload'
-    -> Text -- ^ 'udscUserId'
-    -> UsersDataSourcesCreate
-usersDataSourcesCreate pUdscPayload_ pUdscUserId_ =
-  UsersDataSourcesCreate'
-    {_udscPayload = pUdscPayload_, _udscUserId = pUdscUserId_}
-
-
--- | Multipart request metadata.
-udscPayload :: Lens' UsersDataSourcesCreate DataSource
-udscPayload
-  = lens _udscPayload (\ s a -> s{_udscPayload = a})
-
--- | 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
-udscUserId
-  = lens _udscUserId (\ s a -> s{_udscUserId = a})
-
-instance GoogleRequest UsersDataSourcesCreate where
-        type Rs UsersDataSourcesCreate = DataSource
-        type Scopes UsersDataSourcesCreate =
-             '["https://www.googleapis.com/auth/fitness.activity.write",
-               "https://www.googleapis.com/auth/fitness.blood_glucose.write",
-               "https://www.googleapis.com/auth/fitness.blood_pressure.write",
-               "https://www.googleapis.com/auth/fitness.body.write",
-               "https://www.googleapis.com/auth/fitness.body_temperature.write",
-               "https://www.googleapis.com/auth/fitness.location.write",
-               "https://www.googleapis.com/auth/fitness.nutrition.write",
-               "https://www.googleapis.com/auth/fitness.oxygen_saturation.write",
-               "https://www.googleapis.com/auth/fitness.reproductive_health.write"]
-        requestClient UsersDataSourcesCreate'{..}
-          = go _udscUserId (Just AltJSON) _udscPayload
-              fitnessService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy UsersDataSourcesCreateResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Fitness/Users/DataSources/DataPointChanges/List.hs b/gen/Network/Google/Resource/Fitness/Users/DataSources/DataPointChanges/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Fitness/Users/DataSources/DataPointChanges/List.hs
+++ /dev/null
@@ -1,160 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Fitness.Users.DataSources.DataPointChanges.List
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Queries for user\'s data point changes for a particular data source.
---
--- /See:/ <https://developers.google.com/fit/rest/ Fitness Reference> for @fitness.users.dataSources.dataPointChanges.list@.
-module Network.Google.Resource.Fitness.Users.DataSources.DataPointChanges.List
-    (
-    -- * REST Resource
-      UsersDataSourcesDataPointChangesListResource
-
-    -- * Creating a Request
-    , usersDataSourcesDataPointChangesList
-    , UsersDataSourcesDataPointChangesList
-
-    -- * Request Lenses
-    , udsdpclDataSourceId
-    , udsdpclUserId
-    , udsdpclLimit
-    , udsdpclPageToken
-    ) where
-
-import           Network.Google.Fitness.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @fitness.users.dataSources.dataPointChanges.list@ method which the
--- 'UsersDataSourcesDataPointChangesList' request conforms to.
-type UsersDataSourcesDataPointChangesListResource =
-     "fitness" :>
-       "v1" :>
-         "users" :>
-           Capture "userId" Text :>
-             "dataSources" :>
-               Capture "dataSourceId" Text :>
-                 "dataPointChanges" :>
-                   QueryParam "limit" (Textual Int32) :>
-                     QueryParam "pageToken" Text :>
-                       QueryParam "alt" AltJSON :>
-                         Get '[JSON] ListDataPointChangesResponse
-
--- | Queries for user\'s data point changes for a particular data source.
---
--- /See:/ 'usersDataSourcesDataPointChangesList' smart constructor.
-data UsersDataSourcesDataPointChangesList =
-  UsersDataSourcesDataPointChangesList'
-    { _udsdpclDataSourceId :: !Text
-    , _udsdpclUserId       :: !Text
-    , _udsdpclLimit        :: !(Maybe (Textual Int32))
-    , _udsdpclPageToken    :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UsersDataSourcesDataPointChangesList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'udsdpclDataSourceId'
---
--- * 'udsdpclUserId'
---
--- * 'udsdpclLimit'
---
--- * 'udsdpclPageToken'
-usersDataSourcesDataPointChangesList
-    :: Text -- ^ 'udsdpclDataSourceId'
-    -> Text -- ^ 'udsdpclUserId'
-    -> UsersDataSourcesDataPointChangesList
-usersDataSourcesDataPointChangesList pUdsdpclDataSourceId_ pUdsdpclUserId_ =
-  UsersDataSourcesDataPointChangesList'
-    { _udsdpclDataSourceId = pUdsdpclDataSourceId_
-    , _udsdpclUserId = pUdsdpclUserId_
-    , _udsdpclLimit = Nothing
-    , _udsdpclPageToken = Nothing
-    }
-
-
--- | The data stream ID of the data source that created the dataset.
-udsdpclDataSourceId :: Lens' UsersDataSourcesDataPointChangesList Text
-udsdpclDataSourceId
-  = lens _udsdpclDataSourceId
-      (\ s a -> s{_udsdpclDataSourceId = a})
-
--- | List data points for the person identified. Use me to indicate the
--- authenticated user. Only me is supported at this time.
-udsdpclUserId :: Lens' UsersDataSourcesDataPointChangesList Text
-udsdpclUserId
-  = lens _udsdpclUserId
-      (\ s a -> s{_udsdpclUserId = a})
-
--- | If specified, no more than this many data point changes will be included
--- in the response.
-udsdpclLimit :: Lens' UsersDataSourcesDataPointChangesList (Maybe Int32)
-udsdpclLimit
-  = lens _udsdpclLimit (\ s a -> s{_udsdpclLimit = a})
-      . mapping _Coerce
-
--- | 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.
-udsdpclPageToken :: Lens' UsersDataSourcesDataPointChangesList (Maybe Text)
-udsdpclPageToken
-  = lens _udsdpclPageToken
-      (\ s a -> s{_udsdpclPageToken = a})
-
-instance GoogleRequest
-           UsersDataSourcesDataPointChangesList
-         where
-        type Rs UsersDataSourcesDataPointChangesList =
-             ListDataPointChangesResponse
-        type Scopes UsersDataSourcesDataPointChangesList =
-             '["https://www.googleapis.com/auth/fitness.activity.read",
-               "https://www.googleapis.com/auth/fitness.activity.write",
-               "https://www.googleapis.com/auth/fitness.blood_glucose.read",
-               "https://www.googleapis.com/auth/fitness.blood_glucose.write",
-               "https://www.googleapis.com/auth/fitness.blood_pressure.read",
-               "https://www.googleapis.com/auth/fitness.blood_pressure.write",
-               "https://www.googleapis.com/auth/fitness.body.read",
-               "https://www.googleapis.com/auth/fitness.body.write",
-               "https://www.googleapis.com/auth/fitness.body_temperature.read",
-               "https://www.googleapis.com/auth/fitness.body_temperature.write",
-               "https://www.googleapis.com/auth/fitness.location.read",
-               "https://www.googleapis.com/auth/fitness.location.write",
-               "https://www.googleapis.com/auth/fitness.nutrition.read",
-               "https://www.googleapis.com/auth/fitness.nutrition.write",
-               "https://www.googleapis.com/auth/fitness.oxygen_saturation.read",
-               "https://www.googleapis.com/auth/fitness.oxygen_saturation.write",
-               "https://www.googleapis.com/auth/fitness.reproductive_health.read",
-               "https://www.googleapis.com/auth/fitness.reproductive_health.write"]
-        requestClient
-          UsersDataSourcesDataPointChangesList'{..}
-          = go _udsdpclUserId _udsdpclDataSourceId
-              _udsdpclLimit
-              _udsdpclPageToken
-              (Just AltJSON)
-              fitnessService
-          where go
-                  = buildClient
-                      (Proxy ::
-                         Proxy UsersDataSourcesDataPointChangesListResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Fitness/Users/DataSources/DataSets/Delete.hs b/gen/Network/Google/Resource/Fitness/Users/DataSources/DataSets/Delete.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Fitness/Users/DataSources/DataSets/Delete.hs
+++ /dev/null
@@ -1,174 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Fitness.Users.DataSources.DataSets.Delete
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- 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.
---
--- /See:/ <https://developers.google.com/fit/rest/ Fitness Reference> for @fitness.users.dataSources.datasets.delete@.
-module Network.Google.Resource.Fitness.Users.DataSources.DataSets.Delete
-    (
-    -- * REST Resource
-      UsersDataSourcesDataSetsDeleteResource
-
-    -- * Creating a Request
-    , usersDataSourcesDataSetsDelete
-    , UsersDataSourcesDataSetsDelete
-
-    -- * Request Lenses
-    , udsdsdDataSourceId
-    , udsdsdUserId
-    , udsdsdDataSetId
-    , udsdsdModifiedTimeMillis
-    , udsdsdCurrentTimeMillis
-    ) where
-
-import           Network.Google.Fitness.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @fitness.users.dataSources.datasets.delete@ method which the
--- 'UsersDataSourcesDataSetsDelete' 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] ()
-
--- | 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.
---
--- /See:/ 'usersDataSourcesDataSetsDelete' smart constructor.
-data UsersDataSourcesDataSetsDelete =
-  UsersDataSourcesDataSetsDelete'
-    { _udsdsdDataSourceId       :: !Text
-    , _udsdsdUserId             :: !Text
-    , _udsdsdDataSetId          :: !Text
-    , _udsdsdModifiedTimeMillis :: !(Maybe (Textual Int64))
-    , _udsdsdCurrentTimeMillis  :: !(Maybe (Textual Int64))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UsersDataSourcesDataSetsDelete' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'udsdsdDataSourceId'
---
--- * 'udsdsdUserId'
---
--- * 'udsdsdDataSetId'
---
--- * 'udsdsdModifiedTimeMillis'
---
--- * 'udsdsdCurrentTimeMillis'
-usersDataSourcesDataSetsDelete
-    :: Text -- ^ 'udsdsdDataSourceId'
-    -> Text -- ^ 'udsdsdUserId'
-    -> Text -- ^ 'udsdsdDataSetId'
-    -> UsersDataSourcesDataSetsDelete
-usersDataSourcesDataSetsDelete pUdsdsdDataSourceId_ pUdsdsdUserId_ pUdsdsdDataSetId_ =
-  UsersDataSourcesDataSetsDelete'
-    { _udsdsdDataSourceId = pUdsdsdDataSourceId_
-    , _udsdsdUserId = pUdsdsdUserId_
-    , _udsdsdDataSetId = pUdsdsdDataSetId_
-    , _udsdsdModifiedTimeMillis = Nothing
-    , _udsdsdCurrentTimeMillis = Nothing
-    }
-
-
--- | The data stream ID of the data source that created the dataset.
-udsdsdDataSourceId :: Lens' UsersDataSourcesDataSetsDelete Text
-udsdsdDataSourceId
-  = lens _udsdsdDataSourceId
-      (\ s a -> s{_udsdsdDataSourceId = a})
-
--- | 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
-udsdsdUserId
-  = lens _udsdsdUserId (\ s a -> s{_udsdsdUserId = a})
-
--- | 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
-udsdsdDataSetId
-  = lens _udsdsdDataSetId
-      (\ s a -> s{_udsdsdDataSetId = a})
-
--- | When the operation was performed on the client.
-udsdsdModifiedTimeMillis :: Lens' UsersDataSourcesDataSetsDelete (Maybe Int64)
-udsdsdModifiedTimeMillis
-  = lens _udsdsdModifiedTimeMillis
-      (\ s a -> s{_udsdsdModifiedTimeMillis = a})
-      . mapping _Coerce
-
--- | The client\'s current time in milliseconds since epoch.
-udsdsdCurrentTimeMillis :: Lens' UsersDataSourcesDataSetsDelete (Maybe Int64)
-udsdsdCurrentTimeMillis
-  = lens _udsdsdCurrentTimeMillis
-      (\ s a -> s{_udsdsdCurrentTimeMillis = a})
-      . mapping _Coerce
-
-instance GoogleRequest UsersDataSourcesDataSetsDelete
-         where
-        type Rs UsersDataSourcesDataSetsDelete = ()
-        type Scopes UsersDataSourcesDataSetsDelete =
-             '["https://www.googleapis.com/auth/fitness.activity.write",
-               "https://www.googleapis.com/auth/fitness.blood_glucose.write",
-               "https://www.googleapis.com/auth/fitness.blood_pressure.write",
-               "https://www.googleapis.com/auth/fitness.body.write",
-               "https://www.googleapis.com/auth/fitness.body_temperature.write",
-               "https://www.googleapis.com/auth/fitness.location.write",
-               "https://www.googleapis.com/auth/fitness.nutrition.write",
-               "https://www.googleapis.com/auth/fitness.oxygen_saturation.write",
-               "https://www.googleapis.com/auth/fitness.reproductive_health.write"]
-        requestClient UsersDataSourcesDataSetsDelete'{..}
-          = go _udsdsdUserId _udsdsdDataSourceId
-              _udsdsdDataSetId
-              _udsdsdModifiedTimeMillis
-              _udsdsdCurrentTimeMillis
-              (Just AltJSON)
-              fitnessService
-          where go
-                  = buildClient
-                      (Proxy ::
-                         Proxy UsersDataSourcesDataSetsDeleteResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Fitness/Users/DataSources/DataSets/Get.hs b/gen/Network/Google/Resource/Fitness/Users/DataSources/DataSets/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Fitness/Users/DataSources/DataSets/Get.hs
+++ /dev/null
@@ -1,182 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Fitness.Users.DataSources.DataSets.Get
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- 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.
---
--- /See:/ <https://developers.google.com/fit/rest/ Fitness Reference> for @fitness.users.dataSources.datasets.get@.
-module Network.Google.Resource.Fitness.Users.DataSources.DataSets.Get
-    (
-    -- * REST Resource
-      UsersDataSourcesDataSetsGetResource
-
-    -- * Creating a Request
-    , usersDataSourcesDataSetsGet
-    , UsersDataSourcesDataSetsGet
-
-    -- * Request Lenses
-    , udsdsgDataSourceId
-    , udsdsgUserId
-    , udsdsgDataSetId
-    , udsdsgLimit
-    , udsdsgPageToken
-    ) where
-
-import           Network.Google.Fitness.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @fitness.users.dataSources.datasets.get@ method which the
--- 'UsersDataSourcesDataSetsGet' 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
-
--- | 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.
---
--- /See:/ 'usersDataSourcesDataSetsGet' smart constructor.
-data UsersDataSourcesDataSetsGet =
-  UsersDataSourcesDataSetsGet'
-    { _udsdsgDataSourceId :: !Text
-    , _udsdsgUserId       :: !Text
-    , _udsdsgDataSetId    :: !Text
-    , _udsdsgLimit        :: !(Maybe (Textual Int32))
-    , _udsdsgPageToken    :: !(Maybe Text)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UsersDataSourcesDataSetsGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'udsdsgDataSourceId'
---
--- * 'udsdsgUserId'
---
--- * 'udsdsgDataSetId'
---
--- * 'udsdsgLimit'
---
--- * 'udsdsgPageToken'
-usersDataSourcesDataSetsGet
-    :: Text -- ^ 'udsdsgDataSourceId'
-    -> Text -- ^ 'udsdsgUserId'
-    -> Text -- ^ 'udsdsgDataSetId'
-    -> UsersDataSourcesDataSetsGet
-usersDataSourcesDataSetsGet pUdsdsgDataSourceId_ pUdsdsgUserId_ pUdsdsgDataSetId_ =
-  UsersDataSourcesDataSetsGet'
-    { _udsdsgDataSourceId = pUdsdsgDataSourceId_
-    , _udsdsgUserId = pUdsdsgUserId_
-    , _udsdsgDataSetId = pUdsdsgDataSetId_
-    , _udsdsgLimit = Nothing
-    , _udsdsgPageToken = Nothing
-    }
-
-
--- | The data stream ID of the data source that created the dataset.
-udsdsgDataSourceId :: Lens' UsersDataSourcesDataSetsGet Text
-udsdsgDataSourceId
-  = lens _udsdsgDataSourceId
-      (\ s a -> s{_udsdsgDataSourceId = a})
-
--- | 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
-udsdsgUserId
-  = lens _udsdsgUserId (\ s a -> s{_udsdsgUserId = a})
-
--- | 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
-udsdsgDataSetId
-  = lens _udsdsgDataSetId
-      (\ s a -> s{_udsdsgDataSetId = a})
-
--- | 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)
-udsdsgLimit
-  = lens _udsdsgLimit (\ s a -> s{_udsdsgLimit = a}) .
-      mapping _Coerce
-
--- | 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)
-udsdsgPageToken
-  = lens _udsdsgPageToken
-      (\ s a -> s{_udsdsgPageToken = a})
-
-instance GoogleRequest UsersDataSourcesDataSetsGet
-         where
-        type Rs UsersDataSourcesDataSetsGet = DataSet
-        type Scopes UsersDataSourcesDataSetsGet =
-             '["https://www.googleapis.com/auth/fitness.activity.read",
-               "https://www.googleapis.com/auth/fitness.activity.write",
-               "https://www.googleapis.com/auth/fitness.blood_glucose.read",
-               "https://www.googleapis.com/auth/fitness.blood_glucose.write",
-               "https://www.googleapis.com/auth/fitness.blood_pressure.read",
-               "https://www.googleapis.com/auth/fitness.blood_pressure.write",
-               "https://www.googleapis.com/auth/fitness.body.read",
-               "https://www.googleapis.com/auth/fitness.body.write",
-               "https://www.googleapis.com/auth/fitness.body_temperature.read",
-               "https://www.googleapis.com/auth/fitness.body_temperature.write",
-               "https://www.googleapis.com/auth/fitness.location.read",
-               "https://www.googleapis.com/auth/fitness.location.write",
-               "https://www.googleapis.com/auth/fitness.nutrition.read",
-               "https://www.googleapis.com/auth/fitness.nutrition.write",
-               "https://www.googleapis.com/auth/fitness.oxygen_saturation.read",
-               "https://www.googleapis.com/auth/fitness.oxygen_saturation.write",
-               "https://www.googleapis.com/auth/fitness.reproductive_health.read",
-               "https://www.googleapis.com/auth/fitness.reproductive_health.write"]
-        requestClient UsersDataSourcesDataSetsGet'{..}
-          = go _udsdsgUserId _udsdsgDataSourceId
-              _udsdsgDataSetId
-              _udsdsgLimit
-              _udsdsgPageToken
-              (Just AltJSON)
-              fitnessService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy UsersDataSourcesDataSetsGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Fitness/Users/DataSources/DataSets/Patch.hs b/gen/Network/Google/Resource/Fitness/Users/DataSources/DataSets/Patch.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Fitness/Users/DataSources/DataSets/Patch.hs
+++ /dev/null
@@ -1,170 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Fitness.Users.DataSources.DataSets.Patch
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- 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.
---
--- /See:/ <https://developers.google.com/fit/rest/ Fitness Reference> for @fitness.users.dataSources.datasets.patch@.
-module Network.Google.Resource.Fitness.Users.DataSources.DataSets.Patch
-    (
-    -- * REST Resource
-      UsersDataSourcesDataSetsPatchResource
-
-    -- * Creating a Request
-    , usersDataSourcesDataSetsPatch
-    , UsersDataSourcesDataSetsPatch
-
-    -- * Request Lenses
-    , udsdspDataSourceId
-    , udsdspPayload
-    , udsdspUserId
-    , udsdspDataSetId
-    , udsdspCurrentTimeMillis
-    ) where
-
-import           Network.Google.Fitness.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @fitness.users.dataSources.datasets.patch@ method which the
--- 'UsersDataSourcesDataSetsPatch' 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
-
--- | 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.
---
--- /See:/ 'usersDataSourcesDataSetsPatch' smart constructor.
-data UsersDataSourcesDataSetsPatch =
-  UsersDataSourcesDataSetsPatch'
-    { _udsdspDataSourceId      :: !Text
-    , _udsdspPayload           :: !DataSet
-    , _udsdspUserId            :: !Text
-    , _udsdspDataSetId         :: !Text
-    , _udsdspCurrentTimeMillis :: !(Maybe (Textual Int64))
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UsersDataSourcesDataSetsPatch' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'udsdspDataSourceId'
---
--- * 'udsdspPayload'
---
--- * 'udsdspUserId'
---
--- * 'udsdspDataSetId'
---
--- * 'udsdspCurrentTimeMillis'
-usersDataSourcesDataSetsPatch
-    :: Text -- ^ 'udsdspDataSourceId'
-    -> DataSet -- ^ 'udsdspPayload'
-    -> Text -- ^ 'udsdspUserId'
-    -> Text -- ^ 'udsdspDataSetId'
-    -> UsersDataSourcesDataSetsPatch
-usersDataSourcesDataSetsPatch pUdsdspDataSourceId_ pUdsdspPayload_ pUdsdspUserId_ pUdsdspDataSetId_ =
-  UsersDataSourcesDataSetsPatch'
-    { _udsdspDataSourceId = pUdsdspDataSourceId_
-    , _udsdspPayload = pUdsdspPayload_
-    , _udsdspUserId = pUdsdspUserId_
-    , _udsdspDataSetId = pUdsdspDataSetId_
-    , _udsdspCurrentTimeMillis = Nothing
-    }
-
-
--- | The data stream ID of the data source that created the dataset.
-udsdspDataSourceId :: Lens' UsersDataSourcesDataSetsPatch Text
-udsdspDataSourceId
-  = lens _udsdspDataSourceId
-      (\ s a -> s{_udsdspDataSourceId = a})
-
--- | Multipart request metadata.
-udsdspPayload :: Lens' UsersDataSourcesDataSetsPatch DataSet
-udsdspPayload
-  = lens _udsdspPayload
-      (\ s a -> s{_udsdspPayload = a})
-
--- | 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
-udsdspUserId
-  = lens _udsdspUserId (\ s a -> s{_udsdspUserId = a})
-
--- | 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
-udsdspDataSetId
-  = lens _udsdspDataSetId
-      (\ s a -> s{_udsdspDataSetId = a})
-
--- | 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)
-udsdspCurrentTimeMillis
-  = lens _udsdspCurrentTimeMillis
-      (\ s a -> s{_udsdspCurrentTimeMillis = a})
-      . mapping _Coerce
-
-instance GoogleRequest UsersDataSourcesDataSetsPatch
-         where
-        type Rs UsersDataSourcesDataSetsPatch = DataSet
-        type Scopes UsersDataSourcesDataSetsPatch =
-             '["https://www.googleapis.com/auth/fitness.activity.write",
-               "https://www.googleapis.com/auth/fitness.blood_glucose.write",
-               "https://www.googleapis.com/auth/fitness.blood_pressure.write",
-               "https://www.googleapis.com/auth/fitness.body.write",
-               "https://www.googleapis.com/auth/fitness.body_temperature.write",
-               "https://www.googleapis.com/auth/fitness.location.write",
-               "https://www.googleapis.com/auth/fitness.nutrition.write",
-               "https://www.googleapis.com/auth/fitness.oxygen_saturation.write",
-               "https://www.googleapis.com/auth/fitness.reproductive_health.write"]
-        requestClient UsersDataSourcesDataSetsPatch'{..}
-          = go _udsdspUserId _udsdspDataSourceId
-              _udsdspDataSetId
-              _udsdspCurrentTimeMillis
-              (Just AltJSON)
-              _udsdspPayload
-              fitnessService
-          where go
-                  = buildClient
-                      (Proxy ::
-                         Proxy UsersDataSourcesDataSetsPatchResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Fitness/Users/DataSources/Delete.hs b/gen/Network/Google/Resource/Fitness/Users/DataSources/Delete.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Fitness/Users/DataSources/Delete.hs
+++ /dev/null
@@ -1,113 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Fitness.Users.DataSources.Delete
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes the specified data source. The request will fail if the data
--- source contains any data points.
---
--- /See:/ <https://developers.google.com/fit/rest/ Fitness Reference> for @fitness.users.dataSources.delete@.
-module Network.Google.Resource.Fitness.Users.DataSources.Delete
-    (
-    -- * REST Resource
-      UsersDataSourcesDeleteResource
-
-    -- * Creating a Request
-    , usersDataSourcesDelete
-    , UsersDataSourcesDelete
-
-    -- * Request Lenses
-    , udsdDataSourceId
-    , udsdUserId
-    ) where
-
-import           Network.Google.Fitness.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @fitness.users.dataSources.delete@ method which the
--- 'UsersDataSourcesDelete' request conforms to.
-type UsersDataSourcesDeleteResource =
-     "fitness" :>
-       "v1" :>
-         "users" :>
-           Capture "userId" Text :>
-             "dataSources" :>
-               Capture "dataSourceId" Text :>
-                 QueryParam "alt" AltJSON :> Delete '[JSON] DataSource
-
--- | Deletes the specified data source. The request will fail if the data
--- source contains any data points.
---
--- /See:/ 'usersDataSourcesDelete' smart constructor.
-data UsersDataSourcesDelete =
-  UsersDataSourcesDelete'
-    { _udsdDataSourceId :: !Text
-    , _udsdUserId       :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UsersDataSourcesDelete' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'udsdDataSourceId'
---
--- * 'udsdUserId'
-usersDataSourcesDelete
-    :: Text -- ^ 'udsdDataSourceId'
-    -> Text -- ^ 'udsdUserId'
-    -> UsersDataSourcesDelete
-usersDataSourcesDelete pUdsdDataSourceId_ pUdsdUserId_ =
-  UsersDataSourcesDelete'
-    {_udsdDataSourceId = pUdsdDataSourceId_, _udsdUserId = pUdsdUserId_}
-
-
--- | The data stream ID of the data source to delete.
-udsdDataSourceId :: Lens' UsersDataSourcesDelete Text
-udsdDataSourceId
-  = lens _udsdDataSourceId
-      (\ s a -> s{_udsdDataSourceId = a})
-
--- | 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
-udsdUserId
-  = lens _udsdUserId (\ s a -> s{_udsdUserId = a})
-
-instance GoogleRequest UsersDataSourcesDelete where
-        type Rs UsersDataSourcesDelete = DataSource
-        type Scopes UsersDataSourcesDelete =
-             '["https://www.googleapis.com/auth/fitness.activity.write",
-               "https://www.googleapis.com/auth/fitness.blood_glucose.write",
-               "https://www.googleapis.com/auth/fitness.blood_pressure.write",
-               "https://www.googleapis.com/auth/fitness.body.write",
-               "https://www.googleapis.com/auth/fitness.body_temperature.write",
-               "https://www.googleapis.com/auth/fitness.location.write",
-               "https://www.googleapis.com/auth/fitness.nutrition.write",
-               "https://www.googleapis.com/auth/fitness.oxygen_saturation.write",
-               "https://www.googleapis.com/auth/fitness.reproductive_health.write"]
-        requestClient UsersDataSourcesDelete'{..}
-          = go _udsdUserId _udsdDataSourceId (Just AltJSON)
-              fitnessService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy UsersDataSourcesDeleteResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Fitness/Users/DataSources/Get.hs b/gen/Network/Google/Resource/Fitness/Users/DataSources/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Fitness/Users/DataSources/Get.hs
+++ /dev/null
@@ -1,120 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Fitness.Users.DataSources.Get
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns the specified data source.
---
--- /See:/ <https://developers.google.com/fit/rest/ Fitness Reference> for @fitness.users.dataSources.get@.
-module Network.Google.Resource.Fitness.Users.DataSources.Get
-    (
-    -- * REST Resource
-      UsersDataSourcesGetResource
-
-    -- * Creating a Request
-    , usersDataSourcesGet
-    , UsersDataSourcesGet
-
-    -- * Request Lenses
-    , udsgDataSourceId
-    , udsgUserId
-    ) where
-
-import           Network.Google.Fitness.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @fitness.users.dataSources.get@ method which the
--- 'UsersDataSourcesGet' request conforms to.
-type UsersDataSourcesGetResource =
-     "fitness" :>
-       "v1" :>
-         "users" :>
-           Capture "userId" Text :>
-             "dataSources" :>
-               Capture "dataSourceId" Text :>
-                 QueryParam "alt" AltJSON :> Get '[JSON] DataSource
-
--- | Returns the specified data source.
---
--- /See:/ 'usersDataSourcesGet' smart constructor.
-data UsersDataSourcesGet =
-  UsersDataSourcesGet'
-    { _udsgDataSourceId :: !Text
-    , _udsgUserId       :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UsersDataSourcesGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'udsgDataSourceId'
---
--- * 'udsgUserId'
-usersDataSourcesGet
-    :: Text -- ^ 'udsgDataSourceId'
-    -> Text -- ^ 'udsgUserId'
-    -> UsersDataSourcesGet
-usersDataSourcesGet pUdsgDataSourceId_ pUdsgUserId_ =
-  UsersDataSourcesGet'
-    {_udsgDataSourceId = pUdsgDataSourceId_, _udsgUserId = pUdsgUserId_}
-
-
--- | The data stream ID of the data source to retrieve.
-udsgDataSourceId :: Lens' UsersDataSourcesGet Text
-udsgDataSourceId
-  = lens _udsgDataSourceId
-      (\ s a -> s{_udsgDataSourceId = a})
-
--- | 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
-udsgUserId
-  = lens _udsgUserId (\ s a -> s{_udsgUserId = a})
-
-instance GoogleRequest UsersDataSourcesGet where
-        type Rs UsersDataSourcesGet = DataSource
-        type Scopes UsersDataSourcesGet =
-             '["https://www.googleapis.com/auth/fitness.activity.read",
-               "https://www.googleapis.com/auth/fitness.activity.write",
-               "https://www.googleapis.com/auth/fitness.blood_glucose.read",
-               "https://www.googleapis.com/auth/fitness.blood_glucose.write",
-               "https://www.googleapis.com/auth/fitness.blood_pressure.read",
-               "https://www.googleapis.com/auth/fitness.blood_pressure.write",
-               "https://www.googleapis.com/auth/fitness.body.read",
-               "https://www.googleapis.com/auth/fitness.body.write",
-               "https://www.googleapis.com/auth/fitness.body_temperature.read",
-               "https://www.googleapis.com/auth/fitness.body_temperature.write",
-               "https://www.googleapis.com/auth/fitness.location.read",
-               "https://www.googleapis.com/auth/fitness.location.write",
-               "https://www.googleapis.com/auth/fitness.nutrition.read",
-               "https://www.googleapis.com/auth/fitness.nutrition.write",
-               "https://www.googleapis.com/auth/fitness.oxygen_saturation.read",
-               "https://www.googleapis.com/auth/fitness.oxygen_saturation.write",
-               "https://www.googleapis.com/auth/fitness.reproductive_health.read",
-               "https://www.googleapis.com/auth/fitness.reproductive_health.write"]
-        requestClient UsersDataSourcesGet'{..}
-          = go _udsgUserId _udsgDataSourceId (Just AltJSON)
-              fitnessService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy UsersDataSourcesGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Fitness/Users/DataSources/List.hs b/gen/Network/Google/Resource/Fitness/Users/DataSources/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Fitness/Users/DataSources/List.hs
+++ /dev/null
@@ -1,131 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Fitness.Users.DataSources.List
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- 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.
---
--- /See:/ <https://developers.google.com/fit/rest/ Fitness Reference> for @fitness.users.dataSources.list@.
-module Network.Google.Resource.Fitness.Users.DataSources.List
-    (
-    -- * REST Resource
-      UsersDataSourcesListResource
-
-    -- * Creating a Request
-    , usersDataSourcesList
-    , UsersDataSourcesList
-
-    -- * Request Lenses
-    , udslDataTypeName
-    , udslUserId
-    ) where
-
-import           Network.Google.Fitness.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @fitness.users.dataSources.list@ method which the
--- 'UsersDataSourcesList' request conforms to.
-type UsersDataSourcesListResource =
-     "fitness" :>
-       "v1" :>
-         "users" :>
-           Capture "userId" Text :>
-             "dataSources" :>
-               QueryParams "dataTypeName" Text :>
-                 QueryParam "alt" AltJSON :>
-                   Get '[JSON] ListDataSourcesResponse
-
--- | 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.
---
--- /See:/ 'usersDataSourcesList' smart constructor.
-data UsersDataSourcesList =
-  UsersDataSourcesList'
-    { _udslDataTypeName :: !(Maybe [Text])
-    , _udslUserId       :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UsersDataSourcesList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'udslDataTypeName'
---
--- * 'udslUserId'
-usersDataSourcesList
-    :: Text -- ^ 'udslUserId'
-    -> UsersDataSourcesList
-usersDataSourcesList pUdslUserId_ =
-  UsersDataSourcesList'
-    {_udslDataTypeName = Nothing, _udslUserId = pUdslUserId_}
-
-
--- | The names of data types to include in the list. If not specified, all
--- data sources will be returned.
-udslDataTypeName :: Lens' UsersDataSourcesList [Text]
-udslDataTypeName
-  = lens _udslDataTypeName
-      (\ s a -> s{_udslDataTypeName = a})
-      . _Default
-      . _Coerce
-
--- | 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
-udslUserId
-  = lens _udslUserId (\ s a -> s{_udslUserId = a})
-
-instance GoogleRequest UsersDataSourcesList where
-        type Rs UsersDataSourcesList =
-             ListDataSourcesResponse
-        type Scopes UsersDataSourcesList =
-             '["https://www.googleapis.com/auth/fitness.activity.read",
-               "https://www.googleapis.com/auth/fitness.activity.write",
-               "https://www.googleapis.com/auth/fitness.blood_glucose.read",
-               "https://www.googleapis.com/auth/fitness.blood_glucose.write",
-               "https://www.googleapis.com/auth/fitness.blood_pressure.read",
-               "https://www.googleapis.com/auth/fitness.blood_pressure.write",
-               "https://www.googleapis.com/auth/fitness.body.read",
-               "https://www.googleapis.com/auth/fitness.body.write",
-               "https://www.googleapis.com/auth/fitness.body_temperature.read",
-               "https://www.googleapis.com/auth/fitness.body_temperature.write",
-               "https://www.googleapis.com/auth/fitness.location.read",
-               "https://www.googleapis.com/auth/fitness.location.write",
-               "https://www.googleapis.com/auth/fitness.nutrition.read",
-               "https://www.googleapis.com/auth/fitness.nutrition.write",
-               "https://www.googleapis.com/auth/fitness.oxygen_saturation.read",
-               "https://www.googleapis.com/auth/fitness.oxygen_saturation.write",
-               "https://www.googleapis.com/auth/fitness.reproductive_health.read",
-               "https://www.googleapis.com/auth/fitness.reproductive_health.write"]
-        requestClient UsersDataSourcesList'{..}
-          = go _udslUserId (_udslDataTypeName ^. _Default)
-              (Just AltJSON)
-              fitnessService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy UsersDataSourcesListResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Fitness/Users/DataSources/Update.hs b/gen/Network/Google/Resource/Fitness/Users/DataSources/Update.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Fitness/Users/DataSources/Update.hs
+++ /dev/null
@@ -1,130 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Fitness.Users.DataSources.Update
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- 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.
---
--- /See:/ <https://developers.google.com/fit/rest/ Fitness Reference> for @fitness.users.dataSources.update@.
-module Network.Google.Resource.Fitness.Users.DataSources.Update
-    (
-    -- * REST Resource
-      UsersDataSourcesUpdateResource
-
-    -- * Creating a Request
-    , usersDataSourcesUpdate
-    , UsersDataSourcesUpdate
-
-    -- * Request Lenses
-    , udsuDataSourceId
-    , udsuPayload
-    , udsuUserId
-    ) where
-
-import           Network.Google.Fitness.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @fitness.users.dataSources.update@ method which the
--- 'UsersDataSourcesUpdate' request conforms to.
-type UsersDataSourcesUpdateResource =
-     "fitness" :>
-       "v1" :>
-         "users" :>
-           Capture "userId" Text :>
-             "dataSources" :>
-               Capture "dataSourceId" Text :>
-                 QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] DataSource :> Put '[JSON] DataSource
-
--- | 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.
---
--- /See:/ 'usersDataSourcesUpdate' smart constructor.
-data UsersDataSourcesUpdate =
-  UsersDataSourcesUpdate'
-    { _udsuDataSourceId :: !Text
-    , _udsuPayload      :: !DataSource
-    , _udsuUserId       :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UsersDataSourcesUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'udsuDataSourceId'
---
--- * 'udsuPayload'
---
--- * 'udsuUserId'
-usersDataSourcesUpdate
-    :: Text -- ^ 'udsuDataSourceId'
-    -> DataSource -- ^ 'udsuPayload'
-    -> Text -- ^ 'udsuUserId'
-    -> UsersDataSourcesUpdate
-usersDataSourcesUpdate pUdsuDataSourceId_ pUdsuPayload_ pUdsuUserId_ =
-  UsersDataSourcesUpdate'
-    { _udsuDataSourceId = pUdsuDataSourceId_
-    , _udsuPayload = pUdsuPayload_
-    , _udsuUserId = pUdsuUserId_
-    }
-
-
--- | The data stream ID of the data source to update.
-udsuDataSourceId :: Lens' UsersDataSourcesUpdate Text
-udsuDataSourceId
-  = lens _udsuDataSourceId
-      (\ s a -> s{_udsuDataSourceId = a})
-
--- | Multipart request metadata.
-udsuPayload :: Lens' UsersDataSourcesUpdate DataSource
-udsuPayload
-  = lens _udsuPayload (\ s a -> s{_udsuPayload = a})
-
--- | 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
-udsuUserId
-  = lens _udsuUserId (\ s a -> s{_udsuUserId = a})
-
-instance GoogleRequest UsersDataSourcesUpdate where
-        type Rs UsersDataSourcesUpdate = DataSource
-        type Scopes UsersDataSourcesUpdate =
-             '["https://www.googleapis.com/auth/fitness.activity.write",
-               "https://www.googleapis.com/auth/fitness.blood_glucose.write",
-               "https://www.googleapis.com/auth/fitness.blood_pressure.write",
-               "https://www.googleapis.com/auth/fitness.body.write",
-               "https://www.googleapis.com/auth/fitness.body_temperature.write",
-               "https://www.googleapis.com/auth/fitness.location.write",
-               "https://www.googleapis.com/auth/fitness.nutrition.write",
-               "https://www.googleapis.com/auth/fitness.oxygen_saturation.write",
-               "https://www.googleapis.com/auth/fitness.reproductive_health.write"]
-        requestClient UsersDataSourcesUpdate'{..}
-          = go _udsuUserId _udsuDataSourceId (Just AltJSON)
-              _udsuPayload
-              fitnessService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy UsersDataSourcesUpdateResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Fitness/Users/Sessions/Delete.hs b/gen/Network/Google/Resource/Fitness/Users/Sessions/Delete.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Fitness/Users/Sessions/Delete.hs
+++ /dev/null
@@ -1,118 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Fitness.Users.Sessions.Delete
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes a session specified by the given session ID.
---
--- /See:/ <https://developers.google.com/fit/rest/ Fitness Reference> for @fitness.users.sessions.delete@.
-module Network.Google.Resource.Fitness.Users.Sessions.Delete
-    (
-    -- * REST Resource
-      UsersSessionsDeleteResource
-
-    -- * Creating a Request
-    , usersSessionsDelete
-    , UsersSessionsDelete
-
-    -- * Request Lenses
-    , usdUserId
-    , usdCurrentTimeMillis
-    , usdSessionId
-    ) where
-
-import           Network.Google.Fitness.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @fitness.users.sessions.delete@ method which the
--- 'UsersSessionsDelete' request conforms to.
-type UsersSessionsDeleteResource =
-     "fitness" :>
-       "v1" :>
-         "users" :>
-           Capture "userId" Text :>
-             "sessions" :>
-               Capture "sessionId" Text :>
-                 QueryParam "currentTimeMillis" (Textual Int64) :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] ()
-
--- | Deletes a session specified by the given session ID.
---
--- /See:/ 'usersSessionsDelete' smart constructor.
-data UsersSessionsDelete =
-  UsersSessionsDelete'
-    { _usdUserId            :: !Text
-    , _usdCurrentTimeMillis :: !(Maybe (Textual Int64))
-    , _usdSessionId         :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UsersSessionsDelete' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'usdUserId'
---
--- * 'usdCurrentTimeMillis'
---
--- * 'usdSessionId'
-usersSessionsDelete
-    :: Text -- ^ 'usdUserId'
-    -> Text -- ^ 'usdSessionId'
-    -> UsersSessionsDelete
-usersSessionsDelete pUsdUserId_ pUsdSessionId_ =
-  UsersSessionsDelete'
-    { _usdUserId = pUsdUserId_
-    , _usdCurrentTimeMillis = Nothing
-    , _usdSessionId = pUsdSessionId_
-    }
-
-
--- | 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
-usdUserId
-  = lens _usdUserId (\ s a -> s{_usdUserId = a})
-
--- | The client\'s current time in milliseconds since epoch.
-usdCurrentTimeMillis :: Lens' UsersSessionsDelete (Maybe Int64)
-usdCurrentTimeMillis
-  = lens _usdCurrentTimeMillis
-      (\ s a -> s{_usdCurrentTimeMillis = a})
-      . mapping _Coerce
-
--- | The ID of the session to be deleted.
-usdSessionId :: Lens' UsersSessionsDelete Text
-usdSessionId
-  = lens _usdSessionId (\ s a -> s{_usdSessionId = a})
-
-instance GoogleRequest UsersSessionsDelete where
-        type Rs UsersSessionsDelete = ()
-        type Scopes UsersSessionsDelete =
-             '["https://www.googleapis.com/auth/fitness.activity.write"]
-        requestClient UsersSessionsDelete'{..}
-          = go _usdUserId _usdSessionId _usdCurrentTimeMillis
-              (Just AltJSON)
-              fitnessService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy UsersSessionsDeleteResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Fitness/Users/Sessions/List.hs b/gen/Network/Google/Resource/Fitness/Users/Sessions/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Fitness/Users/Sessions/List.hs
+++ /dev/null
@@ -1,169 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Fitness.Users.Sessions.List
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Lists sessions previously created.
---
--- /See:/ <https://developers.google.com/fit/rest/ Fitness Reference> for @fitness.users.sessions.list@.
-module Network.Google.Resource.Fitness.Users.Sessions.List
-    (
-    -- * REST Resource
-      UsersSessionsListResource
-
-    -- * Creating a Request
-    , usersSessionsList
-    , UsersSessionsList
-
-    -- * Request Lenses
-    , uslStartTime
-    , uslUserId
-    , uslEndTime
-    , uslPageToken
-    , uslIncludeDeleted
-    ) where
-
-import           Network.Google.Fitness.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @fitness.users.sessions.list@ method which the
--- 'UsersSessionsList' 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
-
--- | Lists sessions previously created.
---
--- /See:/ 'usersSessionsList' smart constructor.
-data UsersSessionsList =
-  UsersSessionsList'
-    { _uslStartTime      :: !(Maybe Text)
-    , _uslUserId         :: !Text
-    , _uslEndTime        :: !(Maybe Text)
-    , _uslPageToken      :: !(Maybe Text)
-    , _uslIncludeDeleted :: !(Maybe Bool)
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UsersSessionsList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uslStartTime'
---
--- * 'uslUserId'
---
--- * 'uslEndTime'
---
--- * 'uslPageToken'
---
--- * 'uslIncludeDeleted'
-usersSessionsList
-    :: Text -- ^ 'uslUserId'
-    -> UsersSessionsList
-usersSessionsList pUslUserId_ =
-  UsersSessionsList'
-    { _uslStartTime = Nothing
-    , _uslUserId = pUslUserId_
-    , _uslEndTime = Nothing
-    , _uslPageToken = Nothing
-    , _uslIncludeDeleted = Nothing
-    }
-
-
--- | An RFC3339 timestamp. Only sessions ending between the start and end
--- times will be included in the response.
-uslStartTime :: Lens' UsersSessionsList (Maybe Text)
-uslStartTime
-  = lens _uslStartTime (\ s a -> s{_uslStartTime = a})
-
--- | List sessions for the person identified. Use me to indicate the
--- authenticated user. Only me is supported at this time.
-uslUserId :: Lens' UsersSessionsList Text
-uslUserId
-  = lens _uslUserId (\ s a -> s{_uslUserId = a})
-
--- | An RFC3339 timestamp. Only sessions ending between the start and end
--- times will be included in the response.
-uslEndTime :: Lens' UsersSessionsList (Maybe Text)
-uslEndTime
-  = lens _uslEndTime (\ s a -> s{_uslEndTime = a})
-
--- | The continuation token, which is used for incremental syncing. To get
--- the next batch of changes, set this parameter to the value of
--- nextPageToken from the previous response. This token is treated as a
--- timestamp (in millis since epoch). If specified, the API returns
--- sessions modified since this time. The page token is ignored if either
--- start or end time is specified. If none of start time, end time, and the
--- page token is specified, sessions modified in the last 30 days are
--- returned.
-uslPageToken :: Lens' UsersSessionsList (Maybe Text)
-uslPageToken
-  = lens _uslPageToken (\ s a -> s{_uslPageToken = a})
-
--- | 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)
-uslIncludeDeleted
-  = lens _uslIncludeDeleted
-      (\ s a -> s{_uslIncludeDeleted = a})
-
-instance GoogleRequest UsersSessionsList where
-        type Rs UsersSessionsList = ListSessionsResponse
-        type Scopes UsersSessionsList =
-             '["https://www.googleapis.com/auth/fitness.activity.read",
-               "https://www.googleapis.com/auth/fitness.activity.write",
-               "https://www.googleapis.com/auth/fitness.blood_glucose.read",
-               "https://www.googleapis.com/auth/fitness.blood_glucose.write",
-               "https://www.googleapis.com/auth/fitness.blood_pressure.read",
-               "https://www.googleapis.com/auth/fitness.blood_pressure.write",
-               "https://www.googleapis.com/auth/fitness.body.read",
-               "https://www.googleapis.com/auth/fitness.body.write",
-               "https://www.googleapis.com/auth/fitness.body_temperature.read",
-               "https://www.googleapis.com/auth/fitness.body_temperature.write",
-               "https://www.googleapis.com/auth/fitness.location.read",
-               "https://www.googleapis.com/auth/fitness.location.write",
-               "https://www.googleapis.com/auth/fitness.nutrition.read",
-               "https://www.googleapis.com/auth/fitness.nutrition.write",
-               "https://www.googleapis.com/auth/fitness.oxygen_saturation.read",
-               "https://www.googleapis.com/auth/fitness.oxygen_saturation.write",
-               "https://www.googleapis.com/auth/fitness.reproductive_health.read",
-               "https://www.googleapis.com/auth/fitness.reproductive_health.write"]
-        requestClient UsersSessionsList'{..}
-          = go _uslUserId _uslStartTime _uslEndTime
-              _uslPageToken
-              _uslIncludeDeleted
-              (Just AltJSON)
-              fitnessService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy UsersSessionsListResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Fitness/Users/Sessions/Update.hs b/gen/Network/Google/Resource/Fitness/Users/Sessions/Update.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Fitness/Users/Sessions/Update.hs
+++ /dev/null
@@ -1,131 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Fitness.Users.Sessions.Update
--- Copyright   : (c) 2015-2016 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Updates or insert a given session.
---
--- /See:/ <https://developers.google.com/fit/rest/ Fitness Reference> for @fitness.users.sessions.update@.
-module Network.Google.Resource.Fitness.Users.Sessions.Update
-    (
-    -- * REST Resource
-      UsersSessionsUpdateResource
-
-    -- * Creating a Request
-    , usersSessionsUpdate
-    , UsersSessionsUpdate
-
-    -- * Request Lenses
-    , usuPayload
-    , usuUserId
-    , usuCurrentTimeMillis
-    , usuSessionId
-    ) where
-
-import           Network.Google.Fitness.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @fitness.users.sessions.update@ method which the
--- 'UsersSessionsUpdate' 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
-
--- | Updates or insert a given session.
---
--- /See:/ 'usersSessionsUpdate' smart constructor.
-data UsersSessionsUpdate =
-  UsersSessionsUpdate'
-    { _usuPayload           :: !Session
-    , _usuUserId            :: !Text
-    , _usuCurrentTimeMillis :: !(Maybe (Textual Int64))
-    , _usuSessionId         :: !Text
-    }
-  deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UsersSessionsUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'usuPayload'
---
--- * 'usuUserId'
---
--- * 'usuCurrentTimeMillis'
---
--- * 'usuSessionId'
-usersSessionsUpdate
-    :: Session -- ^ 'usuPayload'
-    -> Text -- ^ 'usuUserId'
-    -> Text -- ^ 'usuSessionId'
-    -> UsersSessionsUpdate
-usersSessionsUpdate pUsuPayload_ pUsuUserId_ pUsuSessionId_ =
-  UsersSessionsUpdate'
-    { _usuPayload = pUsuPayload_
-    , _usuUserId = pUsuUserId_
-    , _usuCurrentTimeMillis = Nothing
-    , _usuSessionId = pUsuSessionId_
-    }
-
-
--- | Multipart request metadata.
-usuPayload :: Lens' UsersSessionsUpdate Session
-usuPayload
-  = lens _usuPayload (\ s a -> s{_usuPayload = a})
-
--- | Create sessions for the person identified. Use me to indicate the
--- authenticated user. Only me is supported at this time.
-usuUserId :: Lens' UsersSessionsUpdate Text
-usuUserId
-  = lens _usuUserId (\ s a -> s{_usuUserId = a})
-
--- | The client\'s current time in milliseconds since epoch.
-usuCurrentTimeMillis :: Lens' UsersSessionsUpdate (Maybe Int64)
-usuCurrentTimeMillis
-  = lens _usuCurrentTimeMillis
-      (\ s a -> s{_usuCurrentTimeMillis = a})
-      . mapping _Coerce
-
--- | The ID of the session to be created.
-usuSessionId :: Lens' UsersSessionsUpdate Text
-usuSessionId
-  = lens _usuSessionId (\ s a -> s{_usuSessionId = a})
-
-instance GoogleRequest UsersSessionsUpdate where
-        type Rs UsersSessionsUpdate = Session
-        type Scopes UsersSessionsUpdate =
-             '["https://www.googleapis.com/auth/fitness.activity.write"]
-        requestClient UsersSessionsUpdate'{..}
-          = go _usuUserId _usuSessionId _usuCurrentTimeMillis
-              (Just AltJSON)
-              _usuPayload
-              fitnessService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy UsersSessionsUpdateResource)
-                      mempty
diff --git a/gogol-fitness.cabal b/gogol-fitness.cabal
--- a/gogol-fitness.cabal
+++ b/gogol-fitness.cabal
@@ -1,59 +1,73 @@
-name:                  gogol-fitness
-version:               0.5.0
-synopsis:              Google Fitness SDK.
-homepage:              https://github.com/brendanhay/gogol
-bug-reports:           https://github.com/brendanhay/gogol/issues
-license:               OtherLicense
-license-file:          LICENSE
-author:                Brendan Hay
-maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2015-2016 Brendan Hay
-category:              Network, Google, Cloud
-build-type:            Simple
-cabal-version:         >= 1.10
-extra-source-files:    README.md src/.gitkeep
+cabal-version:      2.2
+name:               gogol-fitness
+version:            1.0.0
+synopsis:           Google Fitness SDK.
+homepage:           https://github.com/brendanhay/gogol
+bug-reports:        https://github.com/brendanhay/gogol/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+gogol@gmail.com>, Toni Cebrián <toni@tonicebrian.com>
 
+copyright:          Copyright (c) 2015-2025 Brendan Hay
+category:           Google
+build-type:         Simple
+extra-source-files:
+  README.md
+  src/.gitkeep
+
 description:
-    Stores and accesses user data in the fitness store from apps on any
-    platform.
-    .
-    /Warning:/ 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 @v1@
-    of the API.
+  The Fitness API for managing users\' fitness tracking data.
+  .
+  /Warning:/ 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 @v1@
+  of the API.
 
 source-repository head
-    type:     git
-    location: git://github.com/brendanhay/gogol.git
+  type:     git
+  location: git://github.com/brendanhay/gogol.git
+  subdir:   gogol-fitness
 
+flag field-selectors
+  description:
+    If record field selectors should be enabled. Disabling this requires GHC >=9.2 and the NoFieldSelectors extension.
+
+  default:     False
+  manual:      True
+
 library
-    default-language:  Haskell2010
-    hs-source-dirs:    src gen
+  default-language: GHC2021
+  hs-source-dirs:   src gen
+  ghc-options:
+    -Wall -fwarn-incomplete-uni-patterns
+    -fwarn-incomplete-record-updates -funbox-strict-fields
+    -fwarn-unused-packages
 
-    ghc-options:       -Wall
+  if (!flag(field-selectors) && impl(ghc >=9.2))
+    default-extensions: NoFieldSelectors
 
-    exposed-modules:
-          Network.Google.Fitness
-        , Network.Google.Fitness.Types
-        , Network.Google.Resource.Fitness.Users.DataSet.Aggregate
-        , Network.Google.Resource.Fitness.Users.DataSources.Create
-        , Network.Google.Resource.Fitness.Users.DataSources.DataPointChanges.List
-        , Network.Google.Resource.Fitness.Users.DataSources.DataSets.Delete
-        , Network.Google.Resource.Fitness.Users.DataSources.DataSets.Get
-        , Network.Google.Resource.Fitness.Users.DataSources.DataSets.Patch
-        , Network.Google.Resource.Fitness.Users.DataSources.Delete
-        , Network.Google.Resource.Fitness.Users.DataSources.Get
-        , Network.Google.Resource.Fitness.Users.DataSources.List
-        , Network.Google.Resource.Fitness.Users.DataSources.Update
-        , Network.Google.Resource.Fitness.Users.Sessions.Delete
-        , Network.Google.Resource.Fitness.Users.Sessions.List
-        , Network.Google.Resource.Fitness.Users.Sessions.Update
+  exposed-modules:
+    Gogol.Fitness
+    Gogol.Fitness.Types
+    Gogol.Fitness.Users.Dataset.Aggregate
+    Gogol.Fitness.Users.DataSources.Create
+    Gogol.Fitness.Users.DataSources.DataPointChanges.List
+    Gogol.Fitness.Users.DataSources.Datasets.Delete
+    Gogol.Fitness.Users.DataSources.Datasets.Get
+    Gogol.Fitness.Users.DataSources.Datasets.Patch
+    Gogol.Fitness.Users.DataSources.Delete
+    Gogol.Fitness.Users.DataSources.Get
+    Gogol.Fitness.Users.DataSources.List
+    Gogol.Fitness.Users.DataSources.Update
+    Gogol.Fitness.Users.Sessions.Delete
+    Gogol.Fitness.Users.Sessions.List
+    Gogol.Fitness.Users.Sessions.Update
 
-    other-modules:
-          Network.Google.Fitness.Types.Product
-        , Network.Google.Fitness.Types.Sum
+  other-modules:
+    Gogol.Fitness.Internal.Product
+    Gogol.Fitness.Internal.Sum
 
-    build-depends:
-          gogol-core == 0.5.0.*
-        , base       >= 4.7 && < 5
+  build-depends:    gogol-core ^>=1.0.0
