diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -7,9 +7,8 @@
 
 
 ## Version
-
-`1.6.1`
-
+ 
+`2.0` - Derived from API version @2014-06-30@ of the AWS service descriptions, licensed under Apache 2.0.
 
 ## Description
 
@@ -26,7 +25,7 @@
 The provided lenses should be compatible with any of the major lens libraries
 [lens](http://hackage.haskell.org/package/lens) or [lens-family-core](http://hackage.haskell.org/package/lens-family-core).
 
-See [Network.AWS.CognitoSync](http://hackage.haskell.org/package/amazonka-cognito-sync/docs/Network-AWS-CognitoSync.html)
+See [Amazonka.CognitoSync](http://hackage.haskell.org/package/amazonka-cognito-sync/docs/Amazonka-CognitoSync.html)
 or [the AWS documentation](https://aws.amazon.com/documentation/) to get started.
 
 
diff --git a/Setup.hs b/Setup.hs
deleted file mode 100644
--- a/Setup.hs
+++ /dev/null
@@ -1,2 +0,0 @@
-import           Distribution.Simple
-main = defaultMain
diff --git a/amazonka-cognito-sync.cabal b/amazonka-cognito-sync.cabal
--- a/amazonka-cognito-sync.cabal
+++ b/amazonka-cognito-sync.cabal
@@ -1,102 +1,111 @@
-name:                  amazonka-cognito-sync
-version:               1.6.1
-synopsis:              Amazon Cognito Sync SDK.
-homepage:              https://github.com/brendanhay/amazonka
-bug-reports:           https://github.com/brendanhay/amazonka/issues
-license:               MPL-2.0
-license-file:          LICENSE
-author:                Brendan Hay
-maintainer:            Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-copyright:             Copyright (c) 2013-2018 Brendan Hay
-category:              Network, AWS, Cloud, Distributed Computing
-build-type:            Simple
-cabal-version:         >= 1.10
-extra-source-files:    README.md fixture/*.yaml fixture/*.proto src/.gitkeep
+cabal-version:      2.2
+name:               amazonka-cognito-sync
+version:            2.0
+synopsis:           Amazon Cognito Sync SDK.
+homepage:           https://github.com/brendanhay/amazonka
+bug-reports:        https://github.com/brendanhay/amazonka/issues
+license:            MPL-2.0
+license-file:       LICENSE
+author:             Brendan Hay
+maintainer:
+  Brendan Hay <brendan.g.hay+amazonka@gmail.com>, Jack Kelly <jack@jackkelly.name>
+
+copyright:          Copyright (c) 2013-2023 Brendan Hay
+category:           AWS
+build-type:         Simple
+extra-source-files:
+  fixture/*.proto
+  fixture/*.yaml
+  README.md
+  src/.gitkeep
+
 description:
-    The types from this library are intended to be used with
-    <http://hackage.haskell.org/package/amazonka amazonka>, which provides
-    mechanisms for specifying AuthN/AuthZ information, sending requests,
-    and receiving responses.
-    .
-    Lenses are used for constructing and manipulating types,
-    due to the depth of nesting of AWS types and transparency regarding
-    de/serialisation into more palatable Haskell values.
-    The provided lenses should be compatible with any of the major lens libraries
-    such as <http://hackage.haskell.org/package/lens lens> or
-    <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
-    .
-    See "Network.AWS.CognitoSync" or <https://aws.amazon.com/documentation/ the AWS documentation>
-    to get started.
+  Derived from API version @2014-06-30@ of the AWS service descriptions, licensed under Apache 2.0.
+  .
+  The types from this library are intended to be used with <http://hackage.haskell.org/package/amazonka amazonka>,
+  which provides mechanisms for specifying AuthN/AuthZ information, sending requests, and receiving responses.
+  .
+  It is recommended to use generic lenses or optics from packages such as <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify optional fields and deconstruct responses.
+  .
+  Generated lenses can be found in "Amazonka.CognitoSync.Lens" and are
+  suitable for use with a lens package such as <http://hackage.haskell.org/package/lens lens> or <http://hackage.haskell.org/package/lens-family-core lens-family-core>.
+  .
+  See "Amazonka.CognitoSync" and the <https://aws.amazon.com/documentation/ AWS documentation> to get started.
 
 source-repository head
-    type:              git
-    location:          git://github.com/brendanhay/amazonka.git
-    subdir:            amazonka-cognito-sync
+  type:     git
+  location: git://github.com/brendanhay/amazonka.git
+  subdir:   amazonka-cognito-sync
 
 library
-    default-language:  Haskell2010
-    hs-source-dirs:    src gen
-
-    ghc-options:
-        -Wall
-        -fwarn-incomplete-uni-patterns
-        -fwarn-incomplete-record-updates
-        -funbox-strict-fields
-
-    exposed-modules:
-          Network.AWS.CognitoSync
-        , Network.AWS.CognitoSync.BulkPublish
-        , Network.AWS.CognitoSync.DeleteDataset
-        , Network.AWS.CognitoSync.DescribeDataset
-        , Network.AWS.CognitoSync.DescribeIdentityPoolUsage
-        , Network.AWS.CognitoSync.DescribeIdentityUsage
-        , Network.AWS.CognitoSync.GetBulkPublishDetails
-        , Network.AWS.CognitoSync.GetCognitoEvents
-        , Network.AWS.CognitoSync.GetIdentityPoolConfiguration
-        , Network.AWS.CognitoSync.ListDatasets
-        , Network.AWS.CognitoSync.ListIdentityPoolUsage
-        , Network.AWS.CognitoSync.ListRecords
-        , Network.AWS.CognitoSync.RegisterDevice
-        , Network.AWS.CognitoSync.SetCognitoEvents
-        , Network.AWS.CognitoSync.SetIdentityPoolConfiguration
-        , Network.AWS.CognitoSync.SubscribeToDataset
-        , Network.AWS.CognitoSync.Types
-        , Network.AWS.CognitoSync.UnsubscribeFromDataset
-        , Network.AWS.CognitoSync.UpdateRecords
-        , Network.AWS.CognitoSync.Waiters
+  default-language: Haskell2010
+  hs-source-dirs:   src gen
+  ghc-options:
+    -Wall -fwarn-incomplete-uni-patterns
+    -fwarn-incomplete-record-updates -funbox-strict-fields
 
-    other-modules:
-          Network.AWS.CognitoSync.Types.Product
-        , Network.AWS.CognitoSync.Types.Sum
+  exposed-modules:
+    Amazonka.CognitoSync
+    Amazonka.CognitoSync.BulkPublish
+    Amazonka.CognitoSync.DeleteDataset
+    Amazonka.CognitoSync.DescribeDataset
+    Amazonka.CognitoSync.DescribeIdentityPoolUsage
+    Amazonka.CognitoSync.DescribeIdentityUsage
+    Amazonka.CognitoSync.GetBulkPublishDetails
+    Amazonka.CognitoSync.GetCognitoEvents
+    Amazonka.CognitoSync.GetIdentityPoolConfiguration
+    Amazonka.CognitoSync.Lens
+    Amazonka.CognitoSync.ListDatasets
+    Amazonka.CognitoSync.ListIdentityPoolUsage
+    Amazonka.CognitoSync.ListRecords
+    Amazonka.CognitoSync.RegisterDevice
+    Amazonka.CognitoSync.SetCognitoEvents
+    Amazonka.CognitoSync.SetIdentityPoolConfiguration
+    Amazonka.CognitoSync.SubscribeToDataset
+    Amazonka.CognitoSync.Types
+    Amazonka.CognitoSync.Types.BulkPublishStatus
+    Amazonka.CognitoSync.Types.CognitoStreams
+    Amazonka.CognitoSync.Types.Dataset
+    Amazonka.CognitoSync.Types.IdentityPoolUsage
+    Amazonka.CognitoSync.Types.IdentityUsage
+    Amazonka.CognitoSync.Types.Operation
+    Amazonka.CognitoSync.Types.Platform
+    Amazonka.CognitoSync.Types.PushSync
+    Amazonka.CognitoSync.Types.Record
+    Amazonka.CognitoSync.Types.RecordPatch
+    Amazonka.CognitoSync.Types.StreamingStatus
+    Amazonka.CognitoSync.UnsubscribeFromDataset
+    Amazonka.CognitoSync.UpdateRecords
+    Amazonka.CognitoSync.Waiters
 
-    build-depends:
-          amazonka-core == 1.6.1.*
-        , base          >= 4.7     && < 5
+  build-depends:
+    , amazonka-core  >=2.0  && <2.1
+    , base           >=4.12 && <5
 
 test-suite amazonka-cognito-sync-test
-    type:              exitcode-stdio-1.0
-    default-language:  Haskell2010
-    hs-source-dirs:    test
-    main-is:           Main.hs
-
-    ghc-options:       -Wall -threaded
+  type:             exitcode-stdio-1.0
+  default-language: Haskell2010
+  hs-source-dirs:   test
+  main-is:          Main.hs
+  ghc-options:      -Wall -threaded
 
-    -- This section is encoded by the template and any modules added by
-    -- hand outside these namespaces will not correctly be added to the
-    -- distribution package.
-    other-modules:
-          Test.AWS.CognitoSync
-        , Test.AWS.Gen.CognitoSync
-        , Test.AWS.CognitoSync.Internal
+  -- This section is encoded by the template and any modules added by
+  -- hand outside these namespaces will not correctly be added to the
+  -- distribution package.
+  other-modules:
+    Test.Amazonka.CognitoSync
+    Test.Amazonka.CognitoSync.Internal
+    Test.Amazonka.Gen.CognitoSync
 
-    build-depends:
-          amazonka-core == 1.6.1.*
-        , amazonka-test == 1.6.1.*
-        , amazonka-cognito-sync
-        , base
-        , bytestring
-        , tasty
-        , tasty-hunit
-        , text
-        , time
-        , unordered-containers
+  build-depends:
+    , amazonka-cognito-sync
+    , amazonka-core          >=2.0 && <2.1
+    , amazonka-test          >=2.0 && <2.1
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/BulkPublish.yaml b/fixture/BulkPublish.yaml
--- a/fixture/BulkPublish.yaml
+++ b/fixture/BulkPublish.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/cognito-sync/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  cognito-sync.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DeleteDataset.yaml b/fixture/DeleteDataset.yaml
--- a/fixture/DeleteDataset.yaml
+++ b/fixture/DeleteDataset.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/cognito-sync/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  cognito-sync.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeDataset.yaml b/fixture/DescribeDataset.yaml
--- a/fixture/DescribeDataset.yaml
+++ b/fixture/DescribeDataset.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/cognito-sync/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  cognito-sync.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeIdentityPoolUsage.yaml b/fixture/DescribeIdentityPoolUsage.yaml
--- a/fixture/DescribeIdentityPoolUsage.yaml
+++ b/fixture/DescribeIdentityPoolUsage.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/cognito-sync/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  cognito-sync.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/DescribeIdentityUsage.yaml b/fixture/DescribeIdentityUsage.yaml
--- a/fixture/DescribeIdentityUsage.yaml
+++ b/fixture/DescribeIdentityUsage.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/cognito-sync/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  cognito-sync.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetBulkPublishDetails.yaml b/fixture/GetBulkPublishDetails.yaml
--- a/fixture/GetBulkPublishDetails.yaml
+++ b/fixture/GetBulkPublishDetails.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/cognito-sync/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  cognito-sync.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetCognitoEvents.yaml b/fixture/GetCognitoEvents.yaml
--- a/fixture/GetCognitoEvents.yaml
+++ b/fixture/GetCognitoEvents.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/cognito-sync/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  cognito-sync.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/GetIdentityPoolConfiguration.yaml b/fixture/GetIdentityPoolConfiguration.yaml
--- a/fixture/GetIdentityPoolConfiguration.yaml
+++ b/fixture/GetIdentityPoolConfiguration.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/cognito-sync/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  cognito-sync.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListDatasets.yaml b/fixture/ListDatasets.yaml
--- a/fixture/ListDatasets.yaml
+++ b/fixture/ListDatasets.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/cognito-sync/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  cognito-sync.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListIdentityPoolUsage.yaml b/fixture/ListIdentityPoolUsage.yaml
--- a/fixture/ListIdentityPoolUsage.yaml
+++ b/fixture/ListIdentityPoolUsage.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/cognito-sync/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  cognito-sync.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/ListRecords.yaml b/fixture/ListRecords.yaml
--- a/fixture/ListRecords.yaml
+++ b/fixture/ListRecords.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/cognito-sync/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  cognito-sync.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/RegisterDevice.yaml b/fixture/RegisterDevice.yaml
--- a/fixture/RegisterDevice.yaml
+++ b/fixture/RegisterDevice.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/cognito-sync/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  cognito-sync.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SetCognitoEvents.yaml b/fixture/SetCognitoEvents.yaml
--- a/fixture/SetCognitoEvents.yaml
+++ b/fixture/SetCognitoEvents.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/cognito-sync/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  cognito-sync.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SetIdentityPoolConfiguration.yaml b/fixture/SetIdentityPoolConfiguration.yaml
--- a/fixture/SetIdentityPoolConfiguration.yaml
+++ b/fixture/SetIdentityPoolConfiguration.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/cognito-sync/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  cognito-sync.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/SubscribeToDataset.yaml b/fixture/SubscribeToDataset.yaml
--- a/fixture/SubscribeToDataset.yaml
+++ b/fixture/SubscribeToDataset.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/cognito-sync/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  cognito-sync.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UnsubscribeFromDataset.yaml b/fixture/UnsubscribeFromDataset.yaml
--- a/fixture/UnsubscribeFromDataset.yaml
+++ b/fixture/UnsubscribeFromDataset.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/cognito-sync/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  cognito-sync.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/fixture/UpdateRecords.yaml b/fixture/UpdateRecords.yaml
--- a/fixture/UpdateRecords.yaml
+++ b/fixture/UpdateRecords.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/cognito-sync/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  cognito-sync.us-east-1.amazonaws.com
+  Content-Type:          application/x-www-form-urlencoded; charset=utf-8
+  X-Amz-Content-SHA256:  abcdef
+  X-Amz-Date:            20091028T223200Z
+body:
+  ''
diff --git a/gen/Amazonka/CognitoSync.hs b/gen/Amazonka/CognitoSync.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync.hs
@@ -0,0 +1,282 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.CognitoSync
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Derived from API version @2014-06-30@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- Amazon Cognito Sync
+--
+-- Amazon Cognito Sync provides an AWS service and client library that
+-- enable cross-device syncing of application-related user data. High-level
+-- client libraries are available for both iOS and Android. You can use
+-- these libraries to persist data locally so that it\'s available even if
+-- the device is offline. Developer credentials don\'t need to be stored on
+-- the mobile device to access the service. You can use Amazon Cognito to
+-- obtain a normalized user ID and credentials. User data is persisted in a
+-- dataset that can store up to 1 MB of key-value pairs, and you can have
+-- up to 20 datasets per user identity.
+--
+-- With Amazon Cognito Sync, the data stored for each identity is
+-- accessible only to credentials assigned to that identity. In order to
+-- use the Cognito Sync service, you need to make API calls using
+-- credentials retrieved with
+-- <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/Welcome.html Amazon Cognito Identity service>.
+--
+-- If you want to use Cognito Sync in an Android or iOS application, you
+-- will probably want to make API calls via the AWS Mobile SDK. To learn
+-- more, see the
+-- <http://docs.aws.amazon.com/mobile/sdkforandroid/developerguide/cognito-sync.html Developer Guide for Android>
+-- and the
+-- <http://docs.aws.amazon.com/mobile/sdkforios/developerguide/cognito-sync.html Developer Guide for iOS>.
+module Amazonka.CognitoSync
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** AlreadyStreamedException
+    _AlreadyStreamedException,
+
+    -- ** ConcurrentModificationException
+    _ConcurrentModificationException,
+
+    -- ** DuplicateRequestException
+    _DuplicateRequestException,
+
+    -- ** InternalErrorException
+    _InternalErrorException,
+
+    -- ** InvalidConfigurationException
+    _InvalidConfigurationException,
+
+    -- ** InvalidLambdaFunctionOutputException
+    _InvalidLambdaFunctionOutputException,
+
+    -- ** InvalidParameterException
+    _InvalidParameterException,
+
+    -- ** LambdaThrottledException
+    _LambdaThrottledException,
+
+    -- ** LimitExceededException
+    _LimitExceededException,
+
+    -- ** NotAuthorizedException
+    _NotAuthorizedException,
+
+    -- ** ResourceConflictException
+    _ResourceConflictException,
+
+    -- ** ResourceNotFoundException
+    _ResourceNotFoundException,
+
+    -- ** TooManyRequestsException
+    _TooManyRequestsException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** BulkPublish
+    BulkPublish (BulkPublish'),
+    newBulkPublish,
+    BulkPublishResponse (BulkPublishResponse'),
+    newBulkPublishResponse,
+
+    -- ** DeleteDataset
+    DeleteDataset (DeleteDataset'),
+    newDeleteDataset,
+    DeleteDatasetResponse (DeleteDatasetResponse'),
+    newDeleteDatasetResponse,
+
+    -- ** DescribeDataset
+    DescribeDataset (DescribeDataset'),
+    newDescribeDataset,
+    DescribeDatasetResponse (DescribeDatasetResponse'),
+    newDescribeDatasetResponse,
+
+    -- ** DescribeIdentityPoolUsage
+    DescribeIdentityPoolUsage (DescribeIdentityPoolUsage'),
+    newDescribeIdentityPoolUsage,
+    DescribeIdentityPoolUsageResponse (DescribeIdentityPoolUsageResponse'),
+    newDescribeIdentityPoolUsageResponse,
+
+    -- ** DescribeIdentityUsage
+    DescribeIdentityUsage (DescribeIdentityUsage'),
+    newDescribeIdentityUsage,
+    DescribeIdentityUsageResponse (DescribeIdentityUsageResponse'),
+    newDescribeIdentityUsageResponse,
+
+    -- ** GetBulkPublishDetails
+    GetBulkPublishDetails (GetBulkPublishDetails'),
+    newGetBulkPublishDetails,
+    GetBulkPublishDetailsResponse (GetBulkPublishDetailsResponse'),
+    newGetBulkPublishDetailsResponse,
+
+    -- ** GetCognitoEvents
+    GetCognitoEvents (GetCognitoEvents'),
+    newGetCognitoEvents,
+    GetCognitoEventsResponse (GetCognitoEventsResponse'),
+    newGetCognitoEventsResponse,
+
+    -- ** GetIdentityPoolConfiguration
+    GetIdentityPoolConfiguration (GetIdentityPoolConfiguration'),
+    newGetIdentityPoolConfiguration,
+    GetIdentityPoolConfigurationResponse (GetIdentityPoolConfigurationResponse'),
+    newGetIdentityPoolConfigurationResponse,
+
+    -- ** ListDatasets
+    ListDatasets (ListDatasets'),
+    newListDatasets,
+    ListDatasetsResponse (ListDatasetsResponse'),
+    newListDatasetsResponse,
+
+    -- ** ListIdentityPoolUsage
+    ListIdentityPoolUsage (ListIdentityPoolUsage'),
+    newListIdentityPoolUsage,
+    ListIdentityPoolUsageResponse (ListIdentityPoolUsageResponse'),
+    newListIdentityPoolUsageResponse,
+
+    -- ** ListRecords
+    ListRecords (ListRecords'),
+    newListRecords,
+    ListRecordsResponse (ListRecordsResponse'),
+    newListRecordsResponse,
+
+    -- ** RegisterDevice
+    RegisterDevice (RegisterDevice'),
+    newRegisterDevice,
+    RegisterDeviceResponse (RegisterDeviceResponse'),
+    newRegisterDeviceResponse,
+
+    -- ** SetCognitoEvents
+    SetCognitoEvents (SetCognitoEvents'),
+    newSetCognitoEvents,
+    SetCognitoEventsResponse (SetCognitoEventsResponse'),
+    newSetCognitoEventsResponse,
+
+    -- ** SetIdentityPoolConfiguration
+    SetIdentityPoolConfiguration (SetIdentityPoolConfiguration'),
+    newSetIdentityPoolConfiguration,
+    SetIdentityPoolConfigurationResponse (SetIdentityPoolConfigurationResponse'),
+    newSetIdentityPoolConfigurationResponse,
+
+    -- ** SubscribeToDataset
+    SubscribeToDataset (SubscribeToDataset'),
+    newSubscribeToDataset,
+    SubscribeToDatasetResponse (SubscribeToDatasetResponse'),
+    newSubscribeToDatasetResponse,
+
+    -- ** UnsubscribeFromDataset
+    UnsubscribeFromDataset (UnsubscribeFromDataset'),
+    newUnsubscribeFromDataset,
+    UnsubscribeFromDatasetResponse (UnsubscribeFromDatasetResponse'),
+    newUnsubscribeFromDatasetResponse,
+
+    -- ** UpdateRecords
+    UpdateRecords (UpdateRecords'),
+    newUpdateRecords,
+    UpdateRecordsResponse (UpdateRecordsResponse'),
+    newUpdateRecordsResponse,
+
+    -- * Types
+
+    -- ** BulkPublishStatus
+    BulkPublishStatus (..),
+
+    -- ** Operation
+    Operation (..),
+
+    -- ** Platform
+    Platform (..),
+
+    -- ** StreamingStatus
+    StreamingStatus (..),
+
+    -- ** CognitoStreams
+    CognitoStreams (CognitoStreams'),
+    newCognitoStreams,
+
+    -- ** Dataset
+    Dataset (Dataset'),
+    newDataset,
+
+    -- ** IdentityPoolUsage
+    IdentityPoolUsage (IdentityPoolUsage'),
+    newIdentityPoolUsage,
+
+    -- ** IdentityUsage
+    IdentityUsage (IdentityUsage'),
+    newIdentityUsage,
+
+    -- ** PushSync
+    PushSync (PushSync'),
+    newPushSync,
+
+    -- ** Record
+    Record (Record'),
+    newRecord,
+
+    -- ** RecordPatch
+    RecordPatch (RecordPatch'),
+    newRecordPatch,
+  )
+where
+
+import Amazonka.CognitoSync.BulkPublish
+import Amazonka.CognitoSync.DeleteDataset
+import Amazonka.CognitoSync.DescribeDataset
+import Amazonka.CognitoSync.DescribeIdentityPoolUsage
+import Amazonka.CognitoSync.DescribeIdentityUsage
+import Amazonka.CognitoSync.GetBulkPublishDetails
+import Amazonka.CognitoSync.GetCognitoEvents
+import Amazonka.CognitoSync.GetIdentityPoolConfiguration
+import Amazonka.CognitoSync.Lens
+import Amazonka.CognitoSync.ListDatasets
+import Amazonka.CognitoSync.ListIdentityPoolUsage
+import Amazonka.CognitoSync.ListRecords
+import Amazonka.CognitoSync.RegisterDevice
+import Amazonka.CognitoSync.SetCognitoEvents
+import Amazonka.CognitoSync.SetIdentityPoolConfiguration
+import Amazonka.CognitoSync.SubscribeToDataset
+import Amazonka.CognitoSync.Types
+import Amazonka.CognitoSync.UnsubscribeFromDataset
+import Amazonka.CognitoSync.UpdateRecords
+import Amazonka.CognitoSync.Waiters
+
+-- $errors
+-- Error matchers are designed for use with the functions provided by
+-- <http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.
+-- This allows catching (and rethrowing) service specific errors returned
+-- by 'CognitoSync'.
+
+-- $operations
+-- Some AWS operations return results that are incomplete and require subsequent
+-- requests in order to obtain the entire result set. The process of sending
+-- subsequent requests to continue where a previous request left off is called
+-- pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to
+-- 1000 objects at a time, and you must send subsequent requests with the
+-- appropriate Marker in order to retrieve the next page of results.
+--
+-- Operations that have an 'AWSPager' instance can transparently perform subsequent
+-- requests, correctly setting Markers and other request facets to iterate through
+-- the entire result set of a truncated API operation. Operations which support
+-- this have an additional note in the documentation.
+--
+-- Many operations have the ability to filter results on the server side. See the
+-- individual operation parameters for details.
+
+-- $waiters
+-- Waiters poll by repeatedly sending a request until some remote success condition
+-- configured by the 'Wait' specification is fulfilled. The 'Wait' specification
+-- determines how many attempts should be made, in addition to delay and retry strategies.
diff --git a/gen/Amazonka/CognitoSync/BulkPublish.hs b/gen/Amazonka/CognitoSync/BulkPublish.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/BulkPublish.hs
@@ -0,0 +1,187 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.BulkPublish
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Initiates a bulk publish of all existing datasets for an Identity Pool
+-- to the configured stream. Customers are limited to one successful bulk
+-- publish per 24 hours. Bulk publish is an asynchronous request, customers
+-- can see the status of the request via the GetBulkPublishDetails
+-- operation.
+--
+-- This API can only be called with developer credentials. You cannot call
+-- this API with the temporary user credentials provided by Cognito
+-- Identity.
+module Amazonka.CognitoSync.BulkPublish
+  ( -- * Creating a Request
+    BulkPublish (..),
+    newBulkPublish,
+
+    -- * Request Lenses
+    bulkPublish_identityPoolId,
+
+    -- * Destructuring the Response
+    BulkPublishResponse (..),
+    newBulkPublishResponse,
+
+    -- * Response Lenses
+    bulkPublishResponse_identityPoolId,
+    bulkPublishResponse_httpStatus,
+  )
+where
+
+import Amazonka.CognitoSync.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The input for the BulkPublish operation.
+--
+-- /See:/ 'newBulkPublish' smart constructor.
+data BulkPublish = BulkPublish'
+  { -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. GUID generation is unique within a region.
+    identityPoolId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BulkPublish' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identityPoolId', 'bulkPublish_identityPoolId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+newBulkPublish ::
+  -- | 'identityPoolId'
+  Prelude.Text ->
+  BulkPublish
+newBulkPublish pIdentityPoolId_ =
+  BulkPublish' {identityPoolId = pIdentityPoolId_}
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+bulkPublish_identityPoolId :: Lens.Lens' BulkPublish Prelude.Text
+bulkPublish_identityPoolId = Lens.lens (\BulkPublish' {identityPoolId} -> identityPoolId) (\s@BulkPublish' {} a -> s {identityPoolId = a} :: BulkPublish)
+
+instance Core.AWSRequest BulkPublish where
+  type AWSResponse BulkPublish = BulkPublishResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          BulkPublishResponse'
+            Prelude.<$> (x Data..?> "IdentityPoolId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable BulkPublish where
+  hashWithSalt _salt BulkPublish' {..} =
+    _salt `Prelude.hashWithSalt` identityPoolId
+
+instance Prelude.NFData BulkPublish where
+  rnf BulkPublish' {..} = Prelude.rnf identityPoolId
+
+instance Data.ToHeaders BulkPublish where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON BulkPublish where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath BulkPublish where
+  toPath BulkPublish' {..} =
+    Prelude.mconcat
+      [ "/identitypools/",
+        Data.toBS identityPoolId,
+        "/bulkpublish"
+      ]
+
+instance Data.ToQuery BulkPublish where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | The output for the BulkPublish operation.
+--
+-- /See:/ 'newBulkPublishResponse' smart constructor.
+data BulkPublishResponse = BulkPublishResponse'
+  { -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. GUID generation is unique within a region.
+    identityPoolId :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'BulkPublishResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identityPoolId', 'bulkPublishResponse_identityPoolId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+--
+-- 'httpStatus', 'bulkPublishResponse_httpStatus' - The response's http status code.
+newBulkPublishResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  BulkPublishResponse
+newBulkPublishResponse pHttpStatus_ =
+  BulkPublishResponse'
+    { identityPoolId =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+bulkPublishResponse_identityPoolId :: Lens.Lens' BulkPublishResponse (Prelude.Maybe Prelude.Text)
+bulkPublishResponse_identityPoolId = Lens.lens (\BulkPublishResponse' {identityPoolId} -> identityPoolId) (\s@BulkPublishResponse' {} a -> s {identityPoolId = a} :: BulkPublishResponse)
+
+-- | The response's http status code.
+bulkPublishResponse_httpStatus :: Lens.Lens' BulkPublishResponse Prelude.Int
+bulkPublishResponse_httpStatus = Lens.lens (\BulkPublishResponse' {httpStatus} -> httpStatus) (\s@BulkPublishResponse' {} a -> s {httpStatus = a} :: BulkPublishResponse)
+
+instance Prelude.NFData BulkPublishResponse where
+  rnf BulkPublishResponse' {..} =
+    Prelude.rnf identityPoolId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CognitoSync/DeleteDataset.hs b/gen/Amazonka/CognitoSync/DeleteDataset.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/DeleteDataset.hs
@@ -0,0 +1,236 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.DeleteDataset
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deletes the specific dataset. The dataset will be deleted permanently,
+-- and the action can\'t be undone. Datasets that this dataset was merged
+-- with will no longer report the merge. Any subsequent operation on this
+-- dataset will result in a ResourceNotFoundException.
+--
+-- This API can be called with temporary user credentials provided by
+-- Cognito Identity or with developer credentials.
+module Amazonka.CognitoSync.DeleteDataset
+  ( -- * Creating a Request
+    DeleteDataset (..),
+    newDeleteDataset,
+
+    -- * Request Lenses
+    deleteDataset_identityPoolId,
+    deleteDataset_identityId,
+    deleteDataset_datasetName,
+
+    -- * Destructuring the Response
+    DeleteDatasetResponse (..),
+    newDeleteDatasetResponse,
+
+    -- * Response Lenses
+    deleteDatasetResponse_dataset,
+    deleteDatasetResponse_httpStatus,
+  )
+where
+
+import Amazonka.CognitoSync.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | A request to delete the specific dataset.
+--
+-- /See:/ 'newDeleteDataset' smart constructor.
+data DeleteDataset = DeleteDataset'
+  { -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. GUID generation is unique within a region.
+    identityPoolId :: Prelude.Text,
+    -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. GUID generation is unique within a region.
+    identityId :: Prelude.Text,
+    -- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9,
+    -- \'_\' (underscore), \'-\' (dash), and \'.\' (dot).
+    datasetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDataset' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identityPoolId', 'deleteDataset_identityPoolId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+--
+-- 'identityId', 'deleteDataset_identityId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+--
+-- 'datasetName', 'deleteDataset_datasetName' - A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9,
+-- \'_\' (underscore), \'-\' (dash), and \'.\' (dot).
+newDeleteDataset ::
+  -- | 'identityPoolId'
+  Prelude.Text ->
+  -- | 'identityId'
+  Prelude.Text ->
+  -- | 'datasetName'
+  Prelude.Text ->
+  DeleteDataset
+newDeleteDataset
+  pIdentityPoolId_
+  pIdentityId_
+  pDatasetName_ =
+    DeleteDataset'
+      { identityPoolId = pIdentityPoolId_,
+        identityId = pIdentityId_,
+        datasetName = pDatasetName_
+      }
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+deleteDataset_identityPoolId :: Lens.Lens' DeleteDataset Prelude.Text
+deleteDataset_identityPoolId = Lens.lens (\DeleteDataset' {identityPoolId} -> identityPoolId) (\s@DeleteDataset' {} a -> s {identityPoolId = a} :: DeleteDataset)
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+deleteDataset_identityId :: Lens.Lens' DeleteDataset Prelude.Text
+deleteDataset_identityId = Lens.lens (\DeleteDataset' {identityId} -> identityId) (\s@DeleteDataset' {} a -> s {identityId = a} :: DeleteDataset)
+
+-- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9,
+-- \'_\' (underscore), \'-\' (dash), and \'.\' (dot).
+deleteDataset_datasetName :: Lens.Lens' DeleteDataset Prelude.Text
+deleteDataset_datasetName = Lens.lens (\DeleteDataset' {datasetName} -> datasetName) (\s@DeleteDataset' {} a -> s {datasetName = a} :: DeleteDataset)
+
+instance Core.AWSRequest DeleteDataset where
+  type
+    AWSResponse DeleteDataset =
+      DeleteDatasetResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DeleteDatasetResponse'
+            Prelude.<$> (x Data..?> "Dataset")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteDataset where
+  hashWithSalt _salt DeleteDataset' {..} =
+    _salt
+      `Prelude.hashWithSalt` identityPoolId
+      `Prelude.hashWithSalt` identityId
+      `Prelude.hashWithSalt` datasetName
+
+instance Prelude.NFData DeleteDataset where
+  rnf DeleteDataset' {..} =
+    Prelude.rnf identityPoolId
+      `Prelude.seq` Prelude.rnf identityId
+      `Prelude.seq` Prelude.rnf datasetName
+
+instance Data.ToHeaders DeleteDataset where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteDataset where
+  toPath DeleteDataset' {..} =
+    Prelude.mconcat
+      [ "/identitypools/",
+        Data.toBS identityPoolId,
+        "/identities/",
+        Data.toBS identityId,
+        "/datasets/",
+        Data.toBS datasetName
+      ]
+
+instance Data.ToQuery DeleteDataset where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | Response to a successful DeleteDataset request.
+--
+-- /See:/ 'newDeleteDatasetResponse' smart constructor.
+data DeleteDatasetResponse = DeleteDatasetResponse'
+  { -- | A collection of data for an identity pool. An identity pool can have
+    -- multiple datasets. A dataset is per identity and can be general or
+    -- associated with a particular entity in an application (like a saved
+    -- game). Datasets are automatically created if they don\'t exist. Data is
+    -- synced by dataset, and a dataset can hold up to 1MB of key-value pairs.
+    dataset :: Prelude.Maybe Dataset,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDatasetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataset', 'deleteDatasetResponse_dataset' - A collection of data for an identity pool. An identity pool can have
+-- multiple datasets. A dataset is per identity and can be general or
+-- associated with a particular entity in an application (like a saved
+-- game). Datasets are automatically created if they don\'t exist. Data is
+-- synced by dataset, and a dataset can hold up to 1MB of key-value pairs.
+--
+-- 'httpStatus', 'deleteDatasetResponse_httpStatus' - The response's http status code.
+newDeleteDatasetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteDatasetResponse
+newDeleteDatasetResponse pHttpStatus_ =
+  DeleteDatasetResponse'
+    { dataset = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A collection of data for an identity pool. An identity pool can have
+-- multiple datasets. A dataset is per identity and can be general or
+-- associated with a particular entity in an application (like a saved
+-- game). Datasets are automatically created if they don\'t exist. Data is
+-- synced by dataset, and a dataset can hold up to 1MB of key-value pairs.
+deleteDatasetResponse_dataset :: Lens.Lens' DeleteDatasetResponse (Prelude.Maybe Dataset)
+deleteDatasetResponse_dataset = Lens.lens (\DeleteDatasetResponse' {dataset} -> dataset) (\s@DeleteDatasetResponse' {} a -> s {dataset = a} :: DeleteDatasetResponse)
+
+-- | The response's http status code.
+deleteDatasetResponse_httpStatus :: Lens.Lens' DeleteDatasetResponse Prelude.Int
+deleteDatasetResponse_httpStatus = Lens.lens (\DeleteDatasetResponse' {httpStatus} -> httpStatus) (\s@DeleteDatasetResponse' {} a -> s {httpStatus = a} :: DeleteDatasetResponse)
+
+instance Prelude.NFData DeleteDatasetResponse where
+  rnf DeleteDatasetResponse' {..} =
+    Prelude.rnf dataset
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CognitoSync/DescribeDataset.hs b/gen/Amazonka/CognitoSync/DescribeDataset.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/DescribeDataset.hs
@@ -0,0 +1,238 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.DescribeDataset
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets meta data about a dataset by identity and dataset name. With Amazon
+-- Cognito Sync, each identity has access only to its own data. Thus, the
+-- credentials used to make this API call need to have access to the
+-- identity data.
+--
+-- This API can be called with temporary user credentials provided by
+-- Cognito Identity or with developer credentials. You should use Cognito
+-- Identity credentials to make this API call.
+module Amazonka.CognitoSync.DescribeDataset
+  ( -- * Creating a Request
+    DescribeDataset (..),
+    newDescribeDataset,
+
+    -- * Request Lenses
+    describeDataset_identityPoolId,
+    describeDataset_identityId,
+    describeDataset_datasetName,
+
+    -- * Destructuring the Response
+    DescribeDatasetResponse (..),
+    newDescribeDatasetResponse,
+
+    -- * Response Lenses
+    describeDatasetResponse_dataset,
+    describeDatasetResponse_httpStatus,
+  )
+where
+
+import Amazonka.CognitoSync.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | A request for meta data about a dataset (creation date, number of
+-- records, size) by owner and dataset name.
+--
+-- /See:/ 'newDescribeDataset' smart constructor.
+data DescribeDataset = DescribeDataset'
+  { -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. GUID generation is unique within a region.
+    identityPoolId :: Prelude.Text,
+    -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. GUID generation is unique within a region.
+    identityId :: Prelude.Text,
+    -- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9,
+    -- \'_\' (underscore), \'-\' (dash), and \'.\' (dot).
+    datasetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDataset' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identityPoolId', 'describeDataset_identityPoolId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+--
+-- 'identityId', 'describeDataset_identityId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+--
+-- 'datasetName', 'describeDataset_datasetName' - A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9,
+-- \'_\' (underscore), \'-\' (dash), and \'.\' (dot).
+newDescribeDataset ::
+  -- | 'identityPoolId'
+  Prelude.Text ->
+  -- | 'identityId'
+  Prelude.Text ->
+  -- | 'datasetName'
+  Prelude.Text ->
+  DescribeDataset
+newDescribeDataset
+  pIdentityPoolId_
+  pIdentityId_
+  pDatasetName_ =
+    DescribeDataset'
+      { identityPoolId = pIdentityPoolId_,
+        identityId = pIdentityId_,
+        datasetName = pDatasetName_
+      }
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+describeDataset_identityPoolId :: Lens.Lens' DescribeDataset Prelude.Text
+describeDataset_identityPoolId = Lens.lens (\DescribeDataset' {identityPoolId} -> identityPoolId) (\s@DescribeDataset' {} a -> s {identityPoolId = a} :: DescribeDataset)
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+describeDataset_identityId :: Lens.Lens' DescribeDataset Prelude.Text
+describeDataset_identityId = Lens.lens (\DescribeDataset' {identityId} -> identityId) (\s@DescribeDataset' {} a -> s {identityId = a} :: DescribeDataset)
+
+-- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9,
+-- \'_\' (underscore), \'-\' (dash), and \'.\' (dot).
+describeDataset_datasetName :: Lens.Lens' DescribeDataset Prelude.Text
+describeDataset_datasetName = Lens.lens (\DescribeDataset' {datasetName} -> datasetName) (\s@DescribeDataset' {} a -> s {datasetName = a} :: DescribeDataset)
+
+instance Core.AWSRequest DescribeDataset where
+  type
+    AWSResponse DescribeDataset =
+      DescribeDatasetResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeDatasetResponse'
+            Prelude.<$> (x Data..?> "Dataset")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeDataset where
+  hashWithSalt _salt DescribeDataset' {..} =
+    _salt
+      `Prelude.hashWithSalt` identityPoolId
+      `Prelude.hashWithSalt` identityId
+      `Prelude.hashWithSalt` datasetName
+
+instance Prelude.NFData DescribeDataset where
+  rnf DescribeDataset' {..} =
+    Prelude.rnf identityPoolId
+      `Prelude.seq` Prelude.rnf identityId
+      `Prelude.seq` Prelude.rnf datasetName
+
+instance Data.ToHeaders DescribeDataset where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeDataset where
+  toPath DescribeDataset' {..} =
+    Prelude.mconcat
+      [ "/identitypools/",
+        Data.toBS identityPoolId,
+        "/identities/",
+        Data.toBS identityId,
+        "/datasets/",
+        Data.toBS datasetName
+      ]
+
+instance Data.ToQuery DescribeDataset where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | Response to a successful DescribeDataset request.
+--
+-- /See:/ 'newDescribeDatasetResponse' smart constructor.
+data DescribeDatasetResponse = DescribeDatasetResponse'
+  { -- | Meta data for a collection of data for an identity. An identity can have
+    -- multiple datasets. A dataset can be general or associated with a
+    -- particular entity in an application (like a saved game). Datasets are
+    -- automatically created if they don\'t exist. Data is synced by dataset,
+    -- and a dataset can hold up to 1MB of key-value pairs.
+    dataset :: Prelude.Maybe Dataset,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDatasetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataset', 'describeDatasetResponse_dataset' - Meta data for a collection of data for an identity. An identity can have
+-- multiple datasets. A dataset can be general or associated with a
+-- particular entity in an application (like a saved game). Datasets are
+-- automatically created if they don\'t exist. Data is synced by dataset,
+-- and a dataset can hold up to 1MB of key-value pairs.
+--
+-- 'httpStatus', 'describeDatasetResponse_httpStatus' - The response's http status code.
+newDescribeDatasetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeDatasetResponse
+newDescribeDatasetResponse pHttpStatus_ =
+  DescribeDatasetResponse'
+    { dataset = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Meta data for a collection of data for an identity. An identity can have
+-- multiple datasets. A dataset can be general or associated with a
+-- particular entity in an application (like a saved game). Datasets are
+-- automatically created if they don\'t exist. Data is synced by dataset,
+-- and a dataset can hold up to 1MB of key-value pairs.
+describeDatasetResponse_dataset :: Lens.Lens' DescribeDatasetResponse (Prelude.Maybe Dataset)
+describeDatasetResponse_dataset = Lens.lens (\DescribeDatasetResponse' {dataset} -> dataset) (\s@DescribeDatasetResponse' {} a -> s {dataset = a} :: DescribeDatasetResponse)
+
+-- | The response's http status code.
+describeDatasetResponse_httpStatus :: Lens.Lens' DescribeDatasetResponse Prelude.Int
+describeDatasetResponse_httpStatus = Lens.lens (\DescribeDatasetResponse' {httpStatus} -> httpStatus) (\s@DescribeDatasetResponse' {} a -> s {httpStatus = a} :: DescribeDatasetResponse)
+
+instance Prelude.NFData DescribeDatasetResponse where
+  rnf DescribeDatasetResponse' {..} =
+    Prelude.rnf dataset
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CognitoSync/DescribeIdentityPoolUsage.hs b/gen/Amazonka/CognitoSync/DescribeIdentityPoolUsage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/DescribeIdentityPoolUsage.hs
@@ -0,0 +1,181 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.DescribeIdentityPoolUsage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets usage details (for example, data storage) about a particular
+-- identity pool.
+--
+-- This API can only be called with developer credentials. You cannot call
+-- this API with the temporary user credentials provided by Cognito
+-- Identity.
+module Amazonka.CognitoSync.DescribeIdentityPoolUsage
+  ( -- * Creating a Request
+    DescribeIdentityPoolUsage (..),
+    newDescribeIdentityPoolUsage,
+
+    -- * Request Lenses
+    describeIdentityPoolUsage_identityPoolId,
+
+    -- * Destructuring the Response
+    DescribeIdentityPoolUsageResponse (..),
+    newDescribeIdentityPoolUsageResponse,
+
+    -- * Response Lenses
+    describeIdentityPoolUsageResponse_identityPoolUsage,
+    describeIdentityPoolUsageResponse_httpStatus,
+  )
+where
+
+import Amazonka.CognitoSync.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | A request for usage information about the identity pool.
+--
+-- /See:/ 'newDescribeIdentityPoolUsage' smart constructor.
+data DescribeIdentityPoolUsage = DescribeIdentityPoolUsage'
+  { -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. GUID generation is unique within a region.
+    identityPoolId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeIdentityPoolUsage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identityPoolId', 'describeIdentityPoolUsage_identityPoolId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+newDescribeIdentityPoolUsage ::
+  -- | 'identityPoolId'
+  Prelude.Text ->
+  DescribeIdentityPoolUsage
+newDescribeIdentityPoolUsage pIdentityPoolId_ =
+  DescribeIdentityPoolUsage'
+    { identityPoolId =
+        pIdentityPoolId_
+    }
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+describeIdentityPoolUsage_identityPoolId :: Lens.Lens' DescribeIdentityPoolUsage Prelude.Text
+describeIdentityPoolUsage_identityPoolId = Lens.lens (\DescribeIdentityPoolUsage' {identityPoolId} -> identityPoolId) (\s@DescribeIdentityPoolUsage' {} a -> s {identityPoolId = a} :: DescribeIdentityPoolUsage)
+
+instance Core.AWSRequest DescribeIdentityPoolUsage where
+  type
+    AWSResponse DescribeIdentityPoolUsage =
+      DescribeIdentityPoolUsageResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeIdentityPoolUsageResponse'
+            Prelude.<$> (x Data..?> "IdentityPoolUsage")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeIdentityPoolUsage where
+  hashWithSalt _salt DescribeIdentityPoolUsage' {..} =
+    _salt `Prelude.hashWithSalt` identityPoolId
+
+instance Prelude.NFData DescribeIdentityPoolUsage where
+  rnf DescribeIdentityPoolUsage' {..} =
+    Prelude.rnf identityPoolId
+
+instance Data.ToHeaders DescribeIdentityPoolUsage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeIdentityPoolUsage where
+  toPath DescribeIdentityPoolUsage' {..} =
+    Prelude.mconcat
+      ["/identitypools/", Data.toBS identityPoolId]
+
+instance Data.ToQuery DescribeIdentityPoolUsage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | Response to a successful DescribeIdentityPoolUsage request.
+--
+-- /See:/ 'newDescribeIdentityPoolUsageResponse' smart constructor.
+data DescribeIdentityPoolUsageResponse = DescribeIdentityPoolUsageResponse'
+  { -- | Information about the usage of the identity pool.
+    identityPoolUsage :: Prelude.Maybe IdentityPoolUsage,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeIdentityPoolUsageResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identityPoolUsage', 'describeIdentityPoolUsageResponse_identityPoolUsage' - Information about the usage of the identity pool.
+--
+-- 'httpStatus', 'describeIdentityPoolUsageResponse_httpStatus' - The response's http status code.
+newDescribeIdentityPoolUsageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeIdentityPoolUsageResponse
+newDescribeIdentityPoolUsageResponse pHttpStatus_ =
+  DescribeIdentityPoolUsageResponse'
+    { identityPoolUsage =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Information about the usage of the identity pool.
+describeIdentityPoolUsageResponse_identityPoolUsage :: Lens.Lens' DescribeIdentityPoolUsageResponse (Prelude.Maybe IdentityPoolUsage)
+describeIdentityPoolUsageResponse_identityPoolUsage = Lens.lens (\DescribeIdentityPoolUsageResponse' {identityPoolUsage} -> identityPoolUsage) (\s@DescribeIdentityPoolUsageResponse' {} a -> s {identityPoolUsage = a} :: DescribeIdentityPoolUsageResponse)
+
+-- | The response's http status code.
+describeIdentityPoolUsageResponse_httpStatus :: Lens.Lens' DescribeIdentityPoolUsageResponse Prelude.Int
+describeIdentityPoolUsageResponse_httpStatus = Lens.lens (\DescribeIdentityPoolUsageResponse' {httpStatus} -> httpStatus) (\s@DescribeIdentityPoolUsageResponse' {} a -> s {httpStatus = a} :: DescribeIdentityPoolUsageResponse)
+
+instance
+  Prelude.NFData
+    DescribeIdentityPoolUsageResponse
+  where
+  rnf DescribeIdentityPoolUsageResponse' {..} =
+    Prelude.rnf identityPoolUsage
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CognitoSync/DescribeIdentityUsage.hs b/gen/Amazonka/CognitoSync/DescribeIdentityUsage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/DescribeIdentityUsage.hs
@@ -0,0 +1,204 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.DescribeIdentityUsage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets usage information for an identity, including number of datasets and
+-- data usage.
+--
+-- This API can be called with temporary user credentials provided by
+-- Cognito Identity or with developer credentials.
+module Amazonka.CognitoSync.DescribeIdentityUsage
+  ( -- * Creating a Request
+    DescribeIdentityUsage (..),
+    newDescribeIdentityUsage,
+
+    -- * Request Lenses
+    describeIdentityUsage_identityPoolId,
+    describeIdentityUsage_identityId,
+
+    -- * Destructuring the Response
+    DescribeIdentityUsageResponse (..),
+    newDescribeIdentityUsageResponse,
+
+    -- * Response Lenses
+    describeIdentityUsageResponse_identityUsage,
+    describeIdentityUsageResponse_httpStatus,
+  )
+where
+
+import Amazonka.CognitoSync.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | A request for information about the usage of an identity pool.
+--
+-- /See:/ 'newDescribeIdentityUsage' smart constructor.
+data DescribeIdentityUsage = DescribeIdentityUsage'
+  { -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. GUID generation is unique within a region.
+    identityPoolId :: Prelude.Text,
+    -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. GUID generation is unique within a region.
+    identityId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeIdentityUsage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identityPoolId', 'describeIdentityUsage_identityPoolId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+--
+-- 'identityId', 'describeIdentityUsage_identityId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+newDescribeIdentityUsage ::
+  -- | 'identityPoolId'
+  Prelude.Text ->
+  -- | 'identityId'
+  Prelude.Text ->
+  DescribeIdentityUsage
+newDescribeIdentityUsage
+  pIdentityPoolId_
+  pIdentityId_ =
+    DescribeIdentityUsage'
+      { identityPoolId =
+          pIdentityPoolId_,
+        identityId = pIdentityId_
+      }
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+describeIdentityUsage_identityPoolId :: Lens.Lens' DescribeIdentityUsage Prelude.Text
+describeIdentityUsage_identityPoolId = Lens.lens (\DescribeIdentityUsage' {identityPoolId} -> identityPoolId) (\s@DescribeIdentityUsage' {} a -> s {identityPoolId = a} :: DescribeIdentityUsage)
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+describeIdentityUsage_identityId :: Lens.Lens' DescribeIdentityUsage Prelude.Text
+describeIdentityUsage_identityId = Lens.lens (\DescribeIdentityUsage' {identityId} -> identityId) (\s@DescribeIdentityUsage' {} a -> s {identityId = a} :: DescribeIdentityUsage)
+
+instance Core.AWSRequest DescribeIdentityUsage where
+  type
+    AWSResponse DescribeIdentityUsage =
+      DescribeIdentityUsageResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeIdentityUsageResponse'
+            Prelude.<$> (x Data..?> "IdentityUsage")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeIdentityUsage where
+  hashWithSalt _salt DescribeIdentityUsage' {..} =
+    _salt
+      `Prelude.hashWithSalt` identityPoolId
+      `Prelude.hashWithSalt` identityId
+
+instance Prelude.NFData DescribeIdentityUsage where
+  rnf DescribeIdentityUsage' {..} =
+    Prelude.rnf identityPoolId
+      `Prelude.seq` Prelude.rnf identityId
+
+instance Data.ToHeaders DescribeIdentityUsage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DescribeIdentityUsage where
+  toPath DescribeIdentityUsage' {..} =
+    Prelude.mconcat
+      [ "/identitypools/",
+        Data.toBS identityPoolId,
+        "/identities/",
+        Data.toBS identityId
+      ]
+
+instance Data.ToQuery DescribeIdentityUsage where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | The response to a successful DescribeIdentityUsage request.
+--
+-- /See:/ 'newDescribeIdentityUsageResponse' smart constructor.
+data DescribeIdentityUsageResponse = DescribeIdentityUsageResponse'
+  { -- | Usage information for the identity.
+    identityUsage :: Prelude.Maybe IdentityUsage,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeIdentityUsageResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identityUsage', 'describeIdentityUsageResponse_identityUsage' - Usage information for the identity.
+--
+-- 'httpStatus', 'describeIdentityUsageResponse_httpStatus' - The response's http status code.
+newDescribeIdentityUsageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeIdentityUsageResponse
+newDescribeIdentityUsageResponse pHttpStatus_ =
+  DescribeIdentityUsageResponse'
+    { identityUsage =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Usage information for the identity.
+describeIdentityUsageResponse_identityUsage :: Lens.Lens' DescribeIdentityUsageResponse (Prelude.Maybe IdentityUsage)
+describeIdentityUsageResponse_identityUsage = Lens.lens (\DescribeIdentityUsageResponse' {identityUsage} -> identityUsage) (\s@DescribeIdentityUsageResponse' {} a -> s {identityUsage = a} :: DescribeIdentityUsageResponse)
+
+-- | The response's http status code.
+describeIdentityUsageResponse_httpStatus :: Lens.Lens' DescribeIdentityUsageResponse Prelude.Int
+describeIdentityUsageResponse_httpStatus = Lens.lens (\DescribeIdentityUsageResponse' {httpStatus} -> httpStatus) (\s@DescribeIdentityUsageResponse' {} a -> s {httpStatus = a} :: DescribeIdentityUsageResponse)
+
+instance Prelude.NFData DescribeIdentityUsageResponse where
+  rnf DescribeIdentityUsageResponse' {..} =
+    Prelude.rnf identityUsage
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CognitoSync/GetBulkPublishDetails.hs b/gen/Amazonka/CognitoSync/GetBulkPublishDetails.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/GetBulkPublishDetails.hs
@@ -0,0 +1,273 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.GetBulkPublishDetails
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Get the status of the last BulkPublish operation for an identity pool.
+--
+-- This API can only be called with developer credentials. You cannot call
+-- this API with the temporary user credentials provided by Cognito
+-- Identity.
+module Amazonka.CognitoSync.GetBulkPublishDetails
+  ( -- * Creating a Request
+    GetBulkPublishDetails (..),
+    newGetBulkPublishDetails,
+
+    -- * Request Lenses
+    getBulkPublishDetails_identityPoolId,
+
+    -- * Destructuring the Response
+    GetBulkPublishDetailsResponse (..),
+    newGetBulkPublishDetailsResponse,
+
+    -- * Response Lenses
+    getBulkPublishDetailsResponse_bulkPublishCompleteTime,
+    getBulkPublishDetailsResponse_bulkPublishStartTime,
+    getBulkPublishDetailsResponse_bulkPublishStatus,
+    getBulkPublishDetailsResponse_failureMessage,
+    getBulkPublishDetailsResponse_identityPoolId,
+    getBulkPublishDetailsResponse_httpStatus,
+  )
+where
+
+import Amazonka.CognitoSync.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The input for the GetBulkPublishDetails operation.
+--
+-- /See:/ 'newGetBulkPublishDetails' smart constructor.
+data GetBulkPublishDetails = GetBulkPublishDetails'
+  { -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. GUID generation is unique within a region.
+    identityPoolId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetBulkPublishDetails' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identityPoolId', 'getBulkPublishDetails_identityPoolId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+newGetBulkPublishDetails ::
+  -- | 'identityPoolId'
+  Prelude.Text ->
+  GetBulkPublishDetails
+newGetBulkPublishDetails pIdentityPoolId_ =
+  GetBulkPublishDetails'
+    { identityPoolId =
+        pIdentityPoolId_
+    }
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+getBulkPublishDetails_identityPoolId :: Lens.Lens' GetBulkPublishDetails Prelude.Text
+getBulkPublishDetails_identityPoolId = Lens.lens (\GetBulkPublishDetails' {identityPoolId} -> identityPoolId) (\s@GetBulkPublishDetails' {} a -> s {identityPoolId = a} :: GetBulkPublishDetails)
+
+instance Core.AWSRequest GetBulkPublishDetails where
+  type
+    AWSResponse GetBulkPublishDetails =
+      GetBulkPublishDetailsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetBulkPublishDetailsResponse'
+            Prelude.<$> (x Data..?> "BulkPublishCompleteTime")
+            Prelude.<*> (x Data..?> "BulkPublishStartTime")
+            Prelude.<*> (x Data..?> "BulkPublishStatus")
+            Prelude.<*> (x Data..?> "FailureMessage")
+            Prelude.<*> (x Data..?> "IdentityPoolId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetBulkPublishDetails where
+  hashWithSalt _salt GetBulkPublishDetails' {..} =
+    _salt `Prelude.hashWithSalt` identityPoolId
+
+instance Prelude.NFData GetBulkPublishDetails where
+  rnf GetBulkPublishDetails' {..} =
+    Prelude.rnf identityPoolId
+
+instance Data.ToHeaders GetBulkPublishDetails where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON GetBulkPublishDetails where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath GetBulkPublishDetails where
+  toPath GetBulkPublishDetails' {..} =
+    Prelude.mconcat
+      [ "/identitypools/",
+        Data.toBS identityPoolId,
+        "/getBulkPublishDetails"
+      ]
+
+instance Data.ToQuery GetBulkPublishDetails where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | The output for the GetBulkPublishDetails operation.
+--
+-- /See:/ 'newGetBulkPublishDetailsResponse' smart constructor.
+data GetBulkPublishDetailsResponse = GetBulkPublishDetailsResponse'
+  { -- | If BulkPublishStatus is SUCCEEDED, the time the last bulk publish
+    -- operation completed.
+    bulkPublishCompleteTime :: Prelude.Maybe Data.POSIX,
+    -- | The date\/time at which the last bulk publish was initiated.
+    bulkPublishStartTime :: Prelude.Maybe Data.POSIX,
+    -- | Status of the last bulk publish operation, valid values are:
+    --
+    -- NOT_STARTED - No bulk publish has been requested for this identity pool
+    --
+    -- IN_PROGRESS - Data is being published to the configured stream
+    --
+    -- SUCCEEDED - All data for the identity pool has been published to the
+    -- configured stream
+    --
+    -- FAILED - Some portion of the data has failed to publish, check
+    -- FailureMessage for the cause.
+    bulkPublishStatus :: Prelude.Maybe BulkPublishStatus,
+    -- | If BulkPublishStatus is FAILED this field will contain the error message
+    -- that caused the bulk publish to fail.
+    failureMessage :: Prelude.Maybe Prelude.Text,
+    -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. GUID generation is unique within a region.
+    identityPoolId :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetBulkPublishDetailsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'bulkPublishCompleteTime', 'getBulkPublishDetailsResponse_bulkPublishCompleteTime' - If BulkPublishStatus is SUCCEEDED, the time the last bulk publish
+-- operation completed.
+--
+-- 'bulkPublishStartTime', 'getBulkPublishDetailsResponse_bulkPublishStartTime' - The date\/time at which the last bulk publish was initiated.
+--
+-- 'bulkPublishStatus', 'getBulkPublishDetailsResponse_bulkPublishStatus' - Status of the last bulk publish operation, valid values are:
+--
+-- NOT_STARTED - No bulk publish has been requested for this identity pool
+--
+-- IN_PROGRESS - Data is being published to the configured stream
+--
+-- SUCCEEDED - All data for the identity pool has been published to the
+-- configured stream
+--
+-- FAILED - Some portion of the data has failed to publish, check
+-- FailureMessage for the cause.
+--
+-- 'failureMessage', 'getBulkPublishDetailsResponse_failureMessage' - If BulkPublishStatus is FAILED this field will contain the error message
+-- that caused the bulk publish to fail.
+--
+-- 'identityPoolId', 'getBulkPublishDetailsResponse_identityPoolId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+--
+-- 'httpStatus', 'getBulkPublishDetailsResponse_httpStatus' - The response's http status code.
+newGetBulkPublishDetailsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetBulkPublishDetailsResponse
+newGetBulkPublishDetailsResponse pHttpStatus_ =
+  GetBulkPublishDetailsResponse'
+    { bulkPublishCompleteTime =
+        Prelude.Nothing,
+      bulkPublishStartTime = Prelude.Nothing,
+      bulkPublishStatus = Prelude.Nothing,
+      failureMessage = Prelude.Nothing,
+      identityPoolId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | If BulkPublishStatus is SUCCEEDED, the time the last bulk publish
+-- operation completed.
+getBulkPublishDetailsResponse_bulkPublishCompleteTime :: Lens.Lens' GetBulkPublishDetailsResponse (Prelude.Maybe Prelude.UTCTime)
+getBulkPublishDetailsResponse_bulkPublishCompleteTime = Lens.lens (\GetBulkPublishDetailsResponse' {bulkPublishCompleteTime} -> bulkPublishCompleteTime) (\s@GetBulkPublishDetailsResponse' {} a -> s {bulkPublishCompleteTime = a} :: GetBulkPublishDetailsResponse) Prelude.. Lens.mapping Data._Time
+
+-- | The date\/time at which the last bulk publish was initiated.
+getBulkPublishDetailsResponse_bulkPublishStartTime :: Lens.Lens' GetBulkPublishDetailsResponse (Prelude.Maybe Prelude.UTCTime)
+getBulkPublishDetailsResponse_bulkPublishStartTime = Lens.lens (\GetBulkPublishDetailsResponse' {bulkPublishStartTime} -> bulkPublishStartTime) (\s@GetBulkPublishDetailsResponse' {} a -> s {bulkPublishStartTime = a} :: GetBulkPublishDetailsResponse) Prelude.. Lens.mapping Data._Time
+
+-- | Status of the last bulk publish operation, valid values are:
+--
+-- NOT_STARTED - No bulk publish has been requested for this identity pool
+--
+-- IN_PROGRESS - Data is being published to the configured stream
+--
+-- SUCCEEDED - All data for the identity pool has been published to the
+-- configured stream
+--
+-- FAILED - Some portion of the data has failed to publish, check
+-- FailureMessage for the cause.
+getBulkPublishDetailsResponse_bulkPublishStatus :: Lens.Lens' GetBulkPublishDetailsResponse (Prelude.Maybe BulkPublishStatus)
+getBulkPublishDetailsResponse_bulkPublishStatus = Lens.lens (\GetBulkPublishDetailsResponse' {bulkPublishStatus} -> bulkPublishStatus) (\s@GetBulkPublishDetailsResponse' {} a -> s {bulkPublishStatus = a} :: GetBulkPublishDetailsResponse)
+
+-- | If BulkPublishStatus is FAILED this field will contain the error message
+-- that caused the bulk publish to fail.
+getBulkPublishDetailsResponse_failureMessage :: Lens.Lens' GetBulkPublishDetailsResponse (Prelude.Maybe Prelude.Text)
+getBulkPublishDetailsResponse_failureMessage = Lens.lens (\GetBulkPublishDetailsResponse' {failureMessage} -> failureMessage) (\s@GetBulkPublishDetailsResponse' {} a -> s {failureMessage = a} :: GetBulkPublishDetailsResponse)
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+getBulkPublishDetailsResponse_identityPoolId :: Lens.Lens' GetBulkPublishDetailsResponse (Prelude.Maybe Prelude.Text)
+getBulkPublishDetailsResponse_identityPoolId = Lens.lens (\GetBulkPublishDetailsResponse' {identityPoolId} -> identityPoolId) (\s@GetBulkPublishDetailsResponse' {} a -> s {identityPoolId = a} :: GetBulkPublishDetailsResponse)
+
+-- | The response's http status code.
+getBulkPublishDetailsResponse_httpStatus :: Lens.Lens' GetBulkPublishDetailsResponse Prelude.Int
+getBulkPublishDetailsResponse_httpStatus = Lens.lens (\GetBulkPublishDetailsResponse' {httpStatus} -> httpStatus) (\s@GetBulkPublishDetailsResponse' {} a -> s {httpStatus = a} :: GetBulkPublishDetailsResponse)
+
+instance Prelude.NFData GetBulkPublishDetailsResponse where
+  rnf GetBulkPublishDetailsResponse' {..} =
+    Prelude.rnf bulkPublishCompleteTime
+      `Prelude.seq` Prelude.rnf bulkPublishStartTime
+      `Prelude.seq` Prelude.rnf bulkPublishStatus
+      `Prelude.seq` Prelude.rnf failureMessage
+      `Prelude.seq` Prelude.rnf identityPoolId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CognitoSync/GetCognitoEvents.hs b/gen/Amazonka/CognitoSync/GetCognitoEvents.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/GetCognitoEvents.hs
@@ -0,0 +1,174 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.GetCognitoEvents
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the events and the corresponding Lambda functions associated with
+-- an identity pool.
+--
+-- This API can only be called with developer credentials. You cannot call
+-- this API with the temporary user credentials provided by Cognito
+-- Identity.
+module Amazonka.CognitoSync.GetCognitoEvents
+  ( -- * Creating a Request
+    GetCognitoEvents (..),
+    newGetCognitoEvents,
+
+    -- * Request Lenses
+    getCognitoEvents_identityPoolId,
+
+    -- * Destructuring the Response
+    GetCognitoEventsResponse (..),
+    newGetCognitoEventsResponse,
+
+    -- * Response Lenses
+    getCognitoEventsResponse_events,
+    getCognitoEventsResponse_httpStatus,
+  )
+where
+
+import Amazonka.CognitoSync.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | A request for a list of the configured Cognito Events
+--
+-- /See:/ 'newGetCognitoEvents' smart constructor.
+data GetCognitoEvents = GetCognitoEvents'
+  { -- | The Cognito Identity Pool ID for the request
+    identityPoolId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetCognitoEvents' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identityPoolId', 'getCognitoEvents_identityPoolId' - The Cognito Identity Pool ID for the request
+newGetCognitoEvents ::
+  -- | 'identityPoolId'
+  Prelude.Text ->
+  GetCognitoEvents
+newGetCognitoEvents pIdentityPoolId_ =
+  GetCognitoEvents'
+    { identityPoolId =
+        pIdentityPoolId_
+    }
+
+-- | The Cognito Identity Pool ID for the request
+getCognitoEvents_identityPoolId :: Lens.Lens' GetCognitoEvents Prelude.Text
+getCognitoEvents_identityPoolId = Lens.lens (\GetCognitoEvents' {identityPoolId} -> identityPoolId) (\s@GetCognitoEvents' {} a -> s {identityPoolId = a} :: GetCognitoEvents)
+
+instance Core.AWSRequest GetCognitoEvents where
+  type
+    AWSResponse GetCognitoEvents =
+      GetCognitoEventsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetCognitoEventsResponse'
+            Prelude.<$> (x Data..?> "Events" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetCognitoEvents where
+  hashWithSalt _salt GetCognitoEvents' {..} =
+    _salt `Prelude.hashWithSalt` identityPoolId
+
+instance Prelude.NFData GetCognitoEvents where
+  rnf GetCognitoEvents' {..} =
+    Prelude.rnf identityPoolId
+
+instance Data.ToHeaders GetCognitoEvents where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetCognitoEvents where
+  toPath GetCognitoEvents' {..} =
+    Prelude.mconcat
+      [ "/identitypools/",
+        Data.toBS identityPoolId,
+        "/events"
+      ]
+
+instance Data.ToQuery GetCognitoEvents where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | The response from the GetCognitoEvents request
+--
+-- /See:/ 'newGetCognitoEventsResponse' smart constructor.
+data GetCognitoEventsResponse = GetCognitoEventsResponse'
+  { -- | The Cognito Events returned from the GetCognitoEvents request
+    events :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetCognitoEventsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'events', 'getCognitoEventsResponse_events' - The Cognito Events returned from the GetCognitoEvents request
+--
+-- 'httpStatus', 'getCognitoEventsResponse_httpStatus' - The response's http status code.
+newGetCognitoEventsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetCognitoEventsResponse
+newGetCognitoEventsResponse pHttpStatus_ =
+  GetCognitoEventsResponse'
+    { events = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The Cognito Events returned from the GetCognitoEvents request
+getCognitoEventsResponse_events :: Lens.Lens' GetCognitoEventsResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getCognitoEventsResponse_events = Lens.lens (\GetCognitoEventsResponse' {events} -> events) (\s@GetCognitoEventsResponse' {} a -> s {events = a} :: GetCognitoEventsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+getCognitoEventsResponse_httpStatus :: Lens.Lens' GetCognitoEventsResponse Prelude.Int
+getCognitoEventsResponse_httpStatus = Lens.lens (\GetCognitoEventsResponse' {httpStatus} -> httpStatus) (\s@GetCognitoEventsResponse' {} a -> s {httpStatus = a} :: GetCognitoEventsResponse)
+
+instance Prelude.NFData GetCognitoEventsResponse where
+  rnf GetCognitoEventsResponse' {..} =
+    Prelude.rnf events
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CognitoSync/GetIdentityPoolConfiguration.hs b/gen/Amazonka/CognitoSync/GetIdentityPoolConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/GetIdentityPoolConfiguration.hs
@@ -0,0 +1,216 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.GetIdentityPoolConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets the configuration settings of an identity pool.
+--
+-- This API can only be called with developer credentials. You cannot call
+-- this API with the temporary user credentials provided by Cognito
+-- Identity.
+module Amazonka.CognitoSync.GetIdentityPoolConfiguration
+  ( -- * Creating a Request
+    GetIdentityPoolConfiguration (..),
+    newGetIdentityPoolConfiguration,
+
+    -- * Request Lenses
+    getIdentityPoolConfiguration_identityPoolId,
+
+    -- * Destructuring the Response
+    GetIdentityPoolConfigurationResponse (..),
+    newGetIdentityPoolConfigurationResponse,
+
+    -- * Response Lenses
+    getIdentityPoolConfigurationResponse_cognitoStreams,
+    getIdentityPoolConfigurationResponse_identityPoolId,
+    getIdentityPoolConfigurationResponse_pushSync,
+    getIdentityPoolConfigurationResponse_httpStatus,
+  )
+where
+
+import Amazonka.CognitoSync.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The input for the GetIdentityPoolConfiguration operation.
+--
+-- /See:/ 'newGetIdentityPoolConfiguration' smart constructor.
+data GetIdentityPoolConfiguration = GetIdentityPoolConfiguration'
+  { -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. This is the ID of the pool for which to return a configuration.
+    identityPoolId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetIdentityPoolConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identityPoolId', 'getIdentityPoolConfiguration_identityPoolId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. This is the ID of the pool for which to return a configuration.
+newGetIdentityPoolConfiguration ::
+  -- | 'identityPoolId'
+  Prelude.Text ->
+  GetIdentityPoolConfiguration
+newGetIdentityPoolConfiguration pIdentityPoolId_ =
+  GetIdentityPoolConfiguration'
+    { identityPoolId =
+        pIdentityPoolId_
+    }
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. This is the ID of the pool for which to return a configuration.
+getIdentityPoolConfiguration_identityPoolId :: Lens.Lens' GetIdentityPoolConfiguration Prelude.Text
+getIdentityPoolConfiguration_identityPoolId = Lens.lens (\GetIdentityPoolConfiguration' {identityPoolId} -> identityPoolId) (\s@GetIdentityPoolConfiguration' {} a -> s {identityPoolId = a} :: GetIdentityPoolConfiguration)
+
+instance Core.AWSRequest GetIdentityPoolConfiguration where
+  type
+    AWSResponse GetIdentityPoolConfiguration =
+      GetIdentityPoolConfigurationResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetIdentityPoolConfigurationResponse'
+            Prelude.<$> (x Data..?> "CognitoStreams")
+            Prelude.<*> (x Data..?> "IdentityPoolId")
+            Prelude.<*> (x Data..?> "PushSync")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    GetIdentityPoolConfiguration
+  where
+  hashWithSalt _salt GetIdentityPoolConfiguration' {..} =
+    _salt `Prelude.hashWithSalt` identityPoolId
+
+instance Prelude.NFData GetIdentityPoolConfiguration where
+  rnf GetIdentityPoolConfiguration' {..} =
+    Prelude.rnf identityPoolId
+
+instance Data.ToHeaders GetIdentityPoolConfiguration where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath GetIdentityPoolConfiguration where
+  toPath GetIdentityPoolConfiguration' {..} =
+    Prelude.mconcat
+      [ "/identitypools/",
+        Data.toBS identityPoolId,
+        "/configuration"
+      ]
+
+instance Data.ToQuery GetIdentityPoolConfiguration where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | The output for the GetIdentityPoolConfiguration operation.
+--
+-- /See:/ 'newGetIdentityPoolConfigurationResponse' smart constructor.
+data GetIdentityPoolConfigurationResponse = GetIdentityPoolConfigurationResponse'
+  { -- | Options to apply to this identity pool for Amazon Cognito streams.
+    cognitoStreams :: Prelude.Maybe CognitoStreams,
+    -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito.
+    identityPoolId :: Prelude.Maybe Prelude.Text,
+    -- | Options to apply to this identity pool for push synchronization.
+    pushSync :: Prelude.Maybe PushSync,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetIdentityPoolConfigurationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cognitoStreams', 'getIdentityPoolConfigurationResponse_cognitoStreams' - Options to apply to this identity pool for Amazon Cognito streams.
+--
+-- 'identityPoolId', 'getIdentityPoolConfigurationResponse_identityPoolId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito.
+--
+-- 'pushSync', 'getIdentityPoolConfigurationResponse_pushSync' - Options to apply to this identity pool for push synchronization.
+--
+-- 'httpStatus', 'getIdentityPoolConfigurationResponse_httpStatus' - The response's http status code.
+newGetIdentityPoolConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetIdentityPoolConfigurationResponse
+newGetIdentityPoolConfigurationResponse pHttpStatus_ =
+  GetIdentityPoolConfigurationResponse'
+    { cognitoStreams =
+        Prelude.Nothing,
+      identityPoolId = Prelude.Nothing,
+      pushSync = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Options to apply to this identity pool for Amazon Cognito streams.
+getIdentityPoolConfigurationResponse_cognitoStreams :: Lens.Lens' GetIdentityPoolConfigurationResponse (Prelude.Maybe CognitoStreams)
+getIdentityPoolConfigurationResponse_cognitoStreams = Lens.lens (\GetIdentityPoolConfigurationResponse' {cognitoStreams} -> cognitoStreams) (\s@GetIdentityPoolConfigurationResponse' {} a -> s {cognitoStreams = a} :: GetIdentityPoolConfigurationResponse)
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito.
+getIdentityPoolConfigurationResponse_identityPoolId :: Lens.Lens' GetIdentityPoolConfigurationResponse (Prelude.Maybe Prelude.Text)
+getIdentityPoolConfigurationResponse_identityPoolId = Lens.lens (\GetIdentityPoolConfigurationResponse' {identityPoolId} -> identityPoolId) (\s@GetIdentityPoolConfigurationResponse' {} a -> s {identityPoolId = a} :: GetIdentityPoolConfigurationResponse)
+
+-- | Options to apply to this identity pool for push synchronization.
+getIdentityPoolConfigurationResponse_pushSync :: Lens.Lens' GetIdentityPoolConfigurationResponse (Prelude.Maybe PushSync)
+getIdentityPoolConfigurationResponse_pushSync = Lens.lens (\GetIdentityPoolConfigurationResponse' {pushSync} -> pushSync) (\s@GetIdentityPoolConfigurationResponse' {} a -> s {pushSync = a} :: GetIdentityPoolConfigurationResponse)
+
+-- | The response's http status code.
+getIdentityPoolConfigurationResponse_httpStatus :: Lens.Lens' GetIdentityPoolConfigurationResponse Prelude.Int
+getIdentityPoolConfigurationResponse_httpStatus = Lens.lens (\GetIdentityPoolConfigurationResponse' {httpStatus} -> httpStatus) (\s@GetIdentityPoolConfigurationResponse' {} a -> s {httpStatus = a} :: GetIdentityPoolConfigurationResponse)
+
+instance
+  Prelude.NFData
+    GetIdentityPoolConfigurationResponse
+  where
+  rnf GetIdentityPoolConfigurationResponse' {..} =
+    Prelude.rnf cognitoStreams
+      `Prelude.seq` Prelude.rnf identityPoolId
+      `Prelude.seq` Prelude.rnf pushSync
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CognitoSync/Lens.hs b/gen/Amazonka/CognitoSync/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/Lens.hs
@@ -0,0 +1,225 @@
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.Lens
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.CognitoSync.Lens
+  ( -- * Operations
+
+    -- ** BulkPublish
+    bulkPublish_identityPoolId,
+    bulkPublishResponse_identityPoolId,
+    bulkPublishResponse_httpStatus,
+
+    -- ** DeleteDataset
+    deleteDataset_identityPoolId,
+    deleteDataset_identityId,
+    deleteDataset_datasetName,
+    deleteDatasetResponse_dataset,
+    deleteDatasetResponse_httpStatus,
+
+    -- ** DescribeDataset
+    describeDataset_identityPoolId,
+    describeDataset_identityId,
+    describeDataset_datasetName,
+    describeDatasetResponse_dataset,
+    describeDatasetResponse_httpStatus,
+
+    -- ** DescribeIdentityPoolUsage
+    describeIdentityPoolUsage_identityPoolId,
+    describeIdentityPoolUsageResponse_identityPoolUsage,
+    describeIdentityPoolUsageResponse_httpStatus,
+
+    -- ** DescribeIdentityUsage
+    describeIdentityUsage_identityPoolId,
+    describeIdentityUsage_identityId,
+    describeIdentityUsageResponse_identityUsage,
+    describeIdentityUsageResponse_httpStatus,
+
+    -- ** GetBulkPublishDetails
+    getBulkPublishDetails_identityPoolId,
+    getBulkPublishDetailsResponse_bulkPublishCompleteTime,
+    getBulkPublishDetailsResponse_bulkPublishStartTime,
+    getBulkPublishDetailsResponse_bulkPublishStatus,
+    getBulkPublishDetailsResponse_failureMessage,
+    getBulkPublishDetailsResponse_identityPoolId,
+    getBulkPublishDetailsResponse_httpStatus,
+
+    -- ** GetCognitoEvents
+    getCognitoEvents_identityPoolId,
+    getCognitoEventsResponse_events,
+    getCognitoEventsResponse_httpStatus,
+
+    -- ** GetIdentityPoolConfiguration
+    getIdentityPoolConfiguration_identityPoolId,
+    getIdentityPoolConfigurationResponse_cognitoStreams,
+    getIdentityPoolConfigurationResponse_identityPoolId,
+    getIdentityPoolConfigurationResponse_pushSync,
+    getIdentityPoolConfigurationResponse_httpStatus,
+
+    -- ** ListDatasets
+    listDatasets_maxResults,
+    listDatasets_nextToken,
+    listDatasets_identityId,
+    listDatasets_identityPoolId,
+    listDatasetsResponse_count,
+    listDatasetsResponse_datasets,
+    listDatasetsResponse_nextToken,
+    listDatasetsResponse_httpStatus,
+
+    -- ** ListIdentityPoolUsage
+    listIdentityPoolUsage_maxResults,
+    listIdentityPoolUsage_nextToken,
+    listIdentityPoolUsageResponse_count,
+    listIdentityPoolUsageResponse_identityPoolUsages,
+    listIdentityPoolUsageResponse_maxResults,
+    listIdentityPoolUsageResponse_nextToken,
+    listIdentityPoolUsageResponse_httpStatus,
+
+    -- ** ListRecords
+    listRecords_lastSyncCount,
+    listRecords_maxResults,
+    listRecords_nextToken,
+    listRecords_syncSessionToken,
+    listRecords_identityPoolId,
+    listRecords_identityId,
+    listRecords_datasetName,
+    listRecordsResponse_count,
+    listRecordsResponse_datasetDeletedAfterRequestedSyncCount,
+    listRecordsResponse_datasetExists,
+    listRecordsResponse_datasetSyncCount,
+    listRecordsResponse_lastModifiedBy,
+    listRecordsResponse_mergedDatasetNames,
+    listRecordsResponse_nextToken,
+    listRecordsResponse_records,
+    listRecordsResponse_syncSessionToken,
+    listRecordsResponse_httpStatus,
+
+    -- ** RegisterDevice
+    registerDevice_identityPoolId,
+    registerDevice_identityId,
+    registerDevice_platform,
+    registerDevice_token,
+    registerDeviceResponse_deviceId,
+    registerDeviceResponse_httpStatus,
+
+    -- ** SetCognitoEvents
+    setCognitoEvents_identityPoolId,
+    setCognitoEvents_events,
+
+    -- ** SetIdentityPoolConfiguration
+    setIdentityPoolConfiguration_cognitoStreams,
+    setIdentityPoolConfiguration_pushSync,
+    setIdentityPoolConfiguration_identityPoolId,
+    setIdentityPoolConfigurationResponse_cognitoStreams,
+    setIdentityPoolConfigurationResponse_identityPoolId,
+    setIdentityPoolConfigurationResponse_pushSync,
+    setIdentityPoolConfigurationResponse_httpStatus,
+
+    -- ** SubscribeToDataset
+    subscribeToDataset_identityPoolId,
+    subscribeToDataset_identityId,
+    subscribeToDataset_datasetName,
+    subscribeToDataset_deviceId,
+    subscribeToDatasetResponse_httpStatus,
+
+    -- ** UnsubscribeFromDataset
+    unsubscribeFromDataset_identityPoolId,
+    unsubscribeFromDataset_identityId,
+    unsubscribeFromDataset_datasetName,
+    unsubscribeFromDataset_deviceId,
+    unsubscribeFromDatasetResponse_httpStatus,
+
+    -- ** UpdateRecords
+    updateRecords_clientContext,
+    updateRecords_deviceId,
+    updateRecords_recordPatches,
+    updateRecords_identityPoolId,
+    updateRecords_identityId,
+    updateRecords_datasetName,
+    updateRecords_syncSessionToken,
+    updateRecordsResponse_records,
+    updateRecordsResponse_httpStatus,
+
+    -- * Types
+
+    -- ** CognitoStreams
+    cognitoStreams_roleArn,
+    cognitoStreams_streamName,
+    cognitoStreams_streamingStatus,
+
+    -- ** Dataset
+    dataset_creationDate,
+    dataset_dataStorage,
+    dataset_datasetName,
+    dataset_identityId,
+    dataset_lastModifiedBy,
+    dataset_lastModifiedDate,
+    dataset_numRecords,
+
+    -- ** IdentityPoolUsage
+    identityPoolUsage_dataStorage,
+    identityPoolUsage_identityPoolId,
+    identityPoolUsage_lastModifiedDate,
+    identityPoolUsage_syncSessionsCount,
+
+    -- ** IdentityUsage
+    identityUsage_dataStorage,
+    identityUsage_datasetCount,
+    identityUsage_identityId,
+    identityUsage_identityPoolId,
+    identityUsage_lastModifiedDate,
+
+    -- ** PushSync
+    pushSync_applicationArns,
+    pushSync_roleArn,
+
+    -- ** Record
+    record_deviceLastModifiedDate,
+    record_key,
+    record_lastModifiedBy,
+    record_lastModifiedDate,
+    record_syncCount,
+    record_value,
+
+    -- ** RecordPatch
+    recordPatch_deviceLastModifiedDate,
+    recordPatch_value,
+    recordPatch_op,
+    recordPatch_key,
+    recordPatch_syncCount,
+  )
+where
+
+import Amazonka.CognitoSync.BulkPublish
+import Amazonka.CognitoSync.DeleteDataset
+import Amazonka.CognitoSync.DescribeDataset
+import Amazonka.CognitoSync.DescribeIdentityPoolUsage
+import Amazonka.CognitoSync.DescribeIdentityUsage
+import Amazonka.CognitoSync.GetBulkPublishDetails
+import Amazonka.CognitoSync.GetCognitoEvents
+import Amazonka.CognitoSync.GetIdentityPoolConfiguration
+import Amazonka.CognitoSync.ListDatasets
+import Amazonka.CognitoSync.ListIdentityPoolUsage
+import Amazonka.CognitoSync.ListRecords
+import Amazonka.CognitoSync.RegisterDevice
+import Amazonka.CognitoSync.SetCognitoEvents
+import Amazonka.CognitoSync.SetIdentityPoolConfiguration
+import Amazonka.CognitoSync.SubscribeToDataset
+import Amazonka.CognitoSync.Types.CognitoStreams
+import Amazonka.CognitoSync.Types.Dataset
+import Amazonka.CognitoSync.Types.IdentityPoolUsage
+import Amazonka.CognitoSync.Types.IdentityUsage
+import Amazonka.CognitoSync.Types.PushSync
+import Amazonka.CognitoSync.Types.Record
+import Amazonka.CognitoSync.Types.RecordPatch
+import Amazonka.CognitoSync.UnsubscribeFromDataset
+import Amazonka.CognitoSync.UpdateRecords
diff --git a/gen/Amazonka/CognitoSync/ListDatasets.hs b/gen/Amazonka/CognitoSync/ListDatasets.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/ListDatasets.hs
@@ -0,0 +1,253 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.ListDatasets
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists datasets for an identity. With Amazon Cognito Sync, each identity
+-- has access only to its own data. Thus, the credentials used to make this
+-- API call need to have access to the identity data.
+--
+-- ListDatasets can be called with temporary user credentials provided by
+-- Cognito Identity or with developer credentials. You should use the
+-- Cognito Identity credentials to make this API call.
+module Amazonka.CognitoSync.ListDatasets
+  ( -- * Creating a Request
+    ListDatasets (..),
+    newListDatasets,
+
+    -- * Request Lenses
+    listDatasets_maxResults,
+    listDatasets_nextToken,
+    listDatasets_identityId,
+    listDatasets_identityPoolId,
+
+    -- * Destructuring the Response
+    ListDatasetsResponse (..),
+    newListDatasetsResponse,
+
+    -- * Response Lenses
+    listDatasetsResponse_count,
+    listDatasetsResponse_datasets,
+    listDatasetsResponse_nextToken,
+    listDatasetsResponse_httpStatus,
+  )
+where
+
+import Amazonka.CognitoSync.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | Request for a list of datasets for an identity.
+--
+-- /See:/ 'newListDatasets' smart constructor.
+data ListDatasets = ListDatasets'
+  { -- | The maximum number of results to be returned.
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | A pagination token for obtaining the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. GUID generation is unique within a region.
+    identityId :: Prelude.Text,
+    -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. GUID generation is unique within a region.
+    identityPoolId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDatasets' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listDatasets_maxResults' - The maximum number of results to be returned.
+--
+-- 'nextToken', 'listDatasets_nextToken' - A pagination token for obtaining the next page of results.
+--
+-- 'identityId', 'listDatasets_identityId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+--
+-- 'identityPoolId', 'listDatasets_identityPoolId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+newListDatasets ::
+  -- | 'identityId'
+  Prelude.Text ->
+  -- | 'identityPoolId'
+  Prelude.Text ->
+  ListDatasets
+newListDatasets pIdentityId_ pIdentityPoolId_ =
+  ListDatasets'
+    { maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      identityId = pIdentityId_,
+      identityPoolId = pIdentityPoolId_
+    }
+
+-- | The maximum number of results to be returned.
+listDatasets_maxResults :: Lens.Lens' ListDatasets (Prelude.Maybe Prelude.Int)
+listDatasets_maxResults = Lens.lens (\ListDatasets' {maxResults} -> maxResults) (\s@ListDatasets' {} a -> s {maxResults = a} :: ListDatasets)
+
+-- | A pagination token for obtaining the next page of results.
+listDatasets_nextToken :: Lens.Lens' ListDatasets (Prelude.Maybe Prelude.Text)
+listDatasets_nextToken = Lens.lens (\ListDatasets' {nextToken} -> nextToken) (\s@ListDatasets' {} a -> s {nextToken = a} :: ListDatasets)
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+listDatasets_identityId :: Lens.Lens' ListDatasets Prelude.Text
+listDatasets_identityId = Lens.lens (\ListDatasets' {identityId} -> identityId) (\s@ListDatasets' {} a -> s {identityId = a} :: ListDatasets)
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+listDatasets_identityPoolId :: Lens.Lens' ListDatasets Prelude.Text
+listDatasets_identityPoolId = Lens.lens (\ListDatasets' {identityPoolId} -> identityPoolId) (\s@ListDatasets' {} a -> s {identityPoolId = a} :: ListDatasets)
+
+instance Core.AWSRequest ListDatasets where
+  type AWSResponse ListDatasets = ListDatasetsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListDatasetsResponse'
+            Prelude.<$> (x Data..?> "Count")
+            Prelude.<*> (x Data..?> "Datasets" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListDatasets where
+  hashWithSalt _salt ListDatasets' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` identityId
+      `Prelude.hashWithSalt` identityPoolId
+
+instance Prelude.NFData ListDatasets where
+  rnf ListDatasets' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf identityId
+      `Prelude.seq` Prelude.rnf identityPoolId
+
+instance Data.ToHeaders ListDatasets where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListDatasets where
+  toPath ListDatasets' {..} =
+    Prelude.mconcat
+      [ "/identitypools/",
+        Data.toBS identityPoolId,
+        "/identities/",
+        Data.toBS identityId,
+        "/datasets"
+      ]
+
+instance Data.ToQuery ListDatasets where
+  toQuery ListDatasets' {..} =
+    Prelude.mconcat
+      [ "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | Returned for a successful ListDatasets request.
+--
+-- /See:/ 'newListDatasetsResponse' smart constructor.
+data ListDatasetsResponse = ListDatasetsResponse'
+  { -- | Number of datasets returned.
+    count :: Prelude.Maybe Prelude.Int,
+    -- | A set of datasets.
+    datasets :: Prelude.Maybe [Dataset],
+    -- | A pagination token for obtaining the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListDatasetsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'count', 'listDatasetsResponse_count' - Number of datasets returned.
+--
+-- 'datasets', 'listDatasetsResponse_datasets' - A set of datasets.
+--
+-- 'nextToken', 'listDatasetsResponse_nextToken' - A pagination token for obtaining the next page of results.
+--
+-- 'httpStatus', 'listDatasetsResponse_httpStatus' - The response's http status code.
+newListDatasetsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListDatasetsResponse
+newListDatasetsResponse pHttpStatus_ =
+  ListDatasetsResponse'
+    { count = Prelude.Nothing,
+      datasets = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Number of datasets returned.
+listDatasetsResponse_count :: Lens.Lens' ListDatasetsResponse (Prelude.Maybe Prelude.Int)
+listDatasetsResponse_count = Lens.lens (\ListDatasetsResponse' {count} -> count) (\s@ListDatasetsResponse' {} a -> s {count = a} :: ListDatasetsResponse)
+
+-- | A set of datasets.
+listDatasetsResponse_datasets :: Lens.Lens' ListDatasetsResponse (Prelude.Maybe [Dataset])
+listDatasetsResponse_datasets = Lens.lens (\ListDatasetsResponse' {datasets} -> datasets) (\s@ListDatasetsResponse' {} a -> s {datasets = a} :: ListDatasetsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A pagination token for obtaining the next page of results.
+listDatasetsResponse_nextToken :: Lens.Lens' ListDatasetsResponse (Prelude.Maybe Prelude.Text)
+listDatasetsResponse_nextToken = Lens.lens (\ListDatasetsResponse' {nextToken} -> nextToken) (\s@ListDatasetsResponse' {} a -> s {nextToken = a} :: ListDatasetsResponse)
+
+-- | The response's http status code.
+listDatasetsResponse_httpStatus :: Lens.Lens' ListDatasetsResponse Prelude.Int
+listDatasetsResponse_httpStatus = Lens.lens (\ListDatasetsResponse' {httpStatus} -> httpStatus) (\s@ListDatasetsResponse' {} a -> s {httpStatus = a} :: ListDatasetsResponse)
+
+instance Prelude.NFData ListDatasetsResponse where
+  rnf ListDatasetsResponse' {..} =
+    Prelude.rnf count
+      `Prelude.seq` Prelude.rnf datasets
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CognitoSync/ListIdentityPoolUsage.hs b/gen/Amazonka/CognitoSync/ListIdentityPoolUsage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/ListIdentityPoolUsage.hs
@@ -0,0 +1,223 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.ListIdentityPoolUsage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a list of identity pools registered with Cognito.
+--
+-- ListIdentityPoolUsage can only be called with developer credentials. You
+-- cannot make this API call with the temporary user credentials provided
+-- by Cognito Identity.
+module Amazonka.CognitoSync.ListIdentityPoolUsage
+  ( -- * Creating a Request
+    ListIdentityPoolUsage (..),
+    newListIdentityPoolUsage,
+
+    -- * Request Lenses
+    listIdentityPoolUsage_maxResults,
+    listIdentityPoolUsage_nextToken,
+
+    -- * Destructuring the Response
+    ListIdentityPoolUsageResponse (..),
+    newListIdentityPoolUsageResponse,
+
+    -- * Response Lenses
+    listIdentityPoolUsageResponse_count,
+    listIdentityPoolUsageResponse_identityPoolUsages,
+    listIdentityPoolUsageResponse_maxResults,
+    listIdentityPoolUsageResponse_nextToken,
+    listIdentityPoolUsageResponse_httpStatus,
+  )
+where
+
+import Amazonka.CognitoSync.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | A request for usage information on an identity pool.
+--
+-- /See:/ 'newListIdentityPoolUsage' smart constructor.
+data ListIdentityPoolUsage = ListIdentityPoolUsage'
+  { -- | The maximum number of results to be returned.
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | A pagination token for obtaining the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListIdentityPoolUsage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'maxResults', 'listIdentityPoolUsage_maxResults' - The maximum number of results to be returned.
+--
+-- 'nextToken', 'listIdentityPoolUsage_nextToken' - A pagination token for obtaining the next page of results.
+newListIdentityPoolUsage ::
+  ListIdentityPoolUsage
+newListIdentityPoolUsage =
+  ListIdentityPoolUsage'
+    { maxResults =
+        Prelude.Nothing,
+      nextToken = Prelude.Nothing
+    }
+
+-- | The maximum number of results to be returned.
+listIdentityPoolUsage_maxResults :: Lens.Lens' ListIdentityPoolUsage (Prelude.Maybe Prelude.Int)
+listIdentityPoolUsage_maxResults = Lens.lens (\ListIdentityPoolUsage' {maxResults} -> maxResults) (\s@ListIdentityPoolUsage' {} a -> s {maxResults = a} :: ListIdentityPoolUsage)
+
+-- | A pagination token for obtaining the next page of results.
+listIdentityPoolUsage_nextToken :: Lens.Lens' ListIdentityPoolUsage (Prelude.Maybe Prelude.Text)
+listIdentityPoolUsage_nextToken = Lens.lens (\ListIdentityPoolUsage' {nextToken} -> nextToken) (\s@ListIdentityPoolUsage' {} a -> s {nextToken = a} :: ListIdentityPoolUsage)
+
+instance Core.AWSRequest ListIdentityPoolUsage where
+  type
+    AWSResponse ListIdentityPoolUsage =
+      ListIdentityPoolUsageResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListIdentityPoolUsageResponse'
+            Prelude.<$> (x Data..?> "Count")
+            Prelude.<*> ( x
+                            Data..?> "IdentityPoolUsages"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "MaxResults")
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListIdentityPoolUsage where
+  hashWithSalt _salt ListIdentityPoolUsage' {..} =
+    _salt
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+
+instance Prelude.NFData ListIdentityPoolUsage where
+  rnf ListIdentityPoolUsage' {..} =
+    Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+
+instance Data.ToHeaders ListIdentityPoolUsage where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListIdentityPoolUsage where
+  toPath = Prelude.const "/identitypools"
+
+instance Data.ToQuery ListIdentityPoolUsage where
+  toQuery ListIdentityPoolUsage' {..} =
+    Prelude.mconcat
+      [ "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken
+      ]
+
+-- | Returned for a successful ListIdentityPoolUsage request.
+--
+-- /See:/ 'newListIdentityPoolUsageResponse' smart constructor.
+data ListIdentityPoolUsageResponse = ListIdentityPoolUsageResponse'
+  { -- | Total number of identities for the identity pool.
+    count :: Prelude.Maybe Prelude.Int,
+    -- | Usage information for the identity pools.
+    identityPoolUsages :: Prelude.Maybe [IdentityPoolUsage],
+    -- | The maximum number of results to be returned.
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | A pagination token for obtaining the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListIdentityPoolUsageResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'count', 'listIdentityPoolUsageResponse_count' - Total number of identities for the identity pool.
+--
+-- 'identityPoolUsages', 'listIdentityPoolUsageResponse_identityPoolUsages' - Usage information for the identity pools.
+--
+-- 'maxResults', 'listIdentityPoolUsageResponse_maxResults' - The maximum number of results to be returned.
+--
+-- 'nextToken', 'listIdentityPoolUsageResponse_nextToken' - A pagination token for obtaining the next page of results.
+--
+-- 'httpStatus', 'listIdentityPoolUsageResponse_httpStatus' - The response's http status code.
+newListIdentityPoolUsageResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListIdentityPoolUsageResponse
+newListIdentityPoolUsageResponse pHttpStatus_ =
+  ListIdentityPoolUsageResponse'
+    { count =
+        Prelude.Nothing,
+      identityPoolUsages = Prelude.Nothing,
+      maxResults = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Total number of identities for the identity pool.
+listIdentityPoolUsageResponse_count :: Lens.Lens' ListIdentityPoolUsageResponse (Prelude.Maybe Prelude.Int)
+listIdentityPoolUsageResponse_count = Lens.lens (\ListIdentityPoolUsageResponse' {count} -> count) (\s@ListIdentityPoolUsageResponse' {} a -> s {count = a} :: ListIdentityPoolUsageResponse)
+
+-- | Usage information for the identity pools.
+listIdentityPoolUsageResponse_identityPoolUsages :: Lens.Lens' ListIdentityPoolUsageResponse (Prelude.Maybe [IdentityPoolUsage])
+listIdentityPoolUsageResponse_identityPoolUsages = Lens.lens (\ListIdentityPoolUsageResponse' {identityPoolUsages} -> identityPoolUsages) (\s@ListIdentityPoolUsageResponse' {} a -> s {identityPoolUsages = a} :: ListIdentityPoolUsageResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The maximum number of results to be returned.
+listIdentityPoolUsageResponse_maxResults :: Lens.Lens' ListIdentityPoolUsageResponse (Prelude.Maybe Prelude.Int)
+listIdentityPoolUsageResponse_maxResults = Lens.lens (\ListIdentityPoolUsageResponse' {maxResults} -> maxResults) (\s@ListIdentityPoolUsageResponse' {} a -> s {maxResults = a} :: ListIdentityPoolUsageResponse)
+
+-- | A pagination token for obtaining the next page of results.
+listIdentityPoolUsageResponse_nextToken :: Lens.Lens' ListIdentityPoolUsageResponse (Prelude.Maybe Prelude.Text)
+listIdentityPoolUsageResponse_nextToken = Lens.lens (\ListIdentityPoolUsageResponse' {nextToken} -> nextToken) (\s@ListIdentityPoolUsageResponse' {} a -> s {nextToken = a} :: ListIdentityPoolUsageResponse)
+
+-- | The response's http status code.
+listIdentityPoolUsageResponse_httpStatus :: Lens.Lens' ListIdentityPoolUsageResponse Prelude.Int
+listIdentityPoolUsageResponse_httpStatus = Lens.lens (\ListIdentityPoolUsageResponse' {httpStatus} -> httpStatus) (\s@ListIdentityPoolUsageResponse' {} a -> s {httpStatus = a} :: ListIdentityPoolUsageResponse)
+
+instance Prelude.NFData ListIdentityPoolUsageResponse where
+  rnf ListIdentityPoolUsageResponse' {..} =
+    Prelude.rnf count
+      `Prelude.seq` Prelude.rnf identityPoolUsages
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CognitoSync/ListRecords.hs b/gen/Amazonka/CognitoSync/ListRecords.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/ListRecords.hs
@@ -0,0 +1,378 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.ListRecords
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets paginated records, optionally changed after a particular sync count
+-- for a dataset and identity. With Amazon Cognito Sync, each identity has
+-- access only to its own data. Thus, the credentials used to make this API
+-- call need to have access to the identity data.
+--
+-- ListRecords can be called with temporary user credentials provided by
+-- Cognito Identity or with developer credentials. You should use Cognito
+-- Identity credentials to make this API call.
+module Amazonka.CognitoSync.ListRecords
+  ( -- * Creating a Request
+    ListRecords (..),
+    newListRecords,
+
+    -- * Request Lenses
+    listRecords_lastSyncCount,
+    listRecords_maxResults,
+    listRecords_nextToken,
+    listRecords_syncSessionToken,
+    listRecords_identityPoolId,
+    listRecords_identityId,
+    listRecords_datasetName,
+
+    -- * Destructuring the Response
+    ListRecordsResponse (..),
+    newListRecordsResponse,
+
+    -- * Response Lenses
+    listRecordsResponse_count,
+    listRecordsResponse_datasetDeletedAfterRequestedSyncCount,
+    listRecordsResponse_datasetExists,
+    listRecordsResponse_datasetSyncCount,
+    listRecordsResponse_lastModifiedBy,
+    listRecordsResponse_mergedDatasetNames,
+    listRecordsResponse_nextToken,
+    listRecordsResponse_records,
+    listRecordsResponse_syncSessionToken,
+    listRecordsResponse_httpStatus,
+  )
+where
+
+import Amazonka.CognitoSync.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | A request for a list of records.
+--
+-- /See:/ 'newListRecords' smart constructor.
+data ListRecords = ListRecords'
+  { -- | The last server sync count for this record.
+    lastSyncCount :: Prelude.Maybe Prelude.Integer,
+    -- | The maximum number of results to be returned.
+    maxResults :: Prelude.Maybe Prelude.Int,
+    -- | A pagination token for obtaining the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A token containing a session ID, identity ID, and expiration.
+    syncSessionToken :: Prelude.Maybe Prelude.Text,
+    -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. GUID generation is unique within a region.
+    identityPoolId :: Prelude.Text,
+    -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. GUID generation is unique within a region.
+    identityId :: Prelude.Text,
+    -- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9,
+    -- \'_\' (underscore), \'-\' (dash), and \'.\' (dot).
+    datasetName :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRecords' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'lastSyncCount', 'listRecords_lastSyncCount' - The last server sync count for this record.
+--
+-- 'maxResults', 'listRecords_maxResults' - The maximum number of results to be returned.
+--
+-- 'nextToken', 'listRecords_nextToken' - A pagination token for obtaining the next page of results.
+--
+-- 'syncSessionToken', 'listRecords_syncSessionToken' - A token containing a session ID, identity ID, and expiration.
+--
+-- 'identityPoolId', 'listRecords_identityPoolId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+--
+-- 'identityId', 'listRecords_identityId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+--
+-- 'datasetName', 'listRecords_datasetName' - A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9,
+-- \'_\' (underscore), \'-\' (dash), and \'.\' (dot).
+newListRecords ::
+  -- | 'identityPoolId'
+  Prelude.Text ->
+  -- | 'identityId'
+  Prelude.Text ->
+  -- | 'datasetName'
+  Prelude.Text ->
+  ListRecords
+newListRecords
+  pIdentityPoolId_
+  pIdentityId_
+  pDatasetName_ =
+    ListRecords'
+      { lastSyncCount = Prelude.Nothing,
+        maxResults = Prelude.Nothing,
+        nextToken = Prelude.Nothing,
+        syncSessionToken = Prelude.Nothing,
+        identityPoolId = pIdentityPoolId_,
+        identityId = pIdentityId_,
+        datasetName = pDatasetName_
+      }
+
+-- | The last server sync count for this record.
+listRecords_lastSyncCount :: Lens.Lens' ListRecords (Prelude.Maybe Prelude.Integer)
+listRecords_lastSyncCount = Lens.lens (\ListRecords' {lastSyncCount} -> lastSyncCount) (\s@ListRecords' {} a -> s {lastSyncCount = a} :: ListRecords)
+
+-- | The maximum number of results to be returned.
+listRecords_maxResults :: Lens.Lens' ListRecords (Prelude.Maybe Prelude.Int)
+listRecords_maxResults = Lens.lens (\ListRecords' {maxResults} -> maxResults) (\s@ListRecords' {} a -> s {maxResults = a} :: ListRecords)
+
+-- | A pagination token for obtaining the next page of results.
+listRecords_nextToken :: Lens.Lens' ListRecords (Prelude.Maybe Prelude.Text)
+listRecords_nextToken = Lens.lens (\ListRecords' {nextToken} -> nextToken) (\s@ListRecords' {} a -> s {nextToken = a} :: ListRecords)
+
+-- | A token containing a session ID, identity ID, and expiration.
+listRecords_syncSessionToken :: Lens.Lens' ListRecords (Prelude.Maybe Prelude.Text)
+listRecords_syncSessionToken = Lens.lens (\ListRecords' {syncSessionToken} -> syncSessionToken) (\s@ListRecords' {} a -> s {syncSessionToken = a} :: ListRecords)
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+listRecords_identityPoolId :: Lens.Lens' ListRecords Prelude.Text
+listRecords_identityPoolId = Lens.lens (\ListRecords' {identityPoolId} -> identityPoolId) (\s@ListRecords' {} a -> s {identityPoolId = a} :: ListRecords)
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+listRecords_identityId :: Lens.Lens' ListRecords Prelude.Text
+listRecords_identityId = Lens.lens (\ListRecords' {identityId} -> identityId) (\s@ListRecords' {} a -> s {identityId = a} :: ListRecords)
+
+-- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9,
+-- \'_\' (underscore), \'-\' (dash), and \'.\' (dot).
+listRecords_datasetName :: Lens.Lens' ListRecords Prelude.Text
+listRecords_datasetName = Lens.lens (\ListRecords' {datasetName} -> datasetName) (\s@ListRecords' {} a -> s {datasetName = a} :: ListRecords)
+
+instance Core.AWSRequest ListRecords where
+  type AWSResponse ListRecords = ListRecordsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ListRecordsResponse'
+            Prelude.<$> (x Data..?> "Count")
+            Prelude.<*> (x Data..?> "DatasetDeletedAfterRequestedSyncCount")
+            Prelude.<*> (x Data..?> "DatasetExists")
+            Prelude.<*> (x Data..?> "DatasetSyncCount")
+            Prelude.<*> (x Data..?> "LastModifiedBy")
+            Prelude.<*> ( x
+                            Data..?> "MergedDatasetNames"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "NextToken")
+            Prelude.<*> (x Data..?> "Records" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "SyncSessionToken")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ListRecords where
+  hashWithSalt _salt ListRecords' {..} =
+    _salt
+      `Prelude.hashWithSalt` lastSyncCount
+      `Prelude.hashWithSalt` maxResults
+      `Prelude.hashWithSalt` nextToken
+      `Prelude.hashWithSalt` syncSessionToken
+      `Prelude.hashWithSalt` identityPoolId
+      `Prelude.hashWithSalt` identityId
+      `Prelude.hashWithSalt` datasetName
+
+instance Prelude.NFData ListRecords where
+  rnf ListRecords' {..} =
+    Prelude.rnf lastSyncCount
+      `Prelude.seq` Prelude.rnf maxResults
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf syncSessionToken
+      `Prelude.seq` Prelude.rnf identityPoolId
+      `Prelude.seq` Prelude.rnf identityId
+      `Prelude.seq` Prelude.rnf datasetName
+
+instance Data.ToHeaders ListRecords where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath ListRecords where
+  toPath ListRecords' {..} =
+    Prelude.mconcat
+      [ "/identitypools/",
+        Data.toBS identityPoolId,
+        "/identities/",
+        Data.toBS identityId,
+        "/datasets/",
+        Data.toBS datasetName,
+        "/records"
+      ]
+
+instance Data.ToQuery ListRecords where
+  toQuery ListRecords' {..} =
+    Prelude.mconcat
+      [ "lastSyncCount" Data.=: lastSyncCount,
+        "maxResults" Data.=: maxResults,
+        "nextToken" Data.=: nextToken,
+        "syncSessionToken" Data.=: syncSessionToken
+      ]
+
+-- | Returned for a successful ListRecordsRequest.
+--
+-- /See:/ 'newListRecordsResponse' smart constructor.
+data ListRecordsResponse = ListRecordsResponse'
+  { -- | Total number of records.
+    count :: Prelude.Maybe Prelude.Int,
+    -- | A boolean value specifying whether to delete the dataset locally.
+    datasetDeletedAfterRequestedSyncCount :: Prelude.Maybe Prelude.Bool,
+    -- | Indicates whether the dataset exists.
+    datasetExists :: Prelude.Maybe Prelude.Bool,
+    -- | Server sync count for this dataset.
+    datasetSyncCount :: Prelude.Maybe Prelude.Integer,
+    -- | The user\/device that made the last change to this record.
+    lastModifiedBy :: Prelude.Maybe Prelude.Text,
+    -- | Names of merged datasets.
+    mergedDatasetNames :: Prelude.Maybe [Prelude.Text],
+    -- | A pagination token for obtaining the next page of results.
+    nextToken :: Prelude.Maybe Prelude.Text,
+    -- | A list of all records.
+    records :: Prelude.Maybe [Record],
+    -- | A token containing a session ID, identity ID, and expiration.
+    syncSessionToken :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ListRecordsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'count', 'listRecordsResponse_count' - Total number of records.
+--
+-- 'datasetDeletedAfterRequestedSyncCount', 'listRecordsResponse_datasetDeletedAfterRequestedSyncCount' - A boolean value specifying whether to delete the dataset locally.
+--
+-- 'datasetExists', 'listRecordsResponse_datasetExists' - Indicates whether the dataset exists.
+--
+-- 'datasetSyncCount', 'listRecordsResponse_datasetSyncCount' - Server sync count for this dataset.
+--
+-- 'lastModifiedBy', 'listRecordsResponse_lastModifiedBy' - The user\/device that made the last change to this record.
+--
+-- 'mergedDatasetNames', 'listRecordsResponse_mergedDatasetNames' - Names of merged datasets.
+--
+-- 'nextToken', 'listRecordsResponse_nextToken' - A pagination token for obtaining the next page of results.
+--
+-- 'records', 'listRecordsResponse_records' - A list of all records.
+--
+-- 'syncSessionToken', 'listRecordsResponse_syncSessionToken' - A token containing a session ID, identity ID, and expiration.
+--
+-- 'httpStatus', 'listRecordsResponse_httpStatus' - The response's http status code.
+newListRecordsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ListRecordsResponse
+newListRecordsResponse pHttpStatus_ =
+  ListRecordsResponse'
+    { count = Prelude.Nothing,
+      datasetDeletedAfterRequestedSyncCount =
+        Prelude.Nothing,
+      datasetExists = Prelude.Nothing,
+      datasetSyncCount = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      mergedDatasetNames = Prelude.Nothing,
+      nextToken = Prelude.Nothing,
+      records = Prelude.Nothing,
+      syncSessionToken = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Total number of records.
+listRecordsResponse_count :: Lens.Lens' ListRecordsResponse (Prelude.Maybe Prelude.Int)
+listRecordsResponse_count = Lens.lens (\ListRecordsResponse' {count} -> count) (\s@ListRecordsResponse' {} a -> s {count = a} :: ListRecordsResponse)
+
+-- | A boolean value specifying whether to delete the dataset locally.
+listRecordsResponse_datasetDeletedAfterRequestedSyncCount :: Lens.Lens' ListRecordsResponse (Prelude.Maybe Prelude.Bool)
+listRecordsResponse_datasetDeletedAfterRequestedSyncCount = Lens.lens (\ListRecordsResponse' {datasetDeletedAfterRequestedSyncCount} -> datasetDeletedAfterRequestedSyncCount) (\s@ListRecordsResponse' {} a -> s {datasetDeletedAfterRequestedSyncCount = a} :: ListRecordsResponse)
+
+-- | Indicates whether the dataset exists.
+listRecordsResponse_datasetExists :: Lens.Lens' ListRecordsResponse (Prelude.Maybe Prelude.Bool)
+listRecordsResponse_datasetExists = Lens.lens (\ListRecordsResponse' {datasetExists} -> datasetExists) (\s@ListRecordsResponse' {} a -> s {datasetExists = a} :: ListRecordsResponse)
+
+-- | Server sync count for this dataset.
+listRecordsResponse_datasetSyncCount :: Lens.Lens' ListRecordsResponse (Prelude.Maybe Prelude.Integer)
+listRecordsResponse_datasetSyncCount = Lens.lens (\ListRecordsResponse' {datasetSyncCount} -> datasetSyncCount) (\s@ListRecordsResponse' {} a -> s {datasetSyncCount = a} :: ListRecordsResponse)
+
+-- | The user\/device that made the last change to this record.
+listRecordsResponse_lastModifiedBy :: Lens.Lens' ListRecordsResponse (Prelude.Maybe Prelude.Text)
+listRecordsResponse_lastModifiedBy = Lens.lens (\ListRecordsResponse' {lastModifiedBy} -> lastModifiedBy) (\s@ListRecordsResponse' {} a -> s {lastModifiedBy = a} :: ListRecordsResponse)
+
+-- | Names of merged datasets.
+listRecordsResponse_mergedDatasetNames :: Lens.Lens' ListRecordsResponse (Prelude.Maybe [Prelude.Text])
+listRecordsResponse_mergedDatasetNames = Lens.lens (\ListRecordsResponse' {mergedDatasetNames} -> mergedDatasetNames) (\s@ListRecordsResponse' {} a -> s {mergedDatasetNames = a} :: ListRecordsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A pagination token for obtaining the next page of results.
+listRecordsResponse_nextToken :: Lens.Lens' ListRecordsResponse (Prelude.Maybe Prelude.Text)
+listRecordsResponse_nextToken = Lens.lens (\ListRecordsResponse' {nextToken} -> nextToken) (\s@ListRecordsResponse' {} a -> s {nextToken = a} :: ListRecordsResponse)
+
+-- | A list of all records.
+listRecordsResponse_records :: Lens.Lens' ListRecordsResponse (Prelude.Maybe [Record])
+listRecordsResponse_records = Lens.lens (\ListRecordsResponse' {records} -> records) (\s@ListRecordsResponse' {} a -> s {records = a} :: ListRecordsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | A token containing a session ID, identity ID, and expiration.
+listRecordsResponse_syncSessionToken :: Lens.Lens' ListRecordsResponse (Prelude.Maybe Prelude.Text)
+listRecordsResponse_syncSessionToken = Lens.lens (\ListRecordsResponse' {syncSessionToken} -> syncSessionToken) (\s@ListRecordsResponse' {} a -> s {syncSessionToken = a} :: ListRecordsResponse)
+
+-- | The response's http status code.
+listRecordsResponse_httpStatus :: Lens.Lens' ListRecordsResponse Prelude.Int
+listRecordsResponse_httpStatus = Lens.lens (\ListRecordsResponse' {httpStatus} -> httpStatus) (\s@ListRecordsResponse' {} a -> s {httpStatus = a} :: ListRecordsResponse)
+
+instance Prelude.NFData ListRecordsResponse where
+  rnf ListRecordsResponse' {..} =
+    Prelude.rnf count
+      `Prelude.seq` Prelude.rnf datasetDeletedAfterRequestedSyncCount
+      `Prelude.seq` Prelude.rnf datasetExists
+      `Prelude.seq` Prelude.rnf datasetSyncCount
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf mergedDatasetNames
+      `Prelude.seq` Prelude.rnf nextToken
+      `Prelude.seq` Prelude.rnf records
+      `Prelude.seq` Prelude.rnf syncSessionToken
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CognitoSync/RegisterDevice.hs b/gen/Amazonka/CognitoSync/RegisterDevice.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/RegisterDevice.hs
@@ -0,0 +1,235 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.RegisterDevice
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Registers a device to receive push sync notifications.
+--
+-- This API can only be called with temporary credentials provided by
+-- Cognito Identity. You cannot call this API with developer credentials.
+module Amazonka.CognitoSync.RegisterDevice
+  ( -- * Creating a Request
+    RegisterDevice (..),
+    newRegisterDevice,
+
+    -- * Request Lenses
+    registerDevice_identityPoolId,
+    registerDevice_identityId,
+    registerDevice_platform,
+    registerDevice_token,
+
+    -- * Destructuring the Response
+    RegisterDeviceResponse (..),
+    newRegisterDeviceResponse,
+
+    -- * Response Lenses
+    registerDeviceResponse_deviceId,
+    registerDeviceResponse_httpStatus,
+  )
+where
+
+import Amazonka.CognitoSync.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | A request to RegisterDevice.
+--
+-- /See:/ 'newRegisterDevice' smart constructor.
+data RegisterDevice = RegisterDevice'
+  { -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. Here, the ID of the pool that the identity belongs to.
+    identityPoolId :: Prelude.Text,
+    -- | The unique ID for this identity.
+    identityId :: Prelude.Text,
+    -- | The SNS platform type (e.g. GCM, SDM, APNS, APNS_SANDBOX).
+    platform :: Platform,
+    -- | The push token.
+    token :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegisterDevice' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identityPoolId', 'registerDevice_identityPoolId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. Here, the ID of the pool that the identity belongs to.
+--
+-- 'identityId', 'registerDevice_identityId' - The unique ID for this identity.
+--
+-- 'platform', 'registerDevice_platform' - The SNS platform type (e.g. GCM, SDM, APNS, APNS_SANDBOX).
+--
+-- 'token', 'registerDevice_token' - The push token.
+newRegisterDevice ::
+  -- | 'identityPoolId'
+  Prelude.Text ->
+  -- | 'identityId'
+  Prelude.Text ->
+  -- | 'platform'
+  Platform ->
+  -- | 'token'
+  Prelude.Text ->
+  RegisterDevice
+newRegisterDevice
+  pIdentityPoolId_
+  pIdentityId_
+  pPlatform_
+  pToken_ =
+    RegisterDevice'
+      { identityPoolId = pIdentityPoolId_,
+        identityId = pIdentityId_,
+        platform = pPlatform_,
+        token = pToken_
+      }
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. Here, the ID of the pool that the identity belongs to.
+registerDevice_identityPoolId :: Lens.Lens' RegisterDevice Prelude.Text
+registerDevice_identityPoolId = Lens.lens (\RegisterDevice' {identityPoolId} -> identityPoolId) (\s@RegisterDevice' {} a -> s {identityPoolId = a} :: RegisterDevice)
+
+-- | The unique ID for this identity.
+registerDevice_identityId :: Lens.Lens' RegisterDevice Prelude.Text
+registerDevice_identityId = Lens.lens (\RegisterDevice' {identityId} -> identityId) (\s@RegisterDevice' {} a -> s {identityId = a} :: RegisterDevice)
+
+-- | The SNS platform type (e.g. GCM, SDM, APNS, APNS_SANDBOX).
+registerDevice_platform :: Lens.Lens' RegisterDevice Platform
+registerDevice_platform = Lens.lens (\RegisterDevice' {platform} -> platform) (\s@RegisterDevice' {} a -> s {platform = a} :: RegisterDevice)
+
+-- | The push token.
+registerDevice_token :: Lens.Lens' RegisterDevice Prelude.Text
+registerDevice_token = Lens.lens (\RegisterDevice' {token} -> token) (\s@RegisterDevice' {} a -> s {token = a} :: RegisterDevice)
+
+instance Core.AWSRequest RegisterDevice where
+  type
+    AWSResponse RegisterDevice =
+      RegisterDeviceResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          RegisterDeviceResponse'
+            Prelude.<$> (x Data..?> "DeviceId")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable RegisterDevice where
+  hashWithSalt _salt RegisterDevice' {..} =
+    _salt
+      `Prelude.hashWithSalt` identityPoolId
+      `Prelude.hashWithSalt` identityId
+      `Prelude.hashWithSalt` platform
+      `Prelude.hashWithSalt` token
+
+instance Prelude.NFData RegisterDevice where
+  rnf RegisterDevice' {..} =
+    Prelude.rnf identityPoolId
+      `Prelude.seq` Prelude.rnf identityId
+      `Prelude.seq` Prelude.rnf platform
+      `Prelude.seq` Prelude.rnf token
+
+instance Data.ToHeaders RegisterDevice where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON RegisterDevice where
+  toJSON RegisterDevice' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Platform" Data..= platform),
+            Prelude.Just ("Token" Data..= token)
+          ]
+      )
+
+instance Data.ToPath RegisterDevice where
+  toPath RegisterDevice' {..} =
+    Prelude.mconcat
+      [ "/identitypools/",
+        Data.toBS identityPoolId,
+        "/identity/",
+        Data.toBS identityId,
+        "/device"
+      ]
+
+instance Data.ToQuery RegisterDevice where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | Response to a RegisterDevice request.
+--
+-- /See:/ 'newRegisterDeviceResponse' smart constructor.
+data RegisterDeviceResponse = RegisterDeviceResponse'
+  { -- | The unique ID generated for this device by Cognito.
+    deviceId :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RegisterDeviceResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'deviceId', 'registerDeviceResponse_deviceId' - The unique ID generated for this device by Cognito.
+--
+-- 'httpStatus', 'registerDeviceResponse_httpStatus' - The response's http status code.
+newRegisterDeviceResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  RegisterDeviceResponse
+newRegisterDeviceResponse pHttpStatus_ =
+  RegisterDeviceResponse'
+    { deviceId = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The unique ID generated for this device by Cognito.
+registerDeviceResponse_deviceId :: Lens.Lens' RegisterDeviceResponse (Prelude.Maybe Prelude.Text)
+registerDeviceResponse_deviceId = Lens.lens (\RegisterDeviceResponse' {deviceId} -> deviceId) (\s@RegisterDeviceResponse' {} a -> s {deviceId = a} :: RegisterDeviceResponse)
+
+-- | The response's http status code.
+registerDeviceResponse_httpStatus :: Lens.Lens' RegisterDeviceResponse Prelude.Int
+registerDeviceResponse_httpStatus = Lens.lens (\RegisterDeviceResponse' {httpStatus} -> httpStatus) (\s@RegisterDeviceResponse' {} a -> s {httpStatus = a} :: RegisterDeviceResponse)
+
+instance Prelude.NFData RegisterDeviceResponse where
+  rnf RegisterDeviceResponse' {..} =
+    Prelude.rnf deviceId
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CognitoSync/SetCognitoEvents.hs b/gen/Amazonka/CognitoSync/SetCognitoEvents.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/SetCognitoEvents.hs
@@ -0,0 +1,162 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.SetCognitoEvents
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the AWS Lambda function for a given event type for an identity
+-- pool. This request only updates the key\/value pair specified. Other
+-- key\/values pairs are not updated. To remove a key value pair, pass a
+-- empty value for the particular key.
+--
+-- This API can only be called with developer credentials. You cannot call
+-- this API with the temporary user credentials provided by Cognito
+-- Identity.
+module Amazonka.CognitoSync.SetCognitoEvents
+  ( -- * Creating a Request
+    SetCognitoEvents (..),
+    newSetCognitoEvents,
+
+    -- * Request Lenses
+    setCognitoEvents_identityPoolId,
+    setCognitoEvents_events,
+
+    -- * Destructuring the Response
+    SetCognitoEventsResponse (..),
+    newSetCognitoEventsResponse,
+  )
+where
+
+import Amazonka.CognitoSync.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | A request to configure Cognito Events\"
+--
+-- \"
+--
+-- /See:/ 'newSetCognitoEvents' smart constructor.
+data SetCognitoEvents = SetCognitoEvents'
+  { -- | The Cognito Identity Pool to use when configuring Cognito Events
+    identityPoolId :: Prelude.Text,
+    -- | The events to configure
+    events :: Prelude.HashMap Prelude.Text Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SetCognitoEvents' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identityPoolId', 'setCognitoEvents_identityPoolId' - The Cognito Identity Pool to use when configuring Cognito Events
+--
+-- 'events', 'setCognitoEvents_events' - The events to configure
+newSetCognitoEvents ::
+  -- | 'identityPoolId'
+  Prelude.Text ->
+  SetCognitoEvents
+newSetCognitoEvents pIdentityPoolId_ =
+  SetCognitoEvents'
+    { identityPoolId =
+        pIdentityPoolId_,
+      events = Prelude.mempty
+    }
+
+-- | The Cognito Identity Pool to use when configuring Cognito Events
+setCognitoEvents_identityPoolId :: Lens.Lens' SetCognitoEvents Prelude.Text
+setCognitoEvents_identityPoolId = Lens.lens (\SetCognitoEvents' {identityPoolId} -> identityPoolId) (\s@SetCognitoEvents' {} a -> s {identityPoolId = a} :: SetCognitoEvents)
+
+-- | The events to configure
+setCognitoEvents_events :: Lens.Lens' SetCognitoEvents (Prelude.HashMap Prelude.Text Prelude.Text)
+setCognitoEvents_events = Lens.lens (\SetCognitoEvents' {events} -> events) (\s@SetCognitoEvents' {} a -> s {events = a} :: SetCognitoEvents) Prelude.. Lens.coerced
+
+instance Core.AWSRequest SetCognitoEvents where
+  type
+    AWSResponse SetCognitoEvents =
+      SetCognitoEventsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull SetCognitoEventsResponse'
+
+instance Prelude.Hashable SetCognitoEvents where
+  hashWithSalt _salt SetCognitoEvents' {..} =
+    _salt
+      `Prelude.hashWithSalt` identityPoolId
+      `Prelude.hashWithSalt` events
+
+instance Prelude.NFData SetCognitoEvents where
+  rnf SetCognitoEvents' {..} =
+    Prelude.rnf identityPoolId
+      `Prelude.seq` Prelude.rnf events
+
+instance Data.ToHeaders SetCognitoEvents where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON SetCognitoEvents where
+  toJSON SetCognitoEvents' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Events" Data..= events)]
+      )
+
+instance Data.ToPath SetCognitoEvents where
+  toPath SetCognitoEvents' {..} =
+    Prelude.mconcat
+      [ "/identitypools/",
+        Data.toBS identityPoolId,
+        "/events"
+      ]
+
+instance Data.ToQuery SetCognitoEvents where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newSetCognitoEventsResponse' smart constructor.
+data SetCognitoEventsResponse = SetCognitoEventsResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SetCognitoEventsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+newSetCognitoEventsResponse ::
+  SetCognitoEventsResponse
+newSetCognitoEventsResponse =
+  SetCognitoEventsResponse'
+
+instance Prelude.NFData SetCognitoEventsResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/CognitoSync/SetIdentityPoolConfiguration.hs b/gen/Amazonka/CognitoSync/SetIdentityPoolConfiguration.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/SetIdentityPoolConfiguration.hs
@@ -0,0 +1,251 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.SetIdentityPoolConfiguration
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Sets the necessary configuration for push sync.
+--
+-- This API can only be called with developer credentials. You cannot call
+-- this API with the temporary user credentials provided by Cognito
+-- Identity.
+module Amazonka.CognitoSync.SetIdentityPoolConfiguration
+  ( -- * Creating a Request
+    SetIdentityPoolConfiguration (..),
+    newSetIdentityPoolConfiguration,
+
+    -- * Request Lenses
+    setIdentityPoolConfiguration_cognitoStreams,
+    setIdentityPoolConfiguration_pushSync,
+    setIdentityPoolConfiguration_identityPoolId,
+
+    -- * Destructuring the Response
+    SetIdentityPoolConfigurationResponse (..),
+    newSetIdentityPoolConfigurationResponse,
+
+    -- * Response Lenses
+    setIdentityPoolConfigurationResponse_cognitoStreams,
+    setIdentityPoolConfigurationResponse_identityPoolId,
+    setIdentityPoolConfigurationResponse_pushSync,
+    setIdentityPoolConfigurationResponse_httpStatus,
+  )
+where
+
+import Amazonka.CognitoSync.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | The input for the SetIdentityPoolConfiguration operation.
+--
+-- /See:/ 'newSetIdentityPoolConfiguration' smart constructor.
+data SetIdentityPoolConfiguration = SetIdentityPoolConfiguration'
+  { -- | Options to apply to this identity pool for Amazon Cognito streams.
+    cognitoStreams :: Prelude.Maybe CognitoStreams,
+    -- | Options to apply to this identity pool for push synchronization.
+    pushSync :: Prelude.Maybe PushSync,
+    -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. This is the ID of the pool to modify.
+    identityPoolId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SetIdentityPoolConfiguration' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cognitoStreams', 'setIdentityPoolConfiguration_cognitoStreams' - Options to apply to this identity pool for Amazon Cognito streams.
+--
+-- 'pushSync', 'setIdentityPoolConfiguration_pushSync' - Options to apply to this identity pool for push synchronization.
+--
+-- 'identityPoolId', 'setIdentityPoolConfiguration_identityPoolId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. This is the ID of the pool to modify.
+newSetIdentityPoolConfiguration ::
+  -- | 'identityPoolId'
+  Prelude.Text ->
+  SetIdentityPoolConfiguration
+newSetIdentityPoolConfiguration pIdentityPoolId_ =
+  SetIdentityPoolConfiguration'
+    { cognitoStreams =
+        Prelude.Nothing,
+      pushSync = Prelude.Nothing,
+      identityPoolId = pIdentityPoolId_
+    }
+
+-- | Options to apply to this identity pool for Amazon Cognito streams.
+setIdentityPoolConfiguration_cognitoStreams :: Lens.Lens' SetIdentityPoolConfiguration (Prelude.Maybe CognitoStreams)
+setIdentityPoolConfiguration_cognitoStreams = Lens.lens (\SetIdentityPoolConfiguration' {cognitoStreams} -> cognitoStreams) (\s@SetIdentityPoolConfiguration' {} a -> s {cognitoStreams = a} :: SetIdentityPoolConfiguration)
+
+-- | Options to apply to this identity pool for push synchronization.
+setIdentityPoolConfiguration_pushSync :: Lens.Lens' SetIdentityPoolConfiguration (Prelude.Maybe PushSync)
+setIdentityPoolConfiguration_pushSync = Lens.lens (\SetIdentityPoolConfiguration' {pushSync} -> pushSync) (\s@SetIdentityPoolConfiguration' {} a -> s {pushSync = a} :: SetIdentityPoolConfiguration)
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. This is the ID of the pool to modify.
+setIdentityPoolConfiguration_identityPoolId :: Lens.Lens' SetIdentityPoolConfiguration Prelude.Text
+setIdentityPoolConfiguration_identityPoolId = Lens.lens (\SetIdentityPoolConfiguration' {identityPoolId} -> identityPoolId) (\s@SetIdentityPoolConfiguration' {} a -> s {identityPoolId = a} :: SetIdentityPoolConfiguration)
+
+instance Core.AWSRequest SetIdentityPoolConfiguration where
+  type
+    AWSResponse SetIdentityPoolConfiguration =
+      SetIdentityPoolConfigurationResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          SetIdentityPoolConfigurationResponse'
+            Prelude.<$> (x Data..?> "CognitoStreams")
+            Prelude.<*> (x Data..?> "IdentityPoolId")
+            Prelude.<*> (x Data..?> "PushSync")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    SetIdentityPoolConfiguration
+  where
+  hashWithSalt _salt SetIdentityPoolConfiguration' {..} =
+    _salt
+      `Prelude.hashWithSalt` cognitoStreams
+      `Prelude.hashWithSalt` pushSync
+      `Prelude.hashWithSalt` identityPoolId
+
+instance Prelude.NFData SetIdentityPoolConfiguration where
+  rnf SetIdentityPoolConfiguration' {..} =
+    Prelude.rnf cognitoStreams
+      `Prelude.seq` Prelude.rnf pushSync
+      `Prelude.seq` Prelude.rnf identityPoolId
+
+instance Data.ToHeaders SetIdentityPoolConfiguration where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON SetIdentityPoolConfiguration where
+  toJSON SetIdentityPoolConfiguration' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("CognitoStreams" Data..=)
+              Prelude.<$> cognitoStreams,
+            ("PushSync" Data..=) Prelude.<$> pushSync
+          ]
+      )
+
+instance Data.ToPath SetIdentityPoolConfiguration where
+  toPath SetIdentityPoolConfiguration' {..} =
+    Prelude.mconcat
+      [ "/identitypools/",
+        Data.toBS identityPoolId,
+        "/configuration"
+      ]
+
+instance Data.ToQuery SetIdentityPoolConfiguration where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | The output for the SetIdentityPoolConfiguration operation
+--
+-- /See:/ 'newSetIdentityPoolConfigurationResponse' smart constructor.
+data SetIdentityPoolConfigurationResponse = SetIdentityPoolConfigurationResponse'
+  { -- | Options to apply to this identity pool for Amazon Cognito streams.
+    cognitoStreams :: Prelude.Maybe CognitoStreams,
+    -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito.
+    identityPoolId :: Prelude.Maybe Prelude.Text,
+    -- | Options to apply to this identity pool for push synchronization.
+    pushSync :: Prelude.Maybe PushSync,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SetIdentityPoolConfigurationResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'cognitoStreams', 'setIdentityPoolConfigurationResponse_cognitoStreams' - Options to apply to this identity pool for Amazon Cognito streams.
+--
+-- 'identityPoolId', 'setIdentityPoolConfigurationResponse_identityPoolId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito.
+--
+-- 'pushSync', 'setIdentityPoolConfigurationResponse_pushSync' - Options to apply to this identity pool for push synchronization.
+--
+-- 'httpStatus', 'setIdentityPoolConfigurationResponse_httpStatus' - The response's http status code.
+newSetIdentityPoolConfigurationResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SetIdentityPoolConfigurationResponse
+newSetIdentityPoolConfigurationResponse pHttpStatus_ =
+  SetIdentityPoolConfigurationResponse'
+    { cognitoStreams =
+        Prelude.Nothing,
+      identityPoolId = Prelude.Nothing,
+      pushSync = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Options to apply to this identity pool for Amazon Cognito streams.
+setIdentityPoolConfigurationResponse_cognitoStreams :: Lens.Lens' SetIdentityPoolConfigurationResponse (Prelude.Maybe CognitoStreams)
+setIdentityPoolConfigurationResponse_cognitoStreams = Lens.lens (\SetIdentityPoolConfigurationResponse' {cognitoStreams} -> cognitoStreams) (\s@SetIdentityPoolConfigurationResponse' {} a -> s {cognitoStreams = a} :: SetIdentityPoolConfigurationResponse)
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito.
+setIdentityPoolConfigurationResponse_identityPoolId :: Lens.Lens' SetIdentityPoolConfigurationResponse (Prelude.Maybe Prelude.Text)
+setIdentityPoolConfigurationResponse_identityPoolId = Lens.lens (\SetIdentityPoolConfigurationResponse' {identityPoolId} -> identityPoolId) (\s@SetIdentityPoolConfigurationResponse' {} a -> s {identityPoolId = a} :: SetIdentityPoolConfigurationResponse)
+
+-- | Options to apply to this identity pool for push synchronization.
+setIdentityPoolConfigurationResponse_pushSync :: Lens.Lens' SetIdentityPoolConfigurationResponse (Prelude.Maybe PushSync)
+setIdentityPoolConfigurationResponse_pushSync = Lens.lens (\SetIdentityPoolConfigurationResponse' {pushSync} -> pushSync) (\s@SetIdentityPoolConfigurationResponse' {} a -> s {pushSync = a} :: SetIdentityPoolConfigurationResponse)
+
+-- | The response's http status code.
+setIdentityPoolConfigurationResponse_httpStatus :: Lens.Lens' SetIdentityPoolConfigurationResponse Prelude.Int
+setIdentityPoolConfigurationResponse_httpStatus = Lens.lens (\SetIdentityPoolConfigurationResponse' {httpStatus} -> httpStatus) (\s@SetIdentityPoolConfigurationResponse' {} a -> s {httpStatus = a} :: SetIdentityPoolConfigurationResponse)
+
+instance
+  Prelude.NFData
+    SetIdentityPoolConfigurationResponse
+  where
+  rnf SetIdentityPoolConfigurationResponse' {..} =
+    Prelude.rnf cognitoStreams
+      `Prelude.seq` Prelude.rnf identityPoolId
+      `Prelude.seq` Prelude.rnf pushSync
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CognitoSync/SubscribeToDataset.hs b/gen/Amazonka/CognitoSync/SubscribeToDataset.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/SubscribeToDataset.hs
@@ -0,0 +1,223 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.SubscribeToDataset
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Subscribes to receive notifications when a dataset is modified by
+-- another device.
+--
+-- This API can only be called with temporary credentials provided by
+-- Cognito Identity. You cannot call this API with developer credentials.
+module Amazonka.CognitoSync.SubscribeToDataset
+  ( -- * Creating a Request
+    SubscribeToDataset (..),
+    newSubscribeToDataset,
+
+    -- * Request Lenses
+    subscribeToDataset_identityPoolId,
+    subscribeToDataset_identityId,
+    subscribeToDataset_datasetName,
+    subscribeToDataset_deviceId,
+
+    -- * Destructuring the Response
+    SubscribeToDatasetResponse (..),
+    newSubscribeToDatasetResponse,
+
+    -- * Response Lenses
+    subscribeToDatasetResponse_httpStatus,
+  )
+where
+
+import Amazonka.CognitoSync.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | A request to SubscribeToDatasetRequest.
+--
+-- /See:/ 'newSubscribeToDataset' smart constructor.
+data SubscribeToDataset = SubscribeToDataset'
+  { -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. The ID of the pool to which the identity belongs.
+    identityPoolId :: Prelude.Text,
+    -- | Unique ID for this identity.
+    identityId :: Prelude.Text,
+    -- | The name of the dataset to subcribe to.
+    datasetName :: Prelude.Text,
+    -- | The unique ID generated for this device by Cognito.
+    deviceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SubscribeToDataset' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identityPoolId', 'subscribeToDataset_identityPoolId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. The ID of the pool to which the identity belongs.
+--
+-- 'identityId', 'subscribeToDataset_identityId' - Unique ID for this identity.
+--
+-- 'datasetName', 'subscribeToDataset_datasetName' - The name of the dataset to subcribe to.
+--
+-- 'deviceId', 'subscribeToDataset_deviceId' - The unique ID generated for this device by Cognito.
+newSubscribeToDataset ::
+  -- | 'identityPoolId'
+  Prelude.Text ->
+  -- | 'identityId'
+  Prelude.Text ->
+  -- | 'datasetName'
+  Prelude.Text ->
+  -- | 'deviceId'
+  Prelude.Text ->
+  SubscribeToDataset
+newSubscribeToDataset
+  pIdentityPoolId_
+  pIdentityId_
+  pDatasetName_
+  pDeviceId_ =
+    SubscribeToDataset'
+      { identityPoolId =
+          pIdentityPoolId_,
+        identityId = pIdentityId_,
+        datasetName = pDatasetName_,
+        deviceId = pDeviceId_
+      }
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. The ID of the pool to which the identity belongs.
+subscribeToDataset_identityPoolId :: Lens.Lens' SubscribeToDataset Prelude.Text
+subscribeToDataset_identityPoolId = Lens.lens (\SubscribeToDataset' {identityPoolId} -> identityPoolId) (\s@SubscribeToDataset' {} a -> s {identityPoolId = a} :: SubscribeToDataset)
+
+-- | Unique ID for this identity.
+subscribeToDataset_identityId :: Lens.Lens' SubscribeToDataset Prelude.Text
+subscribeToDataset_identityId = Lens.lens (\SubscribeToDataset' {identityId} -> identityId) (\s@SubscribeToDataset' {} a -> s {identityId = a} :: SubscribeToDataset)
+
+-- | The name of the dataset to subcribe to.
+subscribeToDataset_datasetName :: Lens.Lens' SubscribeToDataset Prelude.Text
+subscribeToDataset_datasetName = Lens.lens (\SubscribeToDataset' {datasetName} -> datasetName) (\s@SubscribeToDataset' {} a -> s {datasetName = a} :: SubscribeToDataset)
+
+-- | The unique ID generated for this device by Cognito.
+subscribeToDataset_deviceId :: Lens.Lens' SubscribeToDataset Prelude.Text
+subscribeToDataset_deviceId = Lens.lens (\SubscribeToDataset' {deviceId} -> deviceId) (\s@SubscribeToDataset' {} a -> s {deviceId = a} :: SubscribeToDataset)
+
+instance Core.AWSRequest SubscribeToDataset where
+  type
+    AWSResponse SubscribeToDataset =
+      SubscribeToDatasetResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          SubscribeToDatasetResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable SubscribeToDataset where
+  hashWithSalt _salt SubscribeToDataset' {..} =
+    _salt
+      `Prelude.hashWithSalt` identityPoolId
+      `Prelude.hashWithSalt` identityId
+      `Prelude.hashWithSalt` datasetName
+      `Prelude.hashWithSalt` deviceId
+
+instance Prelude.NFData SubscribeToDataset where
+  rnf SubscribeToDataset' {..} =
+    Prelude.rnf identityPoolId
+      `Prelude.seq` Prelude.rnf identityId
+      `Prelude.seq` Prelude.rnf datasetName
+      `Prelude.seq` Prelude.rnf deviceId
+
+instance Data.ToHeaders SubscribeToDataset where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON SubscribeToDataset where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath SubscribeToDataset where
+  toPath SubscribeToDataset' {..} =
+    Prelude.mconcat
+      [ "/identitypools/",
+        Data.toBS identityPoolId,
+        "/identities/",
+        Data.toBS identityId,
+        "/datasets/",
+        Data.toBS datasetName,
+        "/subscriptions/",
+        Data.toBS deviceId
+      ]
+
+instance Data.ToQuery SubscribeToDataset where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | Response to a SubscribeToDataset request.
+--
+-- /See:/ 'newSubscribeToDatasetResponse' smart constructor.
+data SubscribeToDatasetResponse = SubscribeToDatasetResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SubscribeToDatasetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'subscribeToDatasetResponse_httpStatus' - The response's http status code.
+newSubscribeToDatasetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  SubscribeToDatasetResponse
+newSubscribeToDatasetResponse pHttpStatus_ =
+  SubscribeToDatasetResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+subscribeToDatasetResponse_httpStatus :: Lens.Lens' SubscribeToDatasetResponse Prelude.Int
+subscribeToDatasetResponse_httpStatus = Lens.lens (\SubscribeToDatasetResponse' {httpStatus} -> httpStatus) (\s@SubscribeToDatasetResponse' {} a -> s {httpStatus = a} :: SubscribeToDatasetResponse)
+
+instance Prelude.NFData SubscribeToDatasetResponse where
+  rnf SubscribeToDatasetResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CognitoSync/Types.hs b/gen/Amazonka/CognitoSync/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/Types.hs
@@ -0,0 +1,302 @@
+{-# LANGUAGE DisambiguateRecordFields #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.Types
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.CognitoSync.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _AlreadyStreamedException,
+    _ConcurrentModificationException,
+    _DuplicateRequestException,
+    _InternalErrorException,
+    _InvalidConfigurationException,
+    _InvalidLambdaFunctionOutputException,
+    _InvalidParameterException,
+    _LambdaThrottledException,
+    _LimitExceededException,
+    _NotAuthorizedException,
+    _ResourceConflictException,
+    _ResourceNotFoundException,
+    _TooManyRequestsException,
+
+    -- * BulkPublishStatus
+    BulkPublishStatus (..),
+
+    -- * Operation
+    Operation (..),
+
+    -- * Platform
+    Platform (..),
+
+    -- * StreamingStatus
+    StreamingStatus (..),
+
+    -- * CognitoStreams
+    CognitoStreams (..),
+    newCognitoStreams,
+    cognitoStreams_roleArn,
+    cognitoStreams_streamName,
+    cognitoStreams_streamingStatus,
+
+    -- * Dataset
+    Dataset (..),
+    newDataset,
+    dataset_creationDate,
+    dataset_dataStorage,
+    dataset_datasetName,
+    dataset_identityId,
+    dataset_lastModifiedBy,
+    dataset_lastModifiedDate,
+    dataset_numRecords,
+
+    -- * IdentityPoolUsage
+    IdentityPoolUsage (..),
+    newIdentityPoolUsage,
+    identityPoolUsage_dataStorage,
+    identityPoolUsage_identityPoolId,
+    identityPoolUsage_lastModifiedDate,
+    identityPoolUsage_syncSessionsCount,
+
+    -- * IdentityUsage
+    IdentityUsage (..),
+    newIdentityUsage,
+    identityUsage_dataStorage,
+    identityUsage_datasetCount,
+    identityUsage_identityId,
+    identityUsage_identityPoolId,
+    identityUsage_lastModifiedDate,
+
+    -- * PushSync
+    PushSync (..),
+    newPushSync,
+    pushSync_applicationArns,
+    pushSync_roleArn,
+
+    -- * Record
+    Record (..),
+    newRecord,
+    record_deviceLastModifiedDate,
+    record_key,
+    record_lastModifiedBy,
+    record_lastModifiedDate,
+    record_syncCount,
+    record_value,
+
+    -- * RecordPatch
+    RecordPatch (..),
+    newRecordPatch,
+    recordPatch_deviceLastModifiedDate,
+    recordPatch_value,
+    recordPatch_op,
+    recordPatch_key,
+    recordPatch_syncCount,
+  )
+where
+
+import Amazonka.CognitoSync.Types.BulkPublishStatus
+import Amazonka.CognitoSync.Types.CognitoStreams
+import Amazonka.CognitoSync.Types.Dataset
+import Amazonka.CognitoSync.Types.IdentityPoolUsage
+import Amazonka.CognitoSync.Types.IdentityUsage
+import Amazonka.CognitoSync.Types.Operation
+import Amazonka.CognitoSync.Types.Platform
+import Amazonka.CognitoSync.Types.PushSync
+import Amazonka.CognitoSync.Types.Record
+import Amazonka.CognitoSync.Types.RecordPatch
+import Amazonka.CognitoSync.Types.StreamingStatus
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Sign.V4 as Sign
+
+-- | API version @2014-06-30@ of the Amazon Cognito Sync SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "CognitoSync",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "cognito-sync",
+      Core.signingName = "cognito-sync",
+      Core.version = "2014-06-30",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "CognitoSync",
+      Core.retry = retry
+    }
+  where
+    retry =
+      Core.Exponential
+        { Core.base = 5.0e-2,
+          Core.growth = 2,
+          Core.attempts = 5,
+          Core.check = check
+        }
+    check e
+      | Lens.has (Core.hasStatus 502) e =
+          Prelude.Just "bad_gateway"
+      | Lens.has (Core.hasStatus 504) e =
+          Prelude.Just "gateway_timeout"
+      | Lens.has (Core.hasStatus 500) e =
+          Prelude.Just "general_server_error"
+      | Lens.has (Core.hasStatus 509) e =
+          Prelude.Just "limit_exceeded"
+      | Lens.has
+          ( Core.hasCode "RequestThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "request_throttled_exception"
+      | Lens.has (Core.hasStatus 503) e =
+          Prelude.Just "service_unavailable"
+      | Lens.has
+          ( Core.hasCode "ThrottledException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttled_exception"
+      | Lens.has
+          ( Core.hasCode "Throttling"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling"
+      | Lens.has
+          ( Core.hasCode "ThrottlingException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throttling_exception"
+      | Lens.has
+          ( Core.hasCode
+              "ProvisionedThroughputExceededException"
+              Prelude.. Core.hasStatus 400
+          )
+          e =
+          Prelude.Just "throughput_exceeded"
+      | Lens.has (Core.hasStatus 429) e =
+          Prelude.Just "too_many_requests"
+      | Prelude.otherwise = Prelude.Nothing
+
+-- | An exception thrown when a bulk publish operation is requested less than
+-- 24 hours after a previous bulk publish operation completed successfully.
+_AlreadyStreamedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_AlreadyStreamedException =
+  Core._MatchServiceError
+    defaultService
+    "AlreadyStreamedException"
+    Prelude.. Core.hasStatus 400
+
+-- | Thrown if there are parallel requests to modify a resource.
+_ConcurrentModificationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConcurrentModificationException =
+  Core._MatchServiceError
+    defaultService
+    "ConcurrentModificationException"
+    Prelude.. Core.hasStatus 400
+
+-- | An exception thrown when there is an IN_PROGRESS bulk publish operation
+-- for the given identity pool.
+_DuplicateRequestException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DuplicateRequestException =
+  Core._MatchServiceError
+    defaultService
+    "DuplicateRequestException"
+    Prelude.. Core.hasStatus 400
+
+-- | Indicates an internal service error.
+_InternalErrorException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InternalErrorException =
+  Core._MatchServiceError
+    defaultService
+    "InternalErrorException"
+    Prelude.. Core.hasStatus 500
+
+-- | Prism for InvalidConfigurationException' errors.
+_InvalidConfigurationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidConfigurationException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidConfigurationException"
+    Prelude.. Core.hasStatus 400
+
+-- | The AWS Lambda function returned invalid output or an exception.
+_InvalidLambdaFunctionOutputException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidLambdaFunctionOutputException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidLambdaFunctionOutputException"
+    Prelude.. Core.hasStatus 400
+
+-- | Thrown when a request parameter does not comply with the associated
+-- constraints.
+_InvalidParameterException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidParameterException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidParameterException"
+    Prelude.. Core.hasStatus 400
+
+-- | AWS Lambda throttled your account, please contact AWS Support
+_LambdaThrottledException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_LambdaThrottledException =
+  Core._MatchServiceError
+    defaultService
+    "LambdaThrottledException"
+    Prelude.. Core.hasStatus 429
+
+-- | Thrown when the limit on the number of objects or operations has been
+-- exceeded.
+_LimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_LimitExceededException =
+  Core._MatchServiceError
+    defaultService
+    "LimitExceededException"
+    Prelude.. Core.hasStatus 400
+
+-- | Thrown when a user is not authorized to access the requested resource.
+_NotAuthorizedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_NotAuthorizedException =
+  Core._MatchServiceError
+    defaultService
+    "NotAuthorizedException"
+    Prelude.. Core.hasStatus 403
+
+-- | Thrown if an update can\'t be applied because the resource was changed
+-- by another call and this would result in a conflict.
+_ResourceConflictException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceConflictException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceConflictException"
+    Prelude.. Core.hasStatus 409
+
+-- | Thrown if the resource doesn\'t exist.
+_ResourceNotFoundException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceNotFoundException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceNotFoundException"
+    Prelude.. Core.hasStatus 404
+
+-- | Thrown if the request is throttled.
+_TooManyRequestsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_TooManyRequestsException =
+  Core._MatchServiceError
+    defaultService
+    "TooManyRequestsException"
+    Prelude.. Core.hasStatus 429
diff --git a/gen/Amazonka/CognitoSync/Types/BulkPublishStatus.hs b/gen/Amazonka/CognitoSync/Types/BulkPublishStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/Types/BulkPublishStatus.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.Types.BulkPublishStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.CognitoSync.Types.BulkPublishStatus
+  ( BulkPublishStatus
+      ( ..,
+        BulkPublishStatus_FAILED,
+        BulkPublishStatus_IN_PROGRESS,
+        BulkPublishStatus_NOT_STARTED,
+        BulkPublishStatus_SUCCEEDED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype BulkPublishStatus = BulkPublishStatus'
+  { fromBulkPublishStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern BulkPublishStatus_FAILED :: BulkPublishStatus
+pattern BulkPublishStatus_FAILED = BulkPublishStatus' "FAILED"
+
+pattern BulkPublishStatus_IN_PROGRESS :: BulkPublishStatus
+pattern BulkPublishStatus_IN_PROGRESS = BulkPublishStatus' "IN_PROGRESS"
+
+pattern BulkPublishStatus_NOT_STARTED :: BulkPublishStatus
+pattern BulkPublishStatus_NOT_STARTED = BulkPublishStatus' "NOT_STARTED"
+
+pattern BulkPublishStatus_SUCCEEDED :: BulkPublishStatus
+pattern BulkPublishStatus_SUCCEEDED = BulkPublishStatus' "SUCCEEDED"
+
+{-# COMPLETE
+  BulkPublishStatus_FAILED,
+  BulkPublishStatus_IN_PROGRESS,
+  BulkPublishStatus_NOT_STARTED,
+  BulkPublishStatus_SUCCEEDED,
+  BulkPublishStatus'
+  #-}
diff --git a/gen/Amazonka/CognitoSync/Types/CognitoStreams.hs b/gen/Amazonka/CognitoSync/Types/CognitoStreams.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/Types/CognitoStreams.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.Types.CognitoStreams
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.CognitoSync.Types.CognitoStreams where
+
+import Amazonka.CognitoSync.Types.StreamingStatus
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Configuration options for configure Cognito streams.
+--
+-- /See:/ 'newCognitoStreams' smart constructor.
+data CognitoStreams = CognitoStreams'
+  { -- | The ARN of the role Amazon Cognito can assume in order to publish to the
+    -- stream. This role must grant access to Amazon Cognito (cognito-sync) to
+    -- invoke PutRecord on your Cognito stream.
+    roleArn :: Prelude.Maybe Prelude.Text,
+    -- | The name of the Cognito stream to receive updates. This stream must be
+    -- in the developers account and in the same region as the identity pool.
+    streamName :: Prelude.Maybe Prelude.Text,
+    -- | Status of the Cognito streams. Valid values are:
+    --
+    -- ENABLED - Streaming of updates to identity pool is enabled.
+    --
+    -- DISABLED - Streaming of updates to identity pool is disabled. Bulk
+    -- publish will also fail if StreamingStatus is DISABLED.
+    streamingStatus :: Prelude.Maybe StreamingStatus
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CognitoStreams' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'roleArn', 'cognitoStreams_roleArn' - The ARN of the role Amazon Cognito can assume in order to publish to the
+-- stream. This role must grant access to Amazon Cognito (cognito-sync) to
+-- invoke PutRecord on your Cognito stream.
+--
+-- 'streamName', 'cognitoStreams_streamName' - The name of the Cognito stream to receive updates. This stream must be
+-- in the developers account and in the same region as the identity pool.
+--
+-- 'streamingStatus', 'cognitoStreams_streamingStatus' - Status of the Cognito streams. Valid values are:
+--
+-- ENABLED - Streaming of updates to identity pool is enabled.
+--
+-- DISABLED - Streaming of updates to identity pool is disabled. Bulk
+-- publish will also fail if StreamingStatus is DISABLED.
+newCognitoStreams ::
+  CognitoStreams
+newCognitoStreams =
+  CognitoStreams'
+    { roleArn = Prelude.Nothing,
+      streamName = Prelude.Nothing,
+      streamingStatus = Prelude.Nothing
+    }
+
+-- | The ARN of the role Amazon Cognito can assume in order to publish to the
+-- stream. This role must grant access to Amazon Cognito (cognito-sync) to
+-- invoke PutRecord on your Cognito stream.
+cognitoStreams_roleArn :: Lens.Lens' CognitoStreams (Prelude.Maybe Prelude.Text)
+cognitoStreams_roleArn = Lens.lens (\CognitoStreams' {roleArn} -> roleArn) (\s@CognitoStreams' {} a -> s {roleArn = a} :: CognitoStreams)
+
+-- | The name of the Cognito stream to receive updates. This stream must be
+-- in the developers account and in the same region as the identity pool.
+cognitoStreams_streamName :: Lens.Lens' CognitoStreams (Prelude.Maybe Prelude.Text)
+cognitoStreams_streamName = Lens.lens (\CognitoStreams' {streamName} -> streamName) (\s@CognitoStreams' {} a -> s {streamName = a} :: CognitoStreams)
+
+-- | Status of the Cognito streams. Valid values are:
+--
+-- ENABLED - Streaming of updates to identity pool is enabled.
+--
+-- DISABLED - Streaming of updates to identity pool is disabled. Bulk
+-- publish will also fail if StreamingStatus is DISABLED.
+cognitoStreams_streamingStatus :: Lens.Lens' CognitoStreams (Prelude.Maybe StreamingStatus)
+cognitoStreams_streamingStatus = Lens.lens (\CognitoStreams' {streamingStatus} -> streamingStatus) (\s@CognitoStreams' {} a -> s {streamingStatus = a} :: CognitoStreams)
+
+instance Data.FromJSON CognitoStreams where
+  parseJSON =
+    Data.withObject
+      "CognitoStreams"
+      ( \x ->
+          CognitoStreams'
+            Prelude.<$> (x Data..:? "RoleArn")
+            Prelude.<*> (x Data..:? "StreamName")
+            Prelude.<*> (x Data..:? "StreamingStatus")
+      )
+
+instance Prelude.Hashable CognitoStreams where
+  hashWithSalt _salt CognitoStreams' {..} =
+    _salt
+      `Prelude.hashWithSalt` roleArn
+      `Prelude.hashWithSalt` streamName
+      `Prelude.hashWithSalt` streamingStatus
+
+instance Prelude.NFData CognitoStreams where
+  rnf CognitoStreams' {..} =
+    Prelude.rnf roleArn
+      `Prelude.seq` Prelude.rnf streamName
+      `Prelude.seq` Prelude.rnf streamingStatus
+
+instance Data.ToJSON CognitoStreams where
+  toJSON CognitoStreams' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("RoleArn" Data..=) Prelude.<$> roleArn,
+            ("StreamName" Data..=) Prelude.<$> streamName,
+            ("StreamingStatus" Data..=)
+              Prelude.<$> streamingStatus
+          ]
+      )
diff --git a/gen/Amazonka/CognitoSync/Types/Dataset.hs b/gen/Amazonka/CognitoSync/Types/Dataset.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/Types/Dataset.hs
@@ -0,0 +1,157 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.Types.Dataset
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.CognitoSync.Types.Dataset where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | A collection of data for an identity pool. An identity pool can have
+-- multiple datasets. A dataset is per identity and can be general or
+-- associated with a particular entity in an application (like a saved
+-- game). Datasets are automatically created if they don\'t exist. Data is
+-- synced by dataset, and a dataset can hold up to 1MB of key-value pairs.
+--
+-- /See:/ 'newDataset' smart constructor.
+data Dataset = Dataset'
+  { -- | Date on which the dataset was created.
+    creationDate :: Prelude.Maybe Data.POSIX,
+    -- | Total size in bytes of the records in this dataset.
+    dataStorage :: Prelude.Maybe Prelude.Integer,
+    -- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9,
+    -- \'_\' (underscore), \'-\' (dash), and \'.\' (dot).
+    datasetName :: Prelude.Maybe Prelude.Text,
+    -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. GUID generation is unique within a region.
+    identityId :: Prelude.Maybe Prelude.Text,
+    -- | The device that made the last change to this dataset.
+    lastModifiedBy :: Prelude.Maybe Prelude.Text,
+    -- | Date when the dataset was last modified.
+    lastModifiedDate :: Prelude.Maybe Data.POSIX,
+    -- | Number of records in this dataset.
+    numRecords :: Prelude.Maybe Prelude.Integer
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Dataset' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'creationDate', 'dataset_creationDate' - Date on which the dataset was created.
+--
+-- 'dataStorage', 'dataset_dataStorage' - Total size in bytes of the records in this dataset.
+--
+-- 'datasetName', 'dataset_datasetName' - A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9,
+-- \'_\' (underscore), \'-\' (dash), and \'.\' (dot).
+--
+-- 'identityId', 'dataset_identityId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+--
+-- 'lastModifiedBy', 'dataset_lastModifiedBy' - The device that made the last change to this dataset.
+--
+-- 'lastModifiedDate', 'dataset_lastModifiedDate' - Date when the dataset was last modified.
+--
+-- 'numRecords', 'dataset_numRecords' - Number of records in this dataset.
+newDataset ::
+  Dataset
+newDataset =
+  Dataset'
+    { creationDate = Prelude.Nothing,
+      dataStorage = Prelude.Nothing,
+      datasetName = Prelude.Nothing,
+      identityId = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      lastModifiedDate = Prelude.Nothing,
+      numRecords = Prelude.Nothing
+    }
+
+-- | Date on which the dataset was created.
+dataset_creationDate :: Lens.Lens' Dataset (Prelude.Maybe Prelude.UTCTime)
+dataset_creationDate = Lens.lens (\Dataset' {creationDate} -> creationDate) (\s@Dataset' {} a -> s {creationDate = a} :: Dataset) Prelude.. Lens.mapping Data._Time
+
+-- | Total size in bytes of the records in this dataset.
+dataset_dataStorage :: Lens.Lens' Dataset (Prelude.Maybe Prelude.Integer)
+dataset_dataStorage = Lens.lens (\Dataset' {dataStorage} -> dataStorage) (\s@Dataset' {} a -> s {dataStorage = a} :: Dataset)
+
+-- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9,
+-- \'_\' (underscore), \'-\' (dash), and \'.\' (dot).
+dataset_datasetName :: Lens.Lens' Dataset (Prelude.Maybe Prelude.Text)
+dataset_datasetName = Lens.lens (\Dataset' {datasetName} -> datasetName) (\s@Dataset' {} a -> s {datasetName = a} :: Dataset)
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+dataset_identityId :: Lens.Lens' Dataset (Prelude.Maybe Prelude.Text)
+dataset_identityId = Lens.lens (\Dataset' {identityId} -> identityId) (\s@Dataset' {} a -> s {identityId = a} :: Dataset)
+
+-- | The device that made the last change to this dataset.
+dataset_lastModifiedBy :: Lens.Lens' Dataset (Prelude.Maybe Prelude.Text)
+dataset_lastModifiedBy = Lens.lens (\Dataset' {lastModifiedBy} -> lastModifiedBy) (\s@Dataset' {} a -> s {lastModifiedBy = a} :: Dataset)
+
+-- | Date when the dataset was last modified.
+dataset_lastModifiedDate :: Lens.Lens' Dataset (Prelude.Maybe Prelude.UTCTime)
+dataset_lastModifiedDate = Lens.lens (\Dataset' {lastModifiedDate} -> lastModifiedDate) (\s@Dataset' {} a -> s {lastModifiedDate = a} :: Dataset) Prelude.. Lens.mapping Data._Time
+
+-- | Number of records in this dataset.
+dataset_numRecords :: Lens.Lens' Dataset (Prelude.Maybe Prelude.Integer)
+dataset_numRecords = Lens.lens (\Dataset' {numRecords} -> numRecords) (\s@Dataset' {} a -> s {numRecords = a} :: Dataset)
+
+instance Data.FromJSON Dataset where
+  parseJSON =
+    Data.withObject
+      "Dataset"
+      ( \x ->
+          Dataset'
+            Prelude.<$> (x Data..:? "CreationDate")
+            Prelude.<*> (x Data..:? "DataStorage")
+            Prelude.<*> (x Data..:? "DatasetName")
+            Prelude.<*> (x Data..:? "IdentityId")
+            Prelude.<*> (x Data..:? "LastModifiedBy")
+            Prelude.<*> (x Data..:? "LastModifiedDate")
+            Prelude.<*> (x Data..:? "NumRecords")
+      )
+
+instance Prelude.Hashable Dataset where
+  hashWithSalt _salt Dataset' {..} =
+    _salt
+      `Prelude.hashWithSalt` creationDate
+      `Prelude.hashWithSalt` dataStorage
+      `Prelude.hashWithSalt` datasetName
+      `Prelude.hashWithSalt` identityId
+      `Prelude.hashWithSalt` lastModifiedBy
+      `Prelude.hashWithSalt` lastModifiedDate
+      `Prelude.hashWithSalt` numRecords
+
+instance Prelude.NFData Dataset where
+  rnf Dataset' {..} =
+    Prelude.rnf creationDate
+      `Prelude.seq` Prelude.rnf dataStorage
+      `Prelude.seq` Prelude.rnf datasetName
+      `Prelude.seq` Prelude.rnf identityId
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedDate
+      `Prelude.seq` Prelude.rnf numRecords
diff --git a/gen/Amazonka/CognitoSync/Types/IdentityPoolUsage.hs b/gen/Amazonka/CognitoSync/Types/IdentityPoolUsage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/Types/IdentityPoolUsage.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.Types.IdentityPoolUsage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.CognitoSync.Types.IdentityPoolUsage where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Usage information for the identity pool.
+--
+-- /See:/ 'newIdentityPoolUsage' smart constructor.
+data IdentityPoolUsage = IdentityPoolUsage'
+  { -- | Data storage information for the identity pool.
+    dataStorage :: Prelude.Maybe Prelude.Integer,
+    -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. GUID generation is unique within a region.
+    identityPoolId :: Prelude.Maybe Prelude.Text,
+    -- | Date on which the identity pool was last modified.
+    lastModifiedDate :: Prelude.Maybe Data.POSIX,
+    -- | Number of sync sessions for the identity pool.
+    syncSessionsCount :: Prelude.Maybe Prelude.Integer
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IdentityPoolUsage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataStorage', 'identityPoolUsage_dataStorage' - Data storage information for the identity pool.
+--
+-- 'identityPoolId', 'identityPoolUsage_identityPoolId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+--
+-- 'lastModifiedDate', 'identityPoolUsage_lastModifiedDate' - Date on which the identity pool was last modified.
+--
+-- 'syncSessionsCount', 'identityPoolUsage_syncSessionsCount' - Number of sync sessions for the identity pool.
+newIdentityPoolUsage ::
+  IdentityPoolUsage
+newIdentityPoolUsage =
+  IdentityPoolUsage'
+    { dataStorage = Prelude.Nothing,
+      identityPoolId = Prelude.Nothing,
+      lastModifiedDate = Prelude.Nothing,
+      syncSessionsCount = Prelude.Nothing
+    }
+
+-- | Data storage information for the identity pool.
+identityPoolUsage_dataStorage :: Lens.Lens' IdentityPoolUsage (Prelude.Maybe Prelude.Integer)
+identityPoolUsage_dataStorage = Lens.lens (\IdentityPoolUsage' {dataStorage} -> dataStorage) (\s@IdentityPoolUsage' {} a -> s {dataStorage = a} :: IdentityPoolUsage)
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+identityPoolUsage_identityPoolId :: Lens.Lens' IdentityPoolUsage (Prelude.Maybe Prelude.Text)
+identityPoolUsage_identityPoolId = Lens.lens (\IdentityPoolUsage' {identityPoolId} -> identityPoolId) (\s@IdentityPoolUsage' {} a -> s {identityPoolId = a} :: IdentityPoolUsage)
+
+-- | Date on which the identity pool was last modified.
+identityPoolUsage_lastModifiedDate :: Lens.Lens' IdentityPoolUsage (Prelude.Maybe Prelude.UTCTime)
+identityPoolUsage_lastModifiedDate = Lens.lens (\IdentityPoolUsage' {lastModifiedDate} -> lastModifiedDate) (\s@IdentityPoolUsage' {} a -> s {lastModifiedDate = a} :: IdentityPoolUsage) Prelude.. Lens.mapping Data._Time
+
+-- | Number of sync sessions for the identity pool.
+identityPoolUsage_syncSessionsCount :: Lens.Lens' IdentityPoolUsage (Prelude.Maybe Prelude.Integer)
+identityPoolUsage_syncSessionsCount = Lens.lens (\IdentityPoolUsage' {syncSessionsCount} -> syncSessionsCount) (\s@IdentityPoolUsage' {} a -> s {syncSessionsCount = a} :: IdentityPoolUsage)
+
+instance Data.FromJSON IdentityPoolUsage where
+  parseJSON =
+    Data.withObject
+      "IdentityPoolUsage"
+      ( \x ->
+          IdentityPoolUsage'
+            Prelude.<$> (x Data..:? "DataStorage")
+            Prelude.<*> (x Data..:? "IdentityPoolId")
+            Prelude.<*> (x Data..:? "LastModifiedDate")
+            Prelude.<*> (x Data..:? "SyncSessionsCount")
+      )
+
+instance Prelude.Hashable IdentityPoolUsage where
+  hashWithSalt _salt IdentityPoolUsage' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataStorage
+      `Prelude.hashWithSalt` identityPoolId
+      `Prelude.hashWithSalt` lastModifiedDate
+      `Prelude.hashWithSalt` syncSessionsCount
+
+instance Prelude.NFData IdentityPoolUsage where
+  rnf IdentityPoolUsage' {..} =
+    Prelude.rnf dataStorage
+      `Prelude.seq` Prelude.rnf identityPoolId
+      `Prelude.seq` Prelude.rnf lastModifiedDate
+      `Prelude.seq` Prelude.rnf syncSessionsCount
diff --git a/gen/Amazonka/CognitoSync/Types/IdentityUsage.hs b/gen/Amazonka/CognitoSync/Types/IdentityUsage.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/Types/IdentityUsage.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.Types.IdentityUsage
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.CognitoSync.Types.IdentityUsage where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Usage information for the identity.
+--
+-- /See:/ 'newIdentityUsage' smart constructor.
+data IdentityUsage = IdentityUsage'
+  { -- | Total data storage for this identity.
+    dataStorage :: Prelude.Maybe Prelude.Integer,
+    -- | Number of datasets for the identity.
+    datasetCount :: Prelude.Maybe Prelude.Int,
+    -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. GUID generation is unique within a region.
+    identityId :: Prelude.Maybe Prelude.Text,
+    -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. GUID generation is unique within a region.
+    identityPoolId :: Prelude.Maybe Prelude.Text,
+    -- | Date on which the identity was last modified.
+    lastModifiedDate :: Prelude.Maybe Data.POSIX
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'IdentityUsage' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'dataStorage', 'identityUsage_dataStorage' - Total data storage for this identity.
+--
+-- 'datasetCount', 'identityUsage_datasetCount' - Number of datasets for the identity.
+--
+-- 'identityId', 'identityUsage_identityId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+--
+-- 'identityPoolId', 'identityUsage_identityPoolId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+--
+-- 'lastModifiedDate', 'identityUsage_lastModifiedDate' - Date on which the identity was last modified.
+newIdentityUsage ::
+  IdentityUsage
+newIdentityUsage =
+  IdentityUsage'
+    { dataStorage = Prelude.Nothing,
+      datasetCount = Prelude.Nothing,
+      identityId = Prelude.Nothing,
+      identityPoolId = Prelude.Nothing,
+      lastModifiedDate = Prelude.Nothing
+    }
+
+-- | Total data storage for this identity.
+identityUsage_dataStorage :: Lens.Lens' IdentityUsage (Prelude.Maybe Prelude.Integer)
+identityUsage_dataStorage = Lens.lens (\IdentityUsage' {dataStorage} -> dataStorage) (\s@IdentityUsage' {} a -> s {dataStorage = a} :: IdentityUsage)
+
+-- | Number of datasets for the identity.
+identityUsage_datasetCount :: Lens.Lens' IdentityUsage (Prelude.Maybe Prelude.Int)
+identityUsage_datasetCount = Lens.lens (\IdentityUsage' {datasetCount} -> datasetCount) (\s@IdentityUsage' {} a -> s {datasetCount = a} :: IdentityUsage)
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+identityUsage_identityId :: Lens.Lens' IdentityUsage (Prelude.Maybe Prelude.Text)
+identityUsage_identityId = Lens.lens (\IdentityUsage' {identityId} -> identityId) (\s@IdentityUsage' {} a -> s {identityId = a} :: IdentityUsage)
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+identityUsage_identityPoolId :: Lens.Lens' IdentityUsage (Prelude.Maybe Prelude.Text)
+identityUsage_identityPoolId = Lens.lens (\IdentityUsage' {identityPoolId} -> identityPoolId) (\s@IdentityUsage' {} a -> s {identityPoolId = a} :: IdentityUsage)
+
+-- | Date on which the identity was last modified.
+identityUsage_lastModifiedDate :: Lens.Lens' IdentityUsage (Prelude.Maybe Prelude.UTCTime)
+identityUsage_lastModifiedDate = Lens.lens (\IdentityUsage' {lastModifiedDate} -> lastModifiedDate) (\s@IdentityUsage' {} a -> s {lastModifiedDate = a} :: IdentityUsage) Prelude.. Lens.mapping Data._Time
+
+instance Data.FromJSON IdentityUsage where
+  parseJSON =
+    Data.withObject
+      "IdentityUsage"
+      ( \x ->
+          IdentityUsage'
+            Prelude.<$> (x Data..:? "DataStorage")
+            Prelude.<*> (x Data..:? "DatasetCount")
+            Prelude.<*> (x Data..:? "IdentityId")
+            Prelude.<*> (x Data..:? "IdentityPoolId")
+            Prelude.<*> (x Data..:? "LastModifiedDate")
+      )
+
+instance Prelude.Hashable IdentityUsage where
+  hashWithSalt _salt IdentityUsage' {..} =
+    _salt
+      `Prelude.hashWithSalt` dataStorage
+      `Prelude.hashWithSalt` datasetCount
+      `Prelude.hashWithSalt` identityId
+      `Prelude.hashWithSalt` identityPoolId
+      `Prelude.hashWithSalt` lastModifiedDate
+
+instance Prelude.NFData IdentityUsage where
+  rnf IdentityUsage' {..} =
+    Prelude.rnf dataStorage
+      `Prelude.seq` Prelude.rnf datasetCount
+      `Prelude.seq` Prelude.rnf identityId
+      `Prelude.seq` Prelude.rnf identityPoolId
+      `Prelude.seq` Prelude.rnf lastModifiedDate
diff --git a/gen/Amazonka/CognitoSync/Types/Operation.hs b/gen/Amazonka/CognitoSync/Types/Operation.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/Types/Operation.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.Types.Operation
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.CognitoSync.Types.Operation
+  ( Operation
+      ( ..,
+        Operation_Remove,
+        Operation_Replace
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Operation = Operation'
+  { fromOperation ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Operation_Remove :: Operation
+pattern Operation_Remove = Operation' "remove"
+
+pattern Operation_Replace :: Operation
+pattern Operation_Replace = Operation' "replace"
+
+{-# COMPLETE
+  Operation_Remove,
+  Operation_Replace,
+  Operation'
+  #-}
diff --git a/gen/Amazonka/CognitoSync/Types/Platform.hs b/gen/Amazonka/CognitoSync/Types/Platform.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/Types/Platform.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.Types.Platform
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.CognitoSync.Types.Platform
+  ( Platform
+      ( ..,
+        Platform_ADM,
+        Platform_APNS,
+        Platform_APNS_SANDBOX,
+        Platform_GCM
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype Platform = Platform'
+  { fromPlatform ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern Platform_ADM :: Platform
+pattern Platform_ADM = Platform' "ADM"
+
+pattern Platform_APNS :: Platform
+pattern Platform_APNS = Platform' "APNS"
+
+pattern Platform_APNS_SANDBOX :: Platform
+pattern Platform_APNS_SANDBOX = Platform' "APNS_SANDBOX"
+
+pattern Platform_GCM :: Platform
+pattern Platform_GCM = Platform' "GCM"
+
+{-# COMPLETE
+  Platform_ADM,
+  Platform_APNS,
+  Platform_APNS_SANDBOX,
+  Platform_GCM,
+  Platform'
+  #-}
diff --git a/gen/Amazonka/CognitoSync/Types/PushSync.hs b/gen/Amazonka/CognitoSync/Types/PushSync.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/Types/PushSync.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.Types.PushSync
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.CognitoSync.Types.PushSync where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | Configuration options to be applied to the identity pool.
+--
+-- /See:/ 'newPushSync' smart constructor.
+data PushSync = PushSync'
+  { -- | List of SNS platform application ARNs that could be used by clients.
+    applicationArns :: Prelude.Maybe [Prelude.Text],
+    -- | A role configured to allow Cognito to call SNS on behalf of the
+    -- developer.
+    roleArn :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PushSync' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'applicationArns', 'pushSync_applicationArns' - List of SNS platform application ARNs that could be used by clients.
+--
+-- 'roleArn', 'pushSync_roleArn' - A role configured to allow Cognito to call SNS on behalf of the
+-- developer.
+newPushSync ::
+  PushSync
+newPushSync =
+  PushSync'
+    { applicationArns = Prelude.Nothing,
+      roleArn = Prelude.Nothing
+    }
+
+-- | List of SNS platform application ARNs that could be used by clients.
+pushSync_applicationArns :: Lens.Lens' PushSync (Prelude.Maybe [Prelude.Text])
+pushSync_applicationArns = Lens.lens (\PushSync' {applicationArns} -> applicationArns) (\s@PushSync' {} a -> s {applicationArns = a} :: PushSync) Prelude.. Lens.mapping Lens.coerced
+
+-- | A role configured to allow Cognito to call SNS on behalf of the
+-- developer.
+pushSync_roleArn :: Lens.Lens' PushSync (Prelude.Maybe Prelude.Text)
+pushSync_roleArn = Lens.lens (\PushSync' {roleArn} -> roleArn) (\s@PushSync' {} a -> s {roleArn = a} :: PushSync)
+
+instance Data.FromJSON PushSync where
+  parseJSON =
+    Data.withObject
+      "PushSync"
+      ( \x ->
+          PushSync'
+            Prelude.<$> ( x
+                            Data..:? "ApplicationArns"
+                            Data..!= Prelude.mempty
+                        )
+            Prelude.<*> (x Data..:? "RoleArn")
+      )
+
+instance Prelude.Hashable PushSync where
+  hashWithSalt _salt PushSync' {..} =
+    _salt
+      `Prelude.hashWithSalt` applicationArns
+      `Prelude.hashWithSalt` roleArn
+
+instance Prelude.NFData PushSync where
+  rnf PushSync' {..} =
+    Prelude.rnf applicationArns
+      `Prelude.seq` Prelude.rnf roleArn
+
+instance Data.ToJSON PushSync where
+  toJSON PushSync' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ApplicationArns" Data..=)
+              Prelude.<$> applicationArns,
+            ("RoleArn" Data..=) Prelude.<$> roleArn
+          ]
+      )
diff --git a/gen/Amazonka/CognitoSync/Types/Record.hs b/gen/Amazonka/CognitoSync/Types/Record.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/Types/Record.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.Types.Record
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.CognitoSync.Types.Record where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | The basic data structure of a dataset.
+--
+-- /See:/ 'newRecord' smart constructor.
+data Record = Record'
+  { -- | The last modified date of the client device.
+    deviceLastModifiedDate :: Prelude.Maybe Data.POSIX,
+    -- | The key for the record.
+    key :: Prelude.Maybe Prelude.Text,
+    -- | The user\/device that made the last change to this record.
+    lastModifiedBy :: Prelude.Maybe Prelude.Text,
+    -- | The date on which the record was last modified.
+    lastModifiedDate :: Prelude.Maybe Data.POSIX,
+    -- | The server sync count for this record.
+    syncCount :: Prelude.Maybe Prelude.Integer,
+    -- | The value for the record.
+    value :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Record' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'deviceLastModifiedDate', 'record_deviceLastModifiedDate' - The last modified date of the client device.
+--
+-- 'key', 'record_key' - The key for the record.
+--
+-- 'lastModifiedBy', 'record_lastModifiedBy' - The user\/device that made the last change to this record.
+--
+-- 'lastModifiedDate', 'record_lastModifiedDate' - The date on which the record was last modified.
+--
+-- 'syncCount', 'record_syncCount' - The server sync count for this record.
+--
+-- 'value', 'record_value' - The value for the record.
+newRecord ::
+  Record
+newRecord =
+  Record'
+    { deviceLastModifiedDate = Prelude.Nothing,
+      key = Prelude.Nothing,
+      lastModifiedBy = Prelude.Nothing,
+      lastModifiedDate = Prelude.Nothing,
+      syncCount = Prelude.Nothing,
+      value = Prelude.Nothing
+    }
+
+-- | The last modified date of the client device.
+record_deviceLastModifiedDate :: Lens.Lens' Record (Prelude.Maybe Prelude.UTCTime)
+record_deviceLastModifiedDate = Lens.lens (\Record' {deviceLastModifiedDate} -> deviceLastModifiedDate) (\s@Record' {} a -> s {deviceLastModifiedDate = a} :: Record) Prelude.. Lens.mapping Data._Time
+
+-- | The key for the record.
+record_key :: Lens.Lens' Record (Prelude.Maybe Prelude.Text)
+record_key = Lens.lens (\Record' {key} -> key) (\s@Record' {} a -> s {key = a} :: Record)
+
+-- | The user\/device that made the last change to this record.
+record_lastModifiedBy :: Lens.Lens' Record (Prelude.Maybe Prelude.Text)
+record_lastModifiedBy = Lens.lens (\Record' {lastModifiedBy} -> lastModifiedBy) (\s@Record' {} a -> s {lastModifiedBy = a} :: Record)
+
+-- | The date on which the record was last modified.
+record_lastModifiedDate :: Lens.Lens' Record (Prelude.Maybe Prelude.UTCTime)
+record_lastModifiedDate = Lens.lens (\Record' {lastModifiedDate} -> lastModifiedDate) (\s@Record' {} a -> s {lastModifiedDate = a} :: Record) Prelude.. Lens.mapping Data._Time
+
+-- | The server sync count for this record.
+record_syncCount :: Lens.Lens' Record (Prelude.Maybe Prelude.Integer)
+record_syncCount = Lens.lens (\Record' {syncCount} -> syncCount) (\s@Record' {} a -> s {syncCount = a} :: Record)
+
+-- | The value for the record.
+record_value :: Lens.Lens' Record (Prelude.Maybe Prelude.Text)
+record_value = Lens.lens (\Record' {value} -> value) (\s@Record' {} a -> s {value = a} :: Record)
+
+instance Data.FromJSON Record where
+  parseJSON =
+    Data.withObject
+      "Record"
+      ( \x ->
+          Record'
+            Prelude.<$> (x Data..:? "DeviceLastModifiedDate")
+            Prelude.<*> (x Data..:? "Key")
+            Prelude.<*> (x Data..:? "LastModifiedBy")
+            Prelude.<*> (x Data..:? "LastModifiedDate")
+            Prelude.<*> (x Data..:? "SyncCount")
+            Prelude.<*> (x Data..:? "Value")
+      )
+
+instance Prelude.Hashable Record where
+  hashWithSalt _salt Record' {..} =
+    _salt
+      `Prelude.hashWithSalt` deviceLastModifiedDate
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` lastModifiedBy
+      `Prelude.hashWithSalt` lastModifiedDate
+      `Prelude.hashWithSalt` syncCount
+      `Prelude.hashWithSalt` value
+
+instance Prelude.NFData Record where
+  rnf Record' {..} =
+    Prelude.rnf deviceLastModifiedDate
+      `Prelude.seq` Prelude.rnf key
+      `Prelude.seq` Prelude.rnf lastModifiedBy
+      `Prelude.seq` Prelude.rnf lastModifiedDate
+      `Prelude.seq` Prelude.rnf syncCount
+      `Prelude.seq` Prelude.rnf value
diff --git a/gen/Amazonka/CognitoSync/Types/RecordPatch.hs b/gen/Amazonka/CognitoSync/Types/RecordPatch.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/Types/RecordPatch.hs
@@ -0,0 +1,128 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.Types.RecordPatch
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.CognitoSync.Types.RecordPatch where
+
+import Amazonka.CognitoSync.Types.Operation
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+-- | An update operation for a record.
+--
+-- /See:/ 'newRecordPatch' smart constructor.
+data RecordPatch = RecordPatch'
+  { -- | The last modified date of the client device.
+    deviceLastModifiedDate :: Prelude.Maybe Data.POSIX,
+    -- | The value associated with the record patch.
+    value :: Prelude.Maybe Prelude.Text,
+    -- | An operation, either replace or remove.
+    op :: Operation,
+    -- | The key associated with the record patch.
+    key :: Prelude.Text,
+    -- | Last known server sync count for this record. Set to 0 if unknown.
+    syncCount :: Prelude.Integer
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RecordPatch' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'deviceLastModifiedDate', 'recordPatch_deviceLastModifiedDate' - The last modified date of the client device.
+--
+-- 'value', 'recordPatch_value' - The value associated with the record patch.
+--
+-- 'op', 'recordPatch_op' - An operation, either replace or remove.
+--
+-- 'key', 'recordPatch_key' - The key associated with the record patch.
+--
+-- 'syncCount', 'recordPatch_syncCount' - Last known server sync count for this record. Set to 0 if unknown.
+newRecordPatch ::
+  -- | 'op'
+  Operation ->
+  -- | 'key'
+  Prelude.Text ->
+  -- | 'syncCount'
+  Prelude.Integer ->
+  RecordPatch
+newRecordPatch pOp_ pKey_ pSyncCount_ =
+  RecordPatch'
+    { deviceLastModifiedDate =
+        Prelude.Nothing,
+      value = Prelude.Nothing,
+      op = pOp_,
+      key = pKey_,
+      syncCount = pSyncCount_
+    }
+
+-- | The last modified date of the client device.
+recordPatch_deviceLastModifiedDate :: Lens.Lens' RecordPatch (Prelude.Maybe Prelude.UTCTime)
+recordPatch_deviceLastModifiedDate = Lens.lens (\RecordPatch' {deviceLastModifiedDate} -> deviceLastModifiedDate) (\s@RecordPatch' {} a -> s {deviceLastModifiedDate = a} :: RecordPatch) Prelude.. Lens.mapping Data._Time
+
+-- | The value associated with the record patch.
+recordPatch_value :: Lens.Lens' RecordPatch (Prelude.Maybe Prelude.Text)
+recordPatch_value = Lens.lens (\RecordPatch' {value} -> value) (\s@RecordPatch' {} a -> s {value = a} :: RecordPatch)
+
+-- | An operation, either replace or remove.
+recordPatch_op :: Lens.Lens' RecordPatch Operation
+recordPatch_op = Lens.lens (\RecordPatch' {op} -> op) (\s@RecordPatch' {} a -> s {op = a} :: RecordPatch)
+
+-- | The key associated with the record patch.
+recordPatch_key :: Lens.Lens' RecordPatch Prelude.Text
+recordPatch_key = Lens.lens (\RecordPatch' {key} -> key) (\s@RecordPatch' {} a -> s {key = a} :: RecordPatch)
+
+-- | Last known server sync count for this record. Set to 0 if unknown.
+recordPatch_syncCount :: Lens.Lens' RecordPatch Prelude.Integer
+recordPatch_syncCount = Lens.lens (\RecordPatch' {syncCount} -> syncCount) (\s@RecordPatch' {} a -> s {syncCount = a} :: RecordPatch)
+
+instance Prelude.Hashable RecordPatch where
+  hashWithSalt _salt RecordPatch' {..} =
+    _salt
+      `Prelude.hashWithSalt` deviceLastModifiedDate
+      `Prelude.hashWithSalt` value
+      `Prelude.hashWithSalt` op
+      `Prelude.hashWithSalt` key
+      `Prelude.hashWithSalt` syncCount
+
+instance Prelude.NFData RecordPatch where
+  rnf RecordPatch' {..} =
+    Prelude.rnf deviceLastModifiedDate
+      `Prelude.seq` Prelude.rnf value
+      `Prelude.seq` Prelude.rnf op
+      `Prelude.seq` Prelude.rnf key
+      `Prelude.seq` Prelude.rnf syncCount
+
+instance Data.ToJSON RecordPatch where
+  toJSON RecordPatch' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DeviceLastModifiedDate" Data..=)
+              Prelude.<$> deviceLastModifiedDate,
+            ("Value" Data..=) Prelude.<$> value,
+            Prelude.Just ("Op" Data..= op),
+            Prelude.Just ("Key" Data..= key),
+            Prelude.Just ("SyncCount" Data..= syncCount)
+          ]
+      )
diff --git a/gen/Amazonka/CognitoSync/Types/StreamingStatus.hs b/gen/Amazonka/CognitoSync/Types/StreamingStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/Types/StreamingStatus.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE LambdaCase #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.Types.StreamingStatus
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.CognitoSync.Types.StreamingStatus
+  ( StreamingStatus
+      ( ..,
+        StreamingStatus_DISABLED,
+        StreamingStatus_ENABLED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype StreamingStatus = StreamingStatus'
+  { fromStreamingStatus ::
+      Data.Text
+  }
+  deriving stock
+    ( Prelude.Show,
+      Prelude.Read,
+      Prelude.Eq,
+      Prelude.Ord,
+      Prelude.Generic
+    )
+  deriving newtype
+    ( Prelude.Hashable,
+      Prelude.NFData,
+      Data.FromText,
+      Data.ToText,
+      Data.ToByteString,
+      Data.ToLog,
+      Data.ToHeader,
+      Data.ToQuery,
+      Data.FromJSON,
+      Data.FromJSONKey,
+      Data.ToJSON,
+      Data.ToJSONKey,
+      Data.FromXML,
+      Data.ToXML
+    )
+
+pattern StreamingStatus_DISABLED :: StreamingStatus
+pattern StreamingStatus_DISABLED = StreamingStatus' "DISABLED"
+
+pattern StreamingStatus_ENABLED :: StreamingStatus
+pattern StreamingStatus_ENABLED = StreamingStatus' "ENABLED"
+
+{-# COMPLETE
+  StreamingStatus_DISABLED,
+  StreamingStatus_ENABLED,
+  StreamingStatus'
+  #-}
diff --git a/gen/Amazonka/CognitoSync/UnsubscribeFromDataset.hs b/gen/Amazonka/CognitoSync/UnsubscribeFromDataset.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/UnsubscribeFromDataset.hs
@@ -0,0 +1,223 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.UnsubscribeFromDataset
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Unsubscribes from receiving notifications when a dataset is modified by
+-- another device.
+--
+-- This API can only be called with temporary credentials provided by
+-- Cognito Identity. You cannot call this API with developer credentials.
+module Amazonka.CognitoSync.UnsubscribeFromDataset
+  ( -- * Creating a Request
+    UnsubscribeFromDataset (..),
+    newUnsubscribeFromDataset,
+
+    -- * Request Lenses
+    unsubscribeFromDataset_identityPoolId,
+    unsubscribeFromDataset_identityId,
+    unsubscribeFromDataset_datasetName,
+    unsubscribeFromDataset_deviceId,
+
+    -- * Destructuring the Response
+    UnsubscribeFromDatasetResponse (..),
+    newUnsubscribeFromDatasetResponse,
+
+    -- * Response Lenses
+    unsubscribeFromDatasetResponse_httpStatus,
+  )
+where
+
+import Amazonka.CognitoSync.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | A request to UnsubscribeFromDataset.
+--
+-- /See:/ 'newUnsubscribeFromDataset' smart constructor.
+data UnsubscribeFromDataset = UnsubscribeFromDataset'
+  { -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. The ID of the pool to which this identity belongs.
+    identityPoolId :: Prelude.Text,
+    -- | Unique ID for this identity.
+    identityId :: Prelude.Text,
+    -- | The name of the dataset from which to unsubcribe.
+    datasetName :: Prelude.Text,
+    -- | The unique ID generated for this device by Cognito.
+    deviceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UnsubscribeFromDataset' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'identityPoolId', 'unsubscribeFromDataset_identityPoolId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. The ID of the pool to which this identity belongs.
+--
+-- 'identityId', 'unsubscribeFromDataset_identityId' - Unique ID for this identity.
+--
+-- 'datasetName', 'unsubscribeFromDataset_datasetName' - The name of the dataset from which to unsubcribe.
+--
+-- 'deviceId', 'unsubscribeFromDataset_deviceId' - The unique ID generated for this device by Cognito.
+newUnsubscribeFromDataset ::
+  -- | 'identityPoolId'
+  Prelude.Text ->
+  -- | 'identityId'
+  Prelude.Text ->
+  -- | 'datasetName'
+  Prelude.Text ->
+  -- | 'deviceId'
+  Prelude.Text ->
+  UnsubscribeFromDataset
+newUnsubscribeFromDataset
+  pIdentityPoolId_
+  pIdentityId_
+  pDatasetName_
+  pDeviceId_ =
+    UnsubscribeFromDataset'
+      { identityPoolId =
+          pIdentityPoolId_,
+        identityId = pIdentityId_,
+        datasetName = pDatasetName_,
+        deviceId = pDeviceId_
+      }
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. The ID of the pool to which this identity belongs.
+unsubscribeFromDataset_identityPoolId :: Lens.Lens' UnsubscribeFromDataset Prelude.Text
+unsubscribeFromDataset_identityPoolId = Lens.lens (\UnsubscribeFromDataset' {identityPoolId} -> identityPoolId) (\s@UnsubscribeFromDataset' {} a -> s {identityPoolId = a} :: UnsubscribeFromDataset)
+
+-- | Unique ID for this identity.
+unsubscribeFromDataset_identityId :: Lens.Lens' UnsubscribeFromDataset Prelude.Text
+unsubscribeFromDataset_identityId = Lens.lens (\UnsubscribeFromDataset' {identityId} -> identityId) (\s@UnsubscribeFromDataset' {} a -> s {identityId = a} :: UnsubscribeFromDataset)
+
+-- | The name of the dataset from which to unsubcribe.
+unsubscribeFromDataset_datasetName :: Lens.Lens' UnsubscribeFromDataset Prelude.Text
+unsubscribeFromDataset_datasetName = Lens.lens (\UnsubscribeFromDataset' {datasetName} -> datasetName) (\s@UnsubscribeFromDataset' {} a -> s {datasetName = a} :: UnsubscribeFromDataset)
+
+-- | The unique ID generated for this device by Cognito.
+unsubscribeFromDataset_deviceId :: Lens.Lens' UnsubscribeFromDataset Prelude.Text
+unsubscribeFromDataset_deviceId = Lens.lens (\UnsubscribeFromDataset' {deviceId} -> deviceId) (\s@UnsubscribeFromDataset' {} a -> s {deviceId = a} :: UnsubscribeFromDataset)
+
+instance Core.AWSRequest UnsubscribeFromDataset where
+  type
+    AWSResponse UnsubscribeFromDataset =
+      UnsubscribeFromDatasetResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          UnsubscribeFromDatasetResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UnsubscribeFromDataset where
+  hashWithSalt _salt UnsubscribeFromDataset' {..} =
+    _salt
+      `Prelude.hashWithSalt` identityPoolId
+      `Prelude.hashWithSalt` identityId
+      `Prelude.hashWithSalt` datasetName
+      `Prelude.hashWithSalt` deviceId
+
+instance Prelude.NFData UnsubscribeFromDataset where
+  rnf UnsubscribeFromDataset' {..} =
+    Prelude.rnf identityPoolId
+      `Prelude.seq` Prelude.rnf identityId
+      `Prelude.seq` Prelude.rnf datasetName
+      `Prelude.seq` Prelude.rnf deviceId
+
+instance Data.ToHeaders UnsubscribeFromDataset where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath UnsubscribeFromDataset where
+  toPath UnsubscribeFromDataset' {..} =
+    Prelude.mconcat
+      [ "/identitypools/",
+        Data.toBS identityPoolId,
+        "/identities/",
+        Data.toBS identityId,
+        "/datasets/",
+        Data.toBS datasetName,
+        "/subscriptions/",
+        Data.toBS deviceId
+      ]
+
+instance Data.ToQuery UnsubscribeFromDataset where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | Response to an UnsubscribeFromDataset request.
+--
+-- /See:/ 'newUnsubscribeFromDatasetResponse' smart constructor.
+data UnsubscribeFromDatasetResponse = UnsubscribeFromDatasetResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UnsubscribeFromDatasetResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'httpStatus', 'unsubscribeFromDatasetResponse_httpStatus' - The response's http status code.
+newUnsubscribeFromDatasetResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UnsubscribeFromDatasetResponse
+newUnsubscribeFromDatasetResponse pHttpStatus_ =
+  UnsubscribeFromDatasetResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+unsubscribeFromDatasetResponse_httpStatus :: Lens.Lens' UnsubscribeFromDatasetResponse Prelude.Int
+unsubscribeFromDatasetResponse_httpStatus = Lens.lens (\UnsubscribeFromDatasetResponse' {httpStatus} -> httpStatus) (\s@UnsubscribeFromDatasetResponse' {} a -> s {httpStatus = a} :: UnsubscribeFromDatasetResponse)
+
+instance
+  Prelude.NFData
+    UnsubscribeFromDatasetResponse
+  where
+  rnf UnsubscribeFromDatasetResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CognitoSync/UpdateRecords.hs b/gen/Amazonka/CognitoSync/UpdateRecords.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/UpdateRecords.hs
@@ -0,0 +1,304 @@
+{-# LANGUAGE DeriveGeneric #-}
+{-# LANGUAGE DuplicateRecordFields #-}
+{-# LANGUAGE NamedFieldPuns #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE RecordWildCards #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+{-# OPTIONS_GHC -fno-warn-unused-matches #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.UpdateRecords
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Posts updates to records and adds and deletes records for a dataset and
+-- user.
+--
+-- The sync count in the record patch is your last known sync count for
+-- that record. The server will reject an UpdateRecords request with a
+-- ResourceConflictException if you try to patch a record with a new value
+-- but a stale sync count.
+--
+-- For example, if the sync count on the server is 5 for a key called
+-- highScore and you try and submit a new highScore with sync count of 4,
+-- the request will be rejected. To obtain the current sync count for a
+-- record, call ListRecords. On a successful update of the record, the
+-- response returns the new sync count for that record. You should present
+-- that sync count the next time you try to update that same record. When
+-- the record does not exist, specify the sync count as 0.
+--
+-- This API can be called with temporary user credentials provided by
+-- Cognito Identity or with developer credentials.
+module Amazonka.CognitoSync.UpdateRecords
+  ( -- * Creating a Request
+    UpdateRecords (..),
+    newUpdateRecords,
+
+    -- * Request Lenses
+    updateRecords_clientContext,
+    updateRecords_deviceId,
+    updateRecords_recordPatches,
+    updateRecords_identityPoolId,
+    updateRecords_identityId,
+    updateRecords_datasetName,
+    updateRecords_syncSessionToken,
+
+    -- * Destructuring the Response
+    UpdateRecordsResponse (..),
+    newUpdateRecordsResponse,
+
+    -- * Response Lenses
+    updateRecordsResponse_records,
+    updateRecordsResponse_httpStatus,
+  )
+where
+
+import Amazonka.CognitoSync.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+
+-- | A request to post updates to records or add and delete records for a
+-- dataset and user.
+--
+-- /See:/ 'newUpdateRecords' smart constructor.
+data UpdateRecords = UpdateRecords'
+  { -- | Intended to supply a device ID that will populate the lastModifiedBy
+    -- field referenced in other methods. The ClientContext field is not yet
+    -- implemented.
+    clientContext :: Prelude.Maybe Prelude.Text,
+    -- | The unique ID generated for this device by Cognito.
+    deviceId :: Prelude.Maybe Prelude.Text,
+    -- | A list of patch operations.
+    recordPatches :: Prelude.Maybe [RecordPatch],
+    -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. GUID generation is unique within a region.
+    identityPoolId :: Prelude.Text,
+    -- | A name-spaced GUID (for example,
+    -- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+    -- Cognito. GUID generation is unique within a region.
+    identityId :: Prelude.Text,
+    -- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9,
+    -- \'_\' (underscore), \'-\' (dash), and \'.\' (dot).
+    datasetName :: Prelude.Text,
+    -- | The SyncSessionToken returned by a previous call to ListRecords for this
+    -- dataset and identity.
+    syncSessionToken :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateRecords' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'clientContext', 'updateRecords_clientContext' - Intended to supply a device ID that will populate the lastModifiedBy
+-- field referenced in other methods. The ClientContext field is not yet
+-- implemented.
+--
+-- 'deviceId', 'updateRecords_deviceId' - The unique ID generated for this device by Cognito.
+--
+-- 'recordPatches', 'updateRecords_recordPatches' - A list of patch operations.
+--
+-- 'identityPoolId', 'updateRecords_identityPoolId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+--
+-- 'identityId', 'updateRecords_identityId' - A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+--
+-- 'datasetName', 'updateRecords_datasetName' - A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9,
+-- \'_\' (underscore), \'-\' (dash), and \'.\' (dot).
+--
+-- 'syncSessionToken', 'updateRecords_syncSessionToken' - The SyncSessionToken returned by a previous call to ListRecords for this
+-- dataset and identity.
+newUpdateRecords ::
+  -- | 'identityPoolId'
+  Prelude.Text ->
+  -- | 'identityId'
+  Prelude.Text ->
+  -- | 'datasetName'
+  Prelude.Text ->
+  -- | 'syncSessionToken'
+  Prelude.Text ->
+  UpdateRecords
+newUpdateRecords
+  pIdentityPoolId_
+  pIdentityId_
+  pDatasetName_
+  pSyncSessionToken_ =
+    UpdateRecords'
+      { clientContext = Prelude.Nothing,
+        deviceId = Prelude.Nothing,
+        recordPatches = Prelude.Nothing,
+        identityPoolId = pIdentityPoolId_,
+        identityId = pIdentityId_,
+        datasetName = pDatasetName_,
+        syncSessionToken = pSyncSessionToken_
+      }
+
+-- | Intended to supply a device ID that will populate the lastModifiedBy
+-- field referenced in other methods. The ClientContext field is not yet
+-- implemented.
+updateRecords_clientContext :: Lens.Lens' UpdateRecords (Prelude.Maybe Prelude.Text)
+updateRecords_clientContext = Lens.lens (\UpdateRecords' {clientContext} -> clientContext) (\s@UpdateRecords' {} a -> s {clientContext = a} :: UpdateRecords)
+
+-- | The unique ID generated for this device by Cognito.
+updateRecords_deviceId :: Lens.Lens' UpdateRecords (Prelude.Maybe Prelude.Text)
+updateRecords_deviceId = Lens.lens (\UpdateRecords' {deviceId} -> deviceId) (\s@UpdateRecords' {} a -> s {deviceId = a} :: UpdateRecords)
+
+-- | A list of patch operations.
+updateRecords_recordPatches :: Lens.Lens' UpdateRecords (Prelude.Maybe [RecordPatch])
+updateRecords_recordPatches = Lens.lens (\UpdateRecords' {recordPatches} -> recordPatches) (\s@UpdateRecords' {} a -> s {recordPatches = a} :: UpdateRecords) Prelude.. Lens.mapping Lens.coerced
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+updateRecords_identityPoolId :: Lens.Lens' UpdateRecords Prelude.Text
+updateRecords_identityPoolId = Lens.lens (\UpdateRecords' {identityPoolId} -> identityPoolId) (\s@UpdateRecords' {} a -> s {identityPoolId = a} :: UpdateRecords)
+
+-- | A name-spaced GUID (for example,
+-- us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon
+-- Cognito. GUID generation is unique within a region.
+updateRecords_identityId :: Lens.Lens' UpdateRecords Prelude.Text
+updateRecords_identityId = Lens.lens (\UpdateRecords' {identityId} -> identityId) (\s@UpdateRecords' {} a -> s {identityId = a} :: UpdateRecords)
+
+-- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9,
+-- \'_\' (underscore), \'-\' (dash), and \'.\' (dot).
+updateRecords_datasetName :: Lens.Lens' UpdateRecords Prelude.Text
+updateRecords_datasetName = Lens.lens (\UpdateRecords' {datasetName} -> datasetName) (\s@UpdateRecords' {} a -> s {datasetName = a} :: UpdateRecords)
+
+-- | The SyncSessionToken returned by a previous call to ListRecords for this
+-- dataset and identity.
+updateRecords_syncSessionToken :: Lens.Lens' UpdateRecords Prelude.Text
+updateRecords_syncSessionToken = Lens.lens (\UpdateRecords' {syncSessionToken} -> syncSessionToken) (\s@UpdateRecords' {} a -> s {syncSessionToken = a} :: UpdateRecords)
+
+instance Core.AWSRequest UpdateRecords where
+  type
+    AWSResponse UpdateRecords =
+      UpdateRecordsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateRecordsResponse'
+            Prelude.<$> (x Data..?> "Records" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateRecords where
+  hashWithSalt _salt UpdateRecords' {..} =
+    _salt
+      `Prelude.hashWithSalt` clientContext
+      `Prelude.hashWithSalt` deviceId
+      `Prelude.hashWithSalt` recordPatches
+      `Prelude.hashWithSalt` identityPoolId
+      `Prelude.hashWithSalt` identityId
+      `Prelude.hashWithSalt` datasetName
+      `Prelude.hashWithSalt` syncSessionToken
+
+instance Prelude.NFData UpdateRecords where
+  rnf UpdateRecords' {..} =
+    Prelude.rnf clientContext
+      `Prelude.seq` Prelude.rnf deviceId
+      `Prelude.seq` Prelude.rnf recordPatches
+      `Prelude.seq` Prelude.rnf identityPoolId
+      `Prelude.seq` Prelude.rnf identityId
+      `Prelude.seq` Prelude.rnf datasetName
+      `Prelude.seq` Prelude.rnf syncSessionToken
+
+instance Data.ToHeaders UpdateRecords where
+  toHeaders UpdateRecords' {..} =
+    Prelude.mconcat
+      [ "x-amz-Client-Context" Data.=# clientContext,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToJSON UpdateRecords where
+  toJSON UpdateRecords' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("DeviceId" Data..=) Prelude.<$> deviceId,
+            ("RecordPatches" Data..=) Prelude.<$> recordPatches,
+            Prelude.Just
+              ("SyncSessionToken" Data..= syncSessionToken)
+          ]
+      )
+
+instance Data.ToPath UpdateRecords where
+  toPath UpdateRecords' {..} =
+    Prelude.mconcat
+      [ "/identitypools/",
+        Data.toBS identityPoolId,
+        "/identities/",
+        Data.toBS identityId,
+        "/datasets/",
+        Data.toBS datasetName
+      ]
+
+instance Data.ToQuery UpdateRecords where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | Returned for a successful UpdateRecordsRequest.
+--
+-- /See:/ 'newUpdateRecordsResponse' smart constructor.
+data UpdateRecordsResponse = UpdateRecordsResponse'
+  { -- | A list of records that have been updated.
+    records :: Prelude.Maybe [Record],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateRecordsResponse' with all optional fields omitted.
+--
+-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
+--
+-- The following record fields are available, with the corresponding lenses provided
+-- for backwards compatibility:
+--
+-- 'records', 'updateRecordsResponse_records' - A list of records that have been updated.
+--
+-- 'httpStatus', 'updateRecordsResponse_httpStatus' - The response's http status code.
+newUpdateRecordsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateRecordsResponse
+newUpdateRecordsResponse pHttpStatus_ =
+  UpdateRecordsResponse'
+    { records = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | A list of records that have been updated.
+updateRecordsResponse_records :: Lens.Lens' UpdateRecordsResponse (Prelude.Maybe [Record])
+updateRecordsResponse_records = Lens.lens (\UpdateRecordsResponse' {records} -> records) (\s@UpdateRecordsResponse' {} a -> s {records = a} :: UpdateRecordsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+updateRecordsResponse_httpStatus :: Lens.Lens' UpdateRecordsResponse Prelude.Int
+updateRecordsResponse_httpStatus = Lens.lens (\UpdateRecordsResponse' {httpStatus} -> httpStatus) (\s@UpdateRecordsResponse' {} a -> s {httpStatus = a} :: UpdateRecordsResponse)
+
+instance Prelude.NFData UpdateRecordsResponse where
+  rnf UpdateRecordsResponse' {..} =
+    Prelude.rnf records
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/CognitoSync/Waiters.hs b/gen/Amazonka/CognitoSync/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/CognitoSync/Waiters.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE DisambiguateRecordFields #-}
+{-# LANGUAGE OverloadedStrings #-}
+{-# LANGUAGE StrictData #-}
+{-# LANGUAGE TypeFamilies #-}
+{-# LANGUAGE NoImplicitPrelude #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Amazonka.CognitoSync.Waiters
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Amazonka.CognitoSync.Waiters where
+
+import Amazonka.CognitoSync.Lens
+import Amazonka.CognitoSync.Types
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Core.Lens.Internal as Lens
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
diff --git a/gen/Network/AWS/CognitoSync.hs b/gen/Network/AWS/CognitoSync.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync.hs
+++ /dev/null
@@ -1,249 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- __Amazon Cognito Sync__
---
--- Amazon Cognito Sync provides an AWS service and client library that enable cross-device syncing of application-related user data. High-level client libraries are available for both iOS and Android. You can use these libraries to persist data locally so that it's available even if the device is offline. Developer credentials don't need to be stored on the mobile device to access the service. You can use Amazon Cognito to obtain a normalized user ID and credentials. User data is persisted in a dataset that can store up to 1 MB of key-value pairs, and you can have up to 20 datasets per user identity.
---
--- With Amazon Cognito Sync, the data stored for each identity is accessible only to credentials assigned to that identity. In order to use the Cognito Sync service, you need to make API calls using credentials retrieved with <http://docs.aws.amazon.com/cognitoidentity/latest/APIReference/Welcome.html Amazon Cognito Identity service> .
---
--- If you want to use Cognito Sync in an Android or iOS application, you will probably want to make API calls via the AWS Mobile SDK. To learn more, see the <http://docs.aws.amazon.com/mobile/sdkforandroid/developerguide/cognito-sync.html Developer Guide for Android> and the <http://docs.aws.amazon.com/mobile/sdkforios/developerguide/cognito-sync.html Developer Guide for iOS> .
---
-module Network.AWS.CognitoSync
-    (
-    -- * Service Configuration
-      cognitoSync
-
-    -- * Errors
-    -- $errors
-
-    -- ** InvalidParameterException
-    , _InvalidParameterException
-
-    -- ** NotAuthorizedException
-    , _NotAuthorizedException
-
-    -- ** InternalErrorException
-    , _InternalErrorException
-
-    -- ** InvalidConfigurationException
-    , _InvalidConfigurationException
-
-    -- ** DuplicateRequestException
-    , _DuplicateRequestException
-
-    -- ** LambdaThrottledException
-    , _LambdaThrottledException
-
-    -- ** AlreadyStreamedException
-    , _AlreadyStreamedException
-
-    -- ** InvalidLambdaFunctionOutputException
-    , _InvalidLambdaFunctionOutputException
-
-    -- ** TooManyRequestsException
-    , _TooManyRequestsException
-
-    -- ** ConcurrentModificationException
-    , _ConcurrentModificationException
-
-    -- ** ResourceConflictException
-    , _ResourceConflictException
-
-    -- ** ResourceNotFoundException
-    , _ResourceNotFoundException
-
-    -- ** LimitExceededException
-    , _LimitExceededException
-
-    -- * Waiters
-    -- $waiters
-
-    -- * Operations
-    -- $operations
-
-    -- ** DescribeDataset
-    , module Network.AWS.CognitoSync.DescribeDataset
-
-    -- ** SetCognitoEvents
-    , module Network.AWS.CognitoSync.SetCognitoEvents
-
-    -- ** DescribeIdentityPoolUsage
-    , module Network.AWS.CognitoSync.DescribeIdentityPoolUsage
-
-    -- ** GetBulkPublishDetails
-    , module Network.AWS.CognitoSync.GetBulkPublishDetails
-
-    -- ** ListIdentityPoolUsage
-    , module Network.AWS.CognitoSync.ListIdentityPoolUsage
-
-    -- ** SetIdentityPoolConfiguration
-    , module Network.AWS.CognitoSync.SetIdentityPoolConfiguration
-
-    -- ** DeleteDataset
-    , module Network.AWS.CognitoSync.DeleteDataset
-
-    -- ** GetCognitoEvents
-    , module Network.AWS.CognitoSync.GetCognitoEvents
-
-    -- ** DescribeIdentityUsage
-    , module Network.AWS.CognitoSync.DescribeIdentityUsage
-
-    -- ** RegisterDevice
-    , module Network.AWS.CognitoSync.RegisterDevice
-
-    -- ** SubscribeToDataset
-    , module Network.AWS.CognitoSync.SubscribeToDataset
-
-    -- ** GetIdentityPoolConfiguration
-    , module Network.AWS.CognitoSync.GetIdentityPoolConfiguration
-
-    -- ** ListRecords
-    , module Network.AWS.CognitoSync.ListRecords
-
-    -- ** UnsubscribeFromDataset
-    , module Network.AWS.CognitoSync.UnsubscribeFromDataset
-
-    -- ** UpdateRecords
-    , module Network.AWS.CognitoSync.UpdateRecords
-
-    -- ** ListDatasets
-    , module Network.AWS.CognitoSync.ListDatasets
-
-    -- ** BulkPublish
-    , module Network.AWS.CognitoSync.BulkPublish
-
-    -- * Types
-
-    -- ** BulkPublishStatus
-    , BulkPublishStatus (..)
-
-    -- ** Operation
-    , Operation (..)
-
-    -- ** Platform
-    , Platform (..)
-
-    -- ** StreamingStatus
-    , StreamingStatus (..)
-
-    -- ** CognitoStreams
-    , CognitoStreams
-    , cognitoStreams
-    , csStreamingStatus
-    , csStreamName
-    , csRoleARN
-
-    -- ** Dataset
-    , Dataset
-    , dataset
-    , dLastModifiedDate
-    , dNumRecords
-    , dDataStorage
-    , dDatasetName
-    , dCreationDate
-    , dLastModifiedBy
-    , dIdentityId
-
-    -- ** IdentityPoolUsage
-    , IdentityPoolUsage
-    , identityPoolUsage
-    , ipuLastModifiedDate
-    , ipuIdentityPoolId
-    , ipuDataStorage
-    , ipuSyncSessionsCount
-
-    -- ** IdentityUsage
-    , IdentityUsage
-    , identityUsage
-    , iuLastModifiedDate
-    , iuIdentityPoolId
-    , iuDatasetCount
-    , iuDataStorage
-    , iuIdentityId
-
-    -- ** PushSync
-    , PushSync
-    , pushSync
-    , psApplicationARNs
-    , psRoleARN
-
-    -- ** Record
-    , Record
-    , record
-    , rSyncCount
-    , rDeviceLastModifiedDate
-    , rLastModifiedDate
-    , rValue
-    , rKey
-    , rLastModifiedBy
-
-    -- ** RecordPatch
-    , RecordPatch
-    , recordPatch
-    , rpDeviceLastModifiedDate
-    , rpValue
-    , rpOp
-    , rpKey
-    , rpSyncCount
-    ) where
-
-import Network.AWS.CognitoSync.BulkPublish
-import Network.AWS.CognitoSync.DeleteDataset
-import Network.AWS.CognitoSync.DescribeDataset
-import Network.AWS.CognitoSync.DescribeIdentityPoolUsage
-import Network.AWS.CognitoSync.DescribeIdentityUsage
-import Network.AWS.CognitoSync.GetBulkPublishDetails
-import Network.AWS.CognitoSync.GetCognitoEvents
-import Network.AWS.CognitoSync.GetIdentityPoolConfiguration
-import Network.AWS.CognitoSync.ListDatasets
-import Network.AWS.CognitoSync.ListIdentityPoolUsage
-import Network.AWS.CognitoSync.ListRecords
-import Network.AWS.CognitoSync.RegisterDevice
-import Network.AWS.CognitoSync.SetCognitoEvents
-import Network.AWS.CognitoSync.SetIdentityPoolConfiguration
-import Network.AWS.CognitoSync.SubscribeToDataset
-import Network.AWS.CognitoSync.Types
-import Network.AWS.CognitoSync.UnsubscribeFromDataset
-import Network.AWS.CognitoSync.UpdateRecords
-import Network.AWS.CognitoSync.Waiters
-
-{- $errors
-Error matchers are designed for use with the functions provided by
-<http://hackage.haskell.org/package/lens/docs/Control-Exception-Lens.html Control.Exception.Lens>.
-This allows catching (and rethrowing) service specific errors returned
-by 'CognitoSync'.
--}
-
-{- $operations
-Some AWS operations return results that are incomplete and require subsequent
-requests in order to obtain the entire result set. The process of sending
-subsequent requests to continue where a previous request left off is called
-pagination. For example, the 'ListObjects' operation of Amazon S3 returns up to
-1000 objects at a time, and you must send subsequent requests with the
-appropriate Marker in order to retrieve the next page of results.
-
-Operations that have an 'AWSPager' instance can transparently perform subsequent
-requests, correctly setting Markers and other request facets to iterate through
-the entire result set of a truncated API operation. Operations which support
-this have an additional note in the documentation.
-
-Many operations have the ability to filter results on the server side. See the
-individual operation parameters for details.
--}
-
-{- $waiters
-Waiters poll by repeatedly sending a request until some remote success condition
-configured by the 'Wait' specification is fulfilled. The 'Wait' specification
-determines how many attempts should be made, in addition to delay and retry strategies.
--}
diff --git a/gen/Network/AWS/CognitoSync/BulkPublish.hs b/gen/Network/AWS/CognitoSync/BulkPublish.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync/BulkPublish.hs
+++ /dev/null
@@ -1,137 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync.BulkPublish
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Initiates a bulk publish of all existing datasets for an Identity Pool to the configured stream. Customers are limited to one successful bulk publish per 24 hours. Bulk publish is an asynchronous request, customers can see the status of the request via the GetBulkPublishDetails operation.
---
---
--- This API can only be called with developer credentials. You cannot call this API with the temporary user credentials provided by Cognito Identity.
---
-module Network.AWS.CognitoSync.BulkPublish
-    (
-    -- * Creating a Request
-      bulkPublish
-    , BulkPublish
-    -- * Request Lenses
-    , bpIdentityPoolId
-
-    -- * Destructuring the Response
-    , bulkPublishResponse
-    , BulkPublishResponse
-    -- * Response Lenses
-    , bprsIdentityPoolId
-    , bprsResponseStatus
-    ) where
-
-import Network.AWS.CognitoSync.Types
-import Network.AWS.CognitoSync.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | The input for the BulkPublish operation.
---
--- /See:/ 'bulkPublish' smart constructor.
-newtype BulkPublish = BulkPublish'
-  { _bpIdentityPoolId :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BulkPublish' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bpIdentityPoolId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-bulkPublish
-    :: Text -- ^ 'bpIdentityPoolId'
-    -> BulkPublish
-bulkPublish pIdentityPoolId_ =
-  BulkPublish' {_bpIdentityPoolId = pIdentityPoolId_}
-
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-bpIdentityPoolId :: Lens' BulkPublish Text
-bpIdentityPoolId = lens _bpIdentityPoolId (\ s a -> s{_bpIdentityPoolId = a})
-
-instance AWSRequest BulkPublish where
-        type Rs BulkPublish = BulkPublishResponse
-        request = postJSON cognitoSync
-        response
-          = receiveJSON
-              (\ s h x ->
-                 BulkPublishResponse' <$>
-                   (x .?> "IdentityPoolId") <*> (pure (fromEnum s)))
-
-instance Hashable BulkPublish where
-
-instance NFData BulkPublish where
-
-instance ToHeaders BulkPublish where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON BulkPublish where
-        toJSON = const (Object mempty)
-
-instance ToPath BulkPublish where
-        toPath BulkPublish'{..}
-          = mconcat
-              ["/identitypools/", toBS _bpIdentityPoolId,
-               "/bulkpublish"]
-
-instance ToQuery BulkPublish where
-        toQuery = const mempty
-
--- | The output for the BulkPublish operation.
---
--- /See:/ 'bulkPublishResponse' smart constructor.
-data BulkPublishResponse = BulkPublishResponse'
-  { _bprsIdentityPoolId :: !(Maybe Text)
-  , _bprsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'BulkPublishResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'bprsIdentityPoolId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
---
--- * 'bprsResponseStatus' - -- | The response status code.
-bulkPublishResponse
-    :: Int -- ^ 'bprsResponseStatus'
-    -> BulkPublishResponse
-bulkPublishResponse pResponseStatus_ =
-  BulkPublishResponse'
-    {_bprsIdentityPoolId = Nothing, _bprsResponseStatus = pResponseStatus_}
-
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-bprsIdentityPoolId :: Lens' BulkPublishResponse (Maybe Text)
-bprsIdentityPoolId = lens _bprsIdentityPoolId (\ s a -> s{_bprsIdentityPoolId = a})
-
--- | -- | The response status code.
-bprsResponseStatus :: Lens' BulkPublishResponse Int
-bprsResponseStatus = lens _bprsResponseStatus (\ s a -> s{_bprsResponseStatus = a})
-
-instance NFData BulkPublishResponse where
diff --git a/gen/Network/AWS/CognitoSync/DeleteDataset.hs b/gen/Network/AWS/CognitoSync/DeleteDataset.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync/DeleteDataset.hs
+++ /dev/null
@@ -1,157 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync.DeleteDataset
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes the specific dataset. The dataset will be deleted permanently, and the action can't be undone. Datasets that this dataset was merged with will no longer report the merge. Any subsequent operation on this dataset will result in a ResourceNotFoundException.
---
---
--- This API can be called with temporary user credentials provided by Cognito Identity or with developer credentials.
---
-module Network.AWS.CognitoSync.DeleteDataset
-    (
-    -- * Creating a Request
-      deleteDataset
-    , DeleteDataset
-    -- * Request Lenses
-    , delIdentityPoolId
-    , delIdentityId
-    , delDatasetName
-
-    -- * Destructuring the Response
-    , deleteDatasetResponse
-    , DeleteDatasetResponse
-    -- * Response Lenses
-    , drsDataset
-    , drsResponseStatus
-    ) where
-
-import Network.AWS.CognitoSync.Types
-import Network.AWS.CognitoSync.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | A request to delete the specific dataset.
---
--- /See:/ 'deleteDataset' smart constructor.
-data DeleteDataset = DeleteDataset'
-  { _delIdentityPoolId :: !Text
-  , _delIdentityId     :: !Text
-  , _delDatasetName    :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteDataset' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'delIdentityPoolId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
---
--- * 'delIdentityId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
---
--- * 'delDatasetName' - A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot).
-deleteDataset
-    :: Text -- ^ 'delIdentityPoolId'
-    -> Text -- ^ 'delIdentityId'
-    -> Text -- ^ 'delDatasetName'
-    -> DeleteDataset
-deleteDataset pIdentityPoolId_ pIdentityId_ pDatasetName_ =
-  DeleteDataset'
-    { _delIdentityPoolId = pIdentityPoolId_
-    , _delIdentityId = pIdentityId_
-    , _delDatasetName = pDatasetName_
-    }
-
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-delIdentityPoolId :: Lens' DeleteDataset Text
-delIdentityPoolId = lens _delIdentityPoolId (\ s a -> s{_delIdentityPoolId = a})
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-delIdentityId :: Lens' DeleteDataset Text
-delIdentityId = lens _delIdentityId (\ s a -> s{_delIdentityId = a})
-
--- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot).
-delDatasetName :: Lens' DeleteDataset Text
-delDatasetName = lens _delDatasetName (\ s a -> s{_delDatasetName = a})
-
-instance AWSRequest DeleteDataset where
-        type Rs DeleteDataset = DeleteDatasetResponse
-        request = delete cognitoSync
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DeleteDatasetResponse' <$>
-                   (x .?> "Dataset") <*> (pure (fromEnum s)))
-
-instance Hashable DeleteDataset where
-
-instance NFData DeleteDataset where
-
-instance ToHeaders DeleteDataset where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath DeleteDataset where
-        toPath DeleteDataset'{..}
-          = mconcat
-              ["/identitypools/", toBS _delIdentityPoolId,
-               "/identities/", toBS _delIdentityId, "/datasets/",
-               toBS _delDatasetName]
-
-instance ToQuery DeleteDataset where
-        toQuery = const mempty
-
--- | Response to a successful DeleteDataset request.
---
--- /See:/ 'deleteDatasetResponse' smart constructor.
-data DeleteDatasetResponse = DeleteDatasetResponse'
-  { _drsDataset        :: !(Maybe Dataset)
-  , _drsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteDatasetResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'drsDataset' - A collection of data for an identity pool. An identity pool can have multiple datasets. A dataset is per identity and can be general or associated with a particular entity in an application (like a saved game). Datasets are automatically created if they don't exist. Data is synced by dataset, and a dataset can hold up to 1MB of key-value pairs.
---
--- * 'drsResponseStatus' - -- | The response status code.
-deleteDatasetResponse
-    :: Int -- ^ 'drsResponseStatus'
-    -> DeleteDatasetResponse
-deleteDatasetResponse pResponseStatus_ =
-  DeleteDatasetResponse'
-    {_drsDataset = Nothing, _drsResponseStatus = pResponseStatus_}
-
-
--- | A collection of data for an identity pool. An identity pool can have multiple datasets. A dataset is per identity and can be general or associated with a particular entity in an application (like a saved game). Datasets are automatically created if they don't exist. Data is synced by dataset, and a dataset can hold up to 1MB of key-value pairs.
-drsDataset :: Lens' DeleteDatasetResponse (Maybe Dataset)
-drsDataset = lens _drsDataset (\ s a -> s{_drsDataset = a})
-
--- | -- | The response status code.
-drsResponseStatus :: Lens' DeleteDatasetResponse Int
-drsResponseStatus = lens _drsResponseStatus (\ s a -> s{_drsResponseStatus = a})
-
-instance NFData DeleteDatasetResponse where
diff --git a/gen/Network/AWS/CognitoSync/DescribeDataset.hs b/gen/Network/AWS/CognitoSync/DescribeDataset.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync/DescribeDataset.hs
+++ /dev/null
@@ -1,157 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync.DescribeDataset
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Gets meta data about a dataset by identity and dataset name. With Amazon Cognito Sync, each identity has access only to its own data. Thus, the credentials used to make this API call need to have access to the identity data.
---
---
--- This API can be called with temporary user credentials provided by Cognito Identity or with developer credentials. You should use Cognito Identity credentials to make this API call.
---
-module Network.AWS.CognitoSync.DescribeDataset
-    (
-    -- * Creating a Request
-      describeDataset
-    , DescribeDataset
-    -- * Request Lenses
-    , ddIdentityPoolId
-    , ddIdentityId
-    , ddDatasetName
-
-    -- * Destructuring the Response
-    , describeDatasetResponse
-    , DescribeDatasetResponse
-    -- * Response Lenses
-    , ddrsDataset
-    , ddrsResponseStatus
-    ) where
-
-import Network.AWS.CognitoSync.Types
-import Network.AWS.CognitoSync.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | A request for meta data about a dataset (creation date, number of records, size) by owner and dataset name.
---
--- /See:/ 'describeDataset' smart constructor.
-data DescribeDataset = DescribeDataset'
-  { _ddIdentityPoolId :: !Text
-  , _ddIdentityId     :: !Text
-  , _ddDatasetName    :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeDataset' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ddIdentityPoolId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
---
--- * 'ddIdentityId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
---
--- * 'ddDatasetName' - A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot).
-describeDataset
-    :: Text -- ^ 'ddIdentityPoolId'
-    -> Text -- ^ 'ddIdentityId'
-    -> Text -- ^ 'ddDatasetName'
-    -> DescribeDataset
-describeDataset pIdentityPoolId_ pIdentityId_ pDatasetName_ =
-  DescribeDataset'
-    { _ddIdentityPoolId = pIdentityPoolId_
-    , _ddIdentityId = pIdentityId_
-    , _ddDatasetName = pDatasetName_
-    }
-
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-ddIdentityPoolId :: Lens' DescribeDataset Text
-ddIdentityPoolId = lens _ddIdentityPoolId (\ s a -> s{_ddIdentityPoolId = a})
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-ddIdentityId :: Lens' DescribeDataset Text
-ddIdentityId = lens _ddIdentityId (\ s a -> s{_ddIdentityId = a})
-
--- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot).
-ddDatasetName :: Lens' DescribeDataset Text
-ddDatasetName = lens _ddDatasetName (\ s a -> s{_ddDatasetName = a})
-
-instance AWSRequest DescribeDataset where
-        type Rs DescribeDataset = DescribeDatasetResponse
-        request = get cognitoSync
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeDatasetResponse' <$>
-                   (x .?> "Dataset") <*> (pure (fromEnum s)))
-
-instance Hashable DescribeDataset where
-
-instance NFData DescribeDataset where
-
-instance ToHeaders DescribeDataset where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath DescribeDataset where
-        toPath DescribeDataset'{..}
-          = mconcat
-              ["/identitypools/", toBS _ddIdentityPoolId,
-               "/identities/", toBS _ddIdentityId, "/datasets/",
-               toBS _ddDatasetName]
-
-instance ToQuery DescribeDataset where
-        toQuery = const mempty
-
--- | Response to a successful DescribeDataset request.
---
--- /See:/ 'describeDatasetResponse' smart constructor.
-data DescribeDatasetResponse = DescribeDatasetResponse'
-  { _ddrsDataset        :: !(Maybe Dataset)
-  , _ddrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeDatasetResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ddrsDataset' - Meta data for a collection of data for an identity. An identity can have multiple datasets. A dataset can be general or associated with a particular entity in an application (like a saved game). Datasets are automatically created if they don't exist. Data is synced by dataset, and a dataset can hold up to 1MB of key-value pairs.
---
--- * 'ddrsResponseStatus' - -- | The response status code.
-describeDatasetResponse
-    :: Int -- ^ 'ddrsResponseStatus'
-    -> DescribeDatasetResponse
-describeDatasetResponse pResponseStatus_ =
-  DescribeDatasetResponse'
-    {_ddrsDataset = Nothing, _ddrsResponseStatus = pResponseStatus_}
-
-
--- | Meta data for a collection of data for an identity. An identity can have multiple datasets. A dataset can be general or associated with a particular entity in an application (like a saved game). Datasets are automatically created if they don't exist. Data is synced by dataset, and a dataset can hold up to 1MB of key-value pairs.
-ddrsDataset :: Lens' DescribeDatasetResponse (Maybe Dataset)
-ddrsDataset = lens _ddrsDataset (\ s a -> s{_ddrsDataset = a})
-
--- | -- | The response status code.
-ddrsResponseStatus :: Lens' DescribeDatasetResponse Int
-ddrsResponseStatus = lens _ddrsResponseStatus (\ s a -> s{_ddrsResponseStatus = a})
-
-instance NFData DescribeDatasetResponse where
diff --git a/gen/Network/AWS/CognitoSync/DescribeIdentityPoolUsage.hs b/gen/Network/AWS/CognitoSync/DescribeIdentityPoolUsage.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync/DescribeIdentityPoolUsage.hs
+++ /dev/null
@@ -1,137 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync.DescribeIdentityPoolUsage
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Gets usage details (for example, data storage) about a particular identity pool.
---
---
--- This API can only be called with developer credentials. You cannot call this API with the temporary user credentials provided by Cognito Identity.
---
-module Network.AWS.CognitoSync.DescribeIdentityPoolUsage
-    (
-    -- * Creating a Request
-      describeIdentityPoolUsage
-    , DescribeIdentityPoolUsage
-    -- * Request Lenses
-    , dipuIdentityPoolId
-
-    -- * Destructuring the Response
-    , describeIdentityPoolUsageResponse
-    , DescribeIdentityPoolUsageResponse
-    -- * Response Lenses
-    , dipursIdentityPoolUsage
-    , dipursResponseStatus
-    ) where
-
-import Network.AWS.CognitoSync.Types
-import Network.AWS.CognitoSync.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | A request for usage information about the identity pool.
---
--- /See:/ 'describeIdentityPoolUsage' smart constructor.
-newtype DescribeIdentityPoolUsage = DescribeIdentityPoolUsage'
-  { _dipuIdentityPoolId :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeIdentityPoolUsage' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dipuIdentityPoolId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-describeIdentityPoolUsage
-    :: Text -- ^ 'dipuIdentityPoolId'
-    -> DescribeIdentityPoolUsage
-describeIdentityPoolUsage pIdentityPoolId_ =
-  DescribeIdentityPoolUsage' {_dipuIdentityPoolId = pIdentityPoolId_}
-
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-dipuIdentityPoolId :: Lens' DescribeIdentityPoolUsage Text
-dipuIdentityPoolId = lens _dipuIdentityPoolId (\ s a -> s{_dipuIdentityPoolId = a})
-
-instance AWSRequest DescribeIdentityPoolUsage where
-        type Rs DescribeIdentityPoolUsage =
-             DescribeIdentityPoolUsageResponse
-        request = get cognitoSync
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeIdentityPoolUsageResponse' <$>
-                   (x .?> "IdentityPoolUsage") <*> (pure (fromEnum s)))
-
-instance Hashable DescribeIdentityPoolUsage where
-
-instance NFData DescribeIdentityPoolUsage where
-
-instance ToHeaders DescribeIdentityPoolUsage where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath DescribeIdentityPoolUsage where
-        toPath DescribeIdentityPoolUsage'{..}
-          = mconcat
-              ["/identitypools/", toBS _dipuIdentityPoolId]
-
-instance ToQuery DescribeIdentityPoolUsage where
-        toQuery = const mempty
-
--- | Response to a successful DescribeIdentityPoolUsage request.
---
--- /See:/ 'describeIdentityPoolUsageResponse' smart constructor.
-data DescribeIdentityPoolUsageResponse = DescribeIdentityPoolUsageResponse'
-  { _dipursIdentityPoolUsage :: !(Maybe IdentityPoolUsage)
-  , _dipursResponseStatus    :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeIdentityPoolUsageResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dipursIdentityPoolUsage' - Information about the usage of the identity pool.
---
--- * 'dipursResponseStatus' - -- | The response status code.
-describeIdentityPoolUsageResponse
-    :: Int -- ^ 'dipursResponseStatus'
-    -> DescribeIdentityPoolUsageResponse
-describeIdentityPoolUsageResponse pResponseStatus_ =
-  DescribeIdentityPoolUsageResponse'
-    { _dipursIdentityPoolUsage = Nothing
-    , _dipursResponseStatus = pResponseStatus_
-    }
-
-
--- | Information about the usage of the identity pool.
-dipursIdentityPoolUsage :: Lens' DescribeIdentityPoolUsageResponse (Maybe IdentityPoolUsage)
-dipursIdentityPoolUsage = lens _dipursIdentityPoolUsage (\ s a -> s{_dipursIdentityPoolUsage = a})
-
--- | -- | The response status code.
-dipursResponseStatus :: Lens' DescribeIdentityPoolUsageResponse Int
-dipursResponseStatus = lens _dipursResponseStatus (\ s a -> s{_dipursResponseStatus = a})
-
-instance NFData DescribeIdentityPoolUsageResponse
-         where
diff --git a/gen/Network/AWS/CognitoSync/DescribeIdentityUsage.hs b/gen/Network/AWS/CognitoSync/DescribeIdentityUsage.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync/DescribeIdentityUsage.hs
+++ /dev/null
@@ -1,145 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync.DescribeIdentityUsage
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Gets usage information for an identity, including number of datasets and data usage.
---
---
--- This API can be called with temporary user credentials provided by Cognito Identity or with developer credentials.
---
-module Network.AWS.CognitoSync.DescribeIdentityUsage
-    (
-    -- * Creating a Request
-      describeIdentityUsage
-    , DescribeIdentityUsage
-    -- * Request Lenses
-    , diuIdentityPoolId
-    , diuIdentityId
-
-    -- * Destructuring the Response
-    , describeIdentityUsageResponse
-    , DescribeIdentityUsageResponse
-    -- * Response Lenses
-    , diursIdentityUsage
-    , diursResponseStatus
-    ) where
-
-import Network.AWS.CognitoSync.Types
-import Network.AWS.CognitoSync.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | A request for information about the usage of an identity pool.
---
--- /See:/ 'describeIdentityUsage' smart constructor.
-data DescribeIdentityUsage = DescribeIdentityUsage'
-  { _diuIdentityPoolId :: !Text
-  , _diuIdentityId     :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeIdentityUsage' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'diuIdentityPoolId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
---
--- * 'diuIdentityId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-describeIdentityUsage
-    :: Text -- ^ 'diuIdentityPoolId'
-    -> Text -- ^ 'diuIdentityId'
-    -> DescribeIdentityUsage
-describeIdentityUsage pIdentityPoolId_ pIdentityId_ =
-  DescribeIdentityUsage'
-    {_diuIdentityPoolId = pIdentityPoolId_, _diuIdentityId = pIdentityId_}
-
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-diuIdentityPoolId :: Lens' DescribeIdentityUsage Text
-diuIdentityPoolId = lens _diuIdentityPoolId (\ s a -> s{_diuIdentityPoolId = a})
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-diuIdentityId :: Lens' DescribeIdentityUsage Text
-diuIdentityId = lens _diuIdentityId (\ s a -> s{_diuIdentityId = a})
-
-instance AWSRequest DescribeIdentityUsage where
-        type Rs DescribeIdentityUsage =
-             DescribeIdentityUsageResponse
-        request = get cognitoSync
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeIdentityUsageResponse' <$>
-                   (x .?> "IdentityUsage") <*> (pure (fromEnum s)))
-
-instance Hashable DescribeIdentityUsage where
-
-instance NFData DescribeIdentityUsage where
-
-instance ToHeaders DescribeIdentityUsage where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath DescribeIdentityUsage where
-        toPath DescribeIdentityUsage'{..}
-          = mconcat
-              ["/identitypools/", toBS _diuIdentityPoolId,
-               "/identities/", toBS _diuIdentityId]
-
-instance ToQuery DescribeIdentityUsage where
-        toQuery = const mempty
-
--- | The response to a successful DescribeIdentityUsage request.
---
--- /See:/ 'describeIdentityUsageResponse' smart constructor.
-data DescribeIdentityUsageResponse = DescribeIdentityUsageResponse'
-  { _diursIdentityUsage  :: !(Maybe IdentityUsage)
-  , _diursResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeIdentityUsageResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'diursIdentityUsage' - Usage information for the identity.
---
--- * 'diursResponseStatus' - -- | The response status code.
-describeIdentityUsageResponse
-    :: Int -- ^ 'diursResponseStatus'
-    -> DescribeIdentityUsageResponse
-describeIdentityUsageResponse pResponseStatus_ =
-  DescribeIdentityUsageResponse'
-    {_diursIdentityUsage = Nothing, _diursResponseStatus = pResponseStatus_}
-
-
--- | Usage information for the identity.
-diursIdentityUsage :: Lens' DescribeIdentityUsageResponse (Maybe IdentityUsage)
-diursIdentityUsage = lens _diursIdentityUsage (\ s a -> s{_diursIdentityUsage = a})
-
--- | -- | The response status code.
-diursResponseStatus :: Lens' DescribeIdentityUsageResponse Int
-diursResponseStatus = lens _diursResponseStatus (\ s a -> s{_diursResponseStatus = a})
-
-instance NFData DescribeIdentityUsageResponse where
diff --git a/gen/Network/AWS/CognitoSync/GetBulkPublishDetails.hs b/gen/Network/AWS/CognitoSync/GetBulkPublishDetails.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync/GetBulkPublishDetails.hs
+++ /dev/null
@@ -1,181 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync.GetBulkPublishDetails
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Get the status of the last BulkPublish operation for an identity pool.
---
---
--- This API can only be called with developer credentials. You cannot call this API with the temporary user credentials provided by Cognito Identity.
---
-module Network.AWS.CognitoSync.GetBulkPublishDetails
-    (
-    -- * Creating a Request
-      getBulkPublishDetails
-    , GetBulkPublishDetails
-    -- * Request Lenses
-    , gbpdIdentityPoolId
-
-    -- * Destructuring the Response
-    , getBulkPublishDetailsResponse
-    , GetBulkPublishDetailsResponse
-    -- * Response Lenses
-    , gbpdrsBulkPublishStartTime
-    , gbpdrsIdentityPoolId
-    , gbpdrsBulkPublishCompleteTime
-    , gbpdrsFailureMessage
-    , gbpdrsBulkPublishStatus
-    , gbpdrsResponseStatus
-    ) where
-
-import Network.AWS.CognitoSync.Types
-import Network.AWS.CognitoSync.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | The input for the GetBulkPublishDetails operation.
---
--- /See:/ 'getBulkPublishDetails' smart constructor.
-newtype GetBulkPublishDetails = GetBulkPublishDetails'
-  { _gbpdIdentityPoolId :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetBulkPublishDetails' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gbpdIdentityPoolId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-getBulkPublishDetails
-    :: Text -- ^ 'gbpdIdentityPoolId'
-    -> GetBulkPublishDetails
-getBulkPublishDetails pIdentityPoolId_ =
-  GetBulkPublishDetails' {_gbpdIdentityPoolId = pIdentityPoolId_}
-
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-gbpdIdentityPoolId :: Lens' GetBulkPublishDetails Text
-gbpdIdentityPoolId = lens _gbpdIdentityPoolId (\ s a -> s{_gbpdIdentityPoolId = a})
-
-instance AWSRequest GetBulkPublishDetails where
-        type Rs GetBulkPublishDetails =
-             GetBulkPublishDetailsResponse
-        request = postJSON cognitoSync
-        response
-          = receiveJSON
-              (\ s h x ->
-                 GetBulkPublishDetailsResponse' <$>
-                   (x .?> "BulkPublishStartTime") <*>
-                     (x .?> "IdentityPoolId")
-                     <*> (x .?> "BulkPublishCompleteTime")
-                     <*> (x .?> "FailureMessage")
-                     <*> (x .?> "BulkPublishStatus")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable GetBulkPublishDetails where
-
-instance NFData GetBulkPublishDetails where
-
-instance ToHeaders GetBulkPublishDetails where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON GetBulkPublishDetails where
-        toJSON = const (Object mempty)
-
-instance ToPath GetBulkPublishDetails where
-        toPath GetBulkPublishDetails'{..}
-          = mconcat
-              ["/identitypools/", toBS _gbpdIdentityPoolId,
-               "/getBulkPublishDetails"]
-
-instance ToQuery GetBulkPublishDetails where
-        toQuery = const mempty
-
--- | The output for the GetBulkPublishDetails operation.
---
--- /See:/ 'getBulkPublishDetailsResponse' smart constructor.
-data GetBulkPublishDetailsResponse = GetBulkPublishDetailsResponse'
-  { _gbpdrsBulkPublishStartTime    :: !(Maybe POSIX)
-  , _gbpdrsIdentityPoolId          :: !(Maybe Text)
-  , _gbpdrsBulkPublishCompleteTime :: !(Maybe POSIX)
-  , _gbpdrsFailureMessage          :: !(Maybe Text)
-  , _gbpdrsBulkPublishStatus       :: !(Maybe BulkPublishStatus)
-  , _gbpdrsResponseStatus          :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetBulkPublishDetailsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gbpdrsBulkPublishStartTime' - The date/time at which the last bulk publish was initiated.
---
--- * 'gbpdrsIdentityPoolId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
---
--- * 'gbpdrsBulkPublishCompleteTime' - If BulkPublishStatus is SUCCEEDED, the time the last bulk publish operation completed.
---
--- * 'gbpdrsFailureMessage' - If BulkPublishStatus is FAILED this field will contain the error message that caused the bulk publish to fail.
---
--- * 'gbpdrsBulkPublishStatus' - Status of the last bulk publish operation, valid values are: NOT_STARTED - No bulk publish has been requested for this identity pool IN_PROGRESS - Data is being published to the configured stream SUCCEEDED - All data for the identity pool has been published to the configured stream FAILED - Some portion of the data has failed to publish, check FailureMessage for the cause.
---
--- * 'gbpdrsResponseStatus' - -- | The response status code.
-getBulkPublishDetailsResponse
-    :: Int -- ^ 'gbpdrsResponseStatus'
-    -> GetBulkPublishDetailsResponse
-getBulkPublishDetailsResponse pResponseStatus_ =
-  GetBulkPublishDetailsResponse'
-    { _gbpdrsBulkPublishStartTime = Nothing
-    , _gbpdrsIdentityPoolId = Nothing
-    , _gbpdrsBulkPublishCompleteTime = Nothing
-    , _gbpdrsFailureMessage = Nothing
-    , _gbpdrsBulkPublishStatus = Nothing
-    , _gbpdrsResponseStatus = pResponseStatus_
-    }
-
-
--- | The date/time at which the last bulk publish was initiated.
-gbpdrsBulkPublishStartTime :: Lens' GetBulkPublishDetailsResponse (Maybe UTCTime)
-gbpdrsBulkPublishStartTime = lens _gbpdrsBulkPublishStartTime (\ s a -> s{_gbpdrsBulkPublishStartTime = a}) . mapping _Time
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-gbpdrsIdentityPoolId :: Lens' GetBulkPublishDetailsResponse (Maybe Text)
-gbpdrsIdentityPoolId = lens _gbpdrsIdentityPoolId (\ s a -> s{_gbpdrsIdentityPoolId = a})
-
--- | If BulkPublishStatus is SUCCEEDED, the time the last bulk publish operation completed.
-gbpdrsBulkPublishCompleteTime :: Lens' GetBulkPublishDetailsResponse (Maybe UTCTime)
-gbpdrsBulkPublishCompleteTime = lens _gbpdrsBulkPublishCompleteTime (\ s a -> s{_gbpdrsBulkPublishCompleteTime = a}) . mapping _Time
-
--- | If BulkPublishStatus is FAILED this field will contain the error message that caused the bulk publish to fail.
-gbpdrsFailureMessage :: Lens' GetBulkPublishDetailsResponse (Maybe Text)
-gbpdrsFailureMessage = lens _gbpdrsFailureMessage (\ s a -> s{_gbpdrsFailureMessage = a})
-
--- | Status of the last bulk publish operation, valid values are: NOT_STARTED - No bulk publish has been requested for this identity pool IN_PROGRESS - Data is being published to the configured stream SUCCEEDED - All data for the identity pool has been published to the configured stream FAILED - Some portion of the data has failed to publish, check FailureMessage for the cause.
-gbpdrsBulkPublishStatus :: Lens' GetBulkPublishDetailsResponse (Maybe BulkPublishStatus)
-gbpdrsBulkPublishStatus = lens _gbpdrsBulkPublishStatus (\ s a -> s{_gbpdrsBulkPublishStatus = a})
-
--- | -- | The response status code.
-gbpdrsResponseStatus :: Lens' GetBulkPublishDetailsResponse Int
-gbpdrsResponseStatus = lens _gbpdrsResponseStatus (\ s a -> s{_gbpdrsResponseStatus = a})
-
-instance NFData GetBulkPublishDetailsResponse where
diff --git a/gen/Network/AWS/CognitoSync/GetCognitoEvents.hs b/gen/Network/AWS/CognitoSync/GetCognitoEvents.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync/GetCognitoEvents.hs
+++ /dev/null
@@ -1,138 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync.GetCognitoEvents
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Gets the events and the corresponding Lambda functions associated with an identity pool.
---
---
--- This API can only be called with developer credentials. You cannot call this API with the temporary user credentials provided by Cognito Identity.
---
-module Network.AWS.CognitoSync.GetCognitoEvents
-    (
-    -- * Creating a Request
-      getCognitoEvents
-    , GetCognitoEvents
-    -- * Request Lenses
-    , gceIdentityPoolId
-
-    -- * Destructuring the Response
-    , getCognitoEventsResponse
-    , GetCognitoEventsResponse
-    -- * Response Lenses
-    , gcersEvents
-    , gcersResponseStatus
-    ) where
-
-import Network.AWS.CognitoSync.Types
-import Network.AWS.CognitoSync.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | A request for a list of the configured Cognito Events
---
---
---
--- /See:/ 'getCognitoEvents' smart constructor.
-newtype GetCognitoEvents = GetCognitoEvents'
-  { _gceIdentityPoolId :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetCognitoEvents' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gceIdentityPoolId' - The Cognito Identity Pool ID for the request
-getCognitoEvents
-    :: Text -- ^ 'gceIdentityPoolId'
-    -> GetCognitoEvents
-getCognitoEvents pIdentityPoolId_ =
-  GetCognitoEvents' {_gceIdentityPoolId = pIdentityPoolId_}
-
-
--- | The Cognito Identity Pool ID for the request
-gceIdentityPoolId :: Lens' GetCognitoEvents Text
-gceIdentityPoolId = lens _gceIdentityPoolId (\ s a -> s{_gceIdentityPoolId = a})
-
-instance AWSRequest GetCognitoEvents where
-        type Rs GetCognitoEvents = GetCognitoEventsResponse
-        request = get cognitoSync
-        response
-          = receiveJSON
-              (\ s h x ->
-                 GetCognitoEventsResponse' <$>
-                   (x .?> "Events" .!@ mempty) <*> (pure (fromEnum s)))
-
-instance Hashable GetCognitoEvents where
-
-instance NFData GetCognitoEvents where
-
-instance ToHeaders GetCognitoEvents where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath GetCognitoEvents where
-        toPath GetCognitoEvents'{..}
-          = mconcat
-              ["/identitypools/", toBS _gceIdentityPoolId,
-               "/events"]
-
-instance ToQuery GetCognitoEvents where
-        toQuery = const mempty
-
--- | The response from the GetCognitoEvents request
---
---
---
--- /See:/ 'getCognitoEventsResponse' smart constructor.
-data GetCognitoEventsResponse = GetCognitoEventsResponse'
-  { _gcersEvents         :: !(Maybe (Map Text Text))
-  , _gcersResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetCognitoEventsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gcersEvents' - The Cognito Events returned from the GetCognitoEvents request
---
--- * 'gcersResponseStatus' - -- | The response status code.
-getCognitoEventsResponse
-    :: Int -- ^ 'gcersResponseStatus'
-    -> GetCognitoEventsResponse
-getCognitoEventsResponse pResponseStatus_ =
-  GetCognitoEventsResponse'
-    {_gcersEvents = Nothing, _gcersResponseStatus = pResponseStatus_}
-
-
--- | The Cognito Events returned from the GetCognitoEvents request
-gcersEvents :: Lens' GetCognitoEventsResponse (HashMap Text Text)
-gcersEvents = lens _gcersEvents (\ s a -> s{_gcersEvents = a}) . _Default . _Map
-
--- | -- | The response status code.
-gcersResponseStatus :: Lens' GetCognitoEventsResponse Int
-gcersResponseStatus = lens _gcersResponseStatus (\ s a -> s{_gcersResponseStatus = a})
-
-instance NFData GetCognitoEventsResponse where
diff --git a/gen/Network/AWS/CognitoSync/GetIdentityPoolConfiguration.hs b/gen/Network/AWS/CognitoSync/GetIdentityPoolConfiguration.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync/GetIdentityPoolConfiguration.hs
+++ /dev/null
@@ -1,163 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync.GetIdentityPoolConfiguration
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Gets the configuration settings of an identity pool.
---
---
--- This API can only be called with developer credentials. You cannot call this API with the temporary user credentials provided by Cognito Identity.
---
-module Network.AWS.CognitoSync.GetIdentityPoolConfiguration
-    (
-    -- * Creating a Request
-      getIdentityPoolConfiguration
-    , GetIdentityPoolConfiguration
-    -- * Request Lenses
-    , gipcIdentityPoolId
-
-    -- * Destructuring the Response
-    , getIdentityPoolConfigurationResponse
-    , GetIdentityPoolConfigurationResponse
-    -- * Response Lenses
-    , gipcrsIdentityPoolId
-    , gipcrsCognitoStreams
-    , gipcrsPushSync
-    , gipcrsResponseStatus
-    ) where
-
-import Network.AWS.CognitoSync.Types
-import Network.AWS.CognitoSync.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | The input for the GetIdentityPoolConfiguration operation.
---
---
---
--- /See:/ 'getIdentityPoolConfiguration' smart constructor.
-newtype GetIdentityPoolConfiguration = GetIdentityPoolConfiguration'
-  { _gipcIdentityPoolId :: Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetIdentityPoolConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gipcIdentityPoolId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. This is the ID of the pool for which to return a configuration.
-getIdentityPoolConfiguration
-    :: Text -- ^ 'gipcIdentityPoolId'
-    -> GetIdentityPoolConfiguration
-getIdentityPoolConfiguration pIdentityPoolId_ =
-  GetIdentityPoolConfiguration' {_gipcIdentityPoolId = pIdentityPoolId_}
-
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. This is the ID of the pool for which to return a configuration.
-gipcIdentityPoolId :: Lens' GetIdentityPoolConfiguration Text
-gipcIdentityPoolId = lens _gipcIdentityPoolId (\ s a -> s{_gipcIdentityPoolId = a})
-
-instance AWSRequest GetIdentityPoolConfiguration
-         where
-        type Rs GetIdentityPoolConfiguration =
-             GetIdentityPoolConfigurationResponse
-        request = get cognitoSync
-        response
-          = receiveJSON
-              (\ s h x ->
-                 GetIdentityPoolConfigurationResponse' <$>
-                   (x .?> "IdentityPoolId") <*> (x .?> "CognitoStreams")
-                     <*> (x .?> "PushSync")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable GetIdentityPoolConfiguration where
-
-instance NFData GetIdentityPoolConfiguration where
-
-instance ToHeaders GetIdentityPoolConfiguration where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath GetIdentityPoolConfiguration where
-        toPath GetIdentityPoolConfiguration'{..}
-          = mconcat
-              ["/identitypools/", toBS _gipcIdentityPoolId,
-               "/configuration"]
-
-instance ToQuery GetIdentityPoolConfiguration where
-        toQuery = const mempty
-
--- | The output for the GetIdentityPoolConfiguration operation.
---
---
---
--- /See:/ 'getIdentityPoolConfigurationResponse' smart constructor.
-data GetIdentityPoolConfigurationResponse = GetIdentityPoolConfigurationResponse'
-  { _gipcrsIdentityPoolId :: !(Maybe Text)
-  , _gipcrsCognitoStreams :: !(Maybe CognitoStreams)
-  , _gipcrsPushSync       :: !(Maybe PushSync)
-  , _gipcrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetIdentityPoolConfigurationResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gipcrsIdentityPoolId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
---
--- * 'gipcrsCognitoStreams' - Options to apply to this identity pool for Amazon Cognito streams.
---
--- * 'gipcrsPushSync' - Options to apply to this identity pool for push synchronization.
---
--- * 'gipcrsResponseStatus' - -- | The response status code.
-getIdentityPoolConfigurationResponse
-    :: Int -- ^ 'gipcrsResponseStatus'
-    -> GetIdentityPoolConfigurationResponse
-getIdentityPoolConfigurationResponse pResponseStatus_ =
-  GetIdentityPoolConfigurationResponse'
-    { _gipcrsIdentityPoolId = Nothing
-    , _gipcrsCognitoStreams = Nothing
-    , _gipcrsPushSync = Nothing
-    , _gipcrsResponseStatus = pResponseStatus_
-    }
-
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
-gipcrsIdentityPoolId :: Lens' GetIdentityPoolConfigurationResponse (Maybe Text)
-gipcrsIdentityPoolId = lens _gipcrsIdentityPoolId (\ s a -> s{_gipcrsIdentityPoolId = a})
-
--- | Options to apply to this identity pool for Amazon Cognito streams.
-gipcrsCognitoStreams :: Lens' GetIdentityPoolConfigurationResponse (Maybe CognitoStreams)
-gipcrsCognitoStreams = lens _gipcrsCognitoStreams (\ s a -> s{_gipcrsCognitoStreams = a})
-
--- | Options to apply to this identity pool for push synchronization.
-gipcrsPushSync :: Lens' GetIdentityPoolConfigurationResponse (Maybe PushSync)
-gipcrsPushSync = lens _gipcrsPushSync (\ s a -> s{_gipcrsPushSync = a})
-
--- | -- | The response status code.
-gipcrsResponseStatus :: Lens' GetIdentityPoolConfigurationResponse Int
-gipcrsResponseStatus = lens _gipcrsResponseStatus (\ s a -> s{_gipcrsResponseStatus = a})
-
-instance NFData GetIdentityPoolConfigurationResponse
-         where
diff --git a/gen/Network/AWS/CognitoSync/ListDatasets.hs b/gen/Network/AWS/CognitoSync/ListDatasets.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync/ListDatasets.hs
+++ /dev/null
@@ -1,189 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync.ListDatasets
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Lists datasets for an identity. With Amazon Cognito Sync, each identity has access only to its own data. Thus, the credentials used to make this API call need to have access to the identity data.
---
---
--- ListDatasets can be called with temporary user credentials provided by Cognito Identity or with developer credentials. You should use the Cognito Identity credentials to make this API call.
---
-module Network.AWS.CognitoSync.ListDatasets
-    (
-    -- * Creating a Request
-      listDatasets
-    , ListDatasets
-    -- * Request Lenses
-    , ldNextToken
-    , ldMaxResults
-    , ldIdentityId
-    , ldIdentityPoolId
-
-    -- * Destructuring the Response
-    , listDatasetsResponse
-    , ListDatasetsResponse
-    -- * Response Lenses
-    , ldrsCount
-    , ldrsNextToken
-    , ldrsDatasets
-    , ldrsResponseStatus
-    ) where
-
-import Network.AWS.CognitoSync.Types
-import Network.AWS.CognitoSync.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | Request for a list of datasets for an identity.
---
--- /See:/ 'listDatasets' smart constructor.
-data ListDatasets = ListDatasets'
-  { _ldNextToken      :: !(Maybe Text)
-  , _ldMaxResults     :: !(Maybe Int)
-  , _ldIdentityId     :: !Text
-  , _ldIdentityPoolId :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListDatasets' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ldNextToken' - A pagination token for obtaining the next page of results.
---
--- * 'ldMaxResults' - The maximum number of results to be returned.
---
--- * 'ldIdentityId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
---
--- * 'ldIdentityPoolId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-listDatasets
-    :: Text -- ^ 'ldIdentityId'
-    -> Text -- ^ 'ldIdentityPoolId'
-    -> ListDatasets
-listDatasets pIdentityId_ pIdentityPoolId_ =
-  ListDatasets'
-    { _ldNextToken = Nothing
-    , _ldMaxResults = Nothing
-    , _ldIdentityId = pIdentityId_
-    , _ldIdentityPoolId = pIdentityPoolId_
-    }
-
-
--- | A pagination token for obtaining the next page of results.
-ldNextToken :: Lens' ListDatasets (Maybe Text)
-ldNextToken = lens _ldNextToken (\ s a -> s{_ldNextToken = a})
-
--- | The maximum number of results to be returned.
-ldMaxResults :: Lens' ListDatasets (Maybe Int)
-ldMaxResults = lens _ldMaxResults (\ s a -> s{_ldMaxResults = a})
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-ldIdentityId :: Lens' ListDatasets Text
-ldIdentityId = lens _ldIdentityId (\ s a -> s{_ldIdentityId = a})
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-ldIdentityPoolId :: Lens' ListDatasets Text
-ldIdentityPoolId = lens _ldIdentityPoolId (\ s a -> s{_ldIdentityPoolId = a})
-
-instance AWSRequest ListDatasets where
-        type Rs ListDatasets = ListDatasetsResponse
-        request = get cognitoSync
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListDatasetsResponse' <$>
-                   (x .?> "Count") <*> (x .?> "NextToken") <*>
-                     (x .?> "Datasets" .!@ mempty)
-                     <*> (pure (fromEnum s)))
-
-instance Hashable ListDatasets where
-
-instance NFData ListDatasets where
-
-instance ToHeaders ListDatasets where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath ListDatasets where
-        toPath ListDatasets'{..}
-          = mconcat
-              ["/identitypools/", toBS _ldIdentityPoolId,
-               "/identities/", toBS _ldIdentityId, "/datasets"]
-
-instance ToQuery ListDatasets where
-        toQuery ListDatasets'{..}
-          = mconcat
-              ["nextToken" =: _ldNextToken,
-               "maxResults" =: _ldMaxResults]
-
--- | Returned for a successful ListDatasets request.
---
--- /See:/ 'listDatasetsResponse' smart constructor.
-data ListDatasetsResponse = ListDatasetsResponse'
-  { _ldrsCount          :: !(Maybe Int)
-  , _ldrsNextToken      :: !(Maybe Text)
-  , _ldrsDatasets       :: !(Maybe [Dataset])
-  , _ldrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListDatasetsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ldrsCount' - Number of datasets returned.
---
--- * 'ldrsNextToken' - A pagination token for obtaining the next page of results.
---
--- * 'ldrsDatasets' - A set of datasets.
---
--- * 'ldrsResponseStatus' - -- | The response status code.
-listDatasetsResponse
-    :: Int -- ^ 'ldrsResponseStatus'
-    -> ListDatasetsResponse
-listDatasetsResponse pResponseStatus_ =
-  ListDatasetsResponse'
-    { _ldrsCount = Nothing
-    , _ldrsNextToken = Nothing
-    , _ldrsDatasets = Nothing
-    , _ldrsResponseStatus = pResponseStatus_
-    }
-
-
--- | Number of datasets returned.
-ldrsCount :: Lens' ListDatasetsResponse (Maybe Int)
-ldrsCount = lens _ldrsCount (\ s a -> s{_ldrsCount = a})
-
--- | A pagination token for obtaining the next page of results.
-ldrsNextToken :: Lens' ListDatasetsResponse (Maybe Text)
-ldrsNextToken = lens _ldrsNextToken (\ s a -> s{_ldrsNextToken = a})
-
--- | A set of datasets.
-ldrsDatasets :: Lens' ListDatasetsResponse [Dataset]
-ldrsDatasets = lens _ldrsDatasets (\ s a -> s{_ldrsDatasets = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-ldrsResponseStatus :: Lens' ListDatasetsResponse Int
-ldrsResponseStatus = lens _ldrsResponseStatus (\ s a -> s{_ldrsResponseStatus = a})
-
-instance NFData ListDatasetsResponse where
diff --git a/gen/Network/AWS/CognitoSync/ListIdentityPoolUsage.hs b/gen/Network/AWS/CognitoSync/ListIdentityPoolUsage.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync/ListIdentityPoolUsage.hs
+++ /dev/null
@@ -1,175 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync.ListIdentityPoolUsage
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Gets a list of identity pools registered with Cognito.
---
---
--- ListIdentityPoolUsage can only be called with developer credentials. You cannot make this API call with the temporary user credentials provided by Cognito Identity.
---
-module Network.AWS.CognitoSync.ListIdentityPoolUsage
-    (
-    -- * Creating a Request
-      listIdentityPoolUsage
-    , ListIdentityPoolUsage
-    -- * Request Lenses
-    , lipuNextToken
-    , lipuMaxResults
-
-    -- * Destructuring the Response
-    , listIdentityPoolUsageResponse
-    , ListIdentityPoolUsageResponse
-    -- * Response Lenses
-    , lipursIdentityPoolUsages
-    , lipursCount
-    , lipursNextToken
-    , lipursMaxResults
-    , lipursResponseStatus
-    ) where
-
-import Network.AWS.CognitoSync.Types
-import Network.AWS.CognitoSync.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | A request for usage information on an identity pool.
---
--- /See:/ 'listIdentityPoolUsage' smart constructor.
-data ListIdentityPoolUsage = ListIdentityPoolUsage'
-  { _lipuNextToken  :: !(Maybe Text)
-  , _lipuMaxResults :: !(Maybe Int)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListIdentityPoolUsage' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lipuNextToken' - A pagination token for obtaining the next page of results.
---
--- * 'lipuMaxResults' - The maximum number of results to be returned.
-listIdentityPoolUsage
-    :: ListIdentityPoolUsage
-listIdentityPoolUsage =
-  ListIdentityPoolUsage' {_lipuNextToken = Nothing, _lipuMaxResults = Nothing}
-
-
--- | A pagination token for obtaining the next page of results.
-lipuNextToken :: Lens' ListIdentityPoolUsage (Maybe Text)
-lipuNextToken = lens _lipuNextToken (\ s a -> s{_lipuNextToken = a})
-
--- | The maximum number of results to be returned.
-lipuMaxResults :: Lens' ListIdentityPoolUsage (Maybe Int)
-lipuMaxResults = lens _lipuMaxResults (\ s a -> s{_lipuMaxResults = a})
-
-instance AWSRequest ListIdentityPoolUsage where
-        type Rs ListIdentityPoolUsage =
-             ListIdentityPoolUsageResponse
-        request = get cognitoSync
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListIdentityPoolUsageResponse' <$>
-                   (x .?> "IdentityPoolUsages" .!@ mempty) <*>
-                     (x .?> "Count")
-                     <*> (x .?> "NextToken")
-                     <*> (x .?> "MaxResults")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable ListIdentityPoolUsage where
-
-instance NFData ListIdentityPoolUsage where
-
-instance ToHeaders ListIdentityPoolUsage where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath ListIdentityPoolUsage where
-        toPath = const "/identitypools"
-
-instance ToQuery ListIdentityPoolUsage where
-        toQuery ListIdentityPoolUsage'{..}
-          = mconcat
-              ["nextToken" =: _lipuNextToken,
-               "maxResults" =: _lipuMaxResults]
-
--- | Returned for a successful ListIdentityPoolUsage request.
---
--- /See:/ 'listIdentityPoolUsageResponse' smart constructor.
-data ListIdentityPoolUsageResponse = ListIdentityPoolUsageResponse'
-  { _lipursIdentityPoolUsages :: !(Maybe [IdentityPoolUsage])
-  , _lipursCount              :: !(Maybe Int)
-  , _lipursNextToken          :: !(Maybe Text)
-  , _lipursMaxResults         :: !(Maybe Int)
-  , _lipursResponseStatus     :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListIdentityPoolUsageResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lipursIdentityPoolUsages' - Usage information for the identity pools.
---
--- * 'lipursCount' - Total number of identities for the identity pool.
---
--- * 'lipursNextToken' - A pagination token for obtaining the next page of results.
---
--- * 'lipursMaxResults' - The maximum number of results to be returned.
---
--- * 'lipursResponseStatus' - -- | The response status code.
-listIdentityPoolUsageResponse
-    :: Int -- ^ 'lipursResponseStatus'
-    -> ListIdentityPoolUsageResponse
-listIdentityPoolUsageResponse pResponseStatus_ =
-  ListIdentityPoolUsageResponse'
-    { _lipursIdentityPoolUsages = Nothing
-    , _lipursCount = Nothing
-    , _lipursNextToken = Nothing
-    , _lipursMaxResults = Nothing
-    , _lipursResponseStatus = pResponseStatus_
-    }
-
-
--- | Usage information for the identity pools.
-lipursIdentityPoolUsages :: Lens' ListIdentityPoolUsageResponse [IdentityPoolUsage]
-lipursIdentityPoolUsages = lens _lipursIdentityPoolUsages (\ s a -> s{_lipursIdentityPoolUsages = a}) . _Default . _Coerce
-
--- | Total number of identities for the identity pool.
-lipursCount :: Lens' ListIdentityPoolUsageResponse (Maybe Int)
-lipursCount = lens _lipursCount (\ s a -> s{_lipursCount = a})
-
--- | A pagination token for obtaining the next page of results.
-lipursNextToken :: Lens' ListIdentityPoolUsageResponse (Maybe Text)
-lipursNextToken = lens _lipursNextToken (\ s a -> s{_lipursNextToken = a})
-
--- | The maximum number of results to be returned.
-lipursMaxResults :: Lens' ListIdentityPoolUsageResponse (Maybe Int)
-lipursMaxResults = lens _lipursMaxResults (\ s a -> s{_lipursMaxResults = a})
-
--- | -- | The response status code.
-lipursResponseStatus :: Lens' ListIdentityPoolUsageResponse Int
-lipursResponseStatus = lens _lipursResponseStatus (\ s a -> s{_lipursResponseStatus = a})
-
-instance NFData ListIdentityPoolUsageResponse where
diff --git a/gen/Network/AWS/CognitoSync/ListRecords.hs b/gen/Network/AWS/CognitoSync/ListRecords.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync/ListRecords.hs
+++ /dev/null
@@ -1,281 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync.ListRecords
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Gets paginated records, optionally changed after a particular sync count for a dataset and identity. With Amazon Cognito Sync, each identity has access only to its own data. Thus, the credentials used to make this API call need to have access to the identity data.
---
---
--- ListRecords can be called with temporary user credentials provided by Cognito Identity or with developer credentials. You should use Cognito Identity credentials to make this API call.
---
-module Network.AWS.CognitoSync.ListRecords
-    (
-    -- * Creating a Request
-      listRecords
-    , ListRecords
-    -- * Request Lenses
-    , lrLastSyncCount
-    , lrNextToken
-    , lrSyncSessionToken
-    , lrMaxResults
-    , lrIdentityPoolId
-    , lrIdentityId
-    , lrDatasetName
-
-    -- * Destructuring the Response
-    , listRecordsResponse
-    , ListRecordsResponse
-    -- * Response Lenses
-    , lrrsDatasetDeletedAfterRequestedSyncCount
-    , lrrsDatasetExists
-    , lrrsCount
-    , lrrsRecords
-    , lrrsNextToken
-    , lrrsMergedDatasetNames
-    , lrrsSyncSessionToken
-    , lrrsLastModifiedBy
-    , lrrsDatasetSyncCount
-    , lrrsResponseStatus
-    ) where
-
-import Network.AWS.CognitoSync.Types
-import Network.AWS.CognitoSync.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | A request for a list of records.
---
--- /See:/ 'listRecords' smart constructor.
-data ListRecords = ListRecords'
-  { _lrLastSyncCount    :: !(Maybe Integer)
-  , _lrNextToken        :: !(Maybe Text)
-  , _lrSyncSessionToken :: !(Maybe Text)
-  , _lrMaxResults       :: !(Maybe Int)
-  , _lrIdentityPoolId   :: !Text
-  , _lrIdentityId       :: !Text
-  , _lrDatasetName      :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListRecords' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lrLastSyncCount' - The last server sync count for this record.
---
--- * 'lrNextToken' - A pagination token for obtaining the next page of results.
---
--- * 'lrSyncSessionToken' - A token containing a session ID, identity ID, and expiration.
---
--- * 'lrMaxResults' - The maximum number of results to be returned.
---
--- * 'lrIdentityPoolId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
---
--- * 'lrIdentityId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
---
--- * 'lrDatasetName' - A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot).
-listRecords
-    :: Text -- ^ 'lrIdentityPoolId'
-    -> Text -- ^ 'lrIdentityId'
-    -> Text -- ^ 'lrDatasetName'
-    -> ListRecords
-listRecords pIdentityPoolId_ pIdentityId_ pDatasetName_ =
-  ListRecords'
-    { _lrLastSyncCount = Nothing
-    , _lrNextToken = Nothing
-    , _lrSyncSessionToken = Nothing
-    , _lrMaxResults = Nothing
-    , _lrIdentityPoolId = pIdentityPoolId_
-    , _lrIdentityId = pIdentityId_
-    , _lrDatasetName = pDatasetName_
-    }
-
-
--- | The last server sync count for this record.
-lrLastSyncCount :: Lens' ListRecords (Maybe Integer)
-lrLastSyncCount = lens _lrLastSyncCount (\ s a -> s{_lrLastSyncCount = a})
-
--- | A pagination token for obtaining the next page of results.
-lrNextToken :: Lens' ListRecords (Maybe Text)
-lrNextToken = lens _lrNextToken (\ s a -> s{_lrNextToken = a})
-
--- | A token containing a session ID, identity ID, and expiration.
-lrSyncSessionToken :: Lens' ListRecords (Maybe Text)
-lrSyncSessionToken = lens _lrSyncSessionToken (\ s a -> s{_lrSyncSessionToken = a})
-
--- | The maximum number of results to be returned.
-lrMaxResults :: Lens' ListRecords (Maybe Int)
-lrMaxResults = lens _lrMaxResults (\ s a -> s{_lrMaxResults = a})
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-lrIdentityPoolId :: Lens' ListRecords Text
-lrIdentityPoolId = lens _lrIdentityPoolId (\ s a -> s{_lrIdentityPoolId = a})
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-lrIdentityId :: Lens' ListRecords Text
-lrIdentityId = lens _lrIdentityId (\ s a -> s{_lrIdentityId = a})
-
--- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot).
-lrDatasetName :: Lens' ListRecords Text
-lrDatasetName = lens _lrDatasetName (\ s a -> s{_lrDatasetName = a})
-
-instance AWSRequest ListRecords where
-        type Rs ListRecords = ListRecordsResponse
-        request = get cognitoSync
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ListRecordsResponse' <$>
-                   (x .?> "DatasetDeletedAfterRequestedSyncCount") <*>
-                     (x .?> "DatasetExists")
-                     <*> (x .?> "Count")
-                     <*> (x .?> "Records" .!@ mempty)
-                     <*> (x .?> "NextToken")
-                     <*> (x .?> "MergedDatasetNames" .!@ mempty)
-                     <*> (x .?> "SyncSessionToken")
-                     <*> (x .?> "LastModifiedBy")
-                     <*> (x .?> "DatasetSyncCount")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable ListRecords where
-
-instance NFData ListRecords where
-
-instance ToHeaders ListRecords where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath ListRecords where
-        toPath ListRecords'{..}
-          = mconcat
-              ["/identitypools/", toBS _lrIdentityPoolId,
-               "/identities/", toBS _lrIdentityId, "/datasets/",
-               toBS _lrDatasetName, "/records"]
-
-instance ToQuery ListRecords where
-        toQuery ListRecords'{..}
-          = mconcat
-              ["lastSyncCount" =: _lrLastSyncCount,
-               "nextToken" =: _lrNextToken,
-               "syncSessionToken" =: _lrSyncSessionToken,
-               "maxResults" =: _lrMaxResults]
-
--- | Returned for a successful ListRecordsRequest.
---
--- /See:/ 'listRecordsResponse' smart constructor.
-data ListRecordsResponse = ListRecordsResponse'
-  { _lrrsDatasetDeletedAfterRequestedSyncCount :: !(Maybe Bool)
-  , _lrrsDatasetExists                         :: !(Maybe Bool)
-  , _lrrsCount                                 :: !(Maybe Int)
-  , _lrrsRecords                               :: !(Maybe [Record])
-  , _lrrsNextToken                             :: !(Maybe Text)
-  , _lrrsMergedDatasetNames                    :: !(Maybe [Text])
-  , _lrrsSyncSessionToken                      :: !(Maybe Text)
-  , _lrrsLastModifiedBy                        :: !(Maybe Text)
-  , _lrrsDatasetSyncCount                      :: !(Maybe Integer)
-  , _lrrsResponseStatus                        :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ListRecordsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'lrrsDatasetDeletedAfterRequestedSyncCount' - A boolean value specifying whether to delete the dataset locally.
---
--- * 'lrrsDatasetExists' - Indicates whether the dataset exists.
---
--- * 'lrrsCount' - Total number of records.
---
--- * 'lrrsRecords' - A list of all records.
---
--- * 'lrrsNextToken' - A pagination token for obtaining the next page of results.
---
--- * 'lrrsMergedDatasetNames' - Names of merged datasets.
---
--- * 'lrrsSyncSessionToken' - A token containing a session ID, identity ID, and expiration.
---
--- * 'lrrsLastModifiedBy' - The user/device that made the last change to this record.
---
--- * 'lrrsDatasetSyncCount' - Server sync count for this dataset.
---
--- * 'lrrsResponseStatus' - -- | The response status code.
-listRecordsResponse
-    :: Int -- ^ 'lrrsResponseStatus'
-    -> ListRecordsResponse
-listRecordsResponse pResponseStatus_ =
-  ListRecordsResponse'
-    { _lrrsDatasetDeletedAfterRequestedSyncCount = Nothing
-    , _lrrsDatasetExists = Nothing
-    , _lrrsCount = Nothing
-    , _lrrsRecords = Nothing
-    , _lrrsNextToken = Nothing
-    , _lrrsMergedDatasetNames = Nothing
-    , _lrrsSyncSessionToken = Nothing
-    , _lrrsLastModifiedBy = Nothing
-    , _lrrsDatasetSyncCount = Nothing
-    , _lrrsResponseStatus = pResponseStatus_
-    }
-
-
--- | A boolean value specifying whether to delete the dataset locally.
-lrrsDatasetDeletedAfterRequestedSyncCount :: Lens' ListRecordsResponse (Maybe Bool)
-lrrsDatasetDeletedAfterRequestedSyncCount = lens _lrrsDatasetDeletedAfterRequestedSyncCount (\ s a -> s{_lrrsDatasetDeletedAfterRequestedSyncCount = a})
-
--- | Indicates whether the dataset exists.
-lrrsDatasetExists :: Lens' ListRecordsResponse (Maybe Bool)
-lrrsDatasetExists = lens _lrrsDatasetExists (\ s a -> s{_lrrsDatasetExists = a})
-
--- | Total number of records.
-lrrsCount :: Lens' ListRecordsResponse (Maybe Int)
-lrrsCount = lens _lrrsCount (\ s a -> s{_lrrsCount = a})
-
--- | A list of all records.
-lrrsRecords :: Lens' ListRecordsResponse [Record]
-lrrsRecords = lens _lrrsRecords (\ s a -> s{_lrrsRecords = a}) . _Default . _Coerce
-
--- | A pagination token for obtaining the next page of results.
-lrrsNextToken :: Lens' ListRecordsResponse (Maybe Text)
-lrrsNextToken = lens _lrrsNextToken (\ s a -> s{_lrrsNextToken = a})
-
--- | Names of merged datasets.
-lrrsMergedDatasetNames :: Lens' ListRecordsResponse [Text]
-lrrsMergedDatasetNames = lens _lrrsMergedDatasetNames (\ s a -> s{_lrrsMergedDatasetNames = a}) . _Default . _Coerce
-
--- | A token containing a session ID, identity ID, and expiration.
-lrrsSyncSessionToken :: Lens' ListRecordsResponse (Maybe Text)
-lrrsSyncSessionToken = lens _lrrsSyncSessionToken (\ s a -> s{_lrrsSyncSessionToken = a})
-
--- | The user/device that made the last change to this record.
-lrrsLastModifiedBy :: Lens' ListRecordsResponse (Maybe Text)
-lrrsLastModifiedBy = lens _lrrsLastModifiedBy (\ s a -> s{_lrrsLastModifiedBy = a})
-
--- | Server sync count for this dataset.
-lrrsDatasetSyncCount :: Lens' ListRecordsResponse (Maybe Integer)
-lrrsDatasetSyncCount = lens _lrrsDatasetSyncCount (\ s a -> s{_lrrsDatasetSyncCount = a})
-
--- | -- | The response status code.
-lrrsResponseStatus :: Lens' ListRecordsResponse Int
-lrrsResponseStatus = lens _lrrsResponseStatus (\ s a -> s{_lrrsResponseStatus = a})
-
-instance NFData ListRecordsResponse where
diff --git a/gen/Network/AWS/CognitoSync/RegisterDevice.hs b/gen/Network/AWS/CognitoSync/RegisterDevice.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync/RegisterDevice.hs
+++ /dev/null
@@ -1,177 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync.RegisterDevice
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Registers a device to receive push sync notifications.
---
---
--- This API can only be called with temporary credentials provided by Cognito Identity. You cannot call this API with developer credentials.
---
-module Network.AWS.CognitoSync.RegisterDevice
-    (
-    -- * Creating a Request
-      registerDevice
-    , RegisterDevice
-    -- * Request Lenses
-    , rdIdentityPoolId
-    , rdIdentityId
-    , rdPlatform
-    , rdToken
-
-    -- * Destructuring the Response
-    , registerDeviceResponse
-    , RegisterDeviceResponse
-    -- * Response Lenses
-    , rdrsDeviceId
-    , rdrsResponseStatus
-    ) where
-
-import Network.AWS.CognitoSync.Types
-import Network.AWS.CognitoSync.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | A request to RegisterDevice.
---
---
---
--- /See:/ 'registerDevice' smart constructor.
-data RegisterDevice = RegisterDevice'
-  { _rdIdentityPoolId :: !Text
-  , _rdIdentityId     :: !Text
-  , _rdPlatform       :: !Platform
-  , _rdToken          :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'RegisterDevice' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rdIdentityPoolId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. Here, the ID of the pool that the identity belongs to.
---
--- * 'rdIdentityId' - The unique ID for this identity.
---
--- * 'rdPlatform' - The SNS platform type (e.g. GCM, SDM, APNS, APNS_SANDBOX).
---
--- * 'rdToken' - The push token.
-registerDevice
-    :: Text -- ^ 'rdIdentityPoolId'
-    -> Text -- ^ 'rdIdentityId'
-    -> Platform -- ^ 'rdPlatform'
-    -> Text -- ^ 'rdToken'
-    -> RegisterDevice
-registerDevice pIdentityPoolId_ pIdentityId_ pPlatform_ pToken_ =
-  RegisterDevice'
-    { _rdIdentityPoolId = pIdentityPoolId_
-    , _rdIdentityId = pIdentityId_
-    , _rdPlatform = pPlatform_
-    , _rdToken = pToken_
-    }
-
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. Here, the ID of the pool that the identity belongs to.
-rdIdentityPoolId :: Lens' RegisterDevice Text
-rdIdentityPoolId = lens _rdIdentityPoolId (\ s a -> s{_rdIdentityPoolId = a})
-
--- | The unique ID for this identity.
-rdIdentityId :: Lens' RegisterDevice Text
-rdIdentityId = lens _rdIdentityId (\ s a -> s{_rdIdentityId = a})
-
--- | The SNS platform type (e.g. GCM, SDM, APNS, APNS_SANDBOX).
-rdPlatform :: Lens' RegisterDevice Platform
-rdPlatform = lens _rdPlatform (\ s a -> s{_rdPlatform = a})
-
--- | The push token.
-rdToken :: Lens' RegisterDevice Text
-rdToken = lens _rdToken (\ s a -> s{_rdToken = a})
-
-instance AWSRequest RegisterDevice where
-        type Rs RegisterDevice = RegisterDeviceResponse
-        request = postJSON cognitoSync
-        response
-          = receiveJSON
-              (\ s h x ->
-                 RegisterDeviceResponse' <$>
-                   (x .?> "DeviceId") <*> (pure (fromEnum s)))
-
-instance Hashable RegisterDevice where
-
-instance NFData RegisterDevice where
-
-instance ToHeaders RegisterDevice where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON RegisterDevice where
-        toJSON RegisterDevice'{..}
-          = object
-              (catMaybes
-                 [Just ("Platform" .= _rdPlatform),
-                  Just ("Token" .= _rdToken)])
-
-instance ToPath RegisterDevice where
-        toPath RegisterDevice'{..}
-          = mconcat
-              ["/identitypools/", toBS _rdIdentityPoolId,
-               "/identity/", toBS _rdIdentityId, "/device"]
-
-instance ToQuery RegisterDevice where
-        toQuery = const mempty
-
--- | Response to a RegisterDevice request.
---
---
---
--- /See:/ 'registerDeviceResponse' smart constructor.
-data RegisterDeviceResponse = RegisterDeviceResponse'
-  { _rdrsDeviceId       :: !(Maybe Text)
-  , _rdrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'RegisterDeviceResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rdrsDeviceId' - The unique ID generated for this device by Cognito.
---
--- * 'rdrsResponseStatus' - -- | The response status code.
-registerDeviceResponse
-    :: Int -- ^ 'rdrsResponseStatus'
-    -> RegisterDeviceResponse
-registerDeviceResponse pResponseStatus_ =
-  RegisterDeviceResponse'
-    {_rdrsDeviceId = Nothing, _rdrsResponseStatus = pResponseStatus_}
-
-
--- | The unique ID generated for this device by Cognito.
-rdrsDeviceId :: Lens' RegisterDeviceResponse (Maybe Text)
-rdrsDeviceId = lens _rdrsDeviceId (\ s a -> s{_rdrsDeviceId = a})
-
--- | -- | The response status code.
-rdrsResponseStatus :: Lens' RegisterDeviceResponse Int
-rdrsResponseStatus = lens _rdrsResponseStatus (\ s a -> s{_rdrsResponseStatus = a})
-
-instance NFData RegisterDeviceResponse where
diff --git a/gen/Network/AWS/CognitoSync/SetCognitoEvents.hs b/gen/Network/AWS/CognitoSync/SetCognitoEvents.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync/SetCognitoEvents.hs
+++ /dev/null
@@ -1,122 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync.SetCognitoEvents
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Sets the AWS Lambda function for a given event type for an identity pool. This request only updates the key/value pair specified. Other key/values pairs are not updated. To remove a key value pair, pass a empty value for the particular key.
---
---
--- This API can only be called with developer credentials. You cannot call this API with the temporary user credentials provided by Cognito Identity.
---
-module Network.AWS.CognitoSync.SetCognitoEvents
-    (
-    -- * Creating a Request
-      setCognitoEvents
-    , SetCognitoEvents
-    -- * Request Lenses
-    , sceIdentityPoolId
-    , sceEvents
-
-    -- * Destructuring the Response
-    , setCognitoEventsResponse
-    , SetCognitoEventsResponse
-    ) where
-
-import Network.AWS.CognitoSync.Types
-import Network.AWS.CognitoSync.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | A request to configure Cognito Events"
---
---
---
--- /See:/ 'setCognitoEvents' smart constructor.
-data SetCognitoEvents = SetCognitoEvents'
-  { _sceIdentityPoolId :: !Text
-  , _sceEvents         :: !(Map Text Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SetCognitoEvents' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sceIdentityPoolId' - The Cognito Identity Pool to use when configuring Cognito Events
---
--- * 'sceEvents' - The events to configure
-setCognitoEvents
-    :: Text -- ^ 'sceIdentityPoolId'
-    -> SetCognitoEvents
-setCognitoEvents pIdentityPoolId_ =
-  SetCognitoEvents' {_sceIdentityPoolId = pIdentityPoolId_, _sceEvents = mempty}
-
-
--- | The Cognito Identity Pool to use when configuring Cognito Events
-sceIdentityPoolId :: Lens' SetCognitoEvents Text
-sceIdentityPoolId = lens _sceIdentityPoolId (\ s a -> s{_sceIdentityPoolId = a})
-
--- | The events to configure
-sceEvents :: Lens' SetCognitoEvents (HashMap Text Text)
-sceEvents = lens _sceEvents (\ s a -> s{_sceEvents = a}) . _Map
-
-instance AWSRequest SetCognitoEvents where
-        type Rs SetCognitoEvents = SetCognitoEventsResponse
-        request = postJSON cognitoSync
-        response = receiveNull SetCognitoEventsResponse'
-
-instance Hashable SetCognitoEvents where
-
-instance NFData SetCognitoEvents where
-
-instance ToHeaders SetCognitoEvents where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON SetCognitoEvents where
-        toJSON SetCognitoEvents'{..}
-          = object (catMaybes [Just ("Events" .= _sceEvents)])
-
-instance ToPath SetCognitoEvents where
-        toPath SetCognitoEvents'{..}
-          = mconcat
-              ["/identitypools/", toBS _sceIdentityPoolId,
-               "/events"]
-
-instance ToQuery SetCognitoEvents where
-        toQuery = const mempty
-
--- | /See:/ 'setCognitoEventsResponse' smart constructor.
-data SetCognitoEventsResponse =
-  SetCognitoEventsResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SetCognitoEventsResponse' with the minimum fields required to make a request.
---
-setCognitoEventsResponse
-    :: SetCognitoEventsResponse
-setCognitoEventsResponse = SetCognitoEventsResponse'
-
-
-instance NFData SetCognitoEventsResponse where
diff --git a/gen/Network/AWS/CognitoSync/SetIdentityPoolConfiguration.hs b/gen/Network/AWS/CognitoSync/SetIdentityPoolConfiguration.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync/SetIdentityPoolConfiguration.hs
+++ /dev/null
@@ -1,190 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync.SetIdentityPoolConfiguration
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Sets the necessary configuration for push sync.
---
---
--- This API can only be called with developer credentials. You cannot call this API with the temporary user credentials provided by Cognito Identity.
---
-module Network.AWS.CognitoSync.SetIdentityPoolConfiguration
-    (
-    -- * Creating a Request
-      setIdentityPoolConfiguration
-    , SetIdentityPoolConfiguration
-    -- * Request Lenses
-    , sipcCognitoStreams
-    , sipcPushSync
-    , sipcIdentityPoolId
-
-    -- * Destructuring the Response
-    , setIdentityPoolConfigurationResponse
-    , SetIdentityPoolConfigurationResponse
-    -- * Response Lenses
-    , sipcrsIdentityPoolId
-    , sipcrsCognitoStreams
-    , sipcrsPushSync
-    , sipcrsResponseStatus
-    ) where
-
-import Network.AWS.CognitoSync.Types
-import Network.AWS.CognitoSync.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | The input for the SetIdentityPoolConfiguration operation.
---
---
---
--- /See:/ 'setIdentityPoolConfiguration' smart constructor.
-data SetIdentityPoolConfiguration = SetIdentityPoolConfiguration'
-  { _sipcCognitoStreams :: !(Maybe CognitoStreams)
-  , _sipcPushSync       :: !(Maybe PushSync)
-  , _sipcIdentityPoolId :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SetIdentityPoolConfiguration' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sipcCognitoStreams' - Options to apply to this identity pool for Amazon Cognito streams.
---
--- * 'sipcPushSync' - Options to apply to this identity pool for push synchronization.
---
--- * 'sipcIdentityPoolId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. This is the ID of the pool to modify.
-setIdentityPoolConfiguration
-    :: Text -- ^ 'sipcIdentityPoolId'
-    -> SetIdentityPoolConfiguration
-setIdentityPoolConfiguration pIdentityPoolId_ =
-  SetIdentityPoolConfiguration'
-    { _sipcCognitoStreams = Nothing
-    , _sipcPushSync = Nothing
-    , _sipcIdentityPoolId = pIdentityPoolId_
-    }
-
-
--- | Options to apply to this identity pool for Amazon Cognito streams.
-sipcCognitoStreams :: Lens' SetIdentityPoolConfiguration (Maybe CognitoStreams)
-sipcCognitoStreams = lens _sipcCognitoStreams (\ s a -> s{_sipcCognitoStreams = a})
-
--- | Options to apply to this identity pool for push synchronization.
-sipcPushSync :: Lens' SetIdentityPoolConfiguration (Maybe PushSync)
-sipcPushSync = lens _sipcPushSync (\ s a -> s{_sipcPushSync = a})
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. This is the ID of the pool to modify.
-sipcIdentityPoolId :: Lens' SetIdentityPoolConfiguration Text
-sipcIdentityPoolId = lens _sipcIdentityPoolId (\ s a -> s{_sipcIdentityPoolId = a})
-
-instance AWSRequest SetIdentityPoolConfiguration
-         where
-        type Rs SetIdentityPoolConfiguration =
-             SetIdentityPoolConfigurationResponse
-        request = postJSON cognitoSync
-        response
-          = receiveJSON
-              (\ s h x ->
-                 SetIdentityPoolConfigurationResponse' <$>
-                   (x .?> "IdentityPoolId") <*> (x .?> "CognitoStreams")
-                     <*> (x .?> "PushSync")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable SetIdentityPoolConfiguration where
-
-instance NFData SetIdentityPoolConfiguration where
-
-instance ToHeaders SetIdentityPoolConfiguration where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON SetIdentityPoolConfiguration where
-        toJSON SetIdentityPoolConfiguration'{..}
-          = object
-              (catMaybes
-                 [("CognitoStreams" .=) <$> _sipcCognitoStreams,
-                  ("PushSync" .=) <$> _sipcPushSync])
-
-instance ToPath SetIdentityPoolConfiguration where
-        toPath SetIdentityPoolConfiguration'{..}
-          = mconcat
-              ["/identitypools/", toBS _sipcIdentityPoolId,
-               "/configuration"]
-
-instance ToQuery SetIdentityPoolConfiguration where
-        toQuery = const mempty
-
--- | The output for the SetIdentityPoolConfiguration operation
---
---
---
--- /See:/ 'setIdentityPoolConfigurationResponse' smart constructor.
-data SetIdentityPoolConfigurationResponse = SetIdentityPoolConfigurationResponse'
-  { _sipcrsIdentityPoolId :: !(Maybe Text)
-  , _sipcrsCognitoStreams :: !(Maybe CognitoStreams)
-  , _sipcrsPushSync       :: !(Maybe PushSync)
-  , _sipcrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SetIdentityPoolConfigurationResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sipcrsIdentityPoolId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
---
--- * 'sipcrsCognitoStreams' - Options to apply to this identity pool for Amazon Cognito streams.
---
--- * 'sipcrsPushSync' - Options to apply to this identity pool for push synchronization.
---
--- * 'sipcrsResponseStatus' - -- | The response status code.
-setIdentityPoolConfigurationResponse
-    :: Int -- ^ 'sipcrsResponseStatus'
-    -> SetIdentityPoolConfigurationResponse
-setIdentityPoolConfigurationResponse pResponseStatus_ =
-  SetIdentityPoolConfigurationResponse'
-    { _sipcrsIdentityPoolId = Nothing
-    , _sipcrsCognitoStreams = Nothing
-    , _sipcrsPushSync = Nothing
-    , _sipcrsResponseStatus = pResponseStatus_
-    }
-
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito.
-sipcrsIdentityPoolId :: Lens' SetIdentityPoolConfigurationResponse (Maybe Text)
-sipcrsIdentityPoolId = lens _sipcrsIdentityPoolId (\ s a -> s{_sipcrsIdentityPoolId = a})
-
--- | Options to apply to this identity pool for Amazon Cognito streams.
-sipcrsCognitoStreams :: Lens' SetIdentityPoolConfigurationResponse (Maybe CognitoStreams)
-sipcrsCognitoStreams = lens _sipcrsCognitoStreams (\ s a -> s{_sipcrsCognitoStreams = a})
-
--- | Options to apply to this identity pool for push synchronization.
-sipcrsPushSync :: Lens' SetIdentityPoolConfigurationResponse (Maybe PushSync)
-sipcrsPushSync = lens _sipcrsPushSync (\ s a -> s{_sipcrsPushSync = a})
-
--- | -- | The response status code.
-sipcrsResponseStatus :: Lens' SetIdentityPoolConfigurationResponse Int
-sipcrsResponseStatus = lens _sipcrsResponseStatus (\ s a -> s{_sipcrsResponseStatus = a})
-
-instance NFData SetIdentityPoolConfigurationResponse
-         where
diff --git a/gen/Network/AWS/CognitoSync/SubscribeToDataset.hs b/gen/Network/AWS/CognitoSync/SubscribeToDataset.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync/SubscribeToDataset.hs
+++ /dev/null
@@ -1,166 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync.SubscribeToDataset
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Subscribes to receive notifications when a dataset is modified by another device.
---
---
--- This API can only be called with temporary credentials provided by Cognito Identity. You cannot call this API with developer credentials.
---
-module Network.AWS.CognitoSync.SubscribeToDataset
-    (
-    -- * Creating a Request
-      subscribeToDataset
-    , SubscribeToDataset
-    -- * Request Lenses
-    , stdIdentityPoolId
-    , stdIdentityId
-    , stdDatasetName
-    , stdDeviceId
-
-    -- * Destructuring the Response
-    , subscribeToDatasetResponse
-    , SubscribeToDatasetResponse
-    -- * Response Lenses
-    , stdrsResponseStatus
-    ) where
-
-import Network.AWS.CognitoSync.Types
-import Network.AWS.CognitoSync.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | A request to SubscribeToDatasetRequest.
---
---
---
--- /See:/ 'subscribeToDataset' smart constructor.
-data SubscribeToDataset = SubscribeToDataset'
-  { _stdIdentityPoolId :: !Text
-  , _stdIdentityId     :: !Text
-  , _stdDatasetName    :: !Text
-  , _stdDeviceId       :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SubscribeToDataset' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'stdIdentityPoolId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. The ID of the pool to which the identity belongs.
---
--- * 'stdIdentityId' - Unique ID for this identity.
---
--- * 'stdDatasetName' - The name of the dataset to subcribe to.
---
--- * 'stdDeviceId' - The unique ID generated for this device by Cognito.
-subscribeToDataset
-    :: Text -- ^ 'stdIdentityPoolId'
-    -> Text -- ^ 'stdIdentityId'
-    -> Text -- ^ 'stdDatasetName'
-    -> Text -- ^ 'stdDeviceId'
-    -> SubscribeToDataset
-subscribeToDataset pIdentityPoolId_ pIdentityId_ pDatasetName_ pDeviceId_ =
-  SubscribeToDataset'
-    { _stdIdentityPoolId = pIdentityPoolId_
-    , _stdIdentityId = pIdentityId_
-    , _stdDatasetName = pDatasetName_
-    , _stdDeviceId = pDeviceId_
-    }
-
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. The ID of the pool to which the identity belongs.
-stdIdentityPoolId :: Lens' SubscribeToDataset Text
-stdIdentityPoolId = lens _stdIdentityPoolId (\ s a -> s{_stdIdentityPoolId = a})
-
--- | Unique ID for this identity.
-stdIdentityId :: Lens' SubscribeToDataset Text
-stdIdentityId = lens _stdIdentityId (\ s a -> s{_stdIdentityId = a})
-
--- | The name of the dataset to subcribe to.
-stdDatasetName :: Lens' SubscribeToDataset Text
-stdDatasetName = lens _stdDatasetName (\ s a -> s{_stdDatasetName = a})
-
--- | The unique ID generated for this device by Cognito.
-stdDeviceId :: Lens' SubscribeToDataset Text
-stdDeviceId = lens _stdDeviceId (\ s a -> s{_stdDeviceId = a})
-
-instance AWSRequest SubscribeToDataset where
-        type Rs SubscribeToDataset =
-             SubscribeToDatasetResponse
-        request = postJSON cognitoSync
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 SubscribeToDatasetResponse' <$> (pure (fromEnum s)))
-
-instance Hashable SubscribeToDataset where
-
-instance NFData SubscribeToDataset where
-
-instance ToHeaders SubscribeToDataset where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON SubscribeToDataset where
-        toJSON = const (Object mempty)
-
-instance ToPath SubscribeToDataset where
-        toPath SubscribeToDataset'{..}
-          = mconcat
-              ["/identitypools/", toBS _stdIdentityPoolId,
-               "/identities/", toBS _stdIdentityId, "/datasets/",
-               toBS _stdDatasetName, "/subscriptions/",
-               toBS _stdDeviceId]
-
-instance ToQuery SubscribeToDataset where
-        toQuery = const mempty
-
--- | Response to a SubscribeToDataset request.
---
---
---
--- /See:/ 'subscribeToDatasetResponse' smart constructor.
-newtype SubscribeToDatasetResponse = SubscribeToDatasetResponse'
-  { _stdrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SubscribeToDatasetResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'stdrsResponseStatus' - -- | The response status code.
-subscribeToDatasetResponse
-    :: Int -- ^ 'stdrsResponseStatus'
-    -> SubscribeToDatasetResponse
-subscribeToDatasetResponse pResponseStatus_ =
-  SubscribeToDatasetResponse' {_stdrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-stdrsResponseStatus :: Lens' SubscribeToDatasetResponse Int
-stdrsResponseStatus = lens _stdrsResponseStatus (\ s a -> s{_stdrsResponseStatus = a})
-
-instance NFData SubscribeToDatasetResponse where
diff --git a/gen/Network/AWS/CognitoSync/Types.hs b/gen/Network/AWS/CognitoSync/Types.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync/Types.hs
+++ /dev/null
@@ -1,233 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync.Types
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.CognitoSync.Types
-    (
-    -- * Service Configuration
-      cognitoSync
-
-    -- * Errors
-    , _InvalidParameterException
-    , _NotAuthorizedException
-    , _InternalErrorException
-    , _InvalidConfigurationException
-    , _DuplicateRequestException
-    , _LambdaThrottledException
-    , _AlreadyStreamedException
-    , _InvalidLambdaFunctionOutputException
-    , _TooManyRequestsException
-    , _ConcurrentModificationException
-    , _ResourceConflictException
-    , _ResourceNotFoundException
-    , _LimitExceededException
-
-    -- * BulkPublishStatus
-    , BulkPublishStatus (..)
-
-    -- * Operation
-    , Operation (..)
-
-    -- * Platform
-    , Platform (..)
-
-    -- * StreamingStatus
-    , StreamingStatus (..)
-
-    -- * CognitoStreams
-    , CognitoStreams
-    , cognitoStreams
-    , csStreamingStatus
-    , csStreamName
-    , csRoleARN
-
-    -- * Dataset
-    , Dataset
-    , dataset
-    , dLastModifiedDate
-    , dNumRecords
-    , dDataStorage
-    , dDatasetName
-    , dCreationDate
-    , dLastModifiedBy
-    , dIdentityId
-
-    -- * IdentityPoolUsage
-    , IdentityPoolUsage
-    , identityPoolUsage
-    , ipuLastModifiedDate
-    , ipuIdentityPoolId
-    , ipuDataStorage
-    , ipuSyncSessionsCount
-
-    -- * IdentityUsage
-    , IdentityUsage
-    , identityUsage
-    , iuLastModifiedDate
-    , iuIdentityPoolId
-    , iuDatasetCount
-    , iuDataStorage
-    , iuIdentityId
-
-    -- * PushSync
-    , PushSync
-    , pushSync
-    , psApplicationARNs
-    , psRoleARN
-
-    -- * Record
-    , Record
-    , record
-    , rSyncCount
-    , rDeviceLastModifiedDate
-    , rLastModifiedDate
-    , rValue
-    , rKey
-    , rLastModifiedBy
-
-    -- * RecordPatch
-    , RecordPatch
-    , recordPatch
-    , rpDeviceLastModifiedDate
-    , rpValue
-    , rpOp
-    , rpKey
-    , rpSyncCount
-    ) where
-
-import Network.AWS.CognitoSync.Types.Product
-import Network.AWS.CognitoSync.Types.Sum
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Sign.V4
-
--- | API version @2014-06-30@ of the Amazon Cognito Sync SDK configuration.
-cognitoSync :: Service
-cognitoSync =
-  Service
-    { _svcAbbrev = "CognitoSync"
-    , _svcSigner = v4
-    , _svcPrefix = "cognito-sync"
-    , _svcVersion = "2014-06-30"
-    , _svcEndpoint = defaultEndpoint cognitoSync
-    , _svcTimeout = Just 70
-    , _svcCheck = statusSuccess
-    , _svcError = parseJSONError "CognitoSync"
-    , _svcRetry = retry
-    }
-  where
-    retry =
-      Exponential
-        { _retryBase = 5.0e-2
-        , _retryGrowth = 2
-        , _retryAttempts = 5
-        , _retryCheck = check
-        }
-    check e
-      | has (hasCode "ThrottledException" . hasStatus 400) e =
-        Just "throttled_exception"
-      | has (hasStatus 429) e = Just "too_many_requests"
-      | has (hasCode "ThrottlingException" . hasStatus 400) e =
-        Just "throttling_exception"
-      | has (hasCode "Throttling" . hasStatus 400) e = Just "throttling"
-      | has (hasStatus 504) e = Just "gateway_timeout"
-      | has (hasCode "RequestThrottledException" . hasStatus 400) e =
-        Just "request_throttled_exception"
-      | has (hasStatus 502) e = Just "bad_gateway"
-      | has (hasStatus 503) e = Just "service_unavailable"
-      | has (hasStatus 500) e = Just "general_server_error"
-      | has (hasStatus 509) e = Just "limit_exceeded"
-      | otherwise = Nothing
-
-
--- | Thrown when a request parameter does not comply with the associated constraints.
-_InvalidParameterException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidParameterException =
-  _MatchServiceError cognitoSync "InvalidParameter" . hasStatus 400
-
-
--- | Thrown when a user is not authorized to access the requested resource.
-_NotAuthorizedException :: AsError a => Getting (First ServiceError) a ServiceError
-_NotAuthorizedException =
-  _MatchServiceError cognitoSync "NotAuthorizedError" . hasStatus 403
-
-
--- | Indicates an internal service error.
-_InternalErrorException :: AsError a => Getting (First ServiceError) a ServiceError
-_InternalErrorException =
-  _MatchServiceError cognitoSync "InternalError" . hasStatus 500
-
-
--- | Prism for InvalidConfigurationException' errors.
-_InvalidConfigurationException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidConfigurationException =
-  _MatchServiceError cognitoSync "InvalidConfiguration" . hasStatus 400
-
-
--- | An exception thrown when there is an IN_PROGRESS bulk publish operation for the given identity pool.
-_DuplicateRequestException :: AsError a => Getting (First ServiceError) a ServiceError
-_DuplicateRequestException =
-  _MatchServiceError cognitoSync "DuplicateRequest" . hasStatus 400
-
-
--- | AWS Lambda throttled your account, please contact AWS Support
---
---
-_LambdaThrottledException :: AsError a => Getting (First ServiceError) a ServiceError
-_LambdaThrottledException =
-  _MatchServiceError cognitoSync "LambdaThrottled" . hasStatus 429
-
-
--- | An exception thrown when a bulk publish operation is requested less than 24 hours after a previous bulk publish operation completed successfully.
-_AlreadyStreamedException :: AsError a => Getting (First ServiceError) a ServiceError
-_AlreadyStreamedException =
-  _MatchServiceError cognitoSync "AlreadyStreamed" . hasStatus 400
-
-
--- | The AWS Lambda function returned invalid output or an exception.
---
---
-_InvalidLambdaFunctionOutputException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidLambdaFunctionOutputException =
-  _MatchServiceError cognitoSync "InvalidLambdaFunctionOutput" . hasStatus 400
-
-
--- | Thrown if the request is throttled.
-_TooManyRequestsException :: AsError a => Getting (First ServiceError) a ServiceError
-_TooManyRequestsException =
-  _MatchServiceError cognitoSync "TooManyRequests" . hasStatus 429
-
-
--- | Thrown if there are parallel requests to modify a resource.
---
---
-_ConcurrentModificationException :: AsError a => Getting (First ServiceError) a ServiceError
-_ConcurrentModificationException =
-  _MatchServiceError cognitoSync "ConcurrentModification" . hasStatus 400
-
-
--- | Thrown if an update can't be applied because the resource was changed by another call and this would result in a conflict.
-_ResourceConflictException :: AsError a => Getting (First ServiceError) a ServiceError
-_ResourceConflictException =
-  _MatchServiceError cognitoSync "ResourceConflict" . hasStatus 409
-
-
--- | Thrown if the resource doesn't exist.
-_ResourceNotFoundException :: AsError a => Getting (First ServiceError) a ServiceError
-_ResourceNotFoundException =
-  _MatchServiceError cognitoSync "ResourceNotFound" . hasStatus 404
-
-
--- | Thrown when the limit on the number of objects or operations has been exceeded.
-_LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
-_LimitExceededException =
-  _MatchServiceError cognitoSync "LimitExceeded" . hasStatus 400
-
diff --git a/gen/Network/AWS/CognitoSync/Types/Product.hs b/gen/Network/AWS/CognitoSync/Types/Product.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync/Types/Product.hs
+++ /dev/null
@@ -1,512 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync.Types.Product
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.CognitoSync.Types.Product where
-
-import Network.AWS.CognitoSync.Types.Sum
-import Network.AWS.Lens
-import Network.AWS.Prelude
-
--- | Configuration options for configure Cognito streams.
---
--- /See:/ 'cognitoStreams' smart constructor.
-data CognitoStreams = CognitoStreams'
-  { _csStreamingStatus :: !(Maybe StreamingStatus)
-  , _csStreamName      :: !(Maybe Text)
-  , _csRoleARN         :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CognitoStreams' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'csStreamingStatus' - Status of the Cognito streams. Valid values are: ENABLED - Streaming of updates to identity pool is enabled. DISABLED - Streaming of updates to identity pool is disabled. Bulk publish will also fail if StreamingStatus is DISABLED.
---
--- * 'csStreamName' - The name of the Cognito stream to receive updates. This stream must be in the developers account and in the same region as the identity pool.
---
--- * 'csRoleARN' - The ARN of the role Amazon Cognito can assume in order to publish to the stream. This role must grant access to Amazon Cognito (cognito-sync) to invoke PutRecord on your Cognito stream.
-cognitoStreams
-    :: CognitoStreams
-cognitoStreams =
-  CognitoStreams'
-    { _csStreamingStatus = Nothing
-    , _csStreamName = Nothing
-    , _csRoleARN = Nothing
-    }
-
-
--- | Status of the Cognito streams. Valid values are: ENABLED - Streaming of updates to identity pool is enabled. DISABLED - Streaming of updates to identity pool is disabled. Bulk publish will also fail if StreamingStatus is DISABLED.
-csStreamingStatus :: Lens' CognitoStreams (Maybe StreamingStatus)
-csStreamingStatus = lens _csStreamingStatus (\ s a -> s{_csStreamingStatus = a})
-
--- | The name of the Cognito stream to receive updates. This stream must be in the developers account and in the same region as the identity pool.
-csStreamName :: Lens' CognitoStreams (Maybe Text)
-csStreamName = lens _csStreamName (\ s a -> s{_csStreamName = a})
-
--- | The ARN of the role Amazon Cognito can assume in order to publish to the stream. This role must grant access to Amazon Cognito (cognito-sync) to invoke PutRecord on your Cognito stream.
-csRoleARN :: Lens' CognitoStreams (Maybe Text)
-csRoleARN = lens _csRoleARN (\ s a -> s{_csRoleARN = a})
-
-instance FromJSON CognitoStreams where
-        parseJSON
-          = withObject "CognitoStreams"
-              (\ x ->
-                 CognitoStreams' <$>
-                   (x .:? "StreamingStatus") <*> (x .:? "StreamName")
-                     <*> (x .:? "RoleArn"))
-
-instance Hashable CognitoStreams where
-
-instance NFData CognitoStreams where
-
-instance ToJSON CognitoStreams where
-        toJSON CognitoStreams'{..}
-          = object
-              (catMaybes
-                 [("StreamingStatus" .=) <$> _csStreamingStatus,
-                  ("StreamName" .=) <$> _csStreamName,
-                  ("RoleArn" .=) <$> _csRoleARN])
-
--- | A collection of data for an identity pool. An identity pool can have multiple datasets. A dataset is per identity and can be general or associated with a particular entity in an application (like a saved game). Datasets are automatically created if they don't exist. Data is synced by dataset, and a dataset can hold up to 1MB of key-value pairs.
---
--- /See:/ 'dataset' smart constructor.
-data Dataset = Dataset'
-  { _dLastModifiedDate :: !(Maybe POSIX)
-  , _dNumRecords       :: !(Maybe Integer)
-  , _dDataStorage      :: !(Maybe Integer)
-  , _dDatasetName      :: !(Maybe Text)
-  , _dCreationDate     :: !(Maybe POSIX)
-  , _dLastModifiedBy   :: !(Maybe Text)
-  , _dIdentityId       :: !(Maybe Text)
-  } deriving (Eq, Read, 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:
---
--- * 'dLastModifiedDate' - Date when the dataset was last modified.
---
--- * 'dNumRecords' - Number of records in this dataset.
---
--- * 'dDataStorage' - Total size in bytes of the records in this dataset.
---
--- * 'dDatasetName' - A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot).
---
--- * 'dCreationDate' - Date on which the dataset was created.
---
--- * 'dLastModifiedBy' - The device that made the last change to this dataset.
---
--- * 'dIdentityId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-dataset
-    :: Dataset
-dataset =
-  Dataset'
-    { _dLastModifiedDate = Nothing
-    , _dNumRecords = Nothing
-    , _dDataStorage = Nothing
-    , _dDatasetName = Nothing
-    , _dCreationDate = Nothing
-    , _dLastModifiedBy = Nothing
-    , _dIdentityId = Nothing
-    }
-
-
--- | Date when the dataset was last modified.
-dLastModifiedDate :: Lens' Dataset (Maybe UTCTime)
-dLastModifiedDate = lens _dLastModifiedDate (\ s a -> s{_dLastModifiedDate = a}) . mapping _Time
-
--- | Number of records in this dataset.
-dNumRecords :: Lens' Dataset (Maybe Integer)
-dNumRecords = lens _dNumRecords (\ s a -> s{_dNumRecords = a})
-
--- | Total size in bytes of the records in this dataset.
-dDataStorage :: Lens' Dataset (Maybe Integer)
-dDataStorage = lens _dDataStorage (\ s a -> s{_dDataStorage = a})
-
--- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot).
-dDatasetName :: Lens' Dataset (Maybe Text)
-dDatasetName = lens _dDatasetName (\ s a -> s{_dDatasetName = a})
-
--- | Date on which the dataset was created.
-dCreationDate :: Lens' Dataset (Maybe UTCTime)
-dCreationDate = lens _dCreationDate (\ s a -> s{_dCreationDate = a}) . mapping _Time
-
--- | The device that made the last change to this dataset.
-dLastModifiedBy :: Lens' Dataset (Maybe Text)
-dLastModifiedBy = lens _dLastModifiedBy (\ s a -> s{_dLastModifiedBy = a})
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-dIdentityId :: Lens' Dataset (Maybe Text)
-dIdentityId = lens _dIdentityId (\ s a -> s{_dIdentityId = a})
-
-instance FromJSON Dataset where
-        parseJSON
-          = withObject "Dataset"
-              (\ x ->
-                 Dataset' <$>
-                   (x .:? "LastModifiedDate") <*> (x .:? "NumRecords")
-                     <*> (x .:? "DataStorage")
-                     <*> (x .:? "DatasetName")
-                     <*> (x .:? "CreationDate")
-                     <*> (x .:? "LastModifiedBy")
-                     <*> (x .:? "IdentityId"))
-
-instance Hashable Dataset where
-
-instance NFData Dataset where
-
--- | Usage information for the identity pool.
---
--- /See:/ 'identityPoolUsage' smart constructor.
-data IdentityPoolUsage = IdentityPoolUsage'
-  { _ipuLastModifiedDate  :: !(Maybe POSIX)
-  , _ipuIdentityPoolId    :: !(Maybe Text)
-  , _ipuDataStorage       :: !(Maybe Integer)
-  , _ipuSyncSessionsCount :: !(Maybe Integer)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'IdentityPoolUsage' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ipuLastModifiedDate' - Date on which the identity pool was last modified.
---
--- * 'ipuIdentityPoolId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
---
--- * 'ipuDataStorage' - Data storage information for the identity pool.
---
--- * 'ipuSyncSessionsCount' - Number of sync sessions for the identity pool.
-identityPoolUsage
-    :: IdentityPoolUsage
-identityPoolUsage =
-  IdentityPoolUsage'
-    { _ipuLastModifiedDate = Nothing
-    , _ipuIdentityPoolId = Nothing
-    , _ipuDataStorage = Nothing
-    , _ipuSyncSessionsCount = Nothing
-    }
-
-
--- | Date on which the identity pool was last modified.
-ipuLastModifiedDate :: Lens' IdentityPoolUsage (Maybe UTCTime)
-ipuLastModifiedDate = lens _ipuLastModifiedDate (\ s a -> s{_ipuLastModifiedDate = a}) . mapping _Time
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-ipuIdentityPoolId :: Lens' IdentityPoolUsage (Maybe Text)
-ipuIdentityPoolId = lens _ipuIdentityPoolId (\ s a -> s{_ipuIdentityPoolId = a})
-
--- | Data storage information for the identity pool.
-ipuDataStorage :: Lens' IdentityPoolUsage (Maybe Integer)
-ipuDataStorage = lens _ipuDataStorage (\ s a -> s{_ipuDataStorage = a})
-
--- | Number of sync sessions for the identity pool.
-ipuSyncSessionsCount :: Lens' IdentityPoolUsage (Maybe Integer)
-ipuSyncSessionsCount = lens _ipuSyncSessionsCount (\ s a -> s{_ipuSyncSessionsCount = a})
-
-instance FromJSON IdentityPoolUsage where
-        parseJSON
-          = withObject "IdentityPoolUsage"
-              (\ x ->
-                 IdentityPoolUsage' <$>
-                   (x .:? "LastModifiedDate") <*>
-                     (x .:? "IdentityPoolId")
-                     <*> (x .:? "DataStorage")
-                     <*> (x .:? "SyncSessionsCount"))
-
-instance Hashable IdentityPoolUsage where
-
-instance NFData IdentityPoolUsage where
-
--- | Usage information for the identity.
---
--- /See:/ 'identityUsage' smart constructor.
-data IdentityUsage = IdentityUsage'
-  { _iuLastModifiedDate :: !(Maybe POSIX)
-  , _iuIdentityPoolId   :: !(Maybe Text)
-  , _iuDatasetCount     :: !(Maybe Int)
-  , _iuDataStorage      :: !(Maybe Integer)
-  , _iuIdentityId       :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'IdentityUsage' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'iuLastModifiedDate' - Date on which the identity was last modified.
---
--- * 'iuIdentityPoolId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
---
--- * 'iuDatasetCount' - Number of datasets for the identity.
---
--- * 'iuDataStorage' - Total data storage for this identity.
---
--- * 'iuIdentityId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-identityUsage
-    :: IdentityUsage
-identityUsage =
-  IdentityUsage'
-    { _iuLastModifiedDate = Nothing
-    , _iuIdentityPoolId = Nothing
-    , _iuDatasetCount = Nothing
-    , _iuDataStorage = Nothing
-    , _iuIdentityId = Nothing
-    }
-
-
--- | Date on which the identity was last modified.
-iuLastModifiedDate :: Lens' IdentityUsage (Maybe UTCTime)
-iuLastModifiedDate = lens _iuLastModifiedDate (\ s a -> s{_iuLastModifiedDate = a}) . mapping _Time
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-iuIdentityPoolId :: Lens' IdentityUsage (Maybe Text)
-iuIdentityPoolId = lens _iuIdentityPoolId (\ s a -> s{_iuIdentityPoolId = a})
-
--- | Number of datasets for the identity.
-iuDatasetCount :: Lens' IdentityUsage (Maybe Int)
-iuDatasetCount = lens _iuDatasetCount (\ s a -> s{_iuDatasetCount = a})
-
--- | Total data storage for this identity.
-iuDataStorage :: Lens' IdentityUsage (Maybe Integer)
-iuDataStorage = lens _iuDataStorage (\ s a -> s{_iuDataStorage = a})
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-iuIdentityId :: Lens' IdentityUsage (Maybe Text)
-iuIdentityId = lens _iuIdentityId (\ s a -> s{_iuIdentityId = a})
-
-instance FromJSON IdentityUsage where
-        parseJSON
-          = withObject "IdentityUsage"
-              (\ x ->
-                 IdentityUsage' <$>
-                   (x .:? "LastModifiedDate") <*>
-                     (x .:? "IdentityPoolId")
-                     <*> (x .:? "DatasetCount")
-                     <*> (x .:? "DataStorage")
-                     <*> (x .:? "IdentityId"))
-
-instance Hashable IdentityUsage where
-
-instance NFData IdentityUsage where
-
--- | Configuration options to be applied to the identity pool.
---
---
---
--- /See:/ 'pushSync' smart constructor.
-data PushSync = PushSync'
-  { _psApplicationARNs :: !(Maybe [Text])
-  , _psRoleARN         :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PushSync' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'psApplicationARNs' - List of SNS platform application ARNs that could be used by clients.
---
--- * 'psRoleARN' - A role configured to allow Cognito to call SNS on behalf of the developer.
-pushSync
-    :: PushSync
-pushSync = PushSync' {_psApplicationARNs = Nothing, _psRoleARN = Nothing}
-
-
--- | List of SNS platform application ARNs that could be used by clients.
-psApplicationARNs :: Lens' PushSync [Text]
-psApplicationARNs = lens _psApplicationARNs (\ s a -> s{_psApplicationARNs = a}) . _Default . _Coerce
-
--- | A role configured to allow Cognito to call SNS on behalf of the developer.
-psRoleARN :: Lens' PushSync (Maybe Text)
-psRoleARN = lens _psRoleARN (\ s a -> s{_psRoleARN = a})
-
-instance FromJSON PushSync where
-        parseJSON
-          = withObject "PushSync"
-              (\ x ->
-                 PushSync' <$>
-                   (x .:? "ApplicationArns" .!= mempty) <*>
-                     (x .:? "RoleArn"))
-
-instance Hashable PushSync where
-
-instance NFData PushSync where
-
-instance ToJSON PushSync where
-        toJSON PushSync'{..}
-          = object
-              (catMaybes
-                 [("ApplicationArns" .=) <$> _psApplicationARNs,
-                  ("RoleArn" .=) <$> _psRoleARN])
-
--- | The basic data structure of a dataset.
---
--- /See:/ 'record' smart constructor.
-data Record = Record'
-  { _rSyncCount              :: !(Maybe Integer)
-  , _rDeviceLastModifiedDate :: !(Maybe POSIX)
-  , _rLastModifiedDate       :: !(Maybe POSIX)
-  , _rValue                  :: !(Maybe Text)
-  , _rKey                    :: !(Maybe Text)
-  , _rLastModifiedBy         :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Record' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rSyncCount' - The server sync count for this record.
---
--- * 'rDeviceLastModifiedDate' - The last modified date of the client device.
---
--- * 'rLastModifiedDate' - The date on which the record was last modified.
---
--- * 'rValue' - The value for the record.
---
--- * 'rKey' - The key for the record.
---
--- * 'rLastModifiedBy' - The user/device that made the last change to this record.
-record
-    :: Record
-record =
-  Record'
-    { _rSyncCount = Nothing
-    , _rDeviceLastModifiedDate = Nothing
-    , _rLastModifiedDate = Nothing
-    , _rValue = Nothing
-    , _rKey = Nothing
-    , _rLastModifiedBy = Nothing
-    }
-
-
--- | The server sync count for this record.
-rSyncCount :: Lens' Record (Maybe Integer)
-rSyncCount = lens _rSyncCount (\ s a -> s{_rSyncCount = a})
-
--- | The last modified date of the client device.
-rDeviceLastModifiedDate :: Lens' Record (Maybe UTCTime)
-rDeviceLastModifiedDate = lens _rDeviceLastModifiedDate (\ s a -> s{_rDeviceLastModifiedDate = a}) . mapping _Time
-
--- | The date on which the record was last modified.
-rLastModifiedDate :: Lens' Record (Maybe UTCTime)
-rLastModifiedDate = lens _rLastModifiedDate (\ s a -> s{_rLastModifiedDate = a}) . mapping _Time
-
--- | The value for the record.
-rValue :: Lens' Record (Maybe Text)
-rValue = lens _rValue (\ s a -> s{_rValue = a})
-
--- | The key for the record.
-rKey :: Lens' Record (Maybe Text)
-rKey = lens _rKey (\ s a -> s{_rKey = a})
-
--- | The user/device that made the last change to this record.
-rLastModifiedBy :: Lens' Record (Maybe Text)
-rLastModifiedBy = lens _rLastModifiedBy (\ s a -> s{_rLastModifiedBy = a})
-
-instance FromJSON Record where
-        parseJSON
-          = withObject "Record"
-              (\ x ->
-                 Record' <$>
-                   (x .:? "SyncCount") <*>
-                     (x .:? "DeviceLastModifiedDate")
-                     <*> (x .:? "LastModifiedDate")
-                     <*> (x .:? "Value")
-                     <*> (x .:? "Key")
-                     <*> (x .:? "LastModifiedBy"))
-
-instance Hashable Record where
-
-instance NFData Record where
-
--- | An update operation for a record.
---
--- /See:/ 'recordPatch' smart constructor.
-data RecordPatch = RecordPatch'
-  { _rpDeviceLastModifiedDate :: !(Maybe POSIX)
-  , _rpValue                  :: !(Maybe Text)
-  , _rpOp                     :: !Operation
-  , _rpKey                    :: !Text
-  , _rpSyncCount              :: !Integer
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'RecordPatch' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rpDeviceLastModifiedDate' - The last modified date of the client device.
---
--- * 'rpValue' - The value associated with the record patch.
---
--- * 'rpOp' - An operation, either replace or remove.
---
--- * 'rpKey' - The key associated with the record patch.
---
--- * 'rpSyncCount' - Last known server sync count for this record. Set to 0 if unknown.
-recordPatch
-    :: Operation -- ^ 'rpOp'
-    -> Text -- ^ 'rpKey'
-    -> Integer -- ^ 'rpSyncCount'
-    -> RecordPatch
-recordPatch pOp_ pKey_ pSyncCount_ =
-  RecordPatch'
-    { _rpDeviceLastModifiedDate = Nothing
-    , _rpValue = Nothing
-    , _rpOp = pOp_
-    , _rpKey = pKey_
-    , _rpSyncCount = pSyncCount_
-    }
-
-
--- | The last modified date of the client device.
-rpDeviceLastModifiedDate :: Lens' RecordPatch (Maybe UTCTime)
-rpDeviceLastModifiedDate = lens _rpDeviceLastModifiedDate (\ s a -> s{_rpDeviceLastModifiedDate = a}) . mapping _Time
-
--- | The value associated with the record patch.
-rpValue :: Lens' RecordPatch (Maybe Text)
-rpValue = lens _rpValue (\ s a -> s{_rpValue = a})
-
--- | An operation, either replace or remove.
-rpOp :: Lens' RecordPatch Operation
-rpOp = lens _rpOp (\ s a -> s{_rpOp = a})
-
--- | The key associated with the record patch.
-rpKey :: Lens' RecordPatch Text
-rpKey = lens _rpKey (\ s a -> s{_rpKey = a})
-
--- | Last known server sync count for this record. Set to 0 if unknown.
-rpSyncCount :: Lens' RecordPatch Integer
-rpSyncCount = lens _rpSyncCount (\ s a -> s{_rpSyncCount = a})
-
-instance Hashable RecordPatch where
-
-instance NFData RecordPatch where
-
-instance ToJSON RecordPatch where
-        toJSON RecordPatch'{..}
-          = object
-              (catMaybes
-                 [("DeviceLastModifiedDate" .=) <$>
-                    _rpDeviceLastModifiedDate,
-                  ("Value" .=) <$> _rpValue, Just ("Op" .= _rpOp),
-                  Just ("Key" .= _rpKey),
-                  Just ("SyncCount" .= _rpSyncCount)])
diff --git a/gen/Network/AWS/CognitoSync/Types/Sum.hs b/gen/Network/AWS/CognitoSync/Types/Sum.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync/Types/Sum.hs
+++ /dev/null
@@ -1,143 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE LambdaCase         #-}
-{-# LANGUAGE OverloadedStrings  #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync.Types.Sum
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.CognitoSync.Types.Sum where
-
-import Network.AWS.Prelude
-
-data BulkPublishStatus
-  = Failed
-  | InProgress
-  | NotStarted
-  | Succeeded
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText BulkPublishStatus where
-    parser = takeLowerText >>= \case
-        "failed" -> pure Failed
-        "in_progress" -> pure InProgress
-        "not_started" -> pure NotStarted
-        "succeeded" -> pure Succeeded
-        e -> fromTextError $ "Failure parsing BulkPublishStatus from value: '" <> e
-           <> "'. Accepted values: failed, in_progress, not_started, succeeded"
-
-instance ToText BulkPublishStatus where
-    toText = \case
-        Failed -> "FAILED"
-        InProgress -> "IN_PROGRESS"
-        NotStarted -> "NOT_STARTED"
-        Succeeded -> "SUCCEEDED"
-
-instance Hashable     BulkPublishStatus
-instance NFData       BulkPublishStatus
-instance ToByteString BulkPublishStatus
-instance ToQuery      BulkPublishStatus
-instance ToHeader     BulkPublishStatus
-
-instance FromJSON BulkPublishStatus where
-    parseJSON = parseJSONText "BulkPublishStatus"
-
-data Operation
-  = Remove
-  | Replace
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Operation where
-    parser = takeLowerText >>= \case
-        "remove" -> pure Remove
-        "replace" -> pure Replace
-        e -> fromTextError $ "Failure parsing Operation from value: '" <> e
-           <> "'. Accepted values: remove, replace"
-
-instance ToText Operation where
-    toText = \case
-        Remove -> "remove"
-        Replace -> "replace"
-
-instance Hashable     Operation
-instance NFData       Operation
-instance ToByteString Operation
-instance ToQuery      Operation
-instance ToHeader     Operation
-
-instance ToJSON Operation where
-    toJSON = toJSONText
-
-data Platform
-  = ADM
-  | APNS
-  | APNSSandbox
-  | GCM
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText Platform where
-    parser = takeLowerText >>= \case
-        "adm" -> pure ADM
-        "apns" -> pure APNS
-        "apns_sandbox" -> pure APNSSandbox
-        "gcm" -> pure GCM
-        e -> fromTextError $ "Failure parsing Platform from value: '" <> e
-           <> "'. Accepted values: adm, apns, apns_sandbox, gcm"
-
-instance ToText Platform where
-    toText = \case
-        ADM -> "ADM"
-        APNS -> "APNS"
-        APNSSandbox -> "APNS_SANDBOX"
-        GCM -> "GCM"
-
-instance Hashable     Platform
-instance NFData       Platform
-instance ToByteString Platform
-instance ToQuery      Platform
-instance ToHeader     Platform
-
-instance ToJSON Platform where
-    toJSON = toJSONText
-
-data StreamingStatus
-  = Disabled
-  | Enabled
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText StreamingStatus where
-    parser = takeLowerText >>= \case
-        "disabled" -> pure Disabled
-        "enabled" -> pure Enabled
-        e -> fromTextError $ "Failure parsing StreamingStatus from value: '" <> e
-           <> "'. Accepted values: disabled, enabled"
-
-instance ToText StreamingStatus where
-    toText = \case
-        Disabled -> "DISABLED"
-        Enabled -> "ENABLED"
-
-instance Hashable     StreamingStatus
-instance NFData       StreamingStatus
-instance ToByteString StreamingStatus
-instance ToQuery      StreamingStatus
-instance ToHeader     StreamingStatus
-
-instance ToJSON StreamingStatus where
-    toJSON = toJSONText
-
-instance FromJSON StreamingStatus where
-    parseJSON = parseJSONText "StreamingStatus"
diff --git a/gen/Network/AWS/CognitoSync/UnsubscribeFromDataset.hs b/gen/Network/AWS/CognitoSync/UnsubscribeFromDataset.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync/UnsubscribeFromDataset.hs
+++ /dev/null
@@ -1,164 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync.UnsubscribeFromDataset
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Unsubscribes from receiving notifications when a dataset is modified by another device.
---
---
--- This API can only be called with temporary credentials provided by Cognito Identity. You cannot call this API with developer credentials.
---
-module Network.AWS.CognitoSync.UnsubscribeFromDataset
-    (
-    -- * Creating a Request
-      unsubscribeFromDataset
-    , UnsubscribeFromDataset
-    -- * Request Lenses
-    , ufdIdentityPoolId
-    , ufdIdentityId
-    , ufdDatasetName
-    , ufdDeviceId
-
-    -- * Destructuring the Response
-    , unsubscribeFromDatasetResponse
-    , UnsubscribeFromDatasetResponse
-    -- * Response Lenses
-    , ufdrsResponseStatus
-    ) where
-
-import Network.AWS.CognitoSync.Types
-import Network.AWS.CognitoSync.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | A request to UnsubscribeFromDataset.
---
---
---
--- /See:/ 'unsubscribeFromDataset' smart constructor.
-data UnsubscribeFromDataset = UnsubscribeFromDataset'
-  { _ufdIdentityPoolId :: !Text
-  , _ufdIdentityId     :: !Text
-  , _ufdDatasetName    :: !Text
-  , _ufdDeviceId       :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UnsubscribeFromDataset' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ufdIdentityPoolId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. The ID of the pool to which this identity belongs.
---
--- * 'ufdIdentityId' - Unique ID for this identity.
---
--- * 'ufdDatasetName' - The name of the dataset from which to unsubcribe.
---
--- * 'ufdDeviceId' - The unique ID generated for this device by Cognito.
-unsubscribeFromDataset
-    :: Text -- ^ 'ufdIdentityPoolId'
-    -> Text -- ^ 'ufdIdentityId'
-    -> Text -- ^ 'ufdDatasetName'
-    -> Text -- ^ 'ufdDeviceId'
-    -> UnsubscribeFromDataset
-unsubscribeFromDataset pIdentityPoolId_ pIdentityId_ pDatasetName_ pDeviceId_ =
-  UnsubscribeFromDataset'
-    { _ufdIdentityPoolId = pIdentityPoolId_
-    , _ufdIdentityId = pIdentityId_
-    , _ufdDatasetName = pDatasetName_
-    , _ufdDeviceId = pDeviceId_
-    }
-
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. The ID of the pool to which this identity belongs.
-ufdIdentityPoolId :: Lens' UnsubscribeFromDataset Text
-ufdIdentityPoolId = lens _ufdIdentityPoolId (\ s a -> s{_ufdIdentityPoolId = a})
-
--- | Unique ID for this identity.
-ufdIdentityId :: Lens' UnsubscribeFromDataset Text
-ufdIdentityId = lens _ufdIdentityId (\ s a -> s{_ufdIdentityId = a})
-
--- | The name of the dataset from which to unsubcribe.
-ufdDatasetName :: Lens' UnsubscribeFromDataset Text
-ufdDatasetName = lens _ufdDatasetName (\ s a -> s{_ufdDatasetName = a})
-
--- | The unique ID generated for this device by Cognito.
-ufdDeviceId :: Lens' UnsubscribeFromDataset Text
-ufdDeviceId = lens _ufdDeviceId (\ s a -> s{_ufdDeviceId = a})
-
-instance AWSRequest UnsubscribeFromDataset where
-        type Rs UnsubscribeFromDataset =
-             UnsubscribeFromDatasetResponse
-        request = delete cognitoSync
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 UnsubscribeFromDatasetResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable UnsubscribeFromDataset where
-
-instance NFData UnsubscribeFromDataset where
-
-instance ToHeaders UnsubscribeFromDataset where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath UnsubscribeFromDataset where
-        toPath UnsubscribeFromDataset'{..}
-          = mconcat
-              ["/identitypools/", toBS _ufdIdentityPoolId,
-               "/identities/", toBS _ufdIdentityId, "/datasets/",
-               toBS _ufdDatasetName, "/subscriptions/",
-               toBS _ufdDeviceId]
-
-instance ToQuery UnsubscribeFromDataset where
-        toQuery = const mempty
-
--- | Response to an UnsubscribeFromDataset request.
---
---
---
--- /See:/ 'unsubscribeFromDatasetResponse' smart constructor.
-newtype UnsubscribeFromDatasetResponse = UnsubscribeFromDatasetResponse'
-  { _ufdrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UnsubscribeFromDatasetResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ufdrsResponseStatus' - -- | The response status code.
-unsubscribeFromDatasetResponse
-    :: Int -- ^ 'ufdrsResponseStatus'
-    -> UnsubscribeFromDatasetResponse
-unsubscribeFromDatasetResponse pResponseStatus_ =
-  UnsubscribeFromDatasetResponse' {_ufdrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-ufdrsResponseStatus :: Lens' UnsubscribeFromDatasetResponse Int
-ufdrsResponseStatus = lens _ufdrsResponseStatus (\ s a -> s{_ufdrsResponseStatus = a})
-
-instance NFData UnsubscribeFromDatasetResponse where
diff --git a/gen/Network/AWS/CognitoSync/UpdateRecords.hs b/gen/Network/AWS/CognitoSync/UpdateRecords.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync/UpdateRecords.hs
+++ /dev/null
@@ -1,206 +0,0 @@
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds   #-}
-{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync.UpdateRecords
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Posts updates to records and adds and deletes records for a dataset and user.
---
---
--- The sync count in the record patch is your last known sync count for that record. The server will reject an UpdateRecords request with a ResourceConflictException if you try to patch a record with a new value but a stale sync count.
---
--- For example, if the sync count on the server is 5 for a key called highScore and you try and submit a new highScore with sync count of 4, the request will be rejected. To obtain the current sync count for a record, call ListRecords. On a successful update of the record, the response returns the new sync count for that record. You should present that sync count the next time you try to update that same record. When the record does not exist, specify the sync count as 0.
---
--- This API can be called with temporary user credentials provided by Cognito Identity or with developer credentials.
---
-module Network.AWS.CognitoSync.UpdateRecords
-    (
-    -- * Creating a Request
-      updateRecords
-    , UpdateRecords
-    -- * Request Lenses
-    , urRecordPatches
-    , urDeviceId
-    , urClientContext
-    , urIdentityPoolId
-    , urIdentityId
-    , urDatasetName
-    , urSyncSessionToken
-
-    -- * Destructuring the Response
-    , updateRecordsResponse
-    , UpdateRecordsResponse
-    -- * Response Lenses
-    , urrsRecords
-    , urrsResponseStatus
-    ) where
-
-import Network.AWS.CognitoSync.Types
-import Network.AWS.CognitoSync.Types.Product
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-
--- | A request to post updates to records or add and delete records for a dataset and user.
---
--- /See:/ 'updateRecords' smart constructor.
-data UpdateRecords = UpdateRecords'
-  { _urRecordPatches    :: !(Maybe [RecordPatch])
-  , _urDeviceId         :: !(Maybe Text)
-  , _urClientContext    :: !(Maybe Text)
-  , _urIdentityPoolId   :: !Text
-  , _urIdentityId       :: !Text
-  , _urDatasetName      :: !Text
-  , _urSyncSessionToken :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateRecords' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'urRecordPatches' - A list of patch operations.
---
--- * 'urDeviceId' - The unique ID generated for this device by Cognito.
---
--- * 'urClientContext' - Intended to supply a device ID that will populate the lastModifiedBy field referenced in other methods. The ClientContext field is not yet implemented.
---
--- * 'urIdentityPoolId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
---
--- * 'urIdentityId' - A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
---
--- * 'urDatasetName' - A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot).
---
--- * 'urSyncSessionToken' - The SyncSessionToken returned by a previous call to ListRecords for this dataset and identity.
-updateRecords
-    :: Text -- ^ 'urIdentityPoolId'
-    -> Text -- ^ 'urIdentityId'
-    -> Text -- ^ 'urDatasetName'
-    -> Text -- ^ 'urSyncSessionToken'
-    -> UpdateRecords
-updateRecords pIdentityPoolId_ pIdentityId_ pDatasetName_ pSyncSessionToken_ =
-  UpdateRecords'
-    { _urRecordPatches = Nothing
-    , _urDeviceId = Nothing
-    , _urClientContext = Nothing
-    , _urIdentityPoolId = pIdentityPoolId_
-    , _urIdentityId = pIdentityId_
-    , _urDatasetName = pDatasetName_
-    , _urSyncSessionToken = pSyncSessionToken_
-    }
-
-
--- | A list of patch operations.
-urRecordPatches :: Lens' UpdateRecords [RecordPatch]
-urRecordPatches = lens _urRecordPatches (\ s a -> s{_urRecordPatches = a}) . _Default . _Coerce
-
--- | The unique ID generated for this device by Cognito.
-urDeviceId :: Lens' UpdateRecords (Maybe Text)
-urDeviceId = lens _urDeviceId (\ s a -> s{_urDeviceId = a})
-
--- | Intended to supply a device ID that will populate the lastModifiedBy field referenced in other methods. The ClientContext field is not yet implemented.
-urClientContext :: Lens' UpdateRecords (Maybe Text)
-urClientContext = lens _urClientContext (\ s a -> s{_urClientContext = a})
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-urIdentityPoolId :: Lens' UpdateRecords Text
-urIdentityPoolId = lens _urIdentityPoolId (\ s a -> s{_urIdentityPoolId = a})
-
--- | A name-spaced GUID (for example, us-east-1:23EC4050-6AEA-7089-A2DD-08002EXAMPLE) created by Amazon Cognito. GUID generation is unique within a region.
-urIdentityId :: Lens' UpdateRecords Text
-urIdentityId = lens _urIdentityId (\ s a -> s{_urIdentityId = a})
-
--- | A string of up to 128 characters. Allowed characters are a-z, A-Z, 0-9, '_' (underscore), '-' (dash), and '.' (dot).
-urDatasetName :: Lens' UpdateRecords Text
-urDatasetName = lens _urDatasetName (\ s a -> s{_urDatasetName = a})
-
--- | The SyncSessionToken returned by a previous call to ListRecords for this dataset and identity.
-urSyncSessionToken :: Lens' UpdateRecords Text
-urSyncSessionToken = lens _urSyncSessionToken (\ s a -> s{_urSyncSessionToken = a})
-
-instance AWSRequest UpdateRecords where
-        type Rs UpdateRecords = UpdateRecordsResponse
-        request = postJSON cognitoSync
-        response
-          = receiveJSON
-              (\ s h x ->
-                 UpdateRecordsResponse' <$>
-                   (x .?> "Records" .!@ mempty) <*> (pure (fromEnum s)))
-
-instance Hashable UpdateRecords where
-
-instance NFData UpdateRecords where
-
-instance ToHeaders UpdateRecords where
-        toHeaders UpdateRecords'{..}
-          = mconcat
-              ["x-amz-Client-Context" =# _urClientContext,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToJSON UpdateRecords where
-        toJSON UpdateRecords'{..}
-          = object
-              (catMaybes
-                 [("RecordPatches" .=) <$> _urRecordPatches,
-                  ("DeviceId" .=) <$> _urDeviceId,
-                  Just ("SyncSessionToken" .= _urSyncSessionToken)])
-
-instance ToPath UpdateRecords where
-        toPath UpdateRecords'{..}
-          = mconcat
-              ["/identitypools/", toBS _urIdentityPoolId,
-               "/identities/", toBS _urIdentityId, "/datasets/",
-               toBS _urDatasetName]
-
-instance ToQuery UpdateRecords where
-        toQuery = const mempty
-
--- | Returned for a successful UpdateRecordsRequest.
---
--- /See:/ 'updateRecordsResponse' smart constructor.
-data UpdateRecordsResponse = UpdateRecordsResponse'
-  { _urrsRecords        :: !(Maybe [Record])
-  , _urrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateRecordsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'urrsRecords' - A list of records that have been updated.
---
--- * 'urrsResponseStatus' - -- | The response status code.
-updateRecordsResponse
-    :: Int -- ^ 'urrsResponseStatus'
-    -> UpdateRecordsResponse
-updateRecordsResponse pResponseStatus_ =
-  UpdateRecordsResponse'
-    {_urrsRecords = Nothing, _urrsResponseStatus = pResponseStatus_}
-
-
--- | A list of records that have been updated.
-urrsRecords :: Lens' UpdateRecordsResponse [Record]
-urrsRecords = lens _urrsRecords (\ s a -> s{_urrsRecords = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-urrsResponseStatus :: Lens' UpdateRecordsResponse Int
-urrsResponseStatus = lens _urrsResponseStatus (\ s a -> s{_urrsResponseStatus = a})
-
-instance NFData UpdateRecordsResponse where
diff --git a/gen/Network/AWS/CognitoSync/Waiters.hs b/gen/Network/AWS/CognitoSync/Waiters.hs
deleted file mode 100644
--- a/gen/Network/AWS/CognitoSync/Waiters.hs
+++ /dev/null
@@ -1,21 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# LANGUAGE TypeFamilies      #-}
-
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.CognitoSync.Waiters
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.AWS.CognitoSync.Waiters where
-
-import Network.AWS.CognitoSync.Types
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Waiter
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -2,20 +2,22 @@
 
 -- |
 -- Module      : Main
--- Copyright   : (c) 2013-2018 Brendan Hay
+-- Copyright   : (c) 2013-2023 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
+-- Maintainer  : Brendan Hay
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
---
 module Main (main) where
 
+import Test.Amazonka.CognitoSync
+import Test.Amazonka.CognitoSync.Internal
 import Test.Tasty
-import Test.AWS.CognitoSync
-import Test.AWS.CognitoSync.Internal
 
 main :: IO ()
-main = defaultMain $ testGroup "CognitoSync"
-    [ testGroup "tests"    tests
-    , testGroup "fixtures" fixtures
-    ]
+main =
+  defaultMain $
+    testGroup
+      "CognitoSync"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/AWS/CognitoSync.hs b/test/Test/AWS/CognitoSync.hs
deleted file mode 100644
--- a/test/Test/AWS/CognitoSync.hs
+++ /dev/null
@@ -1,26 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
--- Module      : Test.AWS.CognitoSync
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
-
-module Test.AWS.CognitoSync
-    ( tests
-    , fixtures
-    ) where
-
-import           Network.AWS.CognitoSync
-import           Test.AWS.Gen.CognitoSync
-import           Test.Tasty
-
-tests :: [TestTree]
-tests = []
-
-fixtures :: [TestTree]
-fixtures = []
diff --git a/test/Test/AWS/CognitoSync/Internal.hs b/test/Test/AWS/CognitoSync/Internal.hs
deleted file mode 100644
--- a/test/Test/AWS/CognitoSync/Internal.hs
+++ /dev/null
@@ -1,16 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-
--- Module      : Test.AWS.CognitoSync.Internal
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : This Source Code Form is subject to the terms of
---               the Mozilla Public License, v. 2.0.
---               A copy of the MPL can be found in the LICENSE file or
---               you can obtain it at http://mozilla.org/MPL/2.0/.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : experimental
--- Portability : non-portable (GHC extensions)
-
-module Test.AWS.CognitoSync.Internal where
-
-import Test.AWS.Prelude
diff --git a/test/Test/AWS/Gen/CognitoSync.hs b/test/Test/AWS/Gen/CognitoSync.hs
deleted file mode 100644
--- a/test/Test/AWS/Gen/CognitoSync.hs
+++ /dev/null
@@ -1,345 +0,0 @@
-{-# OPTIONS_GHC -fno-warn-unused-imports #-}
-{-# OPTIONS_GHC -fno-warn-orphans        #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Test.AWS.Gen.CognitoSync
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Test.AWS.Gen.CognitoSync where
-
-import Data.Proxy
-import Network.AWS.CognitoSync
-import Test.AWS.CognitoSync.Internal
-import Test.AWS.Fixture
-import Test.AWS.Prelude
-import Test.Tasty
-
--- Auto-generated: the actual test selection needs to be manually placed into
--- the top-level so that real test data can be incrementally added.
---
--- This commented snippet is what the entire set should look like:
-
--- fixtures :: TestTree
--- fixtures =
---     [ testGroup "request"
---         [ requestDescribeDataset $
---             describeDataset
---
---         , requestSetCognitoEvents $
---             setCognitoEvents
---
---         , requestDescribeIdentityPoolUsage $
---             describeIdentityPoolUsage
---
---         , requestGetBulkPublishDetails $
---             getBulkPublishDetails
---
---         , requestListIdentityPoolUsage $
---             listIdentityPoolUsage
---
---         , requestSetIdentityPoolConfiguration $
---             setIdentityPoolConfiguration
---
---         , requestDeleteDataset $
---             deleteDataset
---
---         , requestGetCognitoEvents $
---             getCognitoEvents
---
---         , requestDescribeIdentityUsage $
---             describeIdentityUsage
---
---         , requestRegisterDevice $
---             registerDevice
---
---         , requestSubscribeToDataset $
---             subscribeToDataset
---
---         , requestGetIdentityPoolConfiguration $
---             getIdentityPoolConfiguration
---
---         , requestListRecords $
---             listRecords
---
---         , requestUnsubscribeFromDataset $
---             unsubscribeFromDataset
---
---         , requestUpdateRecords $
---             updateRecords
---
---         , requestListDatasets $
---             listDatasets
---
---         , requestBulkPublish $
---             bulkPublish
---
---           ]
-
---     , testGroup "response"
---         [ responseDescribeDataset $
---             describeDatasetResponse
---
---         , responseSetCognitoEvents $
---             setCognitoEventsResponse
---
---         , responseDescribeIdentityPoolUsage $
---             describeIdentityPoolUsageResponse
---
---         , responseGetBulkPublishDetails $
---             getBulkPublishDetailsResponse
---
---         , responseListIdentityPoolUsage $
---             listIdentityPoolUsageResponse
---
---         , responseSetIdentityPoolConfiguration $
---             setIdentityPoolConfigurationResponse
---
---         , responseDeleteDataset $
---             deleteDatasetResponse
---
---         , responseGetCognitoEvents $
---             getCognitoEventsResponse
---
---         , responseDescribeIdentityUsage $
---             describeIdentityUsageResponse
---
---         , responseRegisterDevice $
---             registerDeviceResponse
---
---         , responseSubscribeToDataset $
---             subscribeToDatasetResponse
---
---         , responseGetIdentityPoolConfiguration $
---             getIdentityPoolConfigurationResponse
---
---         , responseListRecords $
---             listRecordsResponse
---
---         , responseUnsubscribeFromDataset $
---             unsubscribeFromDatasetResponse
---
---         , responseUpdateRecords $
---             updateRecordsResponse
---
---         , responseListDatasets $
---             listDatasetsResponse
---
---         , responseBulkPublish $
---             bulkPublishResponse
---
---           ]
---     ]
-
--- Requests
-
-requestDescribeDataset :: DescribeDataset -> TestTree
-requestDescribeDataset = req
-    "DescribeDataset"
-    "fixture/DescribeDataset.yaml"
-
-requestSetCognitoEvents :: SetCognitoEvents -> TestTree
-requestSetCognitoEvents = req
-    "SetCognitoEvents"
-    "fixture/SetCognitoEvents.yaml"
-
-requestDescribeIdentityPoolUsage :: DescribeIdentityPoolUsage -> TestTree
-requestDescribeIdentityPoolUsage = req
-    "DescribeIdentityPoolUsage"
-    "fixture/DescribeIdentityPoolUsage.yaml"
-
-requestGetBulkPublishDetails :: GetBulkPublishDetails -> TestTree
-requestGetBulkPublishDetails = req
-    "GetBulkPublishDetails"
-    "fixture/GetBulkPublishDetails.yaml"
-
-requestListIdentityPoolUsage :: ListIdentityPoolUsage -> TestTree
-requestListIdentityPoolUsage = req
-    "ListIdentityPoolUsage"
-    "fixture/ListIdentityPoolUsage.yaml"
-
-requestSetIdentityPoolConfiguration :: SetIdentityPoolConfiguration -> TestTree
-requestSetIdentityPoolConfiguration = req
-    "SetIdentityPoolConfiguration"
-    "fixture/SetIdentityPoolConfiguration.yaml"
-
-requestDeleteDataset :: DeleteDataset -> TestTree
-requestDeleteDataset = req
-    "DeleteDataset"
-    "fixture/DeleteDataset.yaml"
-
-requestGetCognitoEvents :: GetCognitoEvents -> TestTree
-requestGetCognitoEvents = req
-    "GetCognitoEvents"
-    "fixture/GetCognitoEvents.yaml"
-
-requestDescribeIdentityUsage :: DescribeIdentityUsage -> TestTree
-requestDescribeIdentityUsage = req
-    "DescribeIdentityUsage"
-    "fixture/DescribeIdentityUsage.yaml"
-
-requestRegisterDevice :: RegisterDevice -> TestTree
-requestRegisterDevice = req
-    "RegisterDevice"
-    "fixture/RegisterDevice.yaml"
-
-requestSubscribeToDataset :: SubscribeToDataset -> TestTree
-requestSubscribeToDataset = req
-    "SubscribeToDataset"
-    "fixture/SubscribeToDataset.yaml"
-
-requestGetIdentityPoolConfiguration :: GetIdentityPoolConfiguration -> TestTree
-requestGetIdentityPoolConfiguration = req
-    "GetIdentityPoolConfiguration"
-    "fixture/GetIdentityPoolConfiguration.yaml"
-
-requestListRecords :: ListRecords -> TestTree
-requestListRecords = req
-    "ListRecords"
-    "fixture/ListRecords.yaml"
-
-requestUnsubscribeFromDataset :: UnsubscribeFromDataset -> TestTree
-requestUnsubscribeFromDataset = req
-    "UnsubscribeFromDataset"
-    "fixture/UnsubscribeFromDataset.yaml"
-
-requestUpdateRecords :: UpdateRecords -> TestTree
-requestUpdateRecords = req
-    "UpdateRecords"
-    "fixture/UpdateRecords.yaml"
-
-requestListDatasets :: ListDatasets -> TestTree
-requestListDatasets = req
-    "ListDatasets"
-    "fixture/ListDatasets.yaml"
-
-requestBulkPublish :: BulkPublish -> TestTree
-requestBulkPublish = req
-    "BulkPublish"
-    "fixture/BulkPublish.yaml"
-
--- Responses
-
-responseDescribeDataset :: DescribeDatasetResponse -> TestTree
-responseDescribeDataset = res
-    "DescribeDatasetResponse"
-    "fixture/DescribeDatasetResponse.proto"
-    cognitoSync
-    (Proxy :: Proxy DescribeDataset)
-
-responseSetCognitoEvents :: SetCognitoEventsResponse -> TestTree
-responseSetCognitoEvents = res
-    "SetCognitoEventsResponse"
-    "fixture/SetCognitoEventsResponse.proto"
-    cognitoSync
-    (Proxy :: Proxy SetCognitoEvents)
-
-responseDescribeIdentityPoolUsage :: DescribeIdentityPoolUsageResponse -> TestTree
-responseDescribeIdentityPoolUsage = res
-    "DescribeIdentityPoolUsageResponse"
-    "fixture/DescribeIdentityPoolUsageResponse.proto"
-    cognitoSync
-    (Proxy :: Proxy DescribeIdentityPoolUsage)
-
-responseGetBulkPublishDetails :: GetBulkPublishDetailsResponse -> TestTree
-responseGetBulkPublishDetails = res
-    "GetBulkPublishDetailsResponse"
-    "fixture/GetBulkPublishDetailsResponse.proto"
-    cognitoSync
-    (Proxy :: Proxy GetBulkPublishDetails)
-
-responseListIdentityPoolUsage :: ListIdentityPoolUsageResponse -> TestTree
-responseListIdentityPoolUsage = res
-    "ListIdentityPoolUsageResponse"
-    "fixture/ListIdentityPoolUsageResponse.proto"
-    cognitoSync
-    (Proxy :: Proxy ListIdentityPoolUsage)
-
-responseSetIdentityPoolConfiguration :: SetIdentityPoolConfigurationResponse -> TestTree
-responseSetIdentityPoolConfiguration = res
-    "SetIdentityPoolConfigurationResponse"
-    "fixture/SetIdentityPoolConfigurationResponse.proto"
-    cognitoSync
-    (Proxy :: Proxy SetIdentityPoolConfiguration)
-
-responseDeleteDataset :: DeleteDatasetResponse -> TestTree
-responseDeleteDataset = res
-    "DeleteDatasetResponse"
-    "fixture/DeleteDatasetResponse.proto"
-    cognitoSync
-    (Proxy :: Proxy DeleteDataset)
-
-responseGetCognitoEvents :: GetCognitoEventsResponse -> TestTree
-responseGetCognitoEvents = res
-    "GetCognitoEventsResponse"
-    "fixture/GetCognitoEventsResponse.proto"
-    cognitoSync
-    (Proxy :: Proxy GetCognitoEvents)
-
-responseDescribeIdentityUsage :: DescribeIdentityUsageResponse -> TestTree
-responseDescribeIdentityUsage = res
-    "DescribeIdentityUsageResponse"
-    "fixture/DescribeIdentityUsageResponse.proto"
-    cognitoSync
-    (Proxy :: Proxy DescribeIdentityUsage)
-
-responseRegisterDevice :: RegisterDeviceResponse -> TestTree
-responseRegisterDevice = res
-    "RegisterDeviceResponse"
-    "fixture/RegisterDeviceResponse.proto"
-    cognitoSync
-    (Proxy :: Proxy RegisterDevice)
-
-responseSubscribeToDataset :: SubscribeToDatasetResponse -> TestTree
-responseSubscribeToDataset = res
-    "SubscribeToDatasetResponse"
-    "fixture/SubscribeToDatasetResponse.proto"
-    cognitoSync
-    (Proxy :: Proxy SubscribeToDataset)
-
-responseGetIdentityPoolConfiguration :: GetIdentityPoolConfigurationResponse -> TestTree
-responseGetIdentityPoolConfiguration = res
-    "GetIdentityPoolConfigurationResponse"
-    "fixture/GetIdentityPoolConfigurationResponse.proto"
-    cognitoSync
-    (Proxy :: Proxy GetIdentityPoolConfiguration)
-
-responseListRecords :: ListRecordsResponse -> TestTree
-responseListRecords = res
-    "ListRecordsResponse"
-    "fixture/ListRecordsResponse.proto"
-    cognitoSync
-    (Proxy :: Proxy ListRecords)
-
-responseUnsubscribeFromDataset :: UnsubscribeFromDatasetResponse -> TestTree
-responseUnsubscribeFromDataset = res
-    "UnsubscribeFromDatasetResponse"
-    "fixture/UnsubscribeFromDatasetResponse.proto"
-    cognitoSync
-    (Proxy :: Proxy UnsubscribeFromDataset)
-
-responseUpdateRecords :: UpdateRecordsResponse -> TestTree
-responseUpdateRecords = res
-    "UpdateRecordsResponse"
-    "fixture/UpdateRecordsResponse.proto"
-    cognitoSync
-    (Proxy :: Proxy UpdateRecords)
-
-responseListDatasets :: ListDatasetsResponse -> TestTree
-responseListDatasets = res
-    "ListDatasetsResponse"
-    "fixture/ListDatasetsResponse.proto"
-    cognitoSync
-    (Proxy :: Proxy ListDatasets)
-
-responseBulkPublish :: BulkPublishResponse -> TestTree
-responseBulkPublish = res
-    "BulkPublishResponse"
-    "fixture/BulkPublishResponse.proto"
-    cognitoSync
-    (Proxy :: Proxy BulkPublish)
diff --git a/test/Test/Amazonka/CognitoSync.hs b/test/Test/Amazonka/CognitoSync.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/CognitoSync.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.CognitoSync
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Test.Amazonka.CognitoSync
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/CognitoSync/Internal.hs b/test/Test/Amazonka/CognitoSync/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/CognitoSync/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.CognitoSync.Internal
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Test.Amazonka.CognitoSync.Internal where
diff --git a/test/Test/Amazonka/Gen/CognitoSync.hs b/test/Test/Amazonka/Gen/CognitoSync.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/CognitoSync.hs
@@ -0,0 +1,378 @@
+{-# OPTIONS_GHC -fno-warn-orphans #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- Derived from AWS service descriptions, licensed under Apache 2.0.
+
+-- |
+-- Module      : Test.Amazonka.Gen.CognitoSync
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+module Test.Amazonka.Gen.CognitoSync where
+
+import Amazonka.CognitoSync
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.CognitoSync.Internal
+import Test.Amazonka.Fixture
+import Test.Amazonka.Prelude
+import Test.Tasty
+
+-- Auto-generated: the actual test selection needs to be manually placed into
+-- the top-level so that real test data can be incrementally added.
+--
+-- This commented snippet is what the entire set should look like:
+
+-- fixtures :: TestTree
+-- fixtures =
+--     [ testGroup "request"
+--         [ requestBulkPublish $
+--             newBulkPublish
+--
+--         , requestDeleteDataset $
+--             newDeleteDataset
+--
+--         , requestDescribeDataset $
+--             newDescribeDataset
+--
+--         , requestDescribeIdentityPoolUsage $
+--             newDescribeIdentityPoolUsage
+--
+--         , requestDescribeIdentityUsage $
+--             newDescribeIdentityUsage
+--
+--         , requestGetBulkPublishDetails $
+--             newGetBulkPublishDetails
+--
+--         , requestGetCognitoEvents $
+--             newGetCognitoEvents
+--
+--         , requestGetIdentityPoolConfiguration $
+--             newGetIdentityPoolConfiguration
+--
+--         , requestListDatasets $
+--             newListDatasets
+--
+--         , requestListIdentityPoolUsage $
+--             newListIdentityPoolUsage
+--
+--         , requestListRecords $
+--             newListRecords
+--
+--         , requestRegisterDevice $
+--             newRegisterDevice
+--
+--         , requestSetCognitoEvents $
+--             newSetCognitoEvents
+--
+--         , requestSetIdentityPoolConfiguration $
+--             newSetIdentityPoolConfiguration
+--
+--         , requestSubscribeToDataset $
+--             newSubscribeToDataset
+--
+--         , requestUnsubscribeFromDataset $
+--             newUnsubscribeFromDataset
+--
+--         , requestUpdateRecords $
+--             newUpdateRecords
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseBulkPublish $
+--             newBulkPublishResponse
+--
+--         , responseDeleteDataset $
+--             newDeleteDatasetResponse
+--
+--         , responseDescribeDataset $
+--             newDescribeDatasetResponse
+--
+--         , responseDescribeIdentityPoolUsage $
+--             newDescribeIdentityPoolUsageResponse
+--
+--         , responseDescribeIdentityUsage $
+--             newDescribeIdentityUsageResponse
+--
+--         , responseGetBulkPublishDetails $
+--             newGetBulkPublishDetailsResponse
+--
+--         , responseGetCognitoEvents $
+--             newGetCognitoEventsResponse
+--
+--         , responseGetIdentityPoolConfiguration $
+--             newGetIdentityPoolConfigurationResponse
+--
+--         , responseListDatasets $
+--             newListDatasetsResponse
+--
+--         , responseListIdentityPoolUsage $
+--             newListIdentityPoolUsageResponse
+--
+--         , responseListRecords $
+--             newListRecordsResponse
+--
+--         , responseRegisterDevice $
+--             newRegisterDeviceResponse
+--
+--         , responseSetCognitoEvents $
+--             newSetCognitoEventsResponse
+--
+--         , responseSetIdentityPoolConfiguration $
+--             newSetIdentityPoolConfigurationResponse
+--
+--         , responseSubscribeToDataset $
+--             newSubscribeToDatasetResponse
+--
+--         , responseUnsubscribeFromDataset $
+--             newUnsubscribeFromDatasetResponse
+--
+--         , responseUpdateRecords $
+--             newUpdateRecordsResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestBulkPublish :: BulkPublish -> TestTree
+requestBulkPublish =
+  req
+    "BulkPublish"
+    "fixture/BulkPublish.yaml"
+
+requestDeleteDataset :: DeleteDataset -> TestTree
+requestDeleteDataset =
+  req
+    "DeleteDataset"
+    "fixture/DeleteDataset.yaml"
+
+requestDescribeDataset :: DescribeDataset -> TestTree
+requestDescribeDataset =
+  req
+    "DescribeDataset"
+    "fixture/DescribeDataset.yaml"
+
+requestDescribeIdentityPoolUsage :: DescribeIdentityPoolUsage -> TestTree
+requestDescribeIdentityPoolUsage =
+  req
+    "DescribeIdentityPoolUsage"
+    "fixture/DescribeIdentityPoolUsage.yaml"
+
+requestDescribeIdentityUsage :: DescribeIdentityUsage -> TestTree
+requestDescribeIdentityUsage =
+  req
+    "DescribeIdentityUsage"
+    "fixture/DescribeIdentityUsage.yaml"
+
+requestGetBulkPublishDetails :: GetBulkPublishDetails -> TestTree
+requestGetBulkPublishDetails =
+  req
+    "GetBulkPublishDetails"
+    "fixture/GetBulkPublishDetails.yaml"
+
+requestGetCognitoEvents :: GetCognitoEvents -> TestTree
+requestGetCognitoEvents =
+  req
+    "GetCognitoEvents"
+    "fixture/GetCognitoEvents.yaml"
+
+requestGetIdentityPoolConfiguration :: GetIdentityPoolConfiguration -> TestTree
+requestGetIdentityPoolConfiguration =
+  req
+    "GetIdentityPoolConfiguration"
+    "fixture/GetIdentityPoolConfiguration.yaml"
+
+requestListDatasets :: ListDatasets -> TestTree
+requestListDatasets =
+  req
+    "ListDatasets"
+    "fixture/ListDatasets.yaml"
+
+requestListIdentityPoolUsage :: ListIdentityPoolUsage -> TestTree
+requestListIdentityPoolUsage =
+  req
+    "ListIdentityPoolUsage"
+    "fixture/ListIdentityPoolUsage.yaml"
+
+requestListRecords :: ListRecords -> TestTree
+requestListRecords =
+  req
+    "ListRecords"
+    "fixture/ListRecords.yaml"
+
+requestRegisterDevice :: RegisterDevice -> TestTree
+requestRegisterDevice =
+  req
+    "RegisterDevice"
+    "fixture/RegisterDevice.yaml"
+
+requestSetCognitoEvents :: SetCognitoEvents -> TestTree
+requestSetCognitoEvents =
+  req
+    "SetCognitoEvents"
+    "fixture/SetCognitoEvents.yaml"
+
+requestSetIdentityPoolConfiguration :: SetIdentityPoolConfiguration -> TestTree
+requestSetIdentityPoolConfiguration =
+  req
+    "SetIdentityPoolConfiguration"
+    "fixture/SetIdentityPoolConfiguration.yaml"
+
+requestSubscribeToDataset :: SubscribeToDataset -> TestTree
+requestSubscribeToDataset =
+  req
+    "SubscribeToDataset"
+    "fixture/SubscribeToDataset.yaml"
+
+requestUnsubscribeFromDataset :: UnsubscribeFromDataset -> TestTree
+requestUnsubscribeFromDataset =
+  req
+    "UnsubscribeFromDataset"
+    "fixture/UnsubscribeFromDataset.yaml"
+
+requestUpdateRecords :: UpdateRecords -> TestTree
+requestUpdateRecords =
+  req
+    "UpdateRecords"
+    "fixture/UpdateRecords.yaml"
+
+-- Responses
+
+responseBulkPublish :: BulkPublishResponse -> TestTree
+responseBulkPublish =
+  res
+    "BulkPublishResponse"
+    "fixture/BulkPublishResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy BulkPublish)
+
+responseDeleteDataset :: DeleteDatasetResponse -> TestTree
+responseDeleteDataset =
+  res
+    "DeleteDatasetResponse"
+    "fixture/DeleteDatasetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteDataset)
+
+responseDescribeDataset :: DescribeDatasetResponse -> TestTree
+responseDescribeDataset =
+  res
+    "DescribeDatasetResponse"
+    "fixture/DescribeDatasetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDataset)
+
+responseDescribeIdentityPoolUsage :: DescribeIdentityPoolUsageResponse -> TestTree
+responseDescribeIdentityPoolUsage =
+  res
+    "DescribeIdentityPoolUsageResponse"
+    "fixture/DescribeIdentityPoolUsageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeIdentityPoolUsage)
+
+responseDescribeIdentityUsage :: DescribeIdentityUsageResponse -> TestTree
+responseDescribeIdentityUsage =
+  res
+    "DescribeIdentityUsageResponse"
+    "fixture/DescribeIdentityUsageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeIdentityUsage)
+
+responseGetBulkPublishDetails :: GetBulkPublishDetailsResponse -> TestTree
+responseGetBulkPublishDetails =
+  res
+    "GetBulkPublishDetailsResponse"
+    "fixture/GetBulkPublishDetailsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetBulkPublishDetails)
+
+responseGetCognitoEvents :: GetCognitoEventsResponse -> TestTree
+responseGetCognitoEvents =
+  res
+    "GetCognitoEventsResponse"
+    "fixture/GetCognitoEventsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetCognitoEvents)
+
+responseGetIdentityPoolConfiguration :: GetIdentityPoolConfigurationResponse -> TestTree
+responseGetIdentityPoolConfiguration =
+  res
+    "GetIdentityPoolConfigurationResponse"
+    "fixture/GetIdentityPoolConfigurationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetIdentityPoolConfiguration)
+
+responseListDatasets :: ListDatasetsResponse -> TestTree
+responseListDatasets =
+  res
+    "ListDatasetsResponse"
+    "fixture/ListDatasetsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListDatasets)
+
+responseListIdentityPoolUsage :: ListIdentityPoolUsageResponse -> TestTree
+responseListIdentityPoolUsage =
+  res
+    "ListIdentityPoolUsageResponse"
+    "fixture/ListIdentityPoolUsageResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListIdentityPoolUsage)
+
+responseListRecords :: ListRecordsResponse -> TestTree
+responseListRecords =
+  res
+    "ListRecordsResponse"
+    "fixture/ListRecordsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ListRecords)
+
+responseRegisterDevice :: RegisterDeviceResponse -> TestTree
+responseRegisterDevice =
+  res
+    "RegisterDeviceResponse"
+    "fixture/RegisterDeviceResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RegisterDevice)
+
+responseSetCognitoEvents :: SetCognitoEventsResponse -> TestTree
+responseSetCognitoEvents =
+  res
+    "SetCognitoEventsResponse"
+    "fixture/SetCognitoEventsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SetCognitoEvents)
+
+responseSetIdentityPoolConfiguration :: SetIdentityPoolConfigurationResponse -> TestTree
+responseSetIdentityPoolConfiguration =
+  res
+    "SetIdentityPoolConfigurationResponse"
+    "fixture/SetIdentityPoolConfigurationResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SetIdentityPoolConfiguration)
+
+responseSubscribeToDataset :: SubscribeToDatasetResponse -> TestTree
+responseSubscribeToDataset =
+  res
+    "SubscribeToDatasetResponse"
+    "fixture/SubscribeToDatasetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy SubscribeToDataset)
+
+responseUnsubscribeFromDataset :: UnsubscribeFromDatasetResponse -> TestTree
+responseUnsubscribeFromDataset =
+  res
+    "UnsubscribeFromDatasetResponse"
+    "fixture/UnsubscribeFromDatasetResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UnsubscribeFromDataset)
+
+responseUpdateRecords :: UpdateRecordsResponse -> TestTree
+responseUpdateRecords =
+  res
+    "UpdateRecordsResponse"
+    "fixture/UpdateRecordsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateRecords)
