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 @2016-05-01@ 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.WorkDocs](http://hackage.haskell.org/package/amazonka-workdocs/docs/Network-AWS-WorkDocs.html)
+See [Amazonka.WorkDocs](http://hackage.haskell.org/package/amazonka-workdocs/docs/Amazonka-WorkDocs.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-workdocs.cabal b/amazonka-workdocs.cabal
--- a/amazonka-workdocs.cabal
+++ b/amazonka-workdocs.cabal
@@ -1,125 +1,174 @@
-name:                  amazonka-workdocs
-version:               1.6.1
-synopsis:              Amazon WorkDocs 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-workdocs
+version:            2.0
+synopsis:           Amazon WorkDocs 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.WorkDocs" or <https://aws.amazon.com/documentation/ the AWS documentation>
-    to get started.
+  Derived from API version @2016-05-01@ 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.WorkDocs.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.WorkDocs" 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-workdocs
+  type:     git
+  location: git://github.com/brendanhay/amazonka.git
+  subdir:   amazonka-workdocs
 
 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.WorkDocs
-        , Network.AWS.WorkDocs.AbortDocumentVersionUpload
-        , Network.AWS.WorkDocs.ActivateUser
-        , Network.AWS.WorkDocs.AddResourcePermissions
-        , Network.AWS.WorkDocs.CreateComment
-        , Network.AWS.WorkDocs.CreateCustomMetadata
-        , Network.AWS.WorkDocs.CreateFolder
-        , Network.AWS.WorkDocs.CreateLabels
-        , Network.AWS.WorkDocs.CreateNotificationSubscription
-        , Network.AWS.WorkDocs.CreateUser
-        , Network.AWS.WorkDocs.DeactivateUser
-        , Network.AWS.WorkDocs.DeleteComment
-        , Network.AWS.WorkDocs.DeleteCustomMetadata
-        , Network.AWS.WorkDocs.DeleteDocument
-        , Network.AWS.WorkDocs.DeleteFolder
-        , Network.AWS.WorkDocs.DeleteFolderContents
-        , Network.AWS.WorkDocs.DeleteLabels
-        , Network.AWS.WorkDocs.DeleteNotificationSubscription
-        , Network.AWS.WorkDocs.DeleteUser
-        , Network.AWS.WorkDocs.DescribeActivities
-        , Network.AWS.WorkDocs.DescribeComments
-        , Network.AWS.WorkDocs.DescribeDocumentVersions
-        , Network.AWS.WorkDocs.DescribeFolderContents
-        , Network.AWS.WorkDocs.DescribeGroups
-        , Network.AWS.WorkDocs.DescribeNotificationSubscriptions
-        , Network.AWS.WorkDocs.DescribeResourcePermissions
-        , Network.AWS.WorkDocs.DescribeRootFolders
-        , Network.AWS.WorkDocs.DescribeUsers
-        , Network.AWS.WorkDocs.GetCurrentUser
-        , Network.AWS.WorkDocs.GetDocument
-        , Network.AWS.WorkDocs.GetDocumentPath
-        , Network.AWS.WorkDocs.GetDocumentVersion
-        , Network.AWS.WorkDocs.GetFolder
-        , Network.AWS.WorkDocs.GetFolderPath
-        , Network.AWS.WorkDocs.InitiateDocumentVersionUpload
-        , Network.AWS.WorkDocs.RemoveAllResourcePermissions
-        , Network.AWS.WorkDocs.RemoveResourcePermission
-        , Network.AWS.WorkDocs.Types
-        , Network.AWS.WorkDocs.UpdateDocument
-        , Network.AWS.WorkDocs.UpdateDocumentVersion
-        , Network.AWS.WorkDocs.UpdateFolder
-        , Network.AWS.WorkDocs.UpdateUser
-        , Network.AWS.WorkDocs.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.WorkDocs.Types.Product
-        , Network.AWS.WorkDocs.Types.Sum
+  exposed-modules:
+    Amazonka.WorkDocs
+    Amazonka.WorkDocs.AbortDocumentVersionUpload
+    Amazonka.WorkDocs.ActivateUser
+    Amazonka.WorkDocs.AddResourcePermissions
+    Amazonka.WorkDocs.CreateComment
+    Amazonka.WorkDocs.CreateCustomMetadata
+    Amazonka.WorkDocs.CreateFolder
+    Amazonka.WorkDocs.CreateLabels
+    Amazonka.WorkDocs.CreateNotificationSubscription
+    Amazonka.WorkDocs.CreateUser
+    Amazonka.WorkDocs.DeactivateUser
+    Amazonka.WorkDocs.DeleteComment
+    Amazonka.WorkDocs.DeleteCustomMetadata
+    Amazonka.WorkDocs.DeleteDocument
+    Amazonka.WorkDocs.DeleteDocumentVersion
+    Amazonka.WorkDocs.DeleteFolder
+    Amazonka.WorkDocs.DeleteFolderContents
+    Amazonka.WorkDocs.DeleteLabels
+    Amazonka.WorkDocs.DeleteNotificationSubscription
+    Amazonka.WorkDocs.DeleteUser
+    Amazonka.WorkDocs.DescribeActivities
+    Amazonka.WorkDocs.DescribeComments
+    Amazonka.WorkDocs.DescribeDocumentVersions
+    Amazonka.WorkDocs.DescribeFolderContents
+    Amazonka.WorkDocs.DescribeGroups
+    Amazonka.WorkDocs.DescribeNotificationSubscriptions
+    Amazonka.WorkDocs.DescribeResourcePermissions
+    Amazonka.WorkDocs.DescribeRootFolders
+    Amazonka.WorkDocs.DescribeUsers
+    Amazonka.WorkDocs.GetCurrentUser
+    Amazonka.WorkDocs.GetDocument
+    Amazonka.WorkDocs.GetDocumentPath
+    Amazonka.WorkDocs.GetDocumentVersion
+    Amazonka.WorkDocs.GetFolder
+    Amazonka.WorkDocs.GetFolderPath
+    Amazonka.WorkDocs.GetResources
+    Amazonka.WorkDocs.InitiateDocumentVersionUpload
+    Amazonka.WorkDocs.Lens
+    Amazonka.WorkDocs.RemoveAllResourcePermissions
+    Amazonka.WorkDocs.RemoveResourcePermission
+    Amazonka.WorkDocs.RestoreDocumentVersions
+    Amazonka.WorkDocs.Types
+    Amazonka.WorkDocs.Types.Activity
+    Amazonka.WorkDocs.Types.ActivityType
+    Amazonka.WorkDocs.Types.BooleanEnumType
+    Amazonka.WorkDocs.Types.Comment
+    Amazonka.WorkDocs.Types.CommentMetadata
+    Amazonka.WorkDocs.Types.CommentStatusType
+    Amazonka.WorkDocs.Types.CommentVisibilityType
+    Amazonka.WorkDocs.Types.DocumentMetadata
+    Amazonka.WorkDocs.Types.DocumentSourceType
+    Amazonka.WorkDocs.Types.DocumentStatusType
+    Amazonka.WorkDocs.Types.DocumentThumbnailType
+    Amazonka.WorkDocs.Types.DocumentVersionMetadata
+    Amazonka.WorkDocs.Types.DocumentVersionStatus
+    Amazonka.WorkDocs.Types.FolderContentType
+    Amazonka.WorkDocs.Types.FolderMetadata
+    Amazonka.WorkDocs.Types.GroupMetadata
+    Amazonka.WorkDocs.Types.LocaleType
+    Amazonka.WorkDocs.Types.NotificationOptions
+    Amazonka.WorkDocs.Types.OrderType
+    Amazonka.WorkDocs.Types.Participants
+    Amazonka.WorkDocs.Types.PermissionInfo
+    Amazonka.WorkDocs.Types.Principal
+    Amazonka.WorkDocs.Types.PrincipalType
+    Amazonka.WorkDocs.Types.ResourceCollectionType
+    Amazonka.WorkDocs.Types.ResourceMetadata
+    Amazonka.WorkDocs.Types.ResourcePath
+    Amazonka.WorkDocs.Types.ResourcePathComponent
+    Amazonka.WorkDocs.Types.ResourceSortType
+    Amazonka.WorkDocs.Types.ResourceStateType
+    Amazonka.WorkDocs.Types.ResourceType
+    Amazonka.WorkDocs.Types.RolePermissionType
+    Amazonka.WorkDocs.Types.RoleType
+    Amazonka.WorkDocs.Types.SharePrincipal
+    Amazonka.WorkDocs.Types.ShareResult
+    Amazonka.WorkDocs.Types.ShareStatusType
+    Amazonka.WorkDocs.Types.StorageRuleType
+    Amazonka.WorkDocs.Types.StorageType
+    Amazonka.WorkDocs.Types.Subscription
+    Amazonka.WorkDocs.Types.SubscriptionProtocolType
+    Amazonka.WorkDocs.Types.SubscriptionType
+    Amazonka.WorkDocs.Types.UploadMetadata
+    Amazonka.WorkDocs.Types.User
+    Amazonka.WorkDocs.Types.UserFilterType
+    Amazonka.WorkDocs.Types.UserMetadata
+    Amazonka.WorkDocs.Types.UserSortType
+    Amazonka.WorkDocs.Types.UserStatusType
+    Amazonka.WorkDocs.Types.UserStorageMetadata
+    Amazonka.WorkDocs.Types.UserType
+    Amazonka.WorkDocs.UpdateDocument
+    Amazonka.WorkDocs.UpdateDocumentVersion
+    Amazonka.WorkDocs.UpdateFolder
+    Amazonka.WorkDocs.UpdateUser
+    Amazonka.WorkDocs.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-workdocs-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.WorkDocs
-        , Test.AWS.Gen.WorkDocs
-        , Test.AWS.WorkDocs.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.Gen.WorkDocs
+    Test.Amazonka.WorkDocs
+    Test.Amazonka.WorkDocs.Internal
 
-    build-depends:
-          amazonka-core == 1.6.1.*
-        , amazonka-test == 1.6.1.*
-        , amazonka-workdocs
-        , base
-        , bytestring
-        , tasty
-        , tasty-hunit
-        , text
-        , time
-        , unordered-containers
+  build-depends:
+    , amazonka-core         >=2.0 && <2.1
+    , amazonka-test         >=2.0 && <2.1
+    , amazonka-workdocs
+    , base
+    , bytestring
+    , case-insensitive
+    , tasty
+    , tasty-hunit
+    , text
+    , time
+    , unordered-containers
diff --git a/fixture/DeleteDocumentVersion.yaml b/fixture/DeleteDocumentVersion.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDocumentVersion.yaml
@@ -0,0 +1,10 @@
+---
+method: DELETE
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/workdocs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  workdocs.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/DeleteDocumentVersionResponse.proto b/fixture/DeleteDocumentVersionResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/DeleteDocumentVersionResponse.proto
diff --git a/fixture/GetResources.yaml b/fixture/GetResources.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/GetResources.yaml
@@ -0,0 +1,10 @@
+---
+method: GET
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/workdocs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  workdocs.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/GetResourcesResponse.proto b/fixture/GetResourcesResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/GetResourcesResponse.proto
diff --git a/fixture/RestoreDocumentVersions.yaml b/fixture/RestoreDocumentVersions.yaml
new file mode 100644
--- /dev/null
+++ b/fixture/RestoreDocumentVersions.yaml
@@ -0,0 +1,10 @@
+---
+method: POST
+headers:
+  Authorization:         AWS4-HMAC-SHA256 Credential=access/20091028/us-east-1/workdocs/aws4_request, SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date, Signature=?
+  Host:                  workdocs.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/RestoreDocumentVersionsResponse.proto b/fixture/RestoreDocumentVersionsResponse.proto
new file mode 100644
--- /dev/null
+++ b/fixture/RestoreDocumentVersionsResponse.proto
diff --git a/gen/Amazonka/WorkDocs.hs b/gen/Amazonka/WorkDocs.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs.hs
@@ -0,0 +1,649 @@
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports #-}
+
+-- |
+-- Module      : Amazonka.WorkDocs
+-- 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 @2016-05-01@ of the AWS service descriptions, licensed under Apache 2.0.
+--
+-- The WorkDocs API is designed for the following use cases:
+--
+-- -   File Migration: File migration applications are supported for users
+--     who want to migrate their files from an on-premises or off-premises
+--     file system or service. Users can insert files into a user directory
+--     structure, as well as allow for basic metadata changes, such as
+--     modifications to the permissions of files.
+--
+-- -   Security: Support security applications are supported for users who
+--     have additional security needs, such as antivirus or data loss
+--     prevention. The API actions, along with AWS CloudTrail, allow these
+--     applications to detect when changes occur in Amazon WorkDocs. Then,
+--     the application can take the necessary actions and replace the
+--     target file. If the target file violates the policy, the application
+--     can also choose to email the user.
+--
+-- -   eDiscovery\/Analytics: General administrative applications are
+--     supported, such as eDiscovery and analytics. These applications can
+--     choose to mimic or record the actions in an Amazon WorkDocs site,
+--     along with AWS CloudTrail, to replicate data for eDiscovery, backup,
+--     or analytical applications.
+--
+-- All Amazon WorkDocs API actions are Amazon authenticated and
+-- certificate-signed. They not only require the use of the AWS SDK, but
+-- also allow for the exclusive use of IAM users and roles to help
+-- facilitate access, trust, and permission policies. By creating a role
+-- and allowing an IAM user to access the Amazon WorkDocs site, the IAM
+-- user gains full administrative visibility into the entire Amazon
+-- WorkDocs site (or as set in the IAM policy). This includes, but is not
+-- limited to, the ability to modify file permissions and upload any file
+-- to any user. This allows developers to perform the three use cases
+-- above, as well as give users the ability to grant access on a selective
+-- basis using the IAM model.
+--
+-- The pricing for Amazon WorkDocs APIs varies depending on the API call
+-- type for these actions:
+--
+-- -   @READ (Get*)@
+--
+-- -   @WRITE (Activate*, Add*, Create*, Deactivate*, Initiate*, Update*)@
+--
+-- -   @LIST (Describe*)@
+--
+-- -   @DELETE*, CANCEL@
+--
+-- For information about Amazon WorkDocs API pricing, see
+-- <https://aws.amazon.com/workdocs/pricing/ Amazon WorkDocs Pricing>.
+module Amazonka.WorkDocs
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    -- $errors
+
+    -- ** ConcurrentModificationException
+    _ConcurrentModificationException,
+
+    -- ** ConflictingOperationException
+    _ConflictingOperationException,
+
+    -- ** CustomMetadataLimitExceededException
+    _CustomMetadataLimitExceededException,
+
+    -- ** DeactivatingLastSystemUserException
+    _DeactivatingLastSystemUserException,
+
+    -- ** DocumentLockedForCommentsException
+    _DocumentLockedForCommentsException,
+
+    -- ** DraftUploadOutOfSyncException
+    _DraftUploadOutOfSyncException,
+
+    -- ** EntityAlreadyExistsException
+    _EntityAlreadyExistsException,
+
+    -- ** EntityNotExistsException
+    _EntityNotExistsException,
+
+    -- ** FailedDependencyException
+    _FailedDependencyException,
+
+    -- ** IllegalUserStateException
+    _IllegalUserStateException,
+
+    -- ** InvalidArgumentException
+    _InvalidArgumentException,
+
+    -- ** InvalidCommentOperationException
+    _InvalidCommentOperationException,
+
+    -- ** InvalidOperationException
+    _InvalidOperationException,
+
+    -- ** InvalidPasswordException
+    _InvalidPasswordException,
+
+    -- ** LimitExceededException
+    _LimitExceededException,
+
+    -- ** ProhibitedStateException
+    _ProhibitedStateException,
+
+    -- ** RequestedEntityTooLargeException
+    _RequestedEntityTooLargeException,
+
+    -- ** ResourceAlreadyCheckedOutException
+    _ResourceAlreadyCheckedOutException,
+
+    -- ** ServiceUnavailableException
+    _ServiceUnavailableException,
+
+    -- ** StorageLimitExceededException
+    _StorageLimitExceededException,
+
+    -- ** StorageLimitWillExceedException
+    _StorageLimitWillExceedException,
+
+    -- ** TooManyLabelsException
+    _TooManyLabelsException,
+
+    -- ** TooManySubscriptionsException
+    _TooManySubscriptionsException,
+
+    -- ** UnauthorizedOperationException
+    _UnauthorizedOperationException,
+
+    -- ** UnauthorizedResourceAccessException
+    _UnauthorizedResourceAccessException,
+
+    -- * Waiters
+    -- $waiters
+
+    -- * Operations
+    -- $operations
+
+    -- ** AbortDocumentVersionUpload
+    AbortDocumentVersionUpload (AbortDocumentVersionUpload'),
+    newAbortDocumentVersionUpload,
+    AbortDocumentVersionUploadResponse (AbortDocumentVersionUploadResponse'),
+    newAbortDocumentVersionUploadResponse,
+
+    -- ** ActivateUser
+    ActivateUser (ActivateUser'),
+    newActivateUser,
+    ActivateUserResponse (ActivateUserResponse'),
+    newActivateUserResponse,
+
+    -- ** AddResourcePermissions
+    AddResourcePermissions (AddResourcePermissions'),
+    newAddResourcePermissions,
+    AddResourcePermissionsResponse (AddResourcePermissionsResponse'),
+    newAddResourcePermissionsResponse,
+
+    -- ** CreateComment
+    CreateComment (CreateComment'),
+    newCreateComment,
+    CreateCommentResponse (CreateCommentResponse'),
+    newCreateCommentResponse,
+
+    -- ** CreateCustomMetadata
+    CreateCustomMetadata (CreateCustomMetadata'),
+    newCreateCustomMetadata,
+    CreateCustomMetadataResponse (CreateCustomMetadataResponse'),
+    newCreateCustomMetadataResponse,
+
+    -- ** CreateFolder
+    CreateFolder (CreateFolder'),
+    newCreateFolder,
+    CreateFolderResponse (CreateFolderResponse'),
+    newCreateFolderResponse,
+
+    -- ** CreateLabels
+    CreateLabels (CreateLabels'),
+    newCreateLabels,
+    CreateLabelsResponse (CreateLabelsResponse'),
+    newCreateLabelsResponse,
+
+    -- ** CreateNotificationSubscription
+    CreateNotificationSubscription (CreateNotificationSubscription'),
+    newCreateNotificationSubscription,
+    CreateNotificationSubscriptionResponse (CreateNotificationSubscriptionResponse'),
+    newCreateNotificationSubscriptionResponse,
+
+    -- ** CreateUser
+    CreateUser (CreateUser'),
+    newCreateUser,
+    CreateUserResponse (CreateUserResponse'),
+    newCreateUserResponse,
+
+    -- ** DeactivateUser
+    DeactivateUser (DeactivateUser'),
+    newDeactivateUser,
+    DeactivateUserResponse (DeactivateUserResponse'),
+    newDeactivateUserResponse,
+
+    -- ** DeleteComment
+    DeleteComment (DeleteComment'),
+    newDeleteComment,
+    DeleteCommentResponse (DeleteCommentResponse'),
+    newDeleteCommentResponse,
+
+    -- ** DeleteCustomMetadata
+    DeleteCustomMetadata (DeleteCustomMetadata'),
+    newDeleteCustomMetadata,
+    DeleteCustomMetadataResponse (DeleteCustomMetadataResponse'),
+    newDeleteCustomMetadataResponse,
+
+    -- ** DeleteDocument
+    DeleteDocument (DeleteDocument'),
+    newDeleteDocument,
+    DeleteDocumentResponse (DeleteDocumentResponse'),
+    newDeleteDocumentResponse,
+
+    -- ** DeleteDocumentVersion
+    DeleteDocumentVersion (DeleteDocumentVersion'),
+    newDeleteDocumentVersion,
+    DeleteDocumentVersionResponse (DeleteDocumentVersionResponse'),
+    newDeleteDocumentVersionResponse,
+
+    -- ** DeleteFolder
+    DeleteFolder (DeleteFolder'),
+    newDeleteFolder,
+    DeleteFolderResponse (DeleteFolderResponse'),
+    newDeleteFolderResponse,
+
+    -- ** DeleteFolderContents
+    DeleteFolderContents (DeleteFolderContents'),
+    newDeleteFolderContents,
+    DeleteFolderContentsResponse (DeleteFolderContentsResponse'),
+    newDeleteFolderContentsResponse,
+
+    -- ** DeleteLabels
+    DeleteLabels (DeleteLabels'),
+    newDeleteLabels,
+    DeleteLabelsResponse (DeleteLabelsResponse'),
+    newDeleteLabelsResponse,
+
+    -- ** DeleteNotificationSubscription
+    DeleteNotificationSubscription (DeleteNotificationSubscription'),
+    newDeleteNotificationSubscription,
+    DeleteNotificationSubscriptionResponse (DeleteNotificationSubscriptionResponse'),
+    newDeleteNotificationSubscriptionResponse,
+
+    -- ** DeleteUser
+    DeleteUser (DeleteUser'),
+    newDeleteUser,
+    DeleteUserResponse (DeleteUserResponse'),
+    newDeleteUserResponse,
+
+    -- ** DescribeActivities (Paginated)
+    DescribeActivities (DescribeActivities'),
+    newDescribeActivities,
+    DescribeActivitiesResponse (DescribeActivitiesResponse'),
+    newDescribeActivitiesResponse,
+
+    -- ** DescribeComments (Paginated)
+    DescribeComments (DescribeComments'),
+    newDescribeComments,
+    DescribeCommentsResponse (DescribeCommentsResponse'),
+    newDescribeCommentsResponse,
+
+    -- ** DescribeDocumentVersions (Paginated)
+    DescribeDocumentVersions (DescribeDocumentVersions'),
+    newDescribeDocumentVersions,
+    DescribeDocumentVersionsResponse (DescribeDocumentVersionsResponse'),
+    newDescribeDocumentVersionsResponse,
+
+    -- ** DescribeFolderContents (Paginated)
+    DescribeFolderContents (DescribeFolderContents'),
+    newDescribeFolderContents,
+    DescribeFolderContentsResponse (DescribeFolderContentsResponse'),
+    newDescribeFolderContentsResponse,
+
+    -- ** DescribeGroups (Paginated)
+    DescribeGroups (DescribeGroups'),
+    newDescribeGroups,
+    DescribeGroupsResponse (DescribeGroupsResponse'),
+    newDescribeGroupsResponse,
+
+    -- ** DescribeNotificationSubscriptions (Paginated)
+    DescribeNotificationSubscriptions (DescribeNotificationSubscriptions'),
+    newDescribeNotificationSubscriptions,
+    DescribeNotificationSubscriptionsResponse (DescribeNotificationSubscriptionsResponse'),
+    newDescribeNotificationSubscriptionsResponse,
+
+    -- ** DescribeResourcePermissions (Paginated)
+    DescribeResourcePermissions (DescribeResourcePermissions'),
+    newDescribeResourcePermissions,
+    DescribeResourcePermissionsResponse (DescribeResourcePermissionsResponse'),
+    newDescribeResourcePermissionsResponse,
+
+    -- ** DescribeRootFolders (Paginated)
+    DescribeRootFolders (DescribeRootFolders'),
+    newDescribeRootFolders,
+    DescribeRootFoldersResponse (DescribeRootFoldersResponse'),
+    newDescribeRootFoldersResponse,
+
+    -- ** DescribeUsers (Paginated)
+    DescribeUsers (DescribeUsers'),
+    newDescribeUsers,
+    DescribeUsersResponse (DescribeUsersResponse'),
+    newDescribeUsersResponse,
+
+    -- ** GetCurrentUser
+    GetCurrentUser (GetCurrentUser'),
+    newGetCurrentUser,
+    GetCurrentUserResponse (GetCurrentUserResponse'),
+    newGetCurrentUserResponse,
+
+    -- ** GetDocument
+    GetDocument (GetDocument'),
+    newGetDocument,
+    GetDocumentResponse (GetDocumentResponse'),
+    newGetDocumentResponse,
+
+    -- ** GetDocumentPath
+    GetDocumentPath (GetDocumentPath'),
+    newGetDocumentPath,
+    GetDocumentPathResponse (GetDocumentPathResponse'),
+    newGetDocumentPathResponse,
+
+    -- ** GetDocumentVersion
+    GetDocumentVersion (GetDocumentVersion'),
+    newGetDocumentVersion,
+    GetDocumentVersionResponse (GetDocumentVersionResponse'),
+    newGetDocumentVersionResponse,
+
+    -- ** GetFolder
+    GetFolder (GetFolder'),
+    newGetFolder,
+    GetFolderResponse (GetFolderResponse'),
+    newGetFolderResponse,
+
+    -- ** GetFolderPath
+    GetFolderPath (GetFolderPath'),
+    newGetFolderPath,
+    GetFolderPathResponse (GetFolderPathResponse'),
+    newGetFolderPathResponse,
+
+    -- ** GetResources
+    GetResources (GetResources'),
+    newGetResources,
+    GetResourcesResponse (GetResourcesResponse'),
+    newGetResourcesResponse,
+
+    -- ** InitiateDocumentVersionUpload
+    InitiateDocumentVersionUpload (InitiateDocumentVersionUpload'),
+    newInitiateDocumentVersionUpload,
+    InitiateDocumentVersionUploadResponse (InitiateDocumentVersionUploadResponse'),
+    newInitiateDocumentVersionUploadResponse,
+
+    -- ** RemoveAllResourcePermissions
+    RemoveAllResourcePermissions (RemoveAllResourcePermissions'),
+    newRemoveAllResourcePermissions,
+    RemoveAllResourcePermissionsResponse (RemoveAllResourcePermissionsResponse'),
+    newRemoveAllResourcePermissionsResponse,
+
+    -- ** RemoveResourcePermission
+    RemoveResourcePermission (RemoveResourcePermission'),
+    newRemoveResourcePermission,
+    RemoveResourcePermissionResponse (RemoveResourcePermissionResponse'),
+    newRemoveResourcePermissionResponse,
+
+    -- ** RestoreDocumentVersions
+    RestoreDocumentVersions (RestoreDocumentVersions'),
+    newRestoreDocumentVersions,
+    RestoreDocumentVersionsResponse (RestoreDocumentVersionsResponse'),
+    newRestoreDocumentVersionsResponse,
+
+    -- ** UpdateDocument
+    UpdateDocument (UpdateDocument'),
+    newUpdateDocument,
+    UpdateDocumentResponse (UpdateDocumentResponse'),
+    newUpdateDocumentResponse,
+
+    -- ** UpdateDocumentVersion
+    UpdateDocumentVersion (UpdateDocumentVersion'),
+    newUpdateDocumentVersion,
+    UpdateDocumentVersionResponse (UpdateDocumentVersionResponse'),
+    newUpdateDocumentVersionResponse,
+
+    -- ** UpdateFolder
+    UpdateFolder (UpdateFolder'),
+    newUpdateFolder,
+    UpdateFolderResponse (UpdateFolderResponse'),
+    newUpdateFolderResponse,
+
+    -- ** UpdateUser
+    UpdateUser (UpdateUser'),
+    newUpdateUser,
+    UpdateUserResponse (UpdateUserResponse'),
+    newUpdateUserResponse,
+
+    -- * Types
+
+    -- ** ActivityType
+    ActivityType (..),
+
+    -- ** BooleanEnumType
+    BooleanEnumType (..),
+
+    -- ** CommentStatusType
+    CommentStatusType (..),
+
+    -- ** CommentVisibilityType
+    CommentVisibilityType (..),
+
+    -- ** DocumentSourceType
+    DocumentSourceType (..),
+
+    -- ** DocumentStatusType
+    DocumentStatusType (..),
+
+    -- ** DocumentThumbnailType
+    DocumentThumbnailType (..),
+
+    -- ** DocumentVersionStatus
+    DocumentVersionStatus (..),
+
+    -- ** FolderContentType
+    FolderContentType (..),
+
+    -- ** LocaleType
+    LocaleType (..),
+
+    -- ** OrderType
+    OrderType (..),
+
+    -- ** PrincipalType
+    PrincipalType (..),
+
+    -- ** ResourceCollectionType
+    ResourceCollectionType (..),
+
+    -- ** ResourceSortType
+    ResourceSortType (..),
+
+    -- ** ResourceStateType
+    ResourceStateType (..),
+
+    -- ** ResourceType
+    ResourceType (..),
+
+    -- ** RolePermissionType
+    RolePermissionType (..),
+
+    -- ** RoleType
+    RoleType (..),
+
+    -- ** ShareStatusType
+    ShareStatusType (..),
+
+    -- ** StorageType
+    StorageType (..),
+
+    -- ** SubscriptionProtocolType
+    SubscriptionProtocolType (..),
+
+    -- ** SubscriptionType
+    SubscriptionType (..),
+
+    -- ** UserFilterType
+    UserFilterType (..),
+
+    -- ** UserSortType
+    UserSortType (..),
+
+    -- ** UserStatusType
+    UserStatusType (..),
+
+    -- ** UserType
+    UserType (..),
+
+    -- ** Activity
+    Activity (Activity'),
+    newActivity,
+
+    -- ** Comment
+    Comment (Comment'),
+    newComment,
+
+    -- ** CommentMetadata
+    CommentMetadata (CommentMetadata'),
+    newCommentMetadata,
+
+    -- ** DocumentMetadata
+    DocumentMetadata (DocumentMetadata'),
+    newDocumentMetadata,
+
+    -- ** DocumentVersionMetadata
+    DocumentVersionMetadata (DocumentVersionMetadata'),
+    newDocumentVersionMetadata,
+
+    -- ** FolderMetadata
+    FolderMetadata (FolderMetadata'),
+    newFolderMetadata,
+
+    -- ** GroupMetadata
+    GroupMetadata (GroupMetadata'),
+    newGroupMetadata,
+
+    -- ** NotificationOptions
+    NotificationOptions (NotificationOptions'),
+    newNotificationOptions,
+
+    -- ** Participants
+    Participants (Participants'),
+    newParticipants,
+
+    -- ** PermissionInfo
+    PermissionInfo (PermissionInfo'),
+    newPermissionInfo,
+
+    -- ** Principal
+    Principal (Principal'),
+    newPrincipal,
+
+    -- ** ResourceMetadata
+    ResourceMetadata (ResourceMetadata'),
+    newResourceMetadata,
+
+    -- ** ResourcePath
+    ResourcePath (ResourcePath'),
+    newResourcePath,
+
+    -- ** ResourcePathComponent
+    ResourcePathComponent (ResourcePathComponent'),
+    newResourcePathComponent,
+
+    -- ** SharePrincipal
+    SharePrincipal (SharePrincipal'),
+    newSharePrincipal,
+
+    -- ** ShareResult
+    ShareResult (ShareResult'),
+    newShareResult,
+
+    -- ** StorageRuleType
+    StorageRuleType (StorageRuleType'),
+    newStorageRuleType,
+
+    -- ** Subscription
+    Subscription (Subscription'),
+    newSubscription,
+
+    -- ** UploadMetadata
+    UploadMetadata (UploadMetadata'),
+    newUploadMetadata,
+
+    -- ** User
+    User (User'),
+    newUser,
+
+    -- ** UserMetadata
+    UserMetadata (UserMetadata'),
+    newUserMetadata,
+
+    -- ** UserStorageMetadata
+    UserStorageMetadata (UserStorageMetadata'),
+    newUserStorageMetadata,
+  )
+where
+
+import Amazonka.WorkDocs.AbortDocumentVersionUpload
+import Amazonka.WorkDocs.ActivateUser
+import Amazonka.WorkDocs.AddResourcePermissions
+import Amazonka.WorkDocs.CreateComment
+import Amazonka.WorkDocs.CreateCustomMetadata
+import Amazonka.WorkDocs.CreateFolder
+import Amazonka.WorkDocs.CreateLabels
+import Amazonka.WorkDocs.CreateNotificationSubscription
+import Amazonka.WorkDocs.CreateUser
+import Amazonka.WorkDocs.DeactivateUser
+import Amazonka.WorkDocs.DeleteComment
+import Amazonka.WorkDocs.DeleteCustomMetadata
+import Amazonka.WorkDocs.DeleteDocument
+import Amazonka.WorkDocs.DeleteDocumentVersion
+import Amazonka.WorkDocs.DeleteFolder
+import Amazonka.WorkDocs.DeleteFolderContents
+import Amazonka.WorkDocs.DeleteLabels
+import Amazonka.WorkDocs.DeleteNotificationSubscription
+import Amazonka.WorkDocs.DeleteUser
+import Amazonka.WorkDocs.DescribeActivities
+import Amazonka.WorkDocs.DescribeComments
+import Amazonka.WorkDocs.DescribeDocumentVersions
+import Amazonka.WorkDocs.DescribeFolderContents
+import Amazonka.WorkDocs.DescribeGroups
+import Amazonka.WorkDocs.DescribeNotificationSubscriptions
+import Amazonka.WorkDocs.DescribeResourcePermissions
+import Amazonka.WorkDocs.DescribeRootFolders
+import Amazonka.WorkDocs.DescribeUsers
+import Amazonka.WorkDocs.GetCurrentUser
+import Amazonka.WorkDocs.GetDocument
+import Amazonka.WorkDocs.GetDocumentPath
+import Amazonka.WorkDocs.GetDocumentVersion
+import Amazonka.WorkDocs.GetFolder
+import Amazonka.WorkDocs.GetFolderPath
+import Amazonka.WorkDocs.GetResources
+import Amazonka.WorkDocs.InitiateDocumentVersionUpload
+import Amazonka.WorkDocs.Lens
+import Amazonka.WorkDocs.RemoveAllResourcePermissions
+import Amazonka.WorkDocs.RemoveResourcePermission
+import Amazonka.WorkDocs.RestoreDocumentVersions
+import Amazonka.WorkDocs.Types
+import Amazonka.WorkDocs.UpdateDocument
+import Amazonka.WorkDocs.UpdateDocumentVersion
+import Amazonka.WorkDocs.UpdateFolder
+import Amazonka.WorkDocs.UpdateUser
+import Amazonka.WorkDocs.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 'WorkDocs'.
+
+-- $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/WorkDocs/AbortDocumentVersionUpload.hs b/gen/Amazonka/WorkDocs/AbortDocumentVersionUpload.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/AbortDocumentVersionUpload.hs
@@ -0,0 +1,168 @@
+{-# 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.WorkDocs.AbortDocumentVersionUpload
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Aborts the upload of the specified document version that was previously
+-- initiated by InitiateDocumentVersionUpload. The client should make this
+-- call only when it no longer intends to upload the document version, or
+-- fails to do so.
+module Amazonka.WorkDocs.AbortDocumentVersionUpload
+  ( -- * Creating a Request
+    AbortDocumentVersionUpload (..),
+    newAbortDocumentVersionUpload,
+
+    -- * Request Lenses
+    abortDocumentVersionUpload_authenticationToken,
+    abortDocumentVersionUpload_documentId,
+    abortDocumentVersionUpload_versionId,
+
+    -- * Destructuring the Response
+    AbortDocumentVersionUploadResponse (..),
+    newAbortDocumentVersionUploadResponse,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newAbortDocumentVersionUpload' smart constructor.
+data AbortDocumentVersionUpload = AbortDocumentVersionUpload'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ID of the document.
+    documentId :: Prelude.Text,
+    -- | The ID of the version.
+    versionId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AbortDocumentVersionUpload' 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:
+--
+-- 'authenticationToken', 'abortDocumentVersionUpload_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'documentId', 'abortDocumentVersionUpload_documentId' - The ID of the document.
+--
+-- 'versionId', 'abortDocumentVersionUpload_versionId' - The ID of the version.
+newAbortDocumentVersionUpload ::
+  -- | 'documentId'
+  Prelude.Text ->
+  -- | 'versionId'
+  Prelude.Text ->
+  AbortDocumentVersionUpload
+newAbortDocumentVersionUpload
+  pDocumentId_
+  pVersionId_ =
+    AbortDocumentVersionUpload'
+      { authenticationToken =
+          Prelude.Nothing,
+        documentId = pDocumentId_,
+        versionId = pVersionId_
+      }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+abortDocumentVersionUpload_authenticationToken :: Lens.Lens' AbortDocumentVersionUpload (Prelude.Maybe Prelude.Text)
+abortDocumentVersionUpload_authenticationToken = Lens.lens (\AbortDocumentVersionUpload' {authenticationToken} -> authenticationToken) (\s@AbortDocumentVersionUpload' {} a -> s {authenticationToken = a} :: AbortDocumentVersionUpload) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ID of the document.
+abortDocumentVersionUpload_documentId :: Lens.Lens' AbortDocumentVersionUpload Prelude.Text
+abortDocumentVersionUpload_documentId = Lens.lens (\AbortDocumentVersionUpload' {documentId} -> documentId) (\s@AbortDocumentVersionUpload' {} a -> s {documentId = a} :: AbortDocumentVersionUpload)
+
+-- | The ID of the version.
+abortDocumentVersionUpload_versionId :: Lens.Lens' AbortDocumentVersionUpload Prelude.Text
+abortDocumentVersionUpload_versionId = Lens.lens (\AbortDocumentVersionUpload' {versionId} -> versionId) (\s@AbortDocumentVersionUpload' {} a -> s {versionId = a} :: AbortDocumentVersionUpload)
+
+instance Core.AWSRequest AbortDocumentVersionUpload where
+  type
+    AWSResponse AbortDocumentVersionUpload =
+      AbortDocumentVersionUploadResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull
+      AbortDocumentVersionUploadResponse'
+
+instance Prelude.Hashable AbortDocumentVersionUpload where
+  hashWithSalt _salt AbortDocumentVersionUpload' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` documentId
+      `Prelude.hashWithSalt` versionId
+
+instance Prelude.NFData AbortDocumentVersionUpload where
+  rnf AbortDocumentVersionUpload' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf documentId
+      `Prelude.seq` Prelude.rnf versionId
+
+instance Data.ToHeaders AbortDocumentVersionUpload where
+  toHeaders AbortDocumentVersionUpload' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath AbortDocumentVersionUpload where
+  toPath AbortDocumentVersionUpload' {..} =
+    Prelude.mconcat
+      [ "/api/v1/documents/",
+        Data.toBS documentId,
+        "/versions/",
+        Data.toBS versionId
+      ]
+
+instance Data.ToQuery AbortDocumentVersionUpload where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAbortDocumentVersionUploadResponse' smart constructor.
+data AbortDocumentVersionUploadResponse = AbortDocumentVersionUploadResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AbortDocumentVersionUploadResponse' 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.
+newAbortDocumentVersionUploadResponse ::
+  AbortDocumentVersionUploadResponse
+newAbortDocumentVersionUploadResponse =
+  AbortDocumentVersionUploadResponse'
+
+instance
+  Prelude.NFData
+    AbortDocumentVersionUploadResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/WorkDocs/ActivateUser.hs b/gen/Amazonka/WorkDocs/ActivateUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/ActivateUser.hs
@@ -0,0 +1,177 @@
+{-# 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.WorkDocs.ActivateUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Activates the specified user. Only active users can access Amazon
+-- WorkDocs.
+module Amazonka.WorkDocs.ActivateUser
+  ( -- * Creating a Request
+    ActivateUser (..),
+    newActivateUser,
+
+    -- * Request Lenses
+    activateUser_authenticationToken,
+    activateUser_userId,
+
+    -- * Destructuring the Response
+    ActivateUserResponse (..),
+    newActivateUserResponse,
+
+    -- * Response Lenses
+    activateUserResponse_user,
+    activateUserResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newActivateUser' smart constructor.
+data ActivateUser = ActivateUser'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ID of the user.
+    userId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ActivateUser' 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:
+--
+-- 'authenticationToken', 'activateUser_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'userId', 'activateUser_userId' - The ID of the user.
+newActivateUser ::
+  -- | 'userId'
+  Prelude.Text ->
+  ActivateUser
+newActivateUser pUserId_ =
+  ActivateUser'
+    { authenticationToken =
+        Prelude.Nothing,
+      userId = pUserId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+activateUser_authenticationToken :: Lens.Lens' ActivateUser (Prelude.Maybe Prelude.Text)
+activateUser_authenticationToken = Lens.lens (\ActivateUser' {authenticationToken} -> authenticationToken) (\s@ActivateUser' {} a -> s {authenticationToken = a} :: ActivateUser) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ID of the user.
+activateUser_userId :: Lens.Lens' ActivateUser Prelude.Text
+activateUser_userId = Lens.lens (\ActivateUser' {userId} -> userId) (\s@ActivateUser' {} a -> s {userId = a} :: ActivateUser)
+
+instance Core.AWSRequest ActivateUser where
+  type AWSResponse ActivateUser = ActivateUserResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          ActivateUserResponse'
+            Prelude.<$> (x Data..?> "User")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable ActivateUser where
+  hashWithSalt _salt ActivateUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` userId
+
+instance Prelude.NFData ActivateUser where
+  rnf ActivateUser' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf userId
+
+instance Data.ToHeaders ActivateUser where
+  toHeaders ActivateUser' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToJSON ActivateUser where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath ActivateUser where
+  toPath ActivateUser' {..} =
+    Prelude.mconcat
+      ["/api/v1/users/", Data.toBS userId, "/activation"]
+
+instance Data.ToQuery ActivateUser where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newActivateUserResponse' smart constructor.
+data ActivateUserResponse = ActivateUserResponse'
+  { -- | The user information.
+    user :: Prelude.Maybe User,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ActivateUserResponse' 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:
+--
+-- 'user', 'activateUserResponse_user' - The user information.
+--
+-- 'httpStatus', 'activateUserResponse_httpStatus' - The response's http status code.
+newActivateUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  ActivateUserResponse
+newActivateUserResponse pHttpStatus_ =
+  ActivateUserResponse'
+    { user = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The user information.
+activateUserResponse_user :: Lens.Lens' ActivateUserResponse (Prelude.Maybe User)
+activateUserResponse_user = Lens.lens (\ActivateUserResponse' {user} -> user) (\s@ActivateUserResponse' {} a -> s {user = a} :: ActivateUserResponse)
+
+-- | The response's http status code.
+activateUserResponse_httpStatus :: Lens.Lens' ActivateUserResponse Prelude.Int
+activateUserResponse_httpStatus = Lens.lens (\ActivateUserResponse' {httpStatus} -> httpStatus) (\s@ActivateUserResponse' {} a -> s {httpStatus = a} :: ActivateUserResponse)
+
+instance Prelude.NFData ActivateUserResponse where
+  rnf ActivateUserResponse' {..} =
+    Prelude.rnf user
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/AddResourcePermissions.hs b/gen/Amazonka/WorkDocs/AddResourcePermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/AddResourcePermissions.hs
@@ -0,0 +1,218 @@
+{-# 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.WorkDocs.AddResourcePermissions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a set of permissions for the specified folder or document. The
+-- resource permissions are overwritten if the principals already have
+-- different permissions.
+module Amazonka.WorkDocs.AddResourcePermissions
+  ( -- * Creating a Request
+    AddResourcePermissions (..),
+    newAddResourcePermissions,
+
+    -- * Request Lenses
+    addResourcePermissions_authenticationToken,
+    addResourcePermissions_notificationOptions,
+    addResourcePermissions_resourceId,
+    addResourcePermissions_principals,
+
+    -- * Destructuring the Response
+    AddResourcePermissionsResponse (..),
+    newAddResourcePermissionsResponse,
+
+    -- * Response Lenses
+    addResourcePermissionsResponse_shareResults,
+    addResourcePermissionsResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newAddResourcePermissions' smart constructor.
+data AddResourcePermissions = AddResourcePermissions'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The notification options.
+    notificationOptions :: Prelude.Maybe NotificationOptions,
+    -- | The ID of the resource.
+    resourceId :: Prelude.Text,
+    -- | The users, groups, or organization being granted permission.
+    principals :: [SharePrincipal]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddResourcePermissions' 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:
+--
+-- 'authenticationToken', 'addResourcePermissions_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'notificationOptions', 'addResourcePermissions_notificationOptions' - The notification options.
+--
+-- 'resourceId', 'addResourcePermissions_resourceId' - The ID of the resource.
+--
+-- 'principals', 'addResourcePermissions_principals' - The users, groups, or organization being granted permission.
+newAddResourcePermissions ::
+  -- | 'resourceId'
+  Prelude.Text ->
+  AddResourcePermissions
+newAddResourcePermissions pResourceId_ =
+  AddResourcePermissions'
+    { authenticationToken =
+        Prelude.Nothing,
+      notificationOptions = Prelude.Nothing,
+      resourceId = pResourceId_,
+      principals = Prelude.mempty
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+addResourcePermissions_authenticationToken :: Lens.Lens' AddResourcePermissions (Prelude.Maybe Prelude.Text)
+addResourcePermissions_authenticationToken = Lens.lens (\AddResourcePermissions' {authenticationToken} -> authenticationToken) (\s@AddResourcePermissions' {} a -> s {authenticationToken = a} :: AddResourcePermissions) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The notification options.
+addResourcePermissions_notificationOptions :: Lens.Lens' AddResourcePermissions (Prelude.Maybe NotificationOptions)
+addResourcePermissions_notificationOptions = Lens.lens (\AddResourcePermissions' {notificationOptions} -> notificationOptions) (\s@AddResourcePermissions' {} a -> s {notificationOptions = a} :: AddResourcePermissions)
+
+-- | The ID of the resource.
+addResourcePermissions_resourceId :: Lens.Lens' AddResourcePermissions Prelude.Text
+addResourcePermissions_resourceId = Lens.lens (\AddResourcePermissions' {resourceId} -> resourceId) (\s@AddResourcePermissions' {} a -> s {resourceId = a} :: AddResourcePermissions)
+
+-- | The users, groups, or organization being granted permission.
+addResourcePermissions_principals :: Lens.Lens' AddResourcePermissions [SharePrincipal]
+addResourcePermissions_principals = Lens.lens (\AddResourcePermissions' {principals} -> principals) (\s@AddResourcePermissions' {} a -> s {principals = a} :: AddResourcePermissions) Prelude.. Lens.coerced
+
+instance Core.AWSRequest AddResourcePermissions where
+  type
+    AWSResponse AddResourcePermissions =
+      AddResourcePermissionsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          AddResourcePermissionsResponse'
+            Prelude.<$> (x Data..?> "ShareResults" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable AddResourcePermissions where
+  hashWithSalt _salt AddResourcePermissions' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` notificationOptions
+      `Prelude.hashWithSalt` resourceId
+      `Prelude.hashWithSalt` principals
+
+instance Prelude.NFData AddResourcePermissions where
+  rnf AddResourcePermissions' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf notificationOptions
+      `Prelude.seq` Prelude.rnf resourceId
+      `Prelude.seq` Prelude.rnf principals
+
+instance Data.ToHeaders AddResourcePermissions where
+  toHeaders AddResourcePermissions' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToJSON AddResourcePermissions where
+  toJSON AddResourcePermissions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("NotificationOptions" Data..=)
+              Prelude.<$> notificationOptions,
+            Prelude.Just ("Principals" Data..= principals)
+          ]
+      )
+
+instance Data.ToPath AddResourcePermissions where
+  toPath AddResourcePermissions' {..} =
+    Prelude.mconcat
+      [ "/api/v1/resources/",
+        Data.toBS resourceId,
+        "/permissions"
+      ]
+
+instance Data.ToQuery AddResourcePermissions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newAddResourcePermissionsResponse' smart constructor.
+data AddResourcePermissionsResponse = AddResourcePermissionsResponse'
+  { -- | The share results.
+    shareResults :: Prelude.Maybe [ShareResult],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'AddResourcePermissionsResponse' 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:
+--
+-- 'shareResults', 'addResourcePermissionsResponse_shareResults' - The share results.
+--
+-- 'httpStatus', 'addResourcePermissionsResponse_httpStatus' - The response's http status code.
+newAddResourcePermissionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  AddResourcePermissionsResponse
+newAddResourcePermissionsResponse pHttpStatus_ =
+  AddResourcePermissionsResponse'
+    { shareResults =
+        Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The share results.
+addResourcePermissionsResponse_shareResults :: Lens.Lens' AddResourcePermissionsResponse (Prelude.Maybe [ShareResult])
+addResourcePermissionsResponse_shareResults = Lens.lens (\AddResourcePermissionsResponse' {shareResults} -> shareResults) (\s@AddResourcePermissionsResponse' {} a -> s {shareResults = a} :: AddResourcePermissionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+addResourcePermissionsResponse_httpStatus :: Lens.Lens' AddResourcePermissionsResponse Prelude.Int
+addResourcePermissionsResponse_httpStatus = Lens.lens (\AddResourcePermissionsResponse' {httpStatus} -> httpStatus) (\s@AddResourcePermissionsResponse' {} a -> s {httpStatus = a} :: AddResourcePermissionsResponse)
+
+instance
+  Prelude.NFData
+    AddResourcePermissionsResponse
+  where
+  rnf AddResourcePermissionsResponse' {..} =
+    Prelude.rnf shareResults
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/CreateComment.hs b/gen/Amazonka/WorkDocs/CreateComment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/CreateComment.hs
@@ -0,0 +1,281 @@
+{-# 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.WorkDocs.CreateComment
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds a new comment to the specified document version.
+module Amazonka.WorkDocs.CreateComment
+  ( -- * Creating a Request
+    CreateComment (..),
+    newCreateComment,
+
+    -- * Request Lenses
+    createComment_authenticationToken,
+    createComment_notifyCollaborators,
+    createComment_parentId,
+    createComment_threadId,
+    createComment_visibility,
+    createComment_documentId,
+    createComment_versionId,
+    createComment_text,
+
+    -- * Destructuring the Response
+    CreateCommentResponse (..),
+    newCreateCommentResponse,
+
+    -- * Response Lenses
+    createCommentResponse_comment,
+    createCommentResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newCreateComment' smart constructor.
+data CreateComment = CreateComment'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Set this parameter to TRUE to send an email out to the document
+    -- collaborators after the comment is created.
+    notifyCollaborators :: Prelude.Maybe Prelude.Bool,
+    -- | The ID of the parent comment.
+    parentId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the root comment in the thread.
+    threadId :: Prelude.Maybe Prelude.Text,
+    -- | The visibility of the comment. Options are either PRIVATE, where the
+    -- comment is visible only to the comment author and document owner and
+    -- co-owners, or PUBLIC, where the comment is visible to document owners,
+    -- co-owners, and contributors.
+    visibility :: Prelude.Maybe CommentVisibilityType,
+    -- | The ID of the document.
+    documentId :: Prelude.Text,
+    -- | The ID of the document version.
+    versionId :: Prelude.Text,
+    -- | The text of the comment.
+    text :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateComment' 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:
+--
+-- 'authenticationToken', 'createComment_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'notifyCollaborators', 'createComment_notifyCollaborators' - Set this parameter to TRUE to send an email out to the document
+-- collaborators after the comment is created.
+--
+-- 'parentId', 'createComment_parentId' - The ID of the parent comment.
+--
+-- 'threadId', 'createComment_threadId' - The ID of the root comment in the thread.
+--
+-- 'visibility', 'createComment_visibility' - The visibility of the comment. Options are either PRIVATE, where the
+-- comment is visible only to the comment author and document owner and
+-- co-owners, or PUBLIC, where the comment is visible to document owners,
+-- co-owners, and contributors.
+--
+-- 'documentId', 'createComment_documentId' - The ID of the document.
+--
+-- 'versionId', 'createComment_versionId' - The ID of the document version.
+--
+-- 'text', 'createComment_text' - The text of the comment.
+newCreateComment ::
+  -- | 'documentId'
+  Prelude.Text ->
+  -- | 'versionId'
+  Prelude.Text ->
+  -- | 'text'
+  Prelude.Text ->
+  CreateComment
+newCreateComment pDocumentId_ pVersionId_ pText_ =
+  CreateComment'
+    { authenticationToken =
+        Prelude.Nothing,
+      notifyCollaborators = Prelude.Nothing,
+      parentId = Prelude.Nothing,
+      threadId = Prelude.Nothing,
+      visibility = Prelude.Nothing,
+      documentId = pDocumentId_,
+      versionId = pVersionId_,
+      text = Data._Sensitive Lens.# pText_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+createComment_authenticationToken :: Lens.Lens' CreateComment (Prelude.Maybe Prelude.Text)
+createComment_authenticationToken = Lens.lens (\CreateComment' {authenticationToken} -> authenticationToken) (\s@CreateComment' {} a -> s {authenticationToken = a} :: CreateComment) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Set this parameter to TRUE to send an email out to the document
+-- collaborators after the comment is created.
+createComment_notifyCollaborators :: Lens.Lens' CreateComment (Prelude.Maybe Prelude.Bool)
+createComment_notifyCollaborators = Lens.lens (\CreateComment' {notifyCollaborators} -> notifyCollaborators) (\s@CreateComment' {} a -> s {notifyCollaborators = a} :: CreateComment)
+
+-- | The ID of the parent comment.
+createComment_parentId :: Lens.Lens' CreateComment (Prelude.Maybe Prelude.Text)
+createComment_parentId = Lens.lens (\CreateComment' {parentId} -> parentId) (\s@CreateComment' {} a -> s {parentId = a} :: CreateComment)
+
+-- | The ID of the root comment in the thread.
+createComment_threadId :: Lens.Lens' CreateComment (Prelude.Maybe Prelude.Text)
+createComment_threadId = Lens.lens (\CreateComment' {threadId} -> threadId) (\s@CreateComment' {} a -> s {threadId = a} :: CreateComment)
+
+-- | The visibility of the comment. Options are either PRIVATE, where the
+-- comment is visible only to the comment author and document owner and
+-- co-owners, or PUBLIC, where the comment is visible to document owners,
+-- co-owners, and contributors.
+createComment_visibility :: Lens.Lens' CreateComment (Prelude.Maybe CommentVisibilityType)
+createComment_visibility = Lens.lens (\CreateComment' {visibility} -> visibility) (\s@CreateComment' {} a -> s {visibility = a} :: CreateComment)
+
+-- | The ID of the document.
+createComment_documentId :: Lens.Lens' CreateComment Prelude.Text
+createComment_documentId = Lens.lens (\CreateComment' {documentId} -> documentId) (\s@CreateComment' {} a -> s {documentId = a} :: CreateComment)
+
+-- | The ID of the document version.
+createComment_versionId :: Lens.Lens' CreateComment Prelude.Text
+createComment_versionId = Lens.lens (\CreateComment' {versionId} -> versionId) (\s@CreateComment' {} a -> s {versionId = a} :: CreateComment)
+
+-- | The text of the comment.
+createComment_text :: Lens.Lens' CreateComment Prelude.Text
+createComment_text = Lens.lens (\CreateComment' {text} -> text) (\s@CreateComment' {} a -> s {text = a} :: CreateComment) Prelude.. Data._Sensitive
+
+instance Core.AWSRequest CreateComment where
+  type
+    AWSResponse CreateComment =
+      CreateCommentResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateCommentResponse'
+            Prelude.<$> (x Data..?> "Comment")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateComment where
+  hashWithSalt _salt CreateComment' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` notifyCollaborators
+      `Prelude.hashWithSalt` parentId
+      `Prelude.hashWithSalt` threadId
+      `Prelude.hashWithSalt` visibility
+      `Prelude.hashWithSalt` documentId
+      `Prelude.hashWithSalt` versionId
+      `Prelude.hashWithSalt` text
+
+instance Prelude.NFData CreateComment where
+  rnf CreateComment' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf notifyCollaborators
+      `Prelude.seq` Prelude.rnf parentId
+      `Prelude.seq` Prelude.rnf threadId
+      `Prelude.seq` Prelude.rnf visibility
+      `Prelude.seq` Prelude.rnf documentId
+      `Prelude.seq` Prelude.rnf versionId
+      `Prelude.seq` Prelude.rnf text
+
+instance Data.ToHeaders CreateComment where
+  toHeaders CreateComment' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToJSON CreateComment where
+  toJSON CreateComment' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("NotifyCollaborators" Data..=)
+              Prelude.<$> notifyCollaborators,
+            ("ParentId" Data..=) Prelude.<$> parentId,
+            ("ThreadId" Data..=) Prelude.<$> threadId,
+            ("Visibility" Data..=) Prelude.<$> visibility,
+            Prelude.Just ("Text" Data..= text)
+          ]
+      )
+
+instance Data.ToPath CreateComment where
+  toPath CreateComment' {..} =
+    Prelude.mconcat
+      [ "/api/v1/documents/",
+        Data.toBS documentId,
+        "/versions/",
+        Data.toBS versionId,
+        "/comment"
+      ]
+
+instance Data.ToQuery CreateComment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateCommentResponse' smart constructor.
+data CreateCommentResponse = CreateCommentResponse'
+  { -- | The comment that has been created.
+    comment :: Prelude.Maybe Comment,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateCommentResponse' 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:
+--
+-- 'comment', 'createCommentResponse_comment' - The comment that has been created.
+--
+-- 'httpStatus', 'createCommentResponse_httpStatus' - The response's http status code.
+newCreateCommentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateCommentResponse
+newCreateCommentResponse pHttpStatus_ =
+  CreateCommentResponse'
+    { comment = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The comment that has been created.
+createCommentResponse_comment :: Lens.Lens' CreateCommentResponse (Prelude.Maybe Comment)
+createCommentResponse_comment = Lens.lens (\CreateCommentResponse' {comment} -> comment) (\s@CreateCommentResponse' {} a -> s {comment = a} :: CreateCommentResponse)
+
+-- | The response's http status code.
+createCommentResponse_httpStatus :: Lens.Lens' CreateCommentResponse Prelude.Int
+createCommentResponse_httpStatus = Lens.lens (\CreateCommentResponse' {httpStatus} -> httpStatus) (\s@CreateCommentResponse' {} a -> s {httpStatus = a} :: CreateCommentResponse)
+
+instance Prelude.NFData CreateCommentResponse where
+  rnf CreateCommentResponse' {..} =
+    Prelude.rnf comment
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/CreateCustomMetadata.hs b/gen/Amazonka/WorkDocs/CreateCustomMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/CreateCustomMetadata.hs
@@ -0,0 +1,205 @@
+{-# 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.WorkDocs.CreateCustomMetadata
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds one or more custom properties to the specified resource (a folder,
+-- document, or version).
+module Amazonka.WorkDocs.CreateCustomMetadata
+  ( -- * Creating a Request
+    CreateCustomMetadata (..),
+    newCreateCustomMetadata,
+
+    -- * Request Lenses
+    createCustomMetadata_authenticationToken,
+    createCustomMetadata_versionId,
+    createCustomMetadata_resourceId,
+    createCustomMetadata_customMetadata,
+
+    -- * Destructuring the Response
+    CreateCustomMetadataResponse (..),
+    newCreateCustomMetadataResponse,
+
+    -- * Response Lenses
+    createCustomMetadataResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newCreateCustomMetadata' smart constructor.
+data CreateCustomMetadata = CreateCustomMetadata'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ID of the version, if the custom metadata is being added to a
+    -- document version.
+    versionId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the resource.
+    resourceId :: Prelude.Text,
+    -- | Custom metadata in the form of name-value pairs.
+    customMetadata :: Prelude.HashMap Prelude.Text Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateCustomMetadata' 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:
+--
+-- 'authenticationToken', 'createCustomMetadata_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'versionId', 'createCustomMetadata_versionId' - The ID of the version, if the custom metadata is being added to a
+-- document version.
+--
+-- 'resourceId', 'createCustomMetadata_resourceId' - The ID of the resource.
+--
+-- 'customMetadata', 'createCustomMetadata_customMetadata' - Custom metadata in the form of name-value pairs.
+newCreateCustomMetadata ::
+  -- | 'resourceId'
+  Prelude.Text ->
+  CreateCustomMetadata
+newCreateCustomMetadata pResourceId_ =
+  CreateCustomMetadata'
+    { authenticationToken =
+        Prelude.Nothing,
+      versionId = Prelude.Nothing,
+      resourceId = pResourceId_,
+      customMetadata = Prelude.mempty
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+createCustomMetadata_authenticationToken :: Lens.Lens' CreateCustomMetadata (Prelude.Maybe Prelude.Text)
+createCustomMetadata_authenticationToken = Lens.lens (\CreateCustomMetadata' {authenticationToken} -> authenticationToken) (\s@CreateCustomMetadata' {} a -> s {authenticationToken = a} :: CreateCustomMetadata) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ID of the version, if the custom metadata is being added to a
+-- document version.
+createCustomMetadata_versionId :: Lens.Lens' CreateCustomMetadata (Prelude.Maybe Prelude.Text)
+createCustomMetadata_versionId = Lens.lens (\CreateCustomMetadata' {versionId} -> versionId) (\s@CreateCustomMetadata' {} a -> s {versionId = a} :: CreateCustomMetadata)
+
+-- | The ID of the resource.
+createCustomMetadata_resourceId :: Lens.Lens' CreateCustomMetadata Prelude.Text
+createCustomMetadata_resourceId = Lens.lens (\CreateCustomMetadata' {resourceId} -> resourceId) (\s@CreateCustomMetadata' {} a -> s {resourceId = a} :: CreateCustomMetadata)
+
+-- | Custom metadata in the form of name-value pairs.
+createCustomMetadata_customMetadata :: Lens.Lens' CreateCustomMetadata (Prelude.HashMap Prelude.Text Prelude.Text)
+createCustomMetadata_customMetadata = Lens.lens (\CreateCustomMetadata' {customMetadata} -> customMetadata) (\s@CreateCustomMetadata' {} a -> s {customMetadata = a} :: CreateCustomMetadata) Prelude.. Lens.coerced
+
+instance Core.AWSRequest CreateCustomMetadata where
+  type
+    AWSResponse CreateCustomMetadata =
+      CreateCustomMetadataResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          CreateCustomMetadataResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateCustomMetadata where
+  hashWithSalt _salt CreateCustomMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` versionId
+      `Prelude.hashWithSalt` resourceId
+      `Prelude.hashWithSalt` customMetadata
+
+instance Prelude.NFData CreateCustomMetadata where
+  rnf CreateCustomMetadata' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf versionId
+      `Prelude.seq` Prelude.rnf resourceId
+      `Prelude.seq` Prelude.rnf customMetadata
+
+instance Data.ToHeaders CreateCustomMetadata where
+  toHeaders CreateCustomMetadata' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToJSON CreateCustomMetadata where
+  toJSON CreateCustomMetadata' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just
+              ("CustomMetadata" Data..= customMetadata)
+          ]
+      )
+
+instance Data.ToPath CreateCustomMetadata where
+  toPath CreateCustomMetadata' {..} =
+    Prelude.mconcat
+      [ "/api/v1/resources/",
+        Data.toBS resourceId,
+        "/customMetadata"
+      ]
+
+instance Data.ToQuery CreateCustomMetadata where
+  toQuery CreateCustomMetadata' {..} =
+    Prelude.mconcat ["versionid" Data.=: versionId]
+
+-- | /See:/ 'newCreateCustomMetadataResponse' smart constructor.
+data CreateCustomMetadataResponse = CreateCustomMetadataResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateCustomMetadataResponse' 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', 'createCustomMetadataResponse_httpStatus' - The response's http status code.
+newCreateCustomMetadataResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateCustomMetadataResponse
+newCreateCustomMetadataResponse pHttpStatus_ =
+  CreateCustomMetadataResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+createCustomMetadataResponse_httpStatus :: Lens.Lens' CreateCustomMetadataResponse Prelude.Int
+createCustomMetadataResponse_httpStatus = Lens.lens (\CreateCustomMetadataResponse' {httpStatus} -> httpStatus) (\s@CreateCustomMetadataResponse' {} a -> s {httpStatus = a} :: CreateCustomMetadataResponse)
+
+instance Prelude.NFData CreateCustomMetadataResponse where
+  rnf CreateCustomMetadataResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/CreateFolder.hs b/gen/Amazonka/WorkDocs/CreateFolder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/CreateFolder.hs
@@ -0,0 +1,193 @@
+{-# 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.WorkDocs.CreateFolder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a folder with the specified name and parent folder.
+module Amazonka.WorkDocs.CreateFolder
+  ( -- * Creating a Request
+    CreateFolder (..),
+    newCreateFolder,
+
+    -- * Request Lenses
+    createFolder_authenticationToken,
+    createFolder_name,
+    createFolder_parentFolderId,
+
+    -- * Destructuring the Response
+    CreateFolderResponse (..),
+    newCreateFolderResponse,
+
+    -- * Response Lenses
+    createFolderResponse_metadata,
+    createFolderResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newCreateFolder' smart constructor.
+data CreateFolder = CreateFolder'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The name of the new folder.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the parent folder.
+    parentFolderId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFolder' 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:
+--
+-- 'authenticationToken', 'createFolder_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'name', 'createFolder_name' - The name of the new folder.
+--
+-- 'parentFolderId', 'createFolder_parentFolderId' - The ID of the parent folder.
+newCreateFolder ::
+  -- | 'parentFolderId'
+  Prelude.Text ->
+  CreateFolder
+newCreateFolder pParentFolderId_ =
+  CreateFolder'
+    { authenticationToken =
+        Prelude.Nothing,
+      name = Prelude.Nothing,
+      parentFolderId = pParentFolderId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+createFolder_authenticationToken :: Lens.Lens' CreateFolder (Prelude.Maybe Prelude.Text)
+createFolder_authenticationToken = Lens.lens (\CreateFolder' {authenticationToken} -> authenticationToken) (\s@CreateFolder' {} a -> s {authenticationToken = a} :: CreateFolder) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The name of the new folder.
+createFolder_name :: Lens.Lens' CreateFolder (Prelude.Maybe Prelude.Text)
+createFolder_name = Lens.lens (\CreateFolder' {name} -> name) (\s@CreateFolder' {} a -> s {name = a} :: CreateFolder)
+
+-- | The ID of the parent folder.
+createFolder_parentFolderId :: Lens.Lens' CreateFolder Prelude.Text
+createFolder_parentFolderId = Lens.lens (\CreateFolder' {parentFolderId} -> parentFolderId) (\s@CreateFolder' {} a -> s {parentFolderId = a} :: CreateFolder)
+
+instance Core.AWSRequest CreateFolder where
+  type AWSResponse CreateFolder = CreateFolderResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateFolderResponse'
+            Prelude.<$> (x Data..?> "Metadata")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateFolder where
+  hashWithSalt _salt CreateFolder' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` parentFolderId
+
+instance Prelude.NFData CreateFolder where
+  rnf CreateFolder' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf parentFolderId
+
+instance Data.ToHeaders CreateFolder where
+  toHeaders CreateFolder' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToJSON CreateFolder where
+  toJSON CreateFolder' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Name" Data..=) Prelude.<$> name,
+            Prelude.Just
+              ("ParentFolderId" Data..= parentFolderId)
+          ]
+      )
+
+instance Data.ToPath CreateFolder where
+  toPath = Prelude.const "/api/v1/folders"
+
+instance Data.ToQuery CreateFolder where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateFolderResponse' smart constructor.
+data CreateFolderResponse = CreateFolderResponse'
+  { -- | The metadata of the folder.
+    metadata :: Prelude.Maybe FolderMetadata,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateFolderResponse' 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:
+--
+-- 'metadata', 'createFolderResponse_metadata' - The metadata of the folder.
+--
+-- 'httpStatus', 'createFolderResponse_httpStatus' - The response's http status code.
+newCreateFolderResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateFolderResponse
+newCreateFolderResponse pHttpStatus_ =
+  CreateFolderResponse'
+    { metadata = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The metadata of the folder.
+createFolderResponse_metadata :: Lens.Lens' CreateFolderResponse (Prelude.Maybe FolderMetadata)
+createFolderResponse_metadata = Lens.lens (\CreateFolderResponse' {metadata} -> metadata) (\s@CreateFolderResponse' {} a -> s {metadata = a} :: CreateFolderResponse)
+
+-- | The response's http status code.
+createFolderResponse_httpStatus :: Lens.Lens' CreateFolderResponse Prelude.Int
+createFolderResponse_httpStatus = Lens.lens (\CreateFolderResponse' {httpStatus} -> httpStatus) (\s@CreateFolderResponse' {} a -> s {httpStatus = a} :: CreateFolderResponse)
+
+instance Prelude.NFData CreateFolderResponse where
+  rnf CreateFolderResponse' {..} =
+    Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/CreateLabels.hs b/gen/Amazonka/WorkDocs/CreateLabels.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/CreateLabels.hs
@@ -0,0 +1,182 @@
+{-# 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.WorkDocs.CreateLabels
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Adds the specified list of labels to the given resource (a document or
+-- folder)
+module Amazonka.WorkDocs.CreateLabels
+  ( -- * Creating a Request
+    CreateLabels (..),
+    newCreateLabels,
+
+    -- * Request Lenses
+    createLabels_authenticationToken,
+    createLabels_resourceId,
+    createLabels_labels,
+
+    -- * Destructuring the Response
+    CreateLabelsResponse (..),
+    newCreateLabelsResponse,
+
+    -- * Response Lenses
+    createLabelsResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newCreateLabels' smart constructor.
+data CreateLabels = CreateLabels'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ID of the resource.
+    resourceId :: Prelude.Text,
+    -- | List of labels to add to the resource.
+    labels :: [Prelude.Text]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateLabels' 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:
+--
+-- 'authenticationToken', 'createLabels_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'resourceId', 'createLabels_resourceId' - The ID of the resource.
+--
+-- 'labels', 'createLabels_labels' - List of labels to add to the resource.
+newCreateLabels ::
+  -- | 'resourceId'
+  Prelude.Text ->
+  CreateLabels
+newCreateLabels pResourceId_ =
+  CreateLabels'
+    { authenticationToken =
+        Prelude.Nothing,
+      resourceId = pResourceId_,
+      labels = Prelude.mempty
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+createLabels_authenticationToken :: Lens.Lens' CreateLabels (Prelude.Maybe Prelude.Text)
+createLabels_authenticationToken = Lens.lens (\CreateLabels' {authenticationToken} -> authenticationToken) (\s@CreateLabels' {} a -> s {authenticationToken = a} :: CreateLabels) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ID of the resource.
+createLabels_resourceId :: Lens.Lens' CreateLabels Prelude.Text
+createLabels_resourceId = Lens.lens (\CreateLabels' {resourceId} -> resourceId) (\s@CreateLabels' {} a -> s {resourceId = a} :: CreateLabels)
+
+-- | List of labels to add to the resource.
+createLabels_labels :: Lens.Lens' CreateLabels [Prelude.Text]
+createLabels_labels = Lens.lens (\CreateLabels' {labels} -> labels) (\s@CreateLabels' {} a -> s {labels = a} :: CreateLabels) Prelude.. Lens.coerced
+
+instance Core.AWSRequest CreateLabels where
+  type AWSResponse CreateLabels = CreateLabelsResponse
+  request overrides =
+    Request.putJSON (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          CreateLabelsResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateLabels where
+  hashWithSalt _salt CreateLabels' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` resourceId
+      `Prelude.hashWithSalt` labels
+
+instance Prelude.NFData CreateLabels where
+  rnf CreateLabels' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf resourceId
+      `Prelude.seq` Prelude.rnf labels
+
+instance Data.ToHeaders CreateLabels where
+  toHeaders CreateLabels' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToJSON CreateLabels where
+  toJSON CreateLabels' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [Prelude.Just ("Labels" Data..= labels)]
+      )
+
+instance Data.ToPath CreateLabels where
+  toPath CreateLabels' {..} =
+    Prelude.mconcat
+      [ "/api/v1/resources/",
+        Data.toBS resourceId,
+        "/labels"
+      ]
+
+instance Data.ToQuery CreateLabels where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateLabelsResponse' smart constructor.
+data CreateLabelsResponse = CreateLabelsResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateLabelsResponse' 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', 'createLabelsResponse_httpStatus' - The response's http status code.
+newCreateLabelsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateLabelsResponse
+newCreateLabelsResponse pHttpStatus_ =
+  CreateLabelsResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+createLabelsResponse_httpStatus :: Lens.Lens' CreateLabelsResponse Prelude.Int
+createLabelsResponse_httpStatus = Lens.lens (\CreateLabelsResponse' {httpStatus} -> httpStatus) (\s@CreateLabelsResponse' {} a -> s {httpStatus = a} :: CreateLabelsResponse)
+
+instance Prelude.NFData CreateLabelsResponse where
+  rnf CreateLabelsResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/CreateNotificationSubscription.hs b/gen/Amazonka/WorkDocs/CreateNotificationSubscription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/CreateNotificationSubscription.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.WorkDocs.CreateNotificationSubscription
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Configure Amazon WorkDocs to use Amazon SNS notifications. The endpoint
+-- receives a confirmation message, and must confirm the subscription.
+--
+-- For more information, see
+-- <https://docs.aws.amazon.com/workdocs/latest/developerguide/manage-notifications.html Setting up notifications for an IAM user or role>
+-- in the /Amazon WorkDocs Developer Guide/.
+module Amazonka.WorkDocs.CreateNotificationSubscription
+  ( -- * Creating a Request
+    CreateNotificationSubscription (..),
+    newCreateNotificationSubscription,
+
+    -- * Request Lenses
+    createNotificationSubscription_organizationId,
+    createNotificationSubscription_endpoint,
+    createNotificationSubscription_protocol,
+    createNotificationSubscription_subscriptionType,
+
+    -- * Destructuring the Response
+    CreateNotificationSubscriptionResponse (..),
+    newCreateNotificationSubscriptionResponse,
+
+    -- * Response Lenses
+    createNotificationSubscriptionResponse_subscription,
+    createNotificationSubscriptionResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newCreateNotificationSubscription' smart constructor.
+data CreateNotificationSubscription = CreateNotificationSubscription'
+  { -- | The ID of the organization.
+    organizationId :: Prelude.Text,
+    -- | The endpoint to receive the notifications. If the protocol is HTTPS, the
+    -- endpoint is a URL that begins with @https@.
+    endpoint :: Prelude.Text,
+    -- | The protocol to use. The supported value is https, which delivers
+    -- JSON-encoded messages using HTTPS POST.
+    protocol :: SubscriptionProtocolType,
+    -- | The notification type.
+    subscriptionType :: SubscriptionType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateNotificationSubscription' 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:
+--
+-- 'organizationId', 'createNotificationSubscription_organizationId' - The ID of the organization.
+--
+-- 'endpoint', 'createNotificationSubscription_endpoint' - The endpoint to receive the notifications. If the protocol is HTTPS, the
+-- endpoint is a URL that begins with @https@.
+--
+-- 'protocol', 'createNotificationSubscription_protocol' - The protocol to use. The supported value is https, which delivers
+-- JSON-encoded messages using HTTPS POST.
+--
+-- 'subscriptionType', 'createNotificationSubscription_subscriptionType' - The notification type.
+newCreateNotificationSubscription ::
+  -- | 'organizationId'
+  Prelude.Text ->
+  -- | 'endpoint'
+  Prelude.Text ->
+  -- | 'protocol'
+  SubscriptionProtocolType ->
+  -- | 'subscriptionType'
+  SubscriptionType ->
+  CreateNotificationSubscription
+newCreateNotificationSubscription
+  pOrganizationId_
+  pEndpoint_
+  pProtocol_
+  pSubscriptionType_ =
+    CreateNotificationSubscription'
+      { organizationId =
+          pOrganizationId_,
+        endpoint = pEndpoint_,
+        protocol = pProtocol_,
+        subscriptionType = pSubscriptionType_
+      }
+
+-- | The ID of the organization.
+createNotificationSubscription_organizationId :: Lens.Lens' CreateNotificationSubscription Prelude.Text
+createNotificationSubscription_organizationId = Lens.lens (\CreateNotificationSubscription' {organizationId} -> organizationId) (\s@CreateNotificationSubscription' {} a -> s {organizationId = a} :: CreateNotificationSubscription)
+
+-- | The endpoint to receive the notifications. If the protocol is HTTPS, the
+-- endpoint is a URL that begins with @https@.
+createNotificationSubscription_endpoint :: Lens.Lens' CreateNotificationSubscription Prelude.Text
+createNotificationSubscription_endpoint = Lens.lens (\CreateNotificationSubscription' {endpoint} -> endpoint) (\s@CreateNotificationSubscription' {} a -> s {endpoint = a} :: CreateNotificationSubscription)
+
+-- | The protocol to use. The supported value is https, which delivers
+-- JSON-encoded messages using HTTPS POST.
+createNotificationSubscription_protocol :: Lens.Lens' CreateNotificationSubscription SubscriptionProtocolType
+createNotificationSubscription_protocol = Lens.lens (\CreateNotificationSubscription' {protocol} -> protocol) (\s@CreateNotificationSubscription' {} a -> s {protocol = a} :: CreateNotificationSubscription)
+
+-- | The notification type.
+createNotificationSubscription_subscriptionType :: Lens.Lens' CreateNotificationSubscription SubscriptionType
+createNotificationSubscription_subscriptionType = Lens.lens (\CreateNotificationSubscription' {subscriptionType} -> subscriptionType) (\s@CreateNotificationSubscription' {} a -> s {subscriptionType = a} :: CreateNotificationSubscription)
+
+instance
+  Core.AWSRequest
+    CreateNotificationSubscription
+  where
+  type
+    AWSResponse CreateNotificationSubscription =
+      CreateNotificationSubscriptionResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateNotificationSubscriptionResponse'
+            Prelude.<$> (x Data..?> "Subscription")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    CreateNotificationSubscription
+  where
+  hashWithSalt
+    _salt
+    CreateNotificationSubscription' {..} =
+      _salt
+        `Prelude.hashWithSalt` organizationId
+        `Prelude.hashWithSalt` endpoint
+        `Prelude.hashWithSalt` protocol
+        `Prelude.hashWithSalt` subscriptionType
+
+instance
+  Prelude.NFData
+    CreateNotificationSubscription
+  where
+  rnf CreateNotificationSubscription' {..} =
+    Prelude.rnf organizationId
+      `Prelude.seq` Prelude.rnf endpoint
+      `Prelude.seq` Prelude.rnf protocol
+      `Prelude.seq` Prelude.rnf subscriptionType
+
+instance
+  Data.ToHeaders
+    CreateNotificationSubscription
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToJSON CreateNotificationSubscription where
+  toJSON CreateNotificationSubscription' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Endpoint" Data..= endpoint),
+            Prelude.Just ("Protocol" Data..= protocol),
+            Prelude.Just
+              ("SubscriptionType" Data..= subscriptionType)
+          ]
+      )
+
+instance Data.ToPath CreateNotificationSubscription where
+  toPath CreateNotificationSubscription' {..} =
+    Prelude.mconcat
+      [ "/api/v1/organizations/",
+        Data.toBS organizationId,
+        "/subscriptions"
+      ]
+
+instance Data.ToQuery CreateNotificationSubscription where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateNotificationSubscriptionResponse' smart constructor.
+data CreateNotificationSubscriptionResponse = CreateNotificationSubscriptionResponse'
+  { -- | The subscription.
+    subscription :: Prelude.Maybe Subscription,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateNotificationSubscriptionResponse' 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:
+--
+-- 'subscription', 'createNotificationSubscriptionResponse_subscription' - The subscription.
+--
+-- 'httpStatus', 'createNotificationSubscriptionResponse_httpStatus' - The response's http status code.
+newCreateNotificationSubscriptionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateNotificationSubscriptionResponse
+newCreateNotificationSubscriptionResponse
+  pHttpStatus_ =
+    CreateNotificationSubscriptionResponse'
+      { subscription =
+          Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The subscription.
+createNotificationSubscriptionResponse_subscription :: Lens.Lens' CreateNotificationSubscriptionResponse (Prelude.Maybe Subscription)
+createNotificationSubscriptionResponse_subscription = Lens.lens (\CreateNotificationSubscriptionResponse' {subscription} -> subscription) (\s@CreateNotificationSubscriptionResponse' {} a -> s {subscription = a} :: CreateNotificationSubscriptionResponse)
+
+-- | The response's http status code.
+createNotificationSubscriptionResponse_httpStatus :: Lens.Lens' CreateNotificationSubscriptionResponse Prelude.Int
+createNotificationSubscriptionResponse_httpStatus = Lens.lens (\CreateNotificationSubscriptionResponse' {httpStatus} -> httpStatus) (\s@CreateNotificationSubscriptionResponse' {} a -> s {httpStatus = a} :: CreateNotificationSubscriptionResponse)
+
+instance
+  Prelude.NFData
+    CreateNotificationSubscriptionResponse
+  where
+  rnf CreateNotificationSubscriptionResponse' {..} =
+    Prelude.rnf subscription
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/CreateUser.hs b/gen/Amazonka/WorkDocs/CreateUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/CreateUser.hs
@@ -0,0 +1,281 @@
+{-# 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.WorkDocs.CreateUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a user in a Simple AD or Microsoft AD directory. The status of a
+-- newly created user is \"ACTIVE\". New users can access Amazon WorkDocs.
+module Amazonka.WorkDocs.CreateUser
+  ( -- * Creating a Request
+    CreateUser (..),
+    newCreateUser,
+
+    -- * Request Lenses
+    createUser_authenticationToken,
+    createUser_emailAddress,
+    createUser_organizationId,
+    createUser_storageRule,
+    createUser_timeZoneId,
+    createUser_username,
+    createUser_givenName,
+    createUser_surname,
+    createUser_password,
+
+    -- * Destructuring the Response
+    CreateUserResponse (..),
+    newCreateUserResponse,
+
+    -- * Response Lenses
+    createUserResponse_user,
+    createUserResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newCreateUser' smart constructor.
+data CreateUser = CreateUser'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The email address of the user.
+    emailAddress :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ID of the organization.
+    organizationId :: Prelude.Maybe Prelude.Text,
+    -- | The amount of storage for the user.
+    storageRule :: Prelude.Maybe StorageRuleType,
+    -- | The time zone ID of the user.
+    timeZoneId :: Prelude.Maybe Prelude.Text,
+    -- | The login name of the user.
+    username :: Prelude.Text,
+    -- | The given name of the user.
+    givenName :: Prelude.Text,
+    -- | The surname of the user.
+    surname :: Prelude.Text,
+    -- | The password of the user.
+    password :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateUser' 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:
+--
+-- 'authenticationToken', 'createUser_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'emailAddress', 'createUser_emailAddress' - The email address of the user.
+--
+-- 'organizationId', 'createUser_organizationId' - The ID of the organization.
+--
+-- 'storageRule', 'createUser_storageRule' - The amount of storage for the user.
+--
+-- 'timeZoneId', 'createUser_timeZoneId' - The time zone ID of the user.
+--
+-- 'username', 'createUser_username' - The login name of the user.
+--
+-- 'givenName', 'createUser_givenName' - The given name of the user.
+--
+-- 'surname', 'createUser_surname' - The surname of the user.
+--
+-- 'password', 'createUser_password' - The password of the user.
+newCreateUser ::
+  -- | 'username'
+  Prelude.Text ->
+  -- | 'givenName'
+  Prelude.Text ->
+  -- | 'surname'
+  Prelude.Text ->
+  -- | 'password'
+  Prelude.Text ->
+  CreateUser
+newCreateUser
+  pUsername_
+  pGivenName_
+  pSurname_
+  pPassword_ =
+    CreateUser'
+      { authenticationToken = Prelude.Nothing,
+        emailAddress = Prelude.Nothing,
+        organizationId = Prelude.Nothing,
+        storageRule = Prelude.Nothing,
+        timeZoneId = Prelude.Nothing,
+        username = pUsername_,
+        givenName = pGivenName_,
+        surname = pSurname_,
+        password = Data._Sensitive Lens.# pPassword_
+      }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+createUser_authenticationToken :: Lens.Lens' CreateUser (Prelude.Maybe Prelude.Text)
+createUser_authenticationToken = Lens.lens (\CreateUser' {authenticationToken} -> authenticationToken) (\s@CreateUser' {} a -> s {authenticationToken = a} :: CreateUser) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The email address of the user.
+createUser_emailAddress :: Lens.Lens' CreateUser (Prelude.Maybe Prelude.Text)
+createUser_emailAddress = Lens.lens (\CreateUser' {emailAddress} -> emailAddress) (\s@CreateUser' {} a -> s {emailAddress = a} :: CreateUser) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ID of the organization.
+createUser_organizationId :: Lens.Lens' CreateUser (Prelude.Maybe Prelude.Text)
+createUser_organizationId = Lens.lens (\CreateUser' {organizationId} -> organizationId) (\s@CreateUser' {} a -> s {organizationId = a} :: CreateUser)
+
+-- | The amount of storage for the user.
+createUser_storageRule :: Lens.Lens' CreateUser (Prelude.Maybe StorageRuleType)
+createUser_storageRule = Lens.lens (\CreateUser' {storageRule} -> storageRule) (\s@CreateUser' {} a -> s {storageRule = a} :: CreateUser)
+
+-- | The time zone ID of the user.
+createUser_timeZoneId :: Lens.Lens' CreateUser (Prelude.Maybe Prelude.Text)
+createUser_timeZoneId = Lens.lens (\CreateUser' {timeZoneId} -> timeZoneId) (\s@CreateUser' {} a -> s {timeZoneId = a} :: CreateUser)
+
+-- | The login name of the user.
+createUser_username :: Lens.Lens' CreateUser Prelude.Text
+createUser_username = Lens.lens (\CreateUser' {username} -> username) (\s@CreateUser' {} a -> s {username = a} :: CreateUser)
+
+-- | The given name of the user.
+createUser_givenName :: Lens.Lens' CreateUser Prelude.Text
+createUser_givenName = Lens.lens (\CreateUser' {givenName} -> givenName) (\s@CreateUser' {} a -> s {givenName = a} :: CreateUser)
+
+-- | The surname of the user.
+createUser_surname :: Lens.Lens' CreateUser Prelude.Text
+createUser_surname = Lens.lens (\CreateUser' {surname} -> surname) (\s@CreateUser' {} a -> s {surname = a} :: CreateUser)
+
+-- | The password of the user.
+createUser_password :: Lens.Lens' CreateUser Prelude.Text
+createUser_password = Lens.lens (\CreateUser' {password} -> password) (\s@CreateUser' {} a -> s {password = a} :: CreateUser) Prelude.. Data._Sensitive
+
+instance Core.AWSRequest CreateUser where
+  type AWSResponse CreateUser = CreateUserResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          CreateUserResponse'
+            Prelude.<$> (x Data..?> "User")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable CreateUser where
+  hashWithSalt _salt CreateUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` emailAddress
+      `Prelude.hashWithSalt` organizationId
+      `Prelude.hashWithSalt` storageRule
+      `Prelude.hashWithSalt` timeZoneId
+      `Prelude.hashWithSalt` username
+      `Prelude.hashWithSalt` givenName
+      `Prelude.hashWithSalt` surname
+      `Prelude.hashWithSalt` password
+
+instance Prelude.NFData CreateUser where
+  rnf CreateUser' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf emailAddress
+      `Prelude.seq` Prelude.rnf organizationId
+      `Prelude.seq` Prelude.rnf storageRule
+      `Prelude.seq` Prelude.rnf timeZoneId
+      `Prelude.seq` Prelude.rnf username
+      `Prelude.seq` Prelude.rnf givenName
+      `Prelude.seq` Prelude.rnf surname
+      `Prelude.seq` Prelude.rnf password
+
+instance Data.ToHeaders CreateUser where
+  toHeaders CreateUser' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToJSON CreateUser where
+  toJSON CreateUser' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("EmailAddress" Data..=) Prelude.<$> emailAddress,
+            ("OrganizationId" Data..=)
+              Prelude.<$> organizationId,
+            ("StorageRule" Data..=) Prelude.<$> storageRule,
+            ("TimeZoneId" Data..=) Prelude.<$> timeZoneId,
+            Prelude.Just ("Username" Data..= username),
+            Prelude.Just ("GivenName" Data..= givenName),
+            Prelude.Just ("Surname" Data..= surname),
+            Prelude.Just ("Password" Data..= password)
+          ]
+      )
+
+instance Data.ToPath CreateUser where
+  toPath = Prelude.const "/api/v1/users"
+
+instance Data.ToQuery CreateUser where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newCreateUserResponse' smart constructor.
+data CreateUserResponse = CreateUserResponse'
+  { -- | The user information.
+    user :: Prelude.Maybe User,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CreateUserResponse' 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:
+--
+-- 'user', 'createUserResponse_user' - The user information.
+--
+-- 'httpStatus', 'createUserResponse_httpStatus' - The response's http status code.
+newCreateUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  CreateUserResponse
+newCreateUserResponse pHttpStatus_ =
+  CreateUserResponse'
+    { user = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The user information.
+createUserResponse_user :: Lens.Lens' CreateUserResponse (Prelude.Maybe User)
+createUserResponse_user = Lens.lens (\CreateUserResponse' {user} -> user) (\s@CreateUserResponse' {} a -> s {user = a} :: CreateUserResponse)
+
+-- | The response's http status code.
+createUserResponse_httpStatus :: Lens.Lens' CreateUserResponse Prelude.Int
+createUserResponse_httpStatus = Lens.lens (\CreateUserResponse' {httpStatus} -> httpStatus) (\s@CreateUserResponse' {} a -> s {httpStatus = a} :: CreateUserResponse)
+
+instance Prelude.NFData CreateUserResponse where
+  rnf CreateUserResponse' {..} =
+    Prelude.rnf user
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/DeactivateUser.hs b/gen/Amazonka/WorkDocs/DeactivateUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/DeactivateUser.hs
@@ -0,0 +1,141 @@
+{-# 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.WorkDocs.DeactivateUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Deactivates the specified user, which revokes the user\'s access to
+-- Amazon WorkDocs.
+module Amazonka.WorkDocs.DeactivateUser
+  ( -- * Creating a Request
+    DeactivateUser (..),
+    newDeactivateUser,
+
+    -- * Request Lenses
+    deactivateUser_authenticationToken,
+    deactivateUser_userId,
+
+    -- * Destructuring the Response
+    DeactivateUserResponse (..),
+    newDeactivateUserResponse,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newDeactivateUser' smart constructor.
+data DeactivateUser = DeactivateUser'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ID of the user.
+    userId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeactivateUser' 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:
+--
+-- 'authenticationToken', 'deactivateUser_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'userId', 'deactivateUser_userId' - The ID of the user.
+newDeactivateUser ::
+  -- | 'userId'
+  Prelude.Text ->
+  DeactivateUser
+newDeactivateUser pUserId_ =
+  DeactivateUser'
+    { authenticationToken =
+        Prelude.Nothing,
+      userId = pUserId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+deactivateUser_authenticationToken :: Lens.Lens' DeactivateUser (Prelude.Maybe Prelude.Text)
+deactivateUser_authenticationToken = Lens.lens (\DeactivateUser' {authenticationToken} -> authenticationToken) (\s@DeactivateUser' {} a -> s {authenticationToken = a} :: DeactivateUser) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ID of the user.
+deactivateUser_userId :: Lens.Lens' DeactivateUser Prelude.Text
+deactivateUser_userId = Lens.lens (\DeactivateUser' {userId} -> userId) (\s@DeactivateUser' {} a -> s {userId = a} :: DeactivateUser)
+
+instance Core.AWSRequest DeactivateUser where
+  type
+    AWSResponse DeactivateUser =
+      DeactivateUserResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeactivateUserResponse'
+
+instance Prelude.Hashable DeactivateUser where
+  hashWithSalt _salt DeactivateUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` userId
+
+instance Prelude.NFData DeactivateUser where
+  rnf DeactivateUser' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf userId
+
+instance Data.ToHeaders DeactivateUser where
+  toHeaders DeactivateUser' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath DeactivateUser where
+  toPath DeactivateUser' {..} =
+    Prelude.mconcat
+      ["/api/v1/users/", Data.toBS userId, "/activation"]
+
+instance Data.ToQuery DeactivateUser where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeactivateUserResponse' smart constructor.
+data DeactivateUserResponse = DeactivateUserResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeactivateUserResponse' 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.
+newDeactivateUserResponse ::
+  DeactivateUserResponse
+newDeactivateUserResponse = DeactivateUserResponse'
+
+instance Prelude.NFData DeactivateUserResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/WorkDocs/DeleteComment.hs b/gen/Amazonka/WorkDocs/DeleteComment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/DeleteComment.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.WorkDocs.DeleteComment
+-- 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 specified comment from the document version.
+module Amazonka.WorkDocs.DeleteComment
+  ( -- * Creating a Request
+    DeleteComment (..),
+    newDeleteComment,
+
+    -- * Request Lenses
+    deleteComment_authenticationToken,
+    deleteComment_documentId,
+    deleteComment_versionId,
+    deleteComment_commentId,
+
+    -- * Destructuring the Response
+    DeleteCommentResponse (..),
+    newDeleteCommentResponse,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newDeleteComment' smart constructor.
+data DeleteComment = DeleteComment'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ID of the document.
+    documentId :: Prelude.Text,
+    -- | The ID of the document version.
+    versionId :: Prelude.Text,
+    -- | The ID of the comment.
+    commentId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteComment' 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:
+--
+-- 'authenticationToken', 'deleteComment_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'documentId', 'deleteComment_documentId' - The ID of the document.
+--
+-- 'versionId', 'deleteComment_versionId' - The ID of the document version.
+--
+-- 'commentId', 'deleteComment_commentId' - The ID of the comment.
+newDeleteComment ::
+  -- | 'documentId'
+  Prelude.Text ->
+  -- | 'versionId'
+  Prelude.Text ->
+  -- | 'commentId'
+  Prelude.Text ->
+  DeleteComment
+newDeleteComment pDocumentId_ pVersionId_ pCommentId_ =
+  DeleteComment'
+    { authenticationToken =
+        Prelude.Nothing,
+      documentId = pDocumentId_,
+      versionId = pVersionId_,
+      commentId = pCommentId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+deleteComment_authenticationToken :: Lens.Lens' DeleteComment (Prelude.Maybe Prelude.Text)
+deleteComment_authenticationToken = Lens.lens (\DeleteComment' {authenticationToken} -> authenticationToken) (\s@DeleteComment' {} a -> s {authenticationToken = a} :: DeleteComment) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ID of the document.
+deleteComment_documentId :: Lens.Lens' DeleteComment Prelude.Text
+deleteComment_documentId = Lens.lens (\DeleteComment' {documentId} -> documentId) (\s@DeleteComment' {} a -> s {documentId = a} :: DeleteComment)
+
+-- | The ID of the document version.
+deleteComment_versionId :: Lens.Lens' DeleteComment Prelude.Text
+deleteComment_versionId = Lens.lens (\DeleteComment' {versionId} -> versionId) (\s@DeleteComment' {} a -> s {versionId = a} :: DeleteComment)
+
+-- | The ID of the comment.
+deleteComment_commentId :: Lens.Lens' DeleteComment Prelude.Text
+deleteComment_commentId = Lens.lens (\DeleteComment' {commentId} -> commentId) (\s@DeleteComment' {} a -> s {commentId = a} :: DeleteComment)
+
+instance Core.AWSRequest DeleteComment where
+  type
+    AWSResponse DeleteComment =
+      DeleteCommentResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteCommentResponse'
+
+instance Prelude.Hashable DeleteComment where
+  hashWithSalt _salt DeleteComment' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` documentId
+      `Prelude.hashWithSalt` versionId
+      `Prelude.hashWithSalt` commentId
+
+instance Prelude.NFData DeleteComment where
+  rnf DeleteComment' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf documentId
+      `Prelude.seq` Prelude.rnf versionId
+      `Prelude.seq` Prelude.rnf commentId
+
+instance Data.ToHeaders DeleteComment where
+  toHeaders DeleteComment' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath DeleteComment where
+  toPath DeleteComment' {..} =
+    Prelude.mconcat
+      [ "/api/v1/documents/",
+        Data.toBS documentId,
+        "/versions/",
+        Data.toBS versionId,
+        "/comment/",
+        Data.toBS commentId
+      ]
+
+instance Data.ToQuery DeleteComment where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteCommentResponse' smart constructor.
+data DeleteCommentResponse = DeleteCommentResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteCommentResponse' 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.
+newDeleteCommentResponse ::
+  DeleteCommentResponse
+newDeleteCommentResponse = DeleteCommentResponse'
+
+instance Prelude.NFData DeleteCommentResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/WorkDocs/DeleteCustomMetadata.hs b/gen/Amazonka/WorkDocs/DeleteCustomMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/DeleteCustomMetadata.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.WorkDocs.DeleteCustomMetadata
+-- 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 custom metadata from the specified resource.
+module Amazonka.WorkDocs.DeleteCustomMetadata
+  ( -- * Creating a Request
+    DeleteCustomMetadata (..),
+    newDeleteCustomMetadata,
+
+    -- * Request Lenses
+    deleteCustomMetadata_authenticationToken,
+    deleteCustomMetadata_deleteAll,
+    deleteCustomMetadata_keys,
+    deleteCustomMetadata_versionId,
+    deleteCustomMetadata_resourceId,
+
+    -- * Destructuring the Response
+    DeleteCustomMetadataResponse (..),
+    newDeleteCustomMetadataResponse,
+
+    -- * Response Lenses
+    deleteCustomMetadataResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newDeleteCustomMetadata' smart constructor.
+data DeleteCustomMetadata = DeleteCustomMetadata'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Flag to indicate removal of all custom metadata properties from the
+    -- specified resource.
+    deleteAll :: Prelude.Maybe Prelude.Bool,
+    -- | List of properties to remove.
+    keys :: Prelude.Maybe [Prelude.Text],
+    -- | The ID of the version, if the custom metadata is being deleted from a
+    -- document version.
+    versionId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the resource, either a document or folder.
+    resourceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteCustomMetadata' 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:
+--
+-- 'authenticationToken', 'deleteCustomMetadata_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'deleteAll', 'deleteCustomMetadata_deleteAll' - Flag to indicate removal of all custom metadata properties from the
+-- specified resource.
+--
+-- 'keys', 'deleteCustomMetadata_keys' - List of properties to remove.
+--
+-- 'versionId', 'deleteCustomMetadata_versionId' - The ID of the version, if the custom metadata is being deleted from a
+-- document version.
+--
+-- 'resourceId', 'deleteCustomMetadata_resourceId' - The ID of the resource, either a document or folder.
+newDeleteCustomMetadata ::
+  -- | 'resourceId'
+  Prelude.Text ->
+  DeleteCustomMetadata
+newDeleteCustomMetadata pResourceId_ =
+  DeleteCustomMetadata'
+    { authenticationToken =
+        Prelude.Nothing,
+      deleteAll = Prelude.Nothing,
+      keys = Prelude.Nothing,
+      versionId = Prelude.Nothing,
+      resourceId = pResourceId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+deleteCustomMetadata_authenticationToken :: Lens.Lens' DeleteCustomMetadata (Prelude.Maybe Prelude.Text)
+deleteCustomMetadata_authenticationToken = Lens.lens (\DeleteCustomMetadata' {authenticationToken} -> authenticationToken) (\s@DeleteCustomMetadata' {} a -> s {authenticationToken = a} :: DeleteCustomMetadata) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Flag to indicate removal of all custom metadata properties from the
+-- specified resource.
+deleteCustomMetadata_deleteAll :: Lens.Lens' DeleteCustomMetadata (Prelude.Maybe Prelude.Bool)
+deleteCustomMetadata_deleteAll = Lens.lens (\DeleteCustomMetadata' {deleteAll} -> deleteAll) (\s@DeleteCustomMetadata' {} a -> s {deleteAll = a} :: DeleteCustomMetadata)
+
+-- | List of properties to remove.
+deleteCustomMetadata_keys :: Lens.Lens' DeleteCustomMetadata (Prelude.Maybe [Prelude.Text])
+deleteCustomMetadata_keys = Lens.lens (\DeleteCustomMetadata' {keys} -> keys) (\s@DeleteCustomMetadata' {} a -> s {keys = a} :: DeleteCustomMetadata) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the version, if the custom metadata is being deleted from a
+-- document version.
+deleteCustomMetadata_versionId :: Lens.Lens' DeleteCustomMetadata (Prelude.Maybe Prelude.Text)
+deleteCustomMetadata_versionId = Lens.lens (\DeleteCustomMetadata' {versionId} -> versionId) (\s@DeleteCustomMetadata' {} a -> s {versionId = a} :: DeleteCustomMetadata)
+
+-- | The ID of the resource, either a document or folder.
+deleteCustomMetadata_resourceId :: Lens.Lens' DeleteCustomMetadata Prelude.Text
+deleteCustomMetadata_resourceId = Lens.lens (\DeleteCustomMetadata' {resourceId} -> resourceId) (\s@DeleteCustomMetadata' {} a -> s {resourceId = a} :: DeleteCustomMetadata)
+
+instance Core.AWSRequest DeleteCustomMetadata where
+  type
+    AWSResponse DeleteCustomMetadata =
+      DeleteCustomMetadataResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteCustomMetadataResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteCustomMetadata where
+  hashWithSalt _salt DeleteCustomMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` deleteAll
+      `Prelude.hashWithSalt` keys
+      `Prelude.hashWithSalt` versionId
+      `Prelude.hashWithSalt` resourceId
+
+instance Prelude.NFData DeleteCustomMetadata where
+  rnf DeleteCustomMetadata' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf deleteAll
+      `Prelude.seq` Prelude.rnf keys
+      `Prelude.seq` Prelude.rnf versionId
+      `Prelude.seq` Prelude.rnf resourceId
+
+instance Data.ToHeaders DeleteCustomMetadata where
+  toHeaders DeleteCustomMetadata' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath DeleteCustomMetadata where
+  toPath DeleteCustomMetadata' {..} =
+    Prelude.mconcat
+      [ "/api/v1/resources/",
+        Data.toBS resourceId,
+        "/customMetadata"
+      ]
+
+instance Data.ToQuery DeleteCustomMetadata where
+  toQuery DeleteCustomMetadata' {..} =
+    Prelude.mconcat
+      [ "deleteAll" Data.=: deleteAll,
+        "keys"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> keys),
+        "versionId" Data.=: versionId
+      ]
+
+-- | /See:/ 'newDeleteCustomMetadataResponse' smart constructor.
+data DeleteCustomMetadataResponse = DeleteCustomMetadataResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteCustomMetadataResponse' 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', 'deleteCustomMetadataResponse_httpStatus' - The response's http status code.
+newDeleteCustomMetadataResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteCustomMetadataResponse
+newDeleteCustomMetadataResponse pHttpStatus_ =
+  DeleteCustomMetadataResponse'
+    { httpStatus =
+        pHttpStatus_
+    }
+
+-- | The response's http status code.
+deleteCustomMetadataResponse_httpStatus :: Lens.Lens' DeleteCustomMetadataResponse Prelude.Int
+deleteCustomMetadataResponse_httpStatus = Lens.lens (\DeleteCustomMetadataResponse' {httpStatus} -> httpStatus) (\s@DeleteCustomMetadataResponse' {} a -> s {httpStatus = a} :: DeleteCustomMetadataResponse)
+
+instance Prelude.NFData DeleteCustomMetadataResponse where
+  rnf DeleteCustomMetadataResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/DeleteDocument.hs b/gen/Amazonka/WorkDocs/DeleteDocument.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/DeleteDocument.hs
@@ -0,0 +1,140 @@
+{-# 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.WorkDocs.DeleteDocument
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Permanently deletes the specified document and its associated metadata.
+module Amazonka.WorkDocs.DeleteDocument
+  ( -- * Creating a Request
+    DeleteDocument (..),
+    newDeleteDocument,
+
+    -- * Request Lenses
+    deleteDocument_authenticationToken,
+    deleteDocument_documentId,
+
+    -- * Destructuring the Response
+    DeleteDocumentResponse (..),
+    newDeleteDocumentResponse,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newDeleteDocument' smart constructor.
+data DeleteDocument = DeleteDocument'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ID of the document.
+    documentId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDocument' 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:
+--
+-- 'authenticationToken', 'deleteDocument_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'documentId', 'deleteDocument_documentId' - The ID of the document.
+newDeleteDocument ::
+  -- | 'documentId'
+  Prelude.Text ->
+  DeleteDocument
+newDeleteDocument pDocumentId_ =
+  DeleteDocument'
+    { authenticationToken =
+        Prelude.Nothing,
+      documentId = pDocumentId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+deleteDocument_authenticationToken :: Lens.Lens' DeleteDocument (Prelude.Maybe Prelude.Text)
+deleteDocument_authenticationToken = Lens.lens (\DeleteDocument' {authenticationToken} -> authenticationToken) (\s@DeleteDocument' {} a -> s {authenticationToken = a} :: DeleteDocument) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ID of the document.
+deleteDocument_documentId :: Lens.Lens' DeleteDocument Prelude.Text
+deleteDocument_documentId = Lens.lens (\DeleteDocument' {documentId} -> documentId) (\s@DeleteDocument' {} a -> s {documentId = a} :: DeleteDocument)
+
+instance Core.AWSRequest DeleteDocument where
+  type
+    AWSResponse DeleteDocument =
+      DeleteDocumentResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteDocumentResponse'
+
+instance Prelude.Hashable DeleteDocument where
+  hashWithSalt _salt DeleteDocument' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` documentId
+
+instance Prelude.NFData DeleteDocument where
+  rnf DeleteDocument' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf documentId
+
+instance Data.ToHeaders DeleteDocument where
+  toHeaders DeleteDocument' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath DeleteDocument where
+  toPath DeleteDocument' {..} =
+    Prelude.mconcat
+      ["/api/v1/documents/", Data.toBS documentId]
+
+instance Data.ToQuery DeleteDocument where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteDocumentResponse' smart constructor.
+data DeleteDocumentResponse = DeleteDocumentResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDocumentResponse' 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.
+newDeleteDocumentResponse ::
+  DeleteDocumentResponse
+newDeleteDocumentResponse = DeleteDocumentResponse'
+
+instance Prelude.NFData DeleteDocumentResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/WorkDocs/DeleteDocumentVersion.hs b/gen/Amazonka/WorkDocs/DeleteDocumentVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/DeleteDocumentVersion.hs
@@ -0,0 +1,182 @@
+{-# 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.WorkDocs.DeleteDocumentVersion
+-- 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 a version of an Amazon WorkDocs document. Use the
+-- @DeletePriorVersions@ parameter to delete prior versions.
+module Amazonka.WorkDocs.DeleteDocumentVersion
+  ( -- * Creating a Request
+    DeleteDocumentVersion (..),
+    newDeleteDocumentVersion,
+
+    -- * Request Lenses
+    deleteDocumentVersion_authenticationToken,
+    deleteDocumentVersion_documentId,
+    deleteDocumentVersion_versionId,
+    deleteDocumentVersion_deletePriorVersions,
+
+    -- * Destructuring the Response
+    DeleteDocumentVersionResponse (..),
+    newDeleteDocumentVersionResponse,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newDeleteDocumentVersion' smart constructor.
+data DeleteDocumentVersion = DeleteDocumentVersion'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ID of a document.
+    documentId :: Prelude.Text,
+    -- | The version ID of a document.
+    versionId :: Prelude.Text,
+    -- | When set to @TRUE@, deletes the specified version and /all prior
+    -- versions/ of a document.
+    deletePriorVersions :: Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDocumentVersion' 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:
+--
+-- 'authenticationToken', 'deleteDocumentVersion_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'documentId', 'deleteDocumentVersion_documentId' - The ID of a document.
+--
+-- 'versionId', 'deleteDocumentVersion_versionId' - The version ID of a document.
+--
+-- 'deletePriorVersions', 'deleteDocumentVersion_deletePriorVersions' - When set to @TRUE@, deletes the specified version and /all prior
+-- versions/ of a document.
+newDeleteDocumentVersion ::
+  -- | 'documentId'
+  Prelude.Text ->
+  -- | 'versionId'
+  Prelude.Text ->
+  -- | 'deletePriorVersions'
+  Prelude.Bool ->
+  DeleteDocumentVersion
+newDeleteDocumentVersion
+  pDocumentId_
+  pVersionId_
+  pDeletePriorVersions_ =
+    DeleteDocumentVersion'
+      { authenticationToken =
+          Prelude.Nothing,
+        documentId = pDocumentId_,
+        versionId = pVersionId_,
+        deletePriorVersions = pDeletePriorVersions_
+      }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+deleteDocumentVersion_authenticationToken :: Lens.Lens' DeleteDocumentVersion (Prelude.Maybe Prelude.Text)
+deleteDocumentVersion_authenticationToken = Lens.lens (\DeleteDocumentVersion' {authenticationToken} -> authenticationToken) (\s@DeleteDocumentVersion' {} a -> s {authenticationToken = a} :: DeleteDocumentVersion) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ID of a document.
+deleteDocumentVersion_documentId :: Lens.Lens' DeleteDocumentVersion Prelude.Text
+deleteDocumentVersion_documentId = Lens.lens (\DeleteDocumentVersion' {documentId} -> documentId) (\s@DeleteDocumentVersion' {} a -> s {documentId = a} :: DeleteDocumentVersion)
+
+-- | The version ID of a document.
+deleteDocumentVersion_versionId :: Lens.Lens' DeleteDocumentVersion Prelude.Text
+deleteDocumentVersion_versionId = Lens.lens (\DeleteDocumentVersion' {versionId} -> versionId) (\s@DeleteDocumentVersion' {} a -> s {versionId = a} :: DeleteDocumentVersion)
+
+-- | When set to @TRUE@, deletes the specified version and /all prior
+-- versions/ of a document.
+deleteDocumentVersion_deletePriorVersions :: Lens.Lens' DeleteDocumentVersion Prelude.Bool
+deleteDocumentVersion_deletePriorVersions = Lens.lens (\DeleteDocumentVersion' {deletePriorVersions} -> deletePriorVersions) (\s@DeleteDocumentVersion' {} a -> s {deletePriorVersions = a} :: DeleteDocumentVersion)
+
+instance Core.AWSRequest DeleteDocumentVersion where
+  type
+    AWSResponse DeleteDocumentVersion =
+      DeleteDocumentVersionResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteDocumentVersionResponse'
+
+instance Prelude.Hashable DeleteDocumentVersion where
+  hashWithSalt _salt DeleteDocumentVersion' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` documentId
+      `Prelude.hashWithSalt` versionId
+      `Prelude.hashWithSalt` deletePriorVersions
+
+instance Prelude.NFData DeleteDocumentVersion where
+  rnf DeleteDocumentVersion' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf documentId
+      `Prelude.seq` Prelude.rnf versionId
+      `Prelude.seq` Prelude.rnf deletePriorVersions
+
+instance Data.ToHeaders DeleteDocumentVersion where
+  toHeaders DeleteDocumentVersion' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath DeleteDocumentVersion where
+  toPath DeleteDocumentVersion' {..} =
+    Prelude.mconcat
+      [ "/api/v1/documentVersions/",
+        Data.toBS documentId,
+        "/versions/",
+        Data.toBS versionId
+      ]
+
+instance Data.ToQuery DeleteDocumentVersion where
+  toQuery DeleteDocumentVersion' {..} =
+    Prelude.mconcat
+      ["deletePriorVersions" Data.=: deletePriorVersions]
+
+-- | /See:/ 'newDeleteDocumentVersionResponse' smart constructor.
+data DeleteDocumentVersionResponse = DeleteDocumentVersionResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteDocumentVersionResponse' 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.
+newDeleteDocumentVersionResponse ::
+  DeleteDocumentVersionResponse
+newDeleteDocumentVersionResponse =
+  DeleteDocumentVersionResponse'
+
+instance Prelude.NFData DeleteDocumentVersionResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/WorkDocs/DeleteFolder.hs b/gen/Amazonka/WorkDocs/DeleteFolder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/DeleteFolder.hs
@@ -0,0 +1,137 @@
+{-# 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.WorkDocs.DeleteFolder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Permanently deletes the specified folder and its contents.
+module Amazonka.WorkDocs.DeleteFolder
+  ( -- * Creating a Request
+    DeleteFolder (..),
+    newDeleteFolder,
+
+    -- * Request Lenses
+    deleteFolder_authenticationToken,
+    deleteFolder_folderId,
+
+    -- * Destructuring the Response
+    DeleteFolderResponse (..),
+    newDeleteFolderResponse,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newDeleteFolder' smart constructor.
+data DeleteFolder = DeleteFolder'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ID of the folder.
+    folderId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFolder' 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:
+--
+-- 'authenticationToken', 'deleteFolder_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'folderId', 'deleteFolder_folderId' - The ID of the folder.
+newDeleteFolder ::
+  -- | 'folderId'
+  Prelude.Text ->
+  DeleteFolder
+newDeleteFolder pFolderId_ =
+  DeleteFolder'
+    { authenticationToken =
+        Prelude.Nothing,
+      folderId = pFolderId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+deleteFolder_authenticationToken :: Lens.Lens' DeleteFolder (Prelude.Maybe Prelude.Text)
+deleteFolder_authenticationToken = Lens.lens (\DeleteFolder' {authenticationToken} -> authenticationToken) (\s@DeleteFolder' {} a -> s {authenticationToken = a} :: DeleteFolder) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ID of the folder.
+deleteFolder_folderId :: Lens.Lens' DeleteFolder Prelude.Text
+deleteFolder_folderId = Lens.lens (\DeleteFolder' {folderId} -> folderId) (\s@DeleteFolder' {} a -> s {folderId = a} :: DeleteFolder)
+
+instance Core.AWSRequest DeleteFolder where
+  type AWSResponse DeleteFolder = DeleteFolderResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response = Response.receiveNull DeleteFolderResponse'
+
+instance Prelude.Hashable DeleteFolder where
+  hashWithSalt _salt DeleteFolder' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` folderId
+
+instance Prelude.NFData DeleteFolder where
+  rnf DeleteFolder' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf folderId
+
+instance Data.ToHeaders DeleteFolder where
+  toHeaders DeleteFolder' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath DeleteFolder where
+  toPath DeleteFolder' {..} =
+    Prelude.mconcat
+      ["/api/v1/folders/", Data.toBS folderId]
+
+instance Data.ToQuery DeleteFolder where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteFolderResponse' smart constructor.
+data DeleteFolderResponse = DeleteFolderResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFolderResponse' 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.
+newDeleteFolderResponse ::
+  DeleteFolderResponse
+newDeleteFolderResponse = DeleteFolderResponse'
+
+instance Prelude.NFData DeleteFolderResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/WorkDocs/DeleteFolderContents.hs b/gen/Amazonka/WorkDocs/DeleteFolderContents.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/DeleteFolderContents.hs
@@ -0,0 +1,141 @@
+{-# 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.WorkDocs.DeleteFolderContents
+-- 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 contents of the specified folder.
+module Amazonka.WorkDocs.DeleteFolderContents
+  ( -- * Creating a Request
+    DeleteFolderContents (..),
+    newDeleteFolderContents,
+
+    -- * Request Lenses
+    deleteFolderContents_authenticationToken,
+    deleteFolderContents_folderId,
+
+    -- * Destructuring the Response
+    DeleteFolderContentsResponse (..),
+    newDeleteFolderContentsResponse,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newDeleteFolderContents' smart constructor.
+data DeleteFolderContents = DeleteFolderContents'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ID of the folder.
+    folderId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFolderContents' 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:
+--
+-- 'authenticationToken', 'deleteFolderContents_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'folderId', 'deleteFolderContents_folderId' - The ID of the folder.
+newDeleteFolderContents ::
+  -- | 'folderId'
+  Prelude.Text ->
+  DeleteFolderContents
+newDeleteFolderContents pFolderId_ =
+  DeleteFolderContents'
+    { authenticationToken =
+        Prelude.Nothing,
+      folderId = pFolderId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+deleteFolderContents_authenticationToken :: Lens.Lens' DeleteFolderContents (Prelude.Maybe Prelude.Text)
+deleteFolderContents_authenticationToken = Lens.lens (\DeleteFolderContents' {authenticationToken} -> authenticationToken) (\s@DeleteFolderContents' {} a -> s {authenticationToken = a} :: DeleteFolderContents) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ID of the folder.
+deleteFolderContents_folderId :: Lens.Lens' DeleteFolderContents Prelude.Text
+deleteFolderContents_folderId = Lens.lens (\DeleteFolderContents' {folderId} -> folderId) (\s@DeleteFolderContents' {} a -> s {folderId = a} :: DeleteFolderContents)
+
+instance Core.AWSRequest DeleteFolderContents where
+  type
+    AWSResponse DeleteFolderContents =
+      DeleteFolderContentsResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull DeleteFolderContentsResponse'
+
+instance Prelude.Hashable DeleteFolderContents where
+  hashWithSalt _salt DeleteFolderContents' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` folderId
+
+instance Prelude.NFData DeleteFolderContents where
+  rnf DeleteFolderContents' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf folderId
+
+instance Data.ToHeaders DeleteFolderContents where
+  toHeaders DeleteFolderContents' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath DeleteFolderContents where
+  toPath DeleteFolderContents' {..} =
+    Prelude.mconcat
+      ["/api/v1/folders/", Data.toBS folderId, "/contents"]
+
+instance Data.ToQuery DeleteFolderContents where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteFolderContentsResponse' smart constructor.
+data DeleteFolderContentsResponse = DeleteFolderContentsResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteFolderContentsResponse' 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.
+newDeleteFolderContentsResponse ::
+  DeleteFolderContentsResponse
+newDeleteFolderContentsResponse =
+  DeleteFolderContentsResponse'
+
+instance Prelude.NFData DeleteFolderContentsResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/WorkDocs/DeleteLabels.hs b/gen/Amazonka/WorkDocs/DeleteLabels.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/DeleteLabels.hs
@@ -0,0 +1,192 @@
+{-# 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.WorkDocs.DeleteLabels
+-- 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 specified list of labels from a resource.
+module Amazonka.WorkDocs.DeleteLabels
+  ( -- * Creating a Request
+    DeleteLabels (..),
+    newDeleteLabels,
+
+    -- * Request Lenses
+    deleteLabels_authenticationToken,
+    deleteLabels_deleteAll,
+    deleteLabels_labels,
+    deleteLabels_resourceId,
+
+    -- * Destructuring the Response
+    DeleteLabelsResponse (..),
+    newDeleteLabelsResponse,
+
+    -- * Response Lenses
+    deleteLabelsResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newDeleteLabels' smart constructor.
+data DeleteLabels = DeleteLabels'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Flag to request removal of all labels from the specified resource.
+    deleteAll :: Prelude.Maybe Prelude.Bool,
+    -- | List of labels to delete from the resource.
+    labels :: Prelude.Maybe [Prelude.Text],
+    -- | The ID of the resource.
+    resourceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteLabels' 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:
+--
+-- 'authenticationToken', 'deleteLabels_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'deleteAll', 'deleteLabels_deleteAll' - Flag to request removal of all labels from the specified resource.
+--
+-- 'labels', 'deleteLabels_labels' - List of labels to delete from the resource.
+--
+-- 'resourceId', 'deleteLabels_resourceId' - The ID of the resource.
+newDeleteLabels ::
+  -- | 'resourceId'
+  Prelude.Text ->
+  DeleteLabels
+newDeleteLabels pResourceId_ =
+  DeleteLabels'
+    { authenticationToken =
+        Prelude.Nothing,
+      deleteAll = Prelude.Nothing,
+      labels = Prelude.Nothing,
+      resourceId = pResourceId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+deleteLabels_authenticationToken :: Lens.Lens' DeleteLabels (Prelude.Maybe Prelude.Text)
+deleteLabels_authenticationToken = Lens.lens (\DeleteLabels' {authenticationToken} -> authenticationToken) (\s@DeleteLabels' {} a -> s {authenticationToken = a} :: DeleteLabels) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Flag to request removal of all labels from the specified resource.
+deleteLabels_deleteAll :: Lens.Lens' DeleteLabels (Prelude.Maybe Prelude.Bool)
+deleteLabels_deleteAll = Lens.lens (\DeleteLabels' {deleteAll} -> deleteAll) (\s@DeleteLabels' {} a -> s {deleteAll = a} :: DeleteLabels)
+
+-- | List of labels to delete from the resource.
+deleteLabels_labels :: Lens.Lens' DeleteLabels (Prelude.Maybe [Prelude.Text])
+deleteLabels_labels = Lens.lens (\DeleteLabels' {labels} -> labels) (\s@DeleteLabels' {} a -> s {labels = a} :: DeleteLabels) Prelude.. Lens.mapping Lens.coerced
+
+-- | The ID of the resource.
+deleteLabels_resourceId :: Lens.Lens' DeleteLabels Prelude.Text
+deleteLabels_resourceId = Lens.lens (\DeleteLabels' {resourceId} -> resourceId) (\s@DeleteLabels' {} a -> s {resourceId = a} :: DeleteLabels)
+
+instance Core.AWSRequest DeleteLabels where
+  type AWSResponse DeleteLabels = DeleteLabelsResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveEmpty
+      ( \s h x ->
+          DeleteLabelsResponse'
+            Prelude.<$> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DeleteLabels where
+  hashWithSalt _salt DeleteLabels' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` deleteAll
+      `Prelude.hashWithSalt` labels
+      `Prelude.hashWithSalt` resourceId
+
+instance Prelude.NFData DeleteLabels where
+  rnf DeleteLabels' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf deleteAll
+      `Prelude.seq` Prelude.rnf labels
+      `Prelude.seq` Prelude.rnf resourceId
+
+instance Data.ToHeaders DeleteLabels where
+  toHeaders DeleteLabels' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath DeleteLabels where
+  toPath DeleteLabels' {..} =
+    Prelude.mconcat
+      [ "/api/v1/resources/",
+        Data.toBS resourceId,
+        "/labels"
+      ]
+
+instance Data.ToQuery DeleteLabels where
+  toQuery DeleteLabels' {..} =
+    Prelude.mconcat
+      [ "deleteAll" Data.=: deleteAll,
+        "labels"
+          Data.=: Data.toQuery
+            (Data.toQueryList "member" Prelude.<$> labels)
+      ]
+
+-- | /See:/ 'newDeleteLabelsResponse' smart constructor.
+data DeleteLabelsResponse = DeleteLabelsResponse'
+  { -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteLabelsResponse' 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', 'deleteLabelsResponse_httpStatus' - The response's http status code.
+newDeleteLabelsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DeleteLabelsResponse
+newDeleteLabelsResponse pHttpStatus_ =
+  DeleteLabelsResponse' {httpStatus = pHttpStatus_}
+
+-- | The response's http status code.
+deleteLabelsResponse_httpStatus :: Lens.Lens' DeleteLabelsResponse Prelude.Int
+deleteLabelsResponse_httpStatus = Lens.lens (\DeleteLabelsResponse' {httpStatus} -> httpStatus) (\s@DeleteLabelsResponse' {} a -> s {httpStatus = a} :: DeleteLabelsResponse)
+
+instance Prelude.NFData DeleteLabelsResponse where
+  rnf DeleteLabelsResponse' {..} =
+    Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/DeleteNotificationSubscription.hs b/gen/Amazonka/WorkDocs/DeleteNotificationSubscription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/DeleteNotificationSubscription.hs
@@ -0,0 +1,167 @@
+{-# 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.WorkDocs.DeleteNotificationSubscription
+-- 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 specified subscription from the specified organization.
+module Amazonka.WorkDocs.DeleteNotificationSubscription
+  ( -- * Creating a Request
+    DeleteNotificationSubscription (..),
+    newDeleteNotificationSubscription,
+
+    -- * Request Lenses
+    deleteNotificationSubscription_subscriptionId,
+    deleteNotificationSubscription_organizationId,
+
+    -- * Destructuring the Response
+    DeleteNotificationSubscriptionResponse (..),
+    newDeleteNotificationSubscriptionResponse,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newDeleteNotificationSubscription' smart constructor.
+data DeleteNotificationSubscription = DeleteNotificationSubscription'
+  { -- | The ID of the subscription.
+    subscriptionId :: Prelude.Text,
+    -- | The ID of the organization.
+    organizationId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteNotificationSubscription' 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:
+--
+-- 'subscriptionId', 'deleteNotificationSubscription_subscriptionId' - The ID of the subscription.
+--
+-- 'organizationId', 'deleteNotificationSubscription_organizationId' - The ID of the organization.
+newDeleteNotificationSubscription ::
+  -- | 'subscriptionId'
+  Prelude.Text ->
+  -- | 'organizationId'
+  Prelude.Text ->
+  DeleteNotificationSubscription
+newDeleteNotificationSubscription
+  pSubscriptionId_
+  pOrganizationId_ =
+    DeleteNotificationSubscription'
+      { subscriptionId =
+          pSubscriptionId_,
+        organizationId = pOrganizationId_
+      }
+
+-- | The ID of the subscription.
+deleteNotificationSubscription_subscriptionId :: Lens.Lens' DeleteNotificationSubscription Prelude.Text
+deleteNotificationSubscription_subscriptionId = Lens.lens (\DeleteNotificationSubscription' {subscriptionId} -> subscriptionId) (\s@DeleteNotificationSubscription' {} a -> s {subscriptionId = a} :: DeleteNotificationSubscription)
+
+-- | The ID of the organization.
+deleteNotificationSubscription_organizationId :: Lens.Lens' DeleteNotificationSubscription Prelude.Text
+deleteNotificationSubscription_organizationId = Lens.lens (\DeleteNotificationSubscription' {organizationId} -> organizationId) (\s@DeleteNotificationSubscription' {} a -> s {organizationId = a} :: DeleteNotificationSubscription)
+
+instance
+  Core.AWSRequest
+    DeleteNotificationSubscription
+  where
+  type
+    AWSResponse DeleteNotificationSubscription =
+      DeleteNotificationSubscriptionResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull
+      DeleteNotificationSubscriptionResponse'
+
+instance
+  Prelude.Hashable
+    DeleteNotificationSubscription
+  where
+  hashWithSalt
+    _salt
+    DeleteNotificationSubscription' {..} =
+      _salt
+        `Prelude.hashWithSalt` subscriptionId
+        `Prelude.hashWithSalt` organizationId
+
+instance
+  Prelude.NFData
+    DeleteNotificationSubscription
+  where
+  rnf DeleteNotificationSubscription' {..} =
+    Prelude.rnf subscriptionId
+      `Prelude.seq` Prelude.rnf organizationId
+
+instance
+  Data.ToHeaders
+    DeleteNotificationSubscription
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance Data.ToPath DeleteNotificationSubscription where
+  toPath DeleteNotificationSubscription' {..} =
+    Prelude.mconcat
+      [ "/api/v1/organizations/",
+        Data.toBS organizationId,
+        "/subscriptions/",
+        Data.toBS subscriptionId
+      ]
+
+instance Data.ToQuery DeleteNotificationSubscription where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteNotificationSubscriptionResponse' smart constructor.
+data DeleteNotificationSubscriptionResponse = DeleteNotificationSubscriptionResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteNotificationSubscriptionResponse' 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.
+newDeleteNotificationSubscriptionResponse ::
+  DeleteNotificationSubscriptionResponse
+newDeleteNotificationSubscriptionResponse =
+  DeleteNotificationSubscriptionResponse'
+
+instance
+  Prelude.NFData
+    DeleteNotificationSubscriptionResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/WorkDocs/DeleteUser.hs b/gen/Amazonka/WorkDocs/DeleteUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/DeleteUser.hs
@@ -0,0 +1,139 @@
+{-# 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.WorkDocs.DeleteUser
+-- 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 specified user from a Simple AD or Microsoft AD directory.
+module Amazonka.WorkDocs.DeleteUser
+  ( -- * Creating a Request
+    DeleteUser (..),
+    newDeleteUser,
+
+    -- * Request Lenses
+    deleteUser_authenticationToken,
+    deleteUser_userId,
+
+    -- * Destructuring the Response
+    DeleteUserResponse (..),
+    newDeleteUserResponse,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newDeleteUser' smart constructor.
+data DeleteUser = DeleteUser'
+  { -- | Amazon WorkDocs authentication token. Do not set this field when using
+    -- administrative API actions, as in accessing the API using AWS
+    -- credentials.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ID of the user.
+    userId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteUser' 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:
+--
+-- 'authenticationToken', 'deleteUser_authenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using
+-- administrative API actions, as in accessing the API using AWS
+-- credentials.
+--
+-- 'userId', 'deleteUser_userId' - The ID of the user.
+newDeleteUser ::
+  -- | 'userId'
+  Prelude.Text ->
+  DeleteUser
+newDeleteUser pUserId_ =
+  DeleteUser'
+    { authenticationToken = Prelude.Nothing,
+      userId = pUserId_
+    }
+
+-- | Amazon WorkDocs authentication token. Do not set this field when using
+-- administrative API actions, as in accessing the API using AWS
+-- credentials.
+deleteUser_authenticationToken :: Lens.Lens' DeleteUser (Prelude.Maybe Prelude.Text)
+deleteUser_authenticationToken = Lens.lens (\DeleteUser' {authenticationToken} -> authenticationToken) (\s@DeleteUser' {} a -> s {authenticationToken = a} :: DeleteUser) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ID of the user.
+deleteUser_userId :: Lens.Lens' DeleteUser Prelude.Text
+deleteUser_userId = Lens.lens (\DeleteUser' {userId} -> userId) (\s@DeleteUser' {} a -> s {userId = a} :: DeleteUser)
+
+instance Core.AWSRequest DeleteUser where
+  type AWSResponse DeleteUser = DeleteUserResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response = Response.receiveNull DeleteUserResponse'
+
+instance Prelude.Hashable DeleteUser where
+  hashWithSalt _salt DeleteUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` userId
+
+instance Prelude.NFData DeleteUser where
+  rnf DeleteUser' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf userId
+
+instance Data.ToHeaders DeleteUser where
+  toHeaders DeleteUser' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath DeleteUser where
+  toPath DeleteUser' {..} =
+    Prelude.mconcat
+      ["/api/v1/users/", Data.toBS userId]
+
+instance Data.ToQuery DeleteUser where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newDeleteUserResponse' smart constructor.
+data DeleteUserResponse = DeleteUserResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DeleteUserResponse' 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.
+newDeleteUserResponse ::
+  DeleteUserResponse
+newDeleteUserResponse = DeleteUserResponse'
+
+instance Prelude.NFData DeleteUserResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/WorkDocs/DescribeActivities.hs b/gen/Amazonka/WorkDocs/DescribeActivities.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/DescribeActivities.hs
@@ -0,0 +1,349 @@
+{-# 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.WorkDocs.DescribeActivities
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the user activities in a specified time period.
+--
+-- This operation returns paginated results.
+module Amazonka.WorkDocs.DescribeActivities
+  ( -- * Creating a Request
+    DescribeActivities (..),
+    newDescribeActivities,
+
+    -- * Request Lenses
+    describeActivities_activityTypes,
+    describeActivities_authenticationToken,
+    describeActivities_endTime,
+    describeActivities_includeIndirectActivities,
+    describeActivities_limit,
+    describeActivities_marker,
+    describeActivities_organizationId,
+    describeActivities_resourceId,
+    describeActivities_startTime,
+    describeActivities_userId,
+
+    -- * Destructuring the Response
+    DescribeActivitiesResponse (..),
+    newDescribeActivitiesResponse,
+
+    -- * Response Lenses
+    describeActivitiesResponse_marker,
+    describeActivitiesResponse_userActivities,
+    describeActivitiesResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newDescribeActivities' smart constructor.
+data DescribeActivities = DescribeActivities'
+  { -- | Specifies which activity types to include in the response. If this field
+    -- is left empty, all activity types are returned.
+    activityTypes :: Prelude.Maybe Prelude.Text,
+    -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The timestamp that determines the end time of the activities. The
+    -- response includes the activities performed before the specified
+    -- timestamp.
+    endTime :: Prelude.Maybe Data.POSIX,
+    -- | Includes indirect activities. An indirect activity results from a direct
+    -- activity performed on a parent resource. For example, sharing a parent
+    -- folder (the direct activity) shares all of the subfolders and documents
+    -- within the parent folder (the indirect activity).
+    includeIndirectActivities :: Prelude.Maybe Prelude.Bool,
+    -- | The maximum number of items to return.
+    limit :: Prelude.Maybe Prelude.Natural,
+    -- | The marker for the next set of results.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the organization. This is a mandatory parameter when using
+    -- administrative API (SigV4) requests.
+    organizationId :: Prelude.Maybe Prelude.Text,
+    -- | The document or folder ID for which to describe activity types.
+    resourceId :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp that determines the starting time of the activities. The
+    -- response includes the activities performed after the specified
+    -- timestamp.
+    startTime :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the user who performed the action. The response includes
+    -- activities pertaining to this user. This is an optional parameter and is
+    -- only applicable for administrative API (SigV4) requests.
+    userId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeActivities' 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:
+--
+-- 'activityTypes', 'describeActivities_activityTypes' - Specifies which activity types to include in the response. If this field
+-- is left empty, all activity types are returned.
+--
+-- 'authenticationToken', 'describeActivities_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'endTime', 'describeActivities_endTime' - The timestamp that determines the end time of the activities. The
+-- response includes the activities performed before the specified
+-- timestamp.
+--
+-- 'includeIndirectActivities', 'describeActivities_includeIndirectActivities' - Includes indirect activities. An indirect activity results from a direct
+-- activity performed on a parent resource. For example, sharing a parent
+-- folder (the direct activity) shares all of the subfolders and documents
+-- within the parent folder (the indirect activity).
+--
+-- 'limit', 'describeActivities_limit' - The maximum number of items to return.
+--
+-- 'marker', 'describeActivities_marker' - The marker for the next set of results.
+--
+-- 'organizationId', 'describeActivities_organizationId' - The ID of the organization. This is a mandatory parameter when using
+-- administrative API (SigV4) requests.
+--
+-- 'resourceId', 'describeActivities_resourceId' - The document or folder ID for which to describe activity types.
+--
+-- 'startTime', 'describeActivities_startTime' - The timestamp that determines the starting time of the activities. The
+-- response includes the activities performed after the specified
+-- timestamp.
+--
+-- 'userId', 'describeActivities_userId' - The ID of the user who performed the action. The response includes
+-- activities pertaining to this user. This is an optional parameter and is
+-- only applicable for administrative API (SigV4) requests.
+newDescribeActivities ::
+  DescribeActivities
+newDescribeActivities =
+  DescribeActivities'
+    { activityTypes =
+        Prelude.Nothing,
+      authenticationToken = Prelude.Nothing,
+      endTime = Prelude.Nothing,
+      includeIndirectActivities = Prelude.Nothing,
+      limit = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      organizationId = Prelude.Nothing,
+      resourceId = Prelude.Nothing,
+      startTime = Prelude.Nothing,
+      userId = Prelude.Nothing
+    }
+
+-- | Specifies which activity types to include in the response. If this field
+-- is left empty, all activity types are returned.
+describeActivities_activityTypes :: Lens.Lens' DescribeActivities (Prelude.Maybe Prelude.Text)
+describeActivities_activityTypes = Lens.lens (\DescribeActivities' {activityTypes} -> activityTypes) (\s@DescribeActivities' {} a -> s {activityTypes = a} :: DescribeActivities)
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+describeActivities_authenticationToken :: Lens.Lens' DescribeActivities (Prelude.Maybe Prelude.Text)
+describeActivities_authenticationToken = Lens.lens (\DescribeActivities' {authenticationToken} -> authenticationToken) (\s@DescribeActivities' {} a -> s {authenticationToken = a} :: DescribeActivities) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The timestamp that determines the end time of the activities. The
+-- response includes the activities performed before the specified
+-- timestamp.
+describeActivities_endTime :: Lens.Lens' DescribeActivities (Prelude.Maybe Prelude.UTCTime)
+describeActivities_endTime = Lens.lens (\DescribeActivities' {endTime} -> endTime) (\s@DescribeActivities' {} a -> s {endTime = a} :: DescribeActivities) Prelude.. Lens.mapping Data._Time
+
+-- | Includes indirect activities. An indirect activity results from a direct
+-- activity performed on a parent resource. For example, sharing a parent
+-- folder (the direct activity) shares all of the subfolders and documents
+-- within the parent folder (the indirect activity).
+describeActivities_includeIndirectActivities :: Lens.Lens' DescribeActivities (Prelude.Maybe Prelude.Bool)
+describeActivities_includeIndirectActivities = Lens.lens (\DescribeActivities' {includeIndirectActivities} -> includeIndirectActivities) (\s@DescribeActivities' {} a -> s {includeIndirectActivities = a} :: DescribeActivities)
+
+-- | The maximum number of items to return.
+describeActivities_limit :: Lens.Lens' DescribeActivities (Prelude.Maybe Prelude.Natural)
+describeActivities_limit = Lens.lens (\DescribeActivities' {limit} -> limit) (\s@DescribeActivities' {} a -> s {limit = a} :: DescribeActivities)
+
+-- | The marker for the next set of results.
+describeActivities_marker :: Lens.Lens' DescribeActivities (Prelude.Maybe Prelude.Text)
+describeActivities_marker = Lens.lens (\DescribeActivities' {marker} -> marker) (\s@DescribeActivities' {} a -> s {marker = a} :: DescribeActivities)
+
+-- | The ID of the organization. This is a mandatory parameter when using
+-- administrative API (SigV4) requests.
+describeActivities_organizationId :: Lens.Lens' DescribeActivities (Prelude.Maybe Prelude.Text)
+describeActivities_organizationId = Lens.lens (\DescribeActivities' {organizationId} -> organizationId) (\s@DescribeActivities' {} a -> s {organizationId = a} :: DescribeActivities)
+
+-- | The document or folder ID for which to describe activity types.
+describeActivities_resourceId :: Lens.Lens' DescribeActivities (Prelude.Maybe Prelude.Text)
+describeActivities_resourceId = Lens.lens (\DescribeActivities' {resourceId} -> resourceId) (\s@DescribeActivities' {} a -> s {resourceId = a} :: DescribeActivities)
+
+-- | The timestamp that determines the starting time of the activities. The
+-- response includes the activities performed after the specified
+-- timestamp.
+describeActivities_startTime :: Lens.Lens' DescribeActivities (Prelude.Maybe Prelude.UTCTime)
+describeActivities_startTime = Lens.lens (\DescribeActivities' {startTime} -> startTime) (\s@DescribeActivities' {} a -> s {startTime = a} :: DescribeActivities) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the user who performed the action. The response includes
+-- activities pertaining to this user. This is an optional parameter and is
+-- only applicable for administrative API (SigV4) requests.
+describeActivities_userId :: Lens.Lens' DescribeActivities (Prelude.Maybe Prelude.Text)
+describeActivities_userId = Lens.lens (\DescribeActivities' {userId} -> userId) (\s@DescribeActivities' {} a -> s {userId = a} :: DescribeActivities)
+
+instance Core.AWSPager DescribeActivities where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeActivitiesResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeActivitiesResponse_userActivities
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeActivities_marker
+          Lens..~ rs
+          Lens.^? describeActivitiesResponse_marker
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeActivities where
+  type
+    AWSResponse DescribeActivities =
+      DescribeActivitiesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeActivitiesResponse'
+            Prelude.<$> (x Data..?> "Marker")
+            Prelude.<*> (x Data..?> "UserActivities" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeActivities where
+  hashWithSalt _salt DescribeActivities' {..} =
+    _salt
+      `Prelude.hashWithSalt` activityTypes
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` endTime
+      `Prelude.hashWithSalt` includeIndirectActivities
+      `Prelude.hashWithSalt` limit
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` organizationId
+      `Prelude.hashWithSalt` resourceId
+      `Prelude.hashWithSalt` startTime
+      `Prelude.hashWithSalt` userId
+
+instance Prelude.NFData DescribeActivities where
+  rnf DescribeActivities' {..} =
+    Prelude.rnf activityTypes
+      `Prelude.seq` Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf endTime
+      `Prelude.seq` Prelude.rnf includeIndirectActivities
+      `Prelude.seq` Prelude.rnf limit
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf organizationId
+      `Prelude.seq` Prelude.rnf resourceId
+      `Prelude.seq` Prelude.rnf startTime
+      `Prelude.seq` Prelude.rnf userId
+
+instance Data.ToHeaders DescribeActivities where
+  toHeaders DescribeActivities' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath DescribeActivities where
+  toPath = Prelude.const "/api/v1/activities"
+
+instance Data.ToQuery DescribeActivities where
+  toQuery DescribeActivities' {..} =
+    Prelude.mconcat
+      [ "activityTypes" Data.=: activityTypes,
+        "endTime" Data.=: endTime,
+        "includeIndirectActivities"
+          Data.=: includeIndirectActivities,
+        "limit" Data.=: limit,
+        "marker" Data.=: marker,
+        "organizationId" Data.=: organizationId,
+        "resourceId" Data.=: resourceId,
+        "startTime" Data.=: startTime,
+        "userId" Data.=: userId
+      ]
+
+-- | /See:/ 'newDescribeActivitiesResponse' smart constructor.
+data DescribeActivitiesResponse = DescribeActivitiesResponse'
+  { -- | The marker for the next set of results.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The list of activities for the specified user and time period.
+    userActivities :: Prelude.Maybe [Activity],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeActivitiesResponse' 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:
+--
+-- 'marker', 'describeActivitiesResponse_marker' - The marker for the next set of results.
+--
+-- 'userActivities', 'describeActivitiesResponse_userActivities' - The list of activities for the specified user and time period.
+--
+-- 'httpStatus', 'describeActivitiesResponse_httpStatus' - The response's http status code.
+newDescribeActivitiesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeActivitiesResponse
+newDescribeActivitiesResponse pHttpStatus_ =
+  DescribeActivitiesResponse'
+    { marker =
+        Prelude.Nothing,
+      userActivities = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The marker for the next set of results.
+describeActivitiesResponse_marker :: Lens.Lens' DescribeActivitiesResponse (Prelude.Maybe Prelude.Text)
+describeActivitiesResponse_marker = Lens.lens (\DescribeActivitiesResponse' {marker} -> marker) (\s@DescribeActivitiesResponse' {} a -> s {marker = a} :: DescribeActivitiesResponse)
+
+-- | The list of activities for the specified user and time period.
+describeActivitiesResponse_userActivities :: Lens.Lens' DescribeActivitiesResponse (Prelude.Maybe [Activity])
+describeActivitiesResponse_userActivities = Lens.lens (\DescribeActivitiesResponse' {userActivities} -> userActivities) (\s@DescribeActivitiesResponse' {} a -> s {userActivities = a} :: DescribeActivitiesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeActivitiesResponse_httpStatus :: Lens.Lens' DescribeActivitiesResponse Prelude.Int
+describeActivitiesResponse_httpStatus = Lens.lens (\DescribeActivitiesResponse' {httpStatus} -> httpStatus) (\s@DescribeActivitiesResponse' {} a -> s {httpStatus = a} :: DescribeActivitiesResponse)
+
+instance Prelude.NFData DescribeActivitiesResponse where
+  rnf DescribeActivitiesResponse' {..} =
+    Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf userActivities
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/DescribeComments.hs b/gen/Amazonka/WorkDocs/DescribeComments.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/DescribeComments.hs
@@ -0,0 +1,263 @@
+{-# 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.WorkDocs.DescribeComments
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- List all the comments for the specified document version.
+--
+-- This operation returns paginated results.
+module Amazonka.WorkDocs.DescribeComments
+  ( -- * Creating a Request
+    DescribeComments (..),
+    newDescribeComments,
+
+    -- * Request Lenses
+    describeComments_authenticationToken,
+    describeComments_limit,
+    describeComments_marker,
+    describeComments_documentId,
+    describeComments_versionId,
+
+    -- * Destructuring the Response
+    DescribeCommentsResponse (..),
+    newDescribeCommentsResponse,
+
+    -- * Response Lenses
+    describeCommentsResponse_comments,
+    describeCommentsResponse_marker,
+    describeCommentsResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newDescribeComments' smart constructor.
+data DescribeComments = DescribeComments'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The maximum number of items to return.
+    limit :: Prelude.Maybe Prelude.Natural,
+    -- | The marker for the next set of results. This marker was received from a
+    -- previous call.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the document.
+    documentId :: Prelude.Text,
+    -- | The ID of the document version.
+    versionId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeComments' 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:
+--
+-- 'authenticationToken', 'describeComments_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'limit', 'describeComments_limit' - The maximum number of items to return.
+--
+-- 'marker', 'describeComments_marker' - The marker for the next set of results. This marker was received from a
+-- previous call.
+--
+-- 'documentId', 'describeComments_documentId' - The ID of the document.
+--
+-- 'versionId', 'describeComments_versionId' - The ID of the document version.
+newDescribeComments ::
+  -- | 'documentId'
+  Prelude.Text ->
+  -- | 'versionId'
+  Prelude.Text ->
+  DescribeComments
+newDescribeComments pDocumentId_ pVersionId_ =
+  DescribeComments'
+    { authenticationToken =
+        Prelude.Nothing,
+      limit = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      documentId = pDocumentId_,
+      versionId = pVersionId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+describeComments_authenticationToken :: Lens.Lens' DescribeComments (Prelude.Maybe Prelude.Text)
+describeComments_authenticationToken = Lens.lens (\DescribeComments' {authenticationToken} -> authenticationToken) (\s@DescribeComments' {} a -> s {authenticationToken = a} :: DescribeComments) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The maximum number of items to return.
+describeComments_limit :: Lens.Lens' DescribeComments (Prelude.Maybe Prelude.Natural)
+describeComments_limit = Lens.lens (\DescribeComments' {limit} -> limit) (\s@DescribeComments' {} a -> s {limit = a} :: DescribeComments)
+
+-- | The marker for the next set of results. This marker was received from a
+-- previous call.
+describeComments_marker :: Lens.Lens' DescribeComments (Prelude.Maybe Prelude.Text)
+describeComments_marker = Lens.lens (\DescribeComments' {marker} -> marker) (\s@DescribeComments' {} a -> s {marker = a} :: DescribeComments)
+
+-- | The ID of the document.
+describeComments_documentId :: Lens.Lens' DescribeComments Prelude.Text
+describeComments_documentId = Lens.lens (\DescribeComments' {documentId} -> documentId) (\s@DescribeComments' {} a -> s {documentId = a} :: DescribeComments)
+
+-- | The ID of the document version.
+describeComments_versionId :: Lens.Lens' DescribeComments Prelude.Text
+describeComments_versionId = Lens.lens (\DescribeComments' {versionId} -> versionId) (\s@DescribeComments' {} a -> s {versionId = a} :: DescribeComments)
+
+instance Core.AWSPager DescribeComments where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeCommentsResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeCommentsResponse_comments
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeComments_marker
+          Lens..~ rs
+          Lens.^? describeCommentsResponse_marker
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeComments where
+  type
+    AWSResponse DescribeComments =
+      DescribeCommentsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeCommentsResponse'
+            Prelude.<$> (x Data..?> "Comments" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Marker")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeComments where
+  hashWithSalt _salt DescribeComments' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` limit
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` documentId
+      `Prelude.hashWithSalt` versionId
+
+instance Prelude.NFData DescribeComments where
+  rnf DescribeComments' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf limit
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf documentId
+      `Prelude.seq` Prelude.rnf versionId
+
+instance Data.ToHeaders DescribeComments where
+  toHeaders DescribeComments' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath DescribeComments where
+  toPath DescribeComments' {..} =
+    Prelude.mconcat
+      [ "/api/v1/documents/",
+        Data.toBS documentId,
+        "/versions/",
+        Data.toBS versionId,
+        "/comments"
+      ]
+
+instance Data.ToQuery DescribeComments where
+  toQuery DescribeComments' {..} =
+    Prelude.mconcat
+      ["limit" Data.=: limit, "marker" Data.=: marker]
+
+-- | /See:/ 'newDescribeCommentsResponse' smart constructor.
+data DescribeCommentsResponse = DescribeCommentsResponse'
+  { -- | The list of comments for the specified document version.
+    comments :: Prelude.Maybe [Comment],
+    -- | The marker for the next set of results. This marker was received from a
+    -- previous call.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeCommentsResponse' 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:
+--
+-- 'comments', 'describeCommentsResponse_comments' - The list of comments for the specified document version.
+--
+-- 'marker', 'describeCommentsResponse_marker' - The marker for the next set of results. This marker was received from a
+-- previous call.
+--
+-- 'httpStatus', 'describeCommentsResponse_httpStatus' - The response's http status code.
+newDescribeCommentsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeCommentsResponse
+newDescribeCommentsResponse pHttpStatus_ =
+  DescribeCommentsResponse'
+    { comments =
+        Prelude.Nothing,
+      marker = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The list of comments for the specified document version.
+describeCommentsResponse_comments :: Lens.Lens' DescribeCommentsResponse (Prelude.Maybe [Comment])
+describeCommentsResponse_comments = Lens.lens (\DescribeCommentsResponse' {comments} -> comments) (\s@DescribeCommentsResponse' {} a -> s {comments = a} :: DescribeCommentsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The marker for the next set of results. This marker was received from a
+-- previous call.
+describeCommentsResponse_marker :: Lens.Lens' DescribeCommentsResponse (Prelude.Maybe Prelude.Text)
+describeCommentsResponse_marker = Lens.lens (\DescribeCommentsResponse' {marker} -> marker) (\s@DescribeCommentsResponse' {} a -> s {marker = a} :: DescribeCommentsResponse)
+
+-- | The response's http status code.
+describeCommentsResponse_httpStatus :: Lens.Lens' DescribeCommentsResponse Prelude.Int
+describeCommentsResponse_httpStatus = Lens.lens (\DescribeCommentsResponse' {httpStatus} -> httpStatus) (\s@DescribeCommentsResponse' {} a -> s {httpStatus = a} :: DescribeCommentsResponse)
+
+instance Prelude.NFData DescribeCommentsResponse where
+  rnf DescribeCommentsResponse' {..} =
+    Prelude.rnf comments
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/DescribeDocumentVersions.hs b/gen/Amazonka/WorkDocs/DescribeDocumentVersions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/DescribeDocumentVersions.hs
@@ -0,0 +1,289 @@
+{-# 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.WorkDocs.DescribeDocumentVersions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the document versions for the specified document.
+--
+-- By default, only active versions are returned.
+--
+-- This operation returns paginated results.
+module Amazonka.WorkDocs.DescribeDocumentVersions
+  ( -- * Creating a Request
+    DescribeDocumentVersions (..),
+    newDescribeDocumentVersions,
+
+    -- * Request Lenses
+    describeDocumentVersions_authenticationToken,
+    describeDocumentVersions_fields,
+    describeDocumentVersions_include,
+    describeDocumentVersions_limit,
+    describeDocumentVersions_marker,
+    describeDocumentVersions_documentId,
+
+    -- * Destructuring the Response
+    DescribeDocumentVersionsResponse (..),
+    newDescribeDocumentVersionsResponse,
+
+    -- * Response Lenses
+    describeDocumentVersionsResponse_documentVersions,
+    describeDocumentVersionsResponse_marker,
+    describeDocumentVersionsResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newDescribeDocumentVersions' smart constructor.
+data DescribeDocumentVersions = DescribeDocumentVersions'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Specify \"SOURCE\" to include initialized versions and a URL for the
+    -- source document.
+    fields :: Prelude.Maybe Prelude.Text,
+    -- | A comma-separated list of values. Specify \"INITIALIZED\" to include
+    -- incomplete versions.
+    include :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of versions to return with this call.
+    limit :: Prelude.Maybe Prelude.Natural,
+    -- | The marker for the next set of results. (You received this marker from a
+    -- previous call.)
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the document.
+    documentId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDocumentVersions' 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:
+--
+-- 'authenticationToken', 'describeDocumentVersions_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'fields', 'describeDocumentVersions_fields' - Specify \"SOURCE\" to include initialized versions and a URL for the
+-- source document.
+--
+-- 'include', 'describeDocumentVersions_include' - A comma-separated list of values. Specify \"INITIALIZED\" to include
+-- incomplete versions.
+--
+-- 'limit', 'describeDocumentVersions_limit' - The maximum number of versions to return with this call.
+--
+-- 'marker', 'describeDocumentVersions_marker' - The marker for the next set of results. (You received this marker from a
+-- previous call.)
+--
+-- 'documentId', 'describeDocumentVersions_documentId' - The ID of the document.
+newDescribeDocumentVersions ::
+  -- | 'documentId'
+  Prelude.Text ->
+  DescribeDocumentVersions
+newDescribeDocumentVersions pDocumentId_ =
+  DescribeDocumentVersions'
+    { authenticationToken =
+        Prelude.Nothing,
+      fields = Prelude.Nothing,
+      include = Prelude.Nothing,
+      limit = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      documentId = pDocumentId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+describeDocumentVersions_authenticationToken :: Lens.Lens' DescribeDocumentVersions (Prelude.Maybe Prelude.Text)
+describeDocumentVersions_authenticationToken = Lens.lens (\DescribeDocumentVersions' {authenticationToken} -> authenticationToken) (\s@DescribeDocumentVersions' {} a -> s {authenticationToken = a} :: DescribeDocumentVersions) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Specify \"SOURCE\" to include initialized versions and a URL for the
+-- source document.
+describeDocumentVersions_fields :: Lens.Lens' DescribeDocumentVersions (Prelude.Maybe Prelude.Text)
+describeDocumentVersions_fields = Lens.lens (\DescribeDocumentVersions' {fields} -> fields) (\s@DescribeDocumentVersions' {} a -> s {fields = a} :: DescribeDocumentVersions)
+
+-- | A comma-separated list of values. Specify \"INITIALIZED\" to include
+-- incomplete versions.
+describeDocumentVersions_include :: Lens.Lens' DescribeDocumentVersions (Prelude.Maybe Prelude.Text)
+describeDocumentVersions_include = Lens.lens (\DescribeDocumentVersions' {include} -> include) (\s@DescribeDocumentVersions' {} a -> s {include = a} :: DescribeDocumentVersions)
+
+-- | The maximum number of versions to return with this call.
+describeDocumentVersions_limit :: Lens.Lens' DescribeDocumentVersions (Prelude.Maybe Prelude.Natural)
+describeDocumentVersions_limit = Lens.lens (\DescribeDocumentVersions' {limit} -> limit) (\s@DescribeDocumentVersions' {} a -> s {limit = a} :: DescribeDocumentVersions)
+
+-- | The marker for the next set of results. (You received this marker from a
+-- previous call.)
+describeDocumentVersions_marker :: Lens.Lens' DescribeDocumentVersions (Prelude.Maybe Prelude.Text)
+describeDocumentVersions_marker = Lens.lens (\DescribeDocumentVersions' {marker} -> marker) (\s@DescribeDocumentVersions' {} a -> s {marker = a} :: DescribeDocumentVersions)
+
+-- | The ID of the document.
+describeDocumentVersions_documentId :: Lens.Lens' DescribeDocumentVersions Prelude.Text
+describeDocumentVersions_documentId = Lens.lens (\DescribeDocumentVersions' {documentId} -> documentId) (\s@DescribeDocumentVersions' {} a -> s {documentId = a} :: DescribeDocumentVersions)
+
+instance Core.AWSPager DescribeDocumentVersions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeDocumentVersionsResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeDocumentVersionsResponse_documentVersions
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeDocumentVersions_marker
+          Lens..~ rs
+          Lens.^? describeDocumentVersionsResponse_marker
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeDocumentVersions where
+  type
+    AWSResponse DescribeDocumentVersions =
+      DescribeDocumentVersionsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeDocumentVersionsResponse'
+            Prelude.<$> ( x
+                            Data..?> "DocumentVersions"
+                            Core..!@ Prelude.mempty
+                        )
+            Prelude.<*> (x Data..?> "Marker")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeDocumentVersions where
+  hashWithSalt _salt DescribeDocumentVersions' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` fields
+      `Prelude.hashWithSalt` include
+      `Prelude.hashWithSalt` limit
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` documentId
+
+instance Prelude.NFData DescribeDocumentVersions where
+  rnf DescribeDocumentVersions' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf fields
+      `Prelude.seq` Prelude.rnf include
+      `Prelude.seq` Prelude.rnf limit
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf documentId
+
+instance Data.ToHeaders DescribeDocumentVersions where
+  toHeaders DescribeDocumentVersions' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath DescribeDocumentVersions where
+  toPath DescribeDocumentVersions' {..} =
+    Prelude.mconcat
+      [ "/api/v1/documents/",
+        Data.toBS documentId,
+        "/versions"
+      ]
+
+instance Data.ToQuery DescribeDocumentVersions where
+  toQuery DescribeDocumentVersions' {..} =
+    Prelude.mconcat
+      [ "fields" Data.=: fields,
+        "include" Data.=: include,
+        "limit" Data.=: limit,
+        "marker" Data.=: marker
+      ]
+
+-- | /See:/ 'newDescribeDocumentVersionsResponse' smart constructor.
+data DescribeDocumentVersionsResponse = DescribeDocumentVersionsResponse'
+  { -- | The document versions.
+    documentVersions :: Prelude.Maybe [DocumentVersionMetadata],
+    -- | The marker to use when requesting the next set of results. If there are
+    -- no additional results, the string is empty.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeDocumentVersionsResponse' 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:
+--
+-- 'documentVersions', 'describeDocumentVersionsResponse_documentVersions' - The document versions.
+--
+-- 'marker', 'describeDocumentVersionsResponse_marker' - The marker to use when requesting the next set of results. If there are
+-- no additional results, the string is empty.
+--
+-- 'httpStatus', 'describeDocumentVersionsResponse_httpStatus' - The response's http status code.
+newDescribeDocumentVersionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeDocumentVersionsResponse
+newDescribeDocumentVersionsResponse pHttpStatus_ =
+  DescribeDocumentVersionsResponse'
+    { documentVersions =
+        Prelude.Nothing,
+      marker = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The document versions.
+describeDocumentVersionsResponse_documentVersions :: Lens.Lens' DescribeDocumentVersionsResponse (Prelude.Maybe [DocumentVersionMetadata])
+describeDocumentVersionsResponse_documentVersions = Lens.lens (\DescribeDocumentVersionsResponse' {documentVersions} -> documentVersions) (\s@DescribeDocumentVersionsResponse' {} a -> s {documentVersions = a} :: DescribeDocumentVersionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The marker to use when requesting the next set of results. If there are
+-- no additional results, the string is empty.
+describeDocumentVersionsResponse_marker :: Lens.Lens' DescribeDocumentVersionsResponse (Prelude.Maybe Prelude.Text)
+describeDocumentVersionsResponse_marker = Lens.lens (\DescribeDocumentVersionsResponse' {marker} -> marker) (\s@DescribeDocumentVersionsResponse' {} a -> s {marker = a} :: DescribeDocumentVersionsResponse)
+
+-- | The response's http status code.
+describeDocumentVersionsResponse_httpStatus :: Lens.Lens' DescribeDocumentVersionsResponse Prelude.Int
+describeDocumentVersionsResponse_httpStatus = Lens.lens (\DescribeDocumentVersionsResponse' {httpStatus} -> httpStatus) (\s@DescribeDocumentVersionsResponse' {} a -> s {httpStatus = a} :: DescribeDocumentVersionsResponse)
+
+instance
+  Prelude.NFData
+    DescribeDocumentVersionsResponse
+  where
+  rnf DescribeDocumentVersionsResponse' {..} =
+    Prelude.rnf documentVersions
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/DescribeFolderContents.hs b/gen/Amazonka/WorkDocs/DescribeFolderContents.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/DescribeFolderContents.hs
@@ -0,0 +1,328 @@
+{-# 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.WorkDocs.DescribeFolderContents
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the contents of the specified folder, including its documents
+-- and subfolders.
+--
+-- By default, Amazon WorkDocs returns the first 100 active document and
+-- folder metadata items. If there are more results, the response includes
+-- a marker that you can use to request the next set of results. You can
+-- also request initialized documents.
+--
+-- This operation returns paginated results.
+module Amazonka.WorkDocs.DescribeFolderContents
+  ( -- * Creating a Request
+    DescribeFolderContents (..),
+    newDescribeFolderContents,
+
+    -- * Request Lenses
+    describeFolderContents_authenticationToken,
+    describeFolderContents_include,
+    describeFolderContents_limit,
+    describeFolderContents_marker,
+    describeFolderContents_order,
+    describeFolderContents_sort,
+    describeFolderContents_type,
+    describeFolderContents_folderId,
+
+    -- * Destructuring the Response
+    DescribeFolderContentsResponse (..),
+    newDescribeFolderContentsResponse,
+
+    -- * Response Lenses
+    describeFolderContentsResponse_documents,
+    describeFolderContentsResponse_folders,
+    describeFolderContentsResponse_marker,
+    describeFolderContentsResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newDescribeFolderContents' smart constructor.
+data DescribeFolderContents = DescribeFolderContents'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The contents to include. Specify \"INITIALIZED\" to include initialized
+    -- documents.
+    include :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of items to return with this call.
+    limit :: Prelude.Maybe Prelude.Natural,
+    -- | The marker for the next set of results. This marker was received from a
+    -- previous call.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The order for the contents of the folder.
+    order :: Prelude.Maybe OrderType,
+    -- | The sorting criteria.
+    sort :: Prelude.Maybe ResourceSortType,
+    -- | The type of items.
+    type' :: Prelude.Maybe FolderContentType,
+    -- | The ID of the folder.
+    folderId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFolderContents' 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:
+--
+-- 'authenticationToken', 'describeFolderContents_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'include', 'describeFolderContents_include' - The contents to include. Specify \"INITIALIZED\" to include initialized
+-- documents.
+--
+-- 'limit', 'describeFolderContents_limit' - The maximum number of items to return with this call.
+--
+-- 'marker', 'describeFolderContents_marker' - The marker for the next set of results. This marker was received from a
+-- previous call.
+--
+-- 'order', 'describeFolderContents_order' - The order for the contents of the folder.
+--
+-- 'sort', 'describeFolderContents_sort' - The sorting criteria.
+--
+-- 'type'', 'describeFolderContents_type' - The type of items.
+--
+-- 'folderId', 'describeFolderContents_folderId' - The ID of the folder.
+newDescribeFolderContents ::
+  -- | 'folderId'
+  Prelude.Text ->
+  DescribeFolderContents
+newDescribeFolderContents pFolderId_ =
+  DescribeFolderContents'
+    { authenticationToken =
+        Prelude.Nothing,
+      include = Prelude.Nothing,
+      limit = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      order = Prelude.Nothing,
+      sort = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      folderId = pFolderId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+describeFolderContents_authenticationToken :: Lens.Lens' DescribeFolderContents (Prelude.Maybe Prelude.Text)
+describeFolderContents_authenticationToken = Lens.lens (\DescribeFolderContents' {authenticationToken} -> authenticationToken) (\s@DescribeFolderContents' {} a -> s {authenticationToken = a} :: DescribeFolderContents) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The contents to include. Specify \"INITIALIZED\" to include initialized
+-- documents.
+describeFolderContents_include :: Lens.Lens' DescribeFolderContents (Prelude.Maybe Prelude.Text)
+describeFolderContents_include = Lens.lens (\DescribeFolderContents' {include} -> include) (\s@DescribeFolderContents' {} a -> s {include = a} :: DescribeFolderContents)
+
+-- | The maximum number of items to return with this call.
+describeFolderContents_limit :: Lens.Lens' DescribeFolderContents (Prelude.Maybe Prelude.Natural)
+describeFolderContents_limit = Lens.lens (\DescribeFolderContents' {limit} -> limit) (\s@DescribeFolderContents' {} a -> s {limit = a} :: DescribeFolderContents)
+
+-- | The marker for the next set of results. This marker was received from a
+-- previous call.
+describeFolderContents_marker :: Lens.Lens' DescribeFolderContents (Prelude.Maybe Prelude.Text)
+describeFolderContents_marker = Lens.lens (\DescribeFolderContents' {marker} -> marker) (\s@DescribeFolderContents' {} a -> s {marker = a} :: DescribeFolderContents)
+
+-- | The order for the contents of the folder.
+describeFolderContents_order :: Lens.Lens' DescribeFolderContents (Prelude.Maybe OrderType)
+describeFolderContents_order = Lens.lens (\DescribeFolderContents' {order} -> order) (\s@DescribeFolderContents' {} a -> s {order = a} :: DescribeFolderContents)
+
+-- | The sorting criteria.
+describeFolderContents_sort :: Lens.Lens' DescribeFolderContents (Prelude.Maybe ResourceSortType)
+describeFolderContents_sort = Lens.lens (\DescribeFolderContents' {sort} -> sort) (\s@DescribeFolderContents' {} a -> s {sort = a} :: DescribeFolderContents)
+
+-- | The type of items.
+describeFolderContents_type :: Lens.Lens' DescribeFolderContents (Prelude.Maybe FolderContentType)
+describeFolderContents_type = Lens.lens (\DescribeFolderContents' {type'} -> type') (\s@DescribeFolderContents' {} a -> s {type' = a} :: DescribeFolderContents)
+
+-- | The ID of the folder.
+describeFolderContents_folderId :: Lens.Lens' DescribeFolderContents Prelude.Text
+describeFolderContents_folderId = Lens.lens (\DescribeFolderContents' {folderId} -> folderId) (\s@DescribeFolderContents' {} a -> s {folderId = a} :: DescribeFolderContents)
+
+instance Core.AWSPager DescribeFolderContents where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeFolderContentsResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeFolderContentsResponse_folders
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeFolderContentsResponse_documents
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeFolderContents_marker
+          Lens..~ rs
+          Lens.^? describeFolderContentsResponse_marker
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeFolderContents where
+  type
+    AWSResponse DescribeFolderContents =
+      DescribeFolderContentsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeFolderContentsResponse'
+            Prelude.<$> (x Data..?> "Documents" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Folders" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Marker")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeFolderContents where
+  hashWithSalt _salt DescribeFolderContents' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` include
+      `Prelude.hashWithSalt` limit
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` order
+      `Prelude.hashWithSalt` sort
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` folderId
+
+instance Prelude.NFData DescribeFolderContents where
+  rnf DescribeFolderContents' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf include
+      `Prelude.seq` Prelude.rnf limit
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf order
+      `Prelude.seq` Prelude.rnf sort
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf folderId
+
+instance Data.ToHeaders DescribeFolderContents where
+  toHeaders DescribeFolderContents' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath DescribeFolderContents where
+  toPath DescribeFolderContents' {..} =
+    Prelude.mconcat
+      ["/api/v1/folders/", Data.toBS folderId, "/contents"]
+
+instance Data.ToQuery DescribeFolderContents where
+  toQuery DescribeFolderContents' {..} =
+    Prelude.mconcat
+      [ "include" Data.=: include,
+        "limit" Data.=: limit,
+        "marker" Data.=: marker,
+        "order" Data.=: order,
+        "sort" Data.=: sort,
+        "type" Data.=: type'
+      ]
+
+-- | /See:/ 'newDescribeFolderContentsResponse' smart constructor.
+data DescribeFolderContentsResponse = DescribeFolderContentsResponse'
+  { -- | The documents in the specified folder.
+    documents :: Prelude.Maybe [DocumentMetadata],
+    -- | The subfolders in the specified folder.
+    folders :: Prelude.Maybe [FolderMetadata],
+    -- | The marker to use when requesting the next set of results. If there are
+    -- no additional results, the string is empty.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeFolderContentsResponse' 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:
+--
+-- 'documents', 'describeFolderContentsResponse_documents' - The documents in the specified folder.
+--
+-- 'folders', 'describeFolderContentsResponse_folders' - The subfolders in the specified folder.
+--
+-- 'marker', 'describeFolderContentsResponse_marker' - The marker to use when requesting the next set of results. If there are
+-- no additional results, the string is empty.
+--
+-- 'httpStatus', 'describeFolderContentsResponse_httpStatus' - The response's http status code.
+newDescribeFolderContentsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeFolderContentsResponse
+newDescribeFolderContentsResponse pHttpStatus_ =
+  DescribeFolderContentsResponse'
+    { documents =
+        Prelude.Nothing,
+      folders = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The documents in the specified folder.
+describeFolderContentsResponse_documents :: Lens.Lens' DescribeFolderContentsResponse (Prelude.Maybe [DocumentMetadata])
+describeFolderContentsResponse_documents = Lens.lens (\DescribeFolderContentsResponse' {documents} -> documents) (\s@DescribeFolderContentsResponse' {} a -> s {documents = a} :: DescribeFolderContentsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The subfolders in the specified folder.
+describeFolderContentsResponse_folders :: Lens.Lens' DescribeFolderContentsResponse (Prelude.Maybe [FolderMetadata])
+describeFolderContentsResponse_folders = Lens.lens (\DescribeFolderContentsResponse' {folders} -> folders) (\s@DescribeFolderContentsResponse' {} a -> s {folders = a} :: DescribeFolderContentsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The marker to use when requesting the next set of results. If there are
+-- no additional results, the string is empty.
+describeFolderContentsResponse_marker :: Lens.Lens' DescribeFolderContentsResponse (Prelude.Maybe Prelude.Text)
+describeFolderContentsResponse_marker = Lens.lens (\DescribeFolderContentsResponse' {marker} -> marker) (\s@DescribeFolderContentsResponse' {} a -> s {marker = a} :: DescribeFolderContentsResponse)
+
+-- | The response's http status code.
+describeFolderContentsResponse_httpStatus :: Lens.Lens' DescribeFolderContentsResponse Prelude.Int
+describeFolderContentsResponse_httpStatus = Lens.lens (\DescribeFolderContentsResponse' {httpStatus} -> httpStatus) (\s@DescribeFolderContentsResponse' {} a -> s {httpStatus = a} :: DescribeFolderContentsResponse)
+
+instance
+  Prelude.NFData
+    DescribeFolderContentsResponse
+  where
+  rnf DescribeFolderContentsResponse' {..} =
+    Prelude.rnf documents
+      `Prelude.seq` Prelude.rnf folders
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/DescribeGroups.hs b/gen/Amazonka/WorkDocs/DescribeGroups.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/DescribeGroups.hs
@@ -0,0 +1,258 @@
+{-# 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.WorkDocs.DescribeGroups
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the groups specified by the query. Groups are defined by the
+-- underlying Active Directory.
+--
+-- This operation returns paginated results.
+module Amazonka.WorkDocs.DescribeGroups
+  ( -- * Creating a Request
+    DescribeGroups (..),
+    newDescribeGroups,
+
+    -- * Request Lenses
+    describeGroups_authenticationToken,
+    describeGroups_limit,
+    describeGroups_marker,
+    describeGroups_organizationId,
+    describeGroups_searchQuery,
+
+    -- * Destructuring the Response
+    DescribeGroupsResponse (..),
+    newDescribeGroupsResponse,
+
+    -- * Response Lenses
+    describeGroupsResponse_groups,
+    describeGroupsResponse_marker,
+    describeGroupsResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newDescribeGroups' smart constructor.
+data DescribeGroups = DescribeGroups'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The maximum number of items to return with this call.
+    limit :: Prelude.Maybe Prelude.Natural,
+    -- | The marker for the next set of results. (You received this marker from a
+    -- previous call.)
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the organization.
+    organizationId :: Prelude.Maybe Prelude.Text,
+    -- | A query to describe groups by group name.
+    searchQuery :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeGroups' 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:
+--
+-- 'authenticationToken', 'describeGroups_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'limit', 'describeGroups_limit' - The maximum number of items to return with this call.
+--
+-- 'marker', 'describeGroups_marker' - The marker for the next set of results. (You received this marker from a
+-- previous call.)
+--
+-- 'organizationId', 'describeGroups_organizationId' - The ID of the organization.
+--
+-- 'searchQuery', 'describeGroups_searchQuery' - A query to describe groups by group name.
+newDescribeGroups ::
+  -- | 'searchQuery'
+  Prelude.Text ->
+  DescribeGroups
+newDescribeGroups pSearchQuery_ =
+  DescribeGroups'
+    { authenticationToken =
+        Prelude.Nothing,
+      limit = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      organizationId = Prelude.Nothing,
+      searchQuery = Data._Sensitive Lens.# pSearchQuery_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+describeGroups_authenticationToken :: Lens.Lens' DescribeGroups (Prelude.Maybe Prelude.Text)
+describeGroups_authenticationToken = Lens.lens (\DescribeGroups' {authenticationToken} -> authenticationToken) (\s@DescribeGroups' {} a -> s {authenticationToken = a} :: DescribeGroups) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The maximum number of items to return with this call.
+describeGroups_limit :: Lens.Lens' DescribeGroups (Prelude.Maybe Prelude.Natural)
+describeGroups_limit = Lens.lens (\DescribeGroups' {limit} -> limit) (\s@DescribeGroups' {} a -> s {limit = a} :: DescribeGroups)
+
+-- | The marker for the next set of results. (You received this marker from a
+-- previous call.)
+describeGroups_marker :: Lens.Lens' DescribeGroups (Prelude.Maybe Prelude.Text)
+describeGroups_marker = Lens.lens (\DescribeGroups' {marker} -> marker) (\s@DescribeGroups' {} a -> s {marker = a} :: DescribeGroups)
+
+-- | The ID of the organization.
+describeGroups_organizationId :: Lens.Lens' DescribeGroups (Prelude.Maybe Prelude.Text)
+describeGroups_organizationId = Lens.lens (\DescribeGroups' {organizationId} -> organizationId) (\s@DescribeGroups' {} a -> s {organizationId = a} :: DescribeGroups)
+
+-- | A query to describe groups by group name.
+describeGroups_searchQuery :: Lens.Lens' DescribeGroups Prelude.Text
+describeGroups_searchQuery = Lens.lens (\DescribeGroups' {searchQuery} -> searchQuery) (\s@DescribeGroups' {} a -> s {searchQuery = a} :: DescribeGroups) Prelude.. Data._Sensitive
+
+instance Core.AWSPager DescribeGroups where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeGroupsResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeGroupsResponse_groups
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeGroups_marker
+          Lens..~ rs
+          Lens.^? describeGroupsResponse_marker
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeGroups where
+  type
+    AWSResponse DescribeGroups =
+      DescribeGroupsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeGroupsResponse'
+            Prelude.<$> (x Data..?> "Groups" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Marker")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeGroups where
+  hashWithSalt _salt DescribeGroups' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` limit
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` organizationId
+      `Prelude.hashWithSalt` searchQuery
+
+instance Prelude.NFData DescribeGroups where
+  rnf DescribeGroups' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf limit
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf organizationId
+      `Prelude.seq` Prelude.rnf searchQuery
+
+instance Data.ToHeaders DescribeGroups where
+  toHeaders DescribeGroups' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath DescribeGroups where
+  toPath = Prelude.const "/api/v1/groups"
+
+instance Data.ToQuery DescribeGroups where
+  toQuery DescribeGroups' {..} =
+    Prelude.mconcat
+      [ "limit" Data.=: limit,
+        "marker" Data.=: marker,
+        "organizationId" Data.=: organizationId,
+        "searchQuery" Data.=: searchQuery
+      ]
+
+-- | /See:/ 'newDescribeGroupsResponse' smart constructor.
+data DescribeGroupsResponse = DescribeGroupsResponse'
+  { -- | The list of groups.
+    groups :: Prelude.Maybe [GroupMetadata],
+    -- | The marker to use when requesting the next set of results. If there are
+    -- no additional results, the string is empty.
+    marker :: 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 'DescribeGroupsResponse' 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:
+--
+-- 'groups', 'describeGroupsResponse_groups' - The list of groups.
+--
+-- 'marker', 'describeGroupsResponse_marker' - The marker to use when requesting the next set of results. If there are
+-- no additional results, the string is empty.
+--
+-- 'httpStatus', 'describeGroupsResponse_httpStatus' - The response's http status code.
+newDescribeGroupsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeGroupsResponse
+newDescribeGroupsResponse pHttpStatus_ =
+  DescribeGroupsResponse'
+    { groups = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The list of groups.
+describeGroupsResponse_groups :: Lens.Lens' DescribeGroupsResponse (Prelude.Maybe [GroupMetadata])
+describeGroupsResponse_groups = Lens.lens (\DescribeGroupsResponse' {groups} -> groups) (\s@DescribeGroupsResponse' {} a -> s {groups = a} :: DescribeGroupsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The marker to use when requesting the next set of results. If there are
+-- no additional results, the string is empty.
+describeGroupsResponse_marker :: Lens.Lens' DescribeGroupsResponse (Prelude.Maybe Prelude.Text)
+describeGroupsResponse_marker = Lens.lens (\DescribeGroupsResponse' {marker} -> marker) (\s@DescribeGroupsResponse' {} a -> s {marker = a} :: DescribeGroupsResponse)
+
+-- | The response's http status code.
+describeGroupsResponse_httpStatus :: Lens.Lens' DescribeGroupsResponse Prelude.Int
+describeGroupsResponse_httpStatus = Lens.lens (\DescribeGroupsResponse' {httpStatus} -> httpStatus) (\s@DescribeGroupsResponse' {} a -> s {httpStatus = a} :: DescribeGroupsResponse)
+
+instance Prelude.NFData DescribeGroupsResponse where
+  rnf DescribeGroupsResponse' {..} =
+    Prelude.rnf groups
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/DescribeNotificationSubscriptions.hs b/gen/Amazonka/WorkDocs/DescribeNotificationSubscriptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/DescribeNotificationSubscriptions.hs
@@ -0,0 +1,262 @@
+{-# 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.WorkDocs.DescribeNotificationSubscriptions
+-- 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 the specified notification subscriptions.
+--
+-- This operation returns paginated results.
+module Amazonka.WorkDocs.DescribeNotificationSubscriptions
+  ( -- * Creating a Request
+    DescribeNotificationSubscriptions (..),
+    newDescribeNotificationSubscriptions,
+
+    -- * Request Lenses
+    describeNotificationSubscriptions_limit,
+    describeNotificationSubscriptions_marker,
+    describeNotificationSubscriptions_organizationId,
+
+    -- * Destructuring the Response
+    DescribeNotificationSubscriptionsResponse (..),
+    newDescribeNotificationSubscriptionsResponse,
+
+    -- * Response Lenses
+    describeNotificationSubscriptionsResponse_marker,
+    describeNotificationSubscriptionsResponse_subscriptions,
+    describeNotificationSubscriptionsResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newDescribeNotificationSubscriptions' smart constructor.
+data DescribeNotificationSubscriptions = DescribeNotificationSubscriptions'
+  { -- | The maximum number of items to return with this call.
+    limit :: Prelude.Maybe Prelude.Natural,
+    -- | The marker for the next set of results. (You received this marker from a
+    -- previous call.)
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the organization.
+    organizationId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeNotificationSubscriptions' 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:
+--
+-- 'limit', 'describeNotificationSubscriptions_limit' - The maximum number of items to return with this call.
+--
+-- 'marker', 'describeNotificationSubscriptions_marker' - The marker for the next set of results. (You received this marker from a
+-- previous call.)
+--
+-- 'organizationId', 'describeNotificationSubscriptions_organizationId' - The ID of the organization.
+newDescribeNotificationSubscriptions ::
+  -- | 'organizationId'
+  Prelude.Text ->
+  DescribeNotificationSubscriptions
+newDescribeNotificationSubscriptions pOrganizationId_ =
+  DescribeNotificationSubscriptions'
+    { limit =
+        Prelude.Nothing,
+      marker = Prelude.Nothing,
+      organizationId = pOrganizationId_
+    }
+
+-- | The maximum number of items to return with this call.
+describeNotificationSubscriptions_limit :: Lens.Lens' DescribeNotificationSubscriptions (Prelude.Maybe Prelude.Natural)
+describeNotificationSubscriptions_limit = Lens.lens (\DescribeNotificationSubscriptions' {limit} -> limit) (\s@DescribeNotificationSubscriptions' {} a -> s {limit = a} :: DescribeNotificationSubscriptions)
+
+-- | The marker for the next set of results. (You received this marker from a
+-- previous call.)
+describeNotificationSubscriptions_marker :: Lens.Lens' DescribeNotificationSubscriptions (Prelude.Maybe Prelude.Text)
+describeNotificationSubscriptions_marker = Lens.lens (\DescribeNotificationSubscriptions' {marker} -> marker) (\s@DescribeNotificationSubscriptions' {} a -> s {marker = a} :: DescribeNotificationSubscriptions)
+
+-- | The ID of the organization.
+describeNotificationSubscriptions_organizationId :: Lens.Lens' DescribeNotificationSubscriptions Prelude.Text
+describeNotificationSubscriptions_organizationId = Lens.lens (\DescribeNotificationSubscriptions' {organizationId} -> organizationId) (\s@DescribeNotificationSubscriptions' {} a -> s {organizationId = a} :: DescribeNotificationSubscriptions)
+
+instance
+  Core.AWSPager
+    DescribeNotificationSubscriptions
+  where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeNotificationSubscriptionsResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeNotificationSubscriptionsResponse_subscriptions
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeNotificationSubscriptions_marker
+          Lens..~ rs
+          Lens.^? describeNotificationSubscriptionsResponse_marker
+          Prelude.. Lens._Just
+
+instance
+  Core.AWSRequest
+    DescribeNotificationSubscriptions
+  where
+  type
+    AWSResponse DescribeNotificationSubscriptions =
+      DescribeNotificationSubscriptionsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeNotificationSubscriptionsResponse'
+            Prelude.<$> (x Data..?> "Marker")
+            Prelude.<*> (x Data..?> "Subscriptions" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    DescribeNotificationSubscriptions
+  where
+  hashWithSalt
+    _salt
+    DescribeNotificationSubscriptions' {..} =
+      _salt
+        `Prelude.hashWithSalt` limit
+        `Prelude.hashWithSalt` marker
+        `Prelude.hashWithSalt` organizationId
+
+instance
+  Prelude.NFData
+    DescribeNotificationSubscriptions
+  where
+  rnf DescribeNotificationSubscriptions' {..} =
+    Prelude.rnf limit
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf organizationId
+
+instance
+  Data.ToHeaders
+    DescribeNotificationSubscriptions
+  where
+  toHeaders =
+    Prelude.const
+      ( Prelude.mconcat
+          [ "Content-Type"
+              Data.=# ( "application/x-amz-json-1.1" ::
+                          Prelude.ByteString
+                      )
+          ]
+      )
+
+instance
+  Data.ToPath
+    DescribeNotificationSubscriptions
+  where
+  toPath DescribeNotificationSubscriptions' {..} =
+    Prelude.mconcat
+      [ "/api/v1/organizations/",
+        Data.toBS organizationId,
+        "/subscriptions"
+      ]
+
+instance
+  Data.ToQuery
+    DescribeNotificationSubscriptions
+  where
+  toQuery DescribeNotificationSubscriptions' {..} =
+    Prelude.mconcat
+      ["limit" Data.=: limit, "marker" Data.=: marker]
+
+-- | /See:/ 'newDescribeNotificationSubscriptionsResponse' smart constructor.
+data DescribeNotificationSubscriptionsResponse = DescribeNotificationSubscriptionsResponse'
+  { -- | The marker to use when requesting the next set of results. If there are
+    -- no additional results, the string is empty.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The subscriptions.
+    subscriptions :: Prelude.Maybe [Subscription],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeNotificationSubscriptionsResponse' 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:
+--
+-- 'marker', 'describeNotificationSubscriptionsResponse_marker' - The marker to use when requesting the next set of results. If there are
+-- no additional results, the string is empty.
+--
+-- 'subscriptions', 'describeNotificationSubscriptionsResponse_subscriptions' - The subscriptions.
+--
+-- 'httpStatus', 'describeNotificationSubscriptionsResponse_httpStatus' - The response's http status code.
+newDescribeNotificationSubscriptionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeNotificationSubscriptionsResponse
+newDescribeNotificationSubscriptionsResponse
+  pHttpStatus_ =
+    DescribeNotificationSubscriptionsResponse'
+      { marker =
+          Prelude.Nothing,
+        subscriptions = Prelude.Nothing,
+        httpStatus = pHttpStatus_
+      }
+
+-- | The marker to use when requesting the next set of results. If there are
+-- no additional results, the string is empty.
+describeNotificationSubscriptionsResponse_marker :: Lens.Lens' DescribeNotificationSubscriptionsResponse (Prelude.Maybe Prelude.Text)
+describeNotificationSubscriptionsResponse_marker = Lens.lens (\DescribeNotificationSubscriptionsResponse' {marker} -> marker) (\s@DescribeNotificationSubscriptionsResponse' {} a -> s {marker = a} :: DescribeNotificationSubscriptionsResponse)
+
+-- | The subscriptions.
+describeNotificationSubscriptionsResponse_subscriptions :: Lens.Lens' DescribeNotificationSubscriptionsResponse (Prelude.Maybe [Subscription])
+describeNotificationSubscriptionsResponse_subscriptions = Lens.lens (\DescribeNotificationSubscriptionsResponse' {subscriptions} -> subscriptions) (\s@DescribeNotificationSubscriptionsResponse' {} a -> s {subscriptions = a} :: DescribeNotificationSubscriptionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeNotificationSubscriptionsResponse_httpStatus :: Lens.Lens' DescribeNotificationSubscriptionsResponse Prelude.Int
+describeNotificationSubscriptionsResponse_httpStatus = Lens.lens (\DescribeNotificationSubscriptionsResponse' {httpStatus} -> httpStatus) (\s@DescribeNotificationSubscriptionsResponse' {} a -> s {httpStatus = a} :: DescribeNotificationSubscriptionsResponse)
+
+instance
+  Prelude.NFData
+    DescribeNotificationSubscriptionsResponse
+  where
+  rnf DescribeNotificationSubscriptionsResponse' {..} =
+    Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf subscriptions
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/DescribeResourcePermissions.hs b/gen/Amazonka/WorkDocs/DescribeResourcePermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/DescribeResourcePermissions.hs
@@ -0,0 +1,265 @@
+{-# 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.WorkDocs.DescribeResourcePermissions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the permissions of a specified resource.
+--
+-- This operation returns paginated results.
+module Amazonka.WorkDocs.DescribeResourcePermissions
+  ( -- * Creating a Request
+    DescribeResourcePermissions (..),
+    newDescribeResourcePermissions,
+
+    -- * Request Lenses
+    describeResourcePermissions_authenticationToken,
+    describeResourcePermissions_limit,
+    describeResourcePermissions_marker,
+    describeResourcePermissions_principalId,
+    describeResourcePermissions_resourceId,
+
+    -- * Destructuring the Response
+    DescribeResourcePermissionsResponse (..),
+    newDescribeResourcePermissionsResponse,
+
+    -- * Response Lenses
+    describeResourcePermissionsResponse_marker,
+    describeResourcePermissionsResponse_principals,
+    describeResourcePermissionsResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newDescribeResourcePermissions' smart constructor.
+data DescribeResourcePermissions = DescribeResourcePermissions'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The maximum number of items to return with this call.
+    limit :: Prelude.Maybe Prelude.Natural,
+    -- | The marker for the next set of results. (You received this marker from a
+    -- previous call)
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the principal to filter permissions by.
+    principalId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the resource.
+    resourceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeResourcePermissions' 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:
+--
+-- 'authenticationToken', 'describeResourcePermissions_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'limit', 'describeResourcePermissions_limit' - The maximum number of items to return with this call.
+--
+-- 'marker', 'describeResourcePermissions_marker' - The marker for the next set of results. (You received this marker from a
+-- previous call)
+--
+-- 'principalId', 'describeResourcePermissions_principalId' - The ID of the principal to filter permissions by.
+--
+-- 'resourceId', 'describeResourcePermissions_resourceId' - The ID of the resource.
+newDescribeResourcePermissions ::
+  -- | 'resourceId'
+  Prelude.Text ->
+  DescribeResourcePermissions
+newDescribeResourcePermissions pResourceId_ =
+  DescribeResourcePermissions'
+    { authenticationToken =
+        Prelude.Nothing,
+      limit = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      principalId = Prelude.Nothing,
+      resourceId = pResourceId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+describeResourcePermissions_authenticationToken :: Lens.Lens' DescribeResourcePermissions (Prelude.Maybe Prelude.Text)
+describeResourcePermissions_authenticationToken = Lens.lens (\DescribeResourcePermissions' {authenticationToken} -> authenticationToken) (\s@DescribeResourcePermissions' {} a -> s {authenticationToken = a} :: DescribeResourcePermissions) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The maximum number of items to return with this call.
+describeResourcePermissions_limit :: Lens.Lens' DescribeResourcePermissions (Prelude.Maybe Prelude.Natural)
+describeResourcePermissions_limit = Lens.lens (\DescribeResourcePermissions' {limit} -> limit) (\s@DescribeResourcePermissions' {} a -> s {limit = a} :: DescribeResourcePermissions)
+
+-- | The marker for the next set of results. (You received this marker from a
+-- previous call)
+describeResourcePermissions_marker :: Lens.Lens' DescribeResourcePermissions (Prelude.Maybe Prelude.Text)
+describeResourcePermissions_marker = Lens.lens (\DescribeResourcePermissions' {marker} -> marker) (\s@DescribeResourcePermissions' {} a -> s {marker = a} :: DescribeResourcePermissions)
+
+-- | The ID of the principal to filter permissions by.
+describeResourcePermissions_principalId :: Lens.Lens' DescribeResourcePermissions (Prelude.Maybe Prelude.Text)
+describeResourcePermissions_principalId = Lens.lens (\DescribeResourcePermissions' {principalId} -> principalId) (\s@DescribeResourcePermissions' {} a -> s {principalId = a} :: DescribeResourcePermissions)
+
+-- | The ID of the resource.
+describeResourcePermissions_resourceId :: Lens.Lens' DescribeResourcePermissions Prelude.Text
+describeResourcePermissions_resourceId = Lens.lens (\DescribeResourcePermissions' {resourceId} -> resourceId) (\s@DescribeResourcePermissions' {} a -> s {resourceId = a} :: DescribeResourcePermissions)
+
+instance Core.AWSPager DescribeResourcePermissions where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeResourcePermissionsResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeResourcePermissionsResponse_principals
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeResourcePermissions_marker
+          Lens..~ rs
+          Lens.^? describeResourcePermissionsResponse_marker
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeResourcePermissions where
+  type
+    AWSResponse DescribeResourcePermissions =
+      DescribeResourcePermissionsResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeResourcePermissionsResponse'
+            Prelude.<$> (x Data..?> "Marker")
+            Prelude.<*> (x Data..?> "Principals" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeResourcePermissions where
+  hashWithSalt _salt DescribeResourcePermissions' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` limit
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` principalId
+      `Prelude.hashWithSalt` resourceId
+
+instance Prelude.NFData DescribeResourcePermissions where
+  rnf DescribeResourcePermissions' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf limit
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf principalId
+      `Prelude.seq` Prelude.rnf resourceId
+
+instance Data.ToHeaders DescribeResourcePermissions where
+  toHeaders DescribeResourcePermissions' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath DescribeResourcePermissions where
+  toPath DescribeResourcePermissions' {..} =
+    Prelude.mconcat
+      [ "/api/v1/resources/",
+        Data.toBS resourceId,
+        "/permissions"
+      ]
+
+instance Data.ToQuery DescribeResourcePermissions where
+  toQuery DescribeResourcePermissions' {..} =
+    Prelude.mconcat
+      [ "limit" Data.=: limit,
+        "marker" Data.=: marker,
+        "principalId" Data.=: principalId
+      ]
+
+-- | /See:/ 'newDescribeResourcePermissionsResponse' smart constructor.
+data DescribeResourcePermissionsResponse = DescribeResourcePermissionsResponse'
+  { -- | The marker to use when requesting the next set of results. If there are
+    -- no additional results, the string is empty.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The principals.
+    principals :: Prelude.Maybe [Principal],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeResourcePermissionsResponse' 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:
+--
+-- 'marker', 'describeResourcePermissionsResponse_marker' - The marker to use when requesting the next set of results. If there are
+-- no additional results, the string is empty.
+--
+-- 'principals', 'describeResourcePermissionsResponse_principals' - The principals.
+--
+-- 'httpStatus', 'describeResourcePermissionsResponse_httpStatus' - The response's http status code.
+newDescribeResourcePermissionsResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeResourcePermissionsResponse
+newDescribeResourcePermissionsResponse pHttpStatus_ =
+  DescribeResourcePermissionsResponse'
+    { marker =
+        Prelude.Nothing,
+      principals = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The marker to use when requesting the next set of results. If there are
+-- no additional results, the string is empty.
+describeResourcePermissionsResponse_marker :: Lens.Lens' DescribeResourcePermissionsResponse (Prelude.Maybe Prelude.Text)
+describeResourcePermissionsResponse_marker = Lens.lens (\DescribeResourcePermissionsResponse' {marker} -> marker) (\s@DescribeResourcePermissionsResponse' {} a -> s {marker = a} :: DescribeResourcePermissionsResponse)
+
+-- | The principals.
+describeResourcePermissionsResponse_principals :: Lens.Lens' DescribeResourcePermissionsResponse (Prelude.Maybe [Principal])
+describeResourcePermissionsResponse_principals = Lens.lens (\DescribeResourcePermissionsResponse' {principals} -> principals) (\s@DescribeResourcePermissionsResponse' {} a -> s {principals = a} :: DescribeResourcePermissionsResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeResourcePermissionsResponse_httpStatus :: Lens.Lens' DescribeResourcePermissionsResponse Prelude.Int
+describeResourcePermissionsResponse_httpStatus = Lens.lens (\DescribeResourcePermissionsResponse' {httpStatus} -> httpStatus) (\s@DescribeResourcePermissionsResponse' {} a -> s {httpStatus = a} :: DescribeResourcePermissionsResponse)
+
+instance
+  Prelude.NFData
+    DescribeResourcePermissionsResponse
+  where
+  rnf DescribeResourcePermissionsResponse' {..} =
+    Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf principals
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/DescribeRootFolders.hs b/gen/Amazonka/WorkDocs/DescribeRootFolders.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/DescribeRootFolders.hs
@@ -0,0 +1,233 @@
+{-# 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.WorkDocs.DescribeRootFolders
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the current user\'s special folders; the @RootFolder@ and the
+-- @RecycleBin@. @RootFolder@ is the root of user\'s files and folders and
+-- @RecycleBin@ is the root of recycled items. This is not a valid action
+-- for SigV4 (administrative API) clients.
+--
+-- This action requires an authentication token. To get an authentication
+-- token, register an application with Amazon WorkDocs. For more
+-- information, see
+-- <https://docs.aws.amazon.com/workdocs/latest/developerguide/wd-auth-user.html Authentication and Access Control for User Applications>
+-- in the /Amazon WorkDocs Developer Guide/.
+--
+-- This operation returns paginated results.
+module Amazonka.WorkDocs.DescribeRootFolders
+  ( -- * Creating a Request
+    DescribeRootFolders (..),
+    newDescribeRootFolders,
+
+    -- * Request Lenses
+    describeRootFolders_limit,
+    describeRootFolders_marker,
+    describeRootFolders_authenticationToken,
+
+    -- * Destructuring the Response
+    DescribeRootFoldersResponse (..),
+    newDescribeRootFoldersResponse,
+
+    -- * Response Lenses
+    describeRootFoldersResponse_folders,
+    describeRootFoldersResponse_marker,
+    describeRootFoldersResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newDescribeRootFolders' smart constructor.
+data DescribeRootFolders = DescribeRootFolders'
+  { -- | The maximum number of items to return.
+    limit :: Prelude.Maybe Prelude.Natural,
+    -- | The marker for the next set of results. (You received this marker from a
+    -- previous call.)
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | Amazon WorkDocs authentication token.
+    authenticationToken :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeRootFolders' 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:
+--
+-- 'limit', 'describeRootFolders_limit' - The maximum number of items to return.
+--
+-- 'marker', 'describeRootFolders_marker' - The marker for the next set of results. (You received this marker from a
+-- previous call.)
+--
+-- 'authenticationToken', 'describeRootFolders_authenticationToken' - Amazon WorkDocs authentication token.
+newDescribeRootFolders ::
+  -- | 'authenticationToken'
+  Prelude.Text ->
+  DescribeRootFolders
+newDescribeRootFolders pAuthenticationToken_ =
+  DescribeRootFolders'
+    { limit = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      authenticationToken =
+        Data._Sensitive Lens.# pAuthenticationToken_
+    }
+
+-- | The maximum number of items to return.
+describeRootFolders_limit :: Lens.Lens' DescribeRootFolders (Prelude.Maybe Prelude.Natural)
+describeRootFolders_limit = Lens.lens (\DescribeRootFolders' {limit} -> limit) (\s@DescribeRootFolders' {} a -> s {limit = a} :: DescribeRootFolders)
+
+-- | The marker for the next set of results. (You received this marker from a
+-- previous call.)
+describeRootFolders_marker :: Lens.Lens' DescribeRootFolders (Prelude.Maybe Prelude.Text)
+describeRootFolders_marker = Lens.lens (\DescribeRootFolders' {marker} -> marker) (\s@DescribeRootFolders' {} a -> s {marker = a} :: DescribeRootFolders)
+
+-- | Amazon WorkDocs authentication token.
+describeRootFolders_authenticationToken :: Lens.Lens' DescribeRootFolders Prelude.Text
+describeRootFolders_authenticationToken = Lens.lens (\DescribeRootFolders' {authenticationToken} -> authenticationToken) (\s@DescribeRootFolders' {} a -> s {authenticationToken = a} :: DescribeRootFolders) Prelude.. Data._Sensitive
+
+instance Core.AWSPager DescribeRootFolders where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeRootFoldersResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeRootFoldersResponse_folders
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeRootFolders_marker
+          Lens..~ rs
+          Lens.^? describeRootFoldersResponse_marker
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeRootFolders where
+  type
+    AWSResponse DescribeRootFolders =
+      DescribeRootFoldersResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeRootFoldersResponse'
+            Prelude.<$> (x Data..?> "Folders" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Marker")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeRootFolders where
+  hashWithSalt _salt DescribeRootFolders' {..} =
+    _salt
+      `Prelude.hashWithSalt` limit
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` authenticationToken
+
+instance Prelude.NFData DescribeRootFolders where
+  rnf DescribeRootFolders' {..} =
+    Prelude.rnf limit
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf authenticationToken
+
+instance Data.ToHeaders DescribeRootFolders where
+  toHeaders DescribeRootFolders' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath DescribeRootFolders where
+  toPath = Prelude.const "/api/v1/me/root"
+
+instance Data.ToQuery DescribeRootFolders where
+  toQuery DescribeRootFolders' {..} =
+    Prelude.mconcat
+      ["limit" Data.=: limit, "marker" Data.=: marker]
+
+-- | /See:/ 'newDescribeRootFoldersResponse' smart constructor.
+data DescribeRootFoldersResponse = DescribeRootFoldersResponse'
+  { -- | The user\'s special folders.
+    folders :: Prelude.Maybe [FolderMetadata],
+    -- | The marker for the next set of results.
+    marker :: 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 'DescribeRootFoldersResponse' 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:
+--
+-- 'folders', 'describeRootFoldersResponse_folders' - The user\'s special folders.
+--
+-- 'marker', 'describeRootFoldersResponse_marker' - The marker for the next set of results.
+--
+-- 'httpStatus', 'describeRootFoldersResponse_httpStatus' - The response's http status code.
+newDescribeRootFoldersResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeRootFoldersResponse
+newDescribeRootFoldersResponse pHttpStatus_ =
+  DescribeRootFoldersResponse'
+    { folders =
+        Prelude.Nothing,
+      marker = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The user\'s special folders.
+describeRootFoldersResponse_folders :: Lens.Lens' DescribeRootFoldersResponse (Prelude.Maybe [FolderMetadata])
+describeRootFoldersResponse_folders = Lens.lens (\DescribeRootFoldersResponse' {folders} -> folders) (\s@DescribeRootFoldersResponse' {} a -> s {folders = a} :: DescribeRootFoldersResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The marker for the next set of results.
+describeRootFoldersResponse_marker :: Lens.Lens' DescribeRootFoldersResponse (Prelude.Maybe Prelude.Text)
+describeRootFoldersResponse_marker = Lens.lens (\DescribeRootFoldersResponse' {marker} -> marker) (\s@DescribeRootFoldersResponse' {} a -> s {marker = a} :: DescribeRootFoldersResponse)
+
+-- | The response's http status code.
+describeRootFoldersResponse_httpStatus :: Lens.Lens' DescribeRootFoldersResponse Prelude.Int
+describeRootFoldersResponse_httpStatus = Lens.lens (\DescribeRootFoldersResponse' {httpStatus} -> httpStatus) (\s@DescribeRootFoldersResponse' {} a -> s {httpStatus = a} :: DescribeRootFoldersResponse)
+
+instance Prelude.NFData DescribeRootFoldersResponse where
+  rnf DescribeRootFoldersResponse' {..} =
+    Prelude.rnf folders
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/DescribeUsers.hs b/gen/Amazonka/WorkDocs/DescribeUsers.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/DescribeUsers.hs
@@ -0,0 +1,391 @@
+{-# 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.WorkDocs.DescribeUsers
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Describes the specified users. You can describe all users or filter the
+-- results (for example, by status or organization).
+--
+-- By default, Amazon WorkDocs returns the first 24 active or pending
+-- users. If there are more results, the response includes a marker that
+-- you can use to request the next set of results.
+--
+-- This operation returns paginated results.
+module Amazonka.WorkDocs.DescribeUsers
+  ( -- * Creating a Request
+    DescribeUsers (..),
+    newDescribeUsers,
+
+    -- * Request Lenses
+    describeUsers_authenticationToken,
+    describeUsers_fields,
+    describeUsers_include,
+    describeUsers_limit,
+    describeUsers_marker,
+    describeUsers_order,
+    describeUsers_organizationId,
+    describeUsers_query,
+    describeUsers_sort,
+    describeUsers_userIds,
+
+    -- * Destructuring the Response
+    DescribeUsersResponse (..),
+    newDescribeUsersResponse,
+
+    -- * Response Lenses
+    describeUsersResponse_marker,
+    describeUsersResponse_totalNumberOfUsers,
+    describeUsersResponse_users,
+    describeUsersResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newDescribeUsers' smart constructor.
+data DescribeUsers = DescribeUsers'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | A comma-separated list of values. Specify \"STORAGE_METADATA\" to
+    -- include the user storage quota and utilization information.
+    fields :: Prelude.Maybe Prelude.Text,
+    -- | The state of the users. Specify \"ALL\" to include inactive users.
+    include :: Prelude.Maybe UserFilterType,
+    -- | The maximum number of items to return.
+    limit :: Prelude.Maybe Prelude.Natural,
+    -- | The marker for the next set of results. (You received this marker from a
+    -- previous call.)
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The order for the results.
+    order :: Prelude.Maybe OrderType,
+    -- | The ID of the organization.
+    organizationId :: Prelude.Maybe Prelude.Text,
+    -- | A query to filter users by user name. Remember the following about the
+    -- @Userids@ and @Query@ parameters:
+    --
+    -- -   If you don\'t use either parameter, the API returns a paginated list
+    --     of all users on the site.
+    --
+    -- -   If you use both parameters, the API ignores the @Query@ parameter.
+    --
+    -- -   The @Userid@ parameter only returns user names that match a
+    --     corresponding user ID.
+    --
+    -- -   The @Query@ parameter runs a \"prefix\" search for users by the
+    --     @GivenName@, @SurName@, or @UserName@ fields included in a
+    --     <https://docs.aws.amazon.com/workdocs/latest/APIReference/API_CreateUser.html CreateUser>
+    --     API call. For example, querying on @Ma@ returns Márcia Oliveira,
+    --     María García, and Mateo Jackson. If you use multiple characters, the
+    --     API only returns data that matches all characters. For example,
+    --     querying on @Ma J@ only returns Mateo Jackson.
+    query :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The sorting criteria.
+    sort :: Prelude.Maybe UserSortType,
+    -- | The IDs of the users.
+    userIds :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeUsers' 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:
+--
+-- 'authenticationToken', 'describeUsers_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'fields', 'describeUsers_fields' - A comma-separated list of values. Specify \"STORAGE_METADATA\" to
+-- include the user storage quota and utilization information.
+--
+-- 'include', 'describeUsers_include' - The state of the users. Specify \"ALL\" to include inactive users.
+--
+-- 'limit', 'describeUsers_limit' - The maximum number of items to return.
+--
+-- 'marker', 'describeUsers_marker' - The marker for the next set of results. (You received this marker from a
+-- previous call.)
+--
+-- 'order', 'describeUsers_order' - The order for the results.
+--
+-- 'organizationId', 'describeUsers_organizationId' - The ID of the organization.
+--
+-- 'query', 'describeUsers_query' - A query to filter users by user name. Remember the following about the
+-- @Userids@ and @Query@ parameters:
+--
+-- -   If you don\'t use either parameter, the API returns a paginated list
+--     of all users on the site.
+--
+-- -   If you use both parameters, the API ignores the @Query@ parameter.
+--
+-- -   The @Userid@ parameter only returns user names that match a
+--     corresponding user ID.
+--
+-- -   The @Query@ parameter runs a \"prefix\" search for users by the
+--     @GivenName@, @SurName@, or @UserName@ fields included in a
+--     <https://docs.aws.amazon.com/workdocs/latest/APIReference/API_CreateUser.html CreateUser>
+--     API call. For example, querying on @Ma@ returns Márcia Oliveira,
+--     María García, and Mateo Jackson. If you use multiple characters, the
+--     API only returns data that matches all characters. For example,
+--     querying on @Ma J@ only returns Mateo Jackson.
+--
+-- 'sort', 'describeUsers_sort' - The sorting criteria.
+--
+-- 'userIds', 'describeUsers_userIds' - The IDs of the users.
+newDescribeUsers ::
+  DescribeUsers
+newDescribeUsers =
+  DescribeUsers'
+    { authenticationToken =
+        Prelude.Nothing,
+      fields = Prelude.Nothing,
+      include = Prelude.Nothing,
+      limit = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      order = Prelude.Nothing,
+      organizationId = Prelude.Nothing,
+      query = Prelude.Nothing,
+      sort = Prelude.Nothing,
+      userIds = Prelude.Nothing
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+describeUsers_authenticationToken :: Lens.Lens' DescribeUsers (Prelude.Maybe Prelude.Text)
+describeUsers_authenticationToken = Lens.lens (\DescribeUsers' {authenticationToken} -> authenticationToken) (\s@DescribeUsers' {} a -> s {authenticationToken = a} :: DescribeUsers) Prelude.. Lens.mapping Data._Sensitive
+
+-- | A comma-separated list of values. Specify \"STORAGE_METADATA\" to
+-- include the user storage quota and utilization information.
+describeUsers_fields :: Lens.Lens' DescribeUsers (Prelude.Maybe Prelude.Text)
+describeUsers_fields = Lens.lens (\DescribeUsers' {fields} -> fields) (\s@DescribeUsers' {} a -> s {fields = a} :: DescribeUsers)
+
+-- | The state of the users. Specify \"ALL\" to include inactive users.
+describeUsers_include :: Lens.Lens' DescribeUsers (Prelude.Maybe UserFilterType)
+describeUsers_include = Lens.lens (\DescribeUsers' {include} -> include) (\s@DescribeUsers' {} a -> s {include = a} :: DescribeUsers)
+
+-- | The maximum number of items to return.
+describeUsers_limit :: Lens.Lens' DescribeUsers (Prelude.Maybe Prelude.Natural)
+describeUsers_limit = Lens.lens (\DescribeUsers' {limit} -> limit) (\s@DescribeUsers' {} a -> s {limit = a} :: DescribeUsers)
+
+-- | The marker for the next set of results. (You received this marker from a
+-- previous call.)
+describeUsers_marker :: Lens.Lens' DescribeUsers (Prelude.Maybe Prelude.Text)
+describeUsers_marker = Lens.lens (\DescribeUsers' {marker} -> marker) (\s@DescribeUsers' {} a -> s {marker = a} :: DescribeUsers)
+
+-- | The order for the results.
+describeUsers_order :: Lens.Lens' DescribeUsers (Prelude.Maybe OrderType)
+describeUsers_order = Lens.lens (\DescribeUsers' {order} -> order) (\s@DescribeUsers' {} a -> s {order = a} :: DescribeUsers)
+
+-- | The ID of the organization.
+describeUsers_organizationId :: Lens.Lens' DescribeUsers (Prelude.Maybe Prelude.Text)
+describeUsers_organizationId = Lens.lens (\DescribeUsers' {organizationId} -> organizationId) (\s@DescribeUsers' {} a -> s {organizationId = a} :: DescribeUsers)
+
+-- | A query to filter users by user name. Remember the following about the
+-- @Userids@ and @Query@ parameters:
+--
+-- -   If you don\'t use either parameter, the API returns a paginated list
+--     of all users on the site.
+--
+-- -   If you use both parameters, the API ignores the @Query@ parameter.
+--
+-- -   The @Userid@ parameter only returns user names that match a
+--     corresponding user ID.
+--
+-- -   The @Query@ parameter runs a \"prefix\" search for users by the
+--     @GivenName@, @SurName@, or @UserName@ fields included in a
+--     <https://docs.aws.amazon.com/workdocs/latest/APIReference/API_CreateUser.html CreateUser>
+--     API call. For example, querying on @Ma@ returns Márcia Oliveira,
+--     María García, and Mateo Jackson. If you use multiple characters, the
+--     API only returns data that matches all characters. For example,
+--     querying on @Ma J@ only returns Mateo Jackson.
+describeUsers_query :: Lens.Lens' DescribeUsers (Prelude.Maybe Prelude.Text)
+describeUsers_query = Lens.lens (\DescribeUsers' {query} -> query) (\s@DescribeUsers' {} a -> s {query = a} :: DescribeUsers) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The sorting criteria.
+describeUsers_sort :: Lens.Lens' DescribeUsers (Prelude.Maybe UserSortType)
+describeUsers_sort = Lens.lens (\DescribeUsers' {sort} -> sort) (\s@DescribeUsers' {} a -> s {sort = a} :: DescribeUsers)
+
+-- | The IDs of the users.
+describeUsers_userIds :: Lens.Lens' DescribeUsers (Prelude.Maybe Prelude.Text)
+describeUsers_userIds = Lens.lens (\DescribeUsers' {userIds} -> userIds) (\s@DescribeUsers' {} a -> s {userIds = a} :: DescribeUsers)
+
+instance Core.AWSPager DescribeUsers where
+  page rq rs
+    | Core.stop
+        ( rs
+            Lens.^? describeUsersResponse_marker
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Core.stop
+        ( rs
+            Lens.^? describeUsersResponse_users
+            Prelude.. Lens._Just
+        ) =
+        Prelude.Nothing
+    | Prelude.otherwise =
+        Prelude.Just
+          Prelude.$ rq
+          Prelude.& describeUsers_marker
+          Lens..~ rs
+          Lens.^? describeUsersResponse_marker
+          Prelude.. Lens._Just
+
+instance Core.AWSRequest DescribeUsers where
+  type
+    AWSResponse DescribeUsers =
+      DescribeUsersResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          DescribeUsersResponse'
+            Prelude.<$> (x Data..?> "Marker")
+            Prelude.<*> (x Data..?> "TotalNumberOfUsers")
+            Prelude.<*> (x Data..?> "Users" Core..!@ Prelude.mempty)
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable DescribeUsers where
+  hashWithSalt _salt DescribeUsers' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` fields
+      `Prelude.hashWithSalt` include
+      `Prelude.hashWithSalt` limit
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` order
+      `Prelude.hashWithSalt` organizationId
+      `Prelude.hashWithSalt` query
+      `Prelude.hashWithSalt` sort
+      `Prelude.hashWithSalt` userIds
+
+instance Prelude.NFData DescribeUsers where
+  rnf DescribeUsers' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf fields
+      `Prelude.seq` Prelude.rnf include
+      `Prelude.seq` Prelude.rnf limit
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf order
+      `Prelude.seq` Prelude.rnf organizationId
+      `Prelude.seq` Prelude.rnf query
+      `Prelude.seq` Prelude.rnf sort
+      `Prelude.seq` Prelude.rnf userIds
+
+instance Data.ToHeaders DescribeUsers where
+  toHeaders DescribeUsers' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath DescribeUsers where
+  toPath = Prelude.const "/api/v1/users"
+
+instance Data.ToQuery DescribeUsers where
+  toQuery DescribeUsers' {..} =
+    Prelude.mconcat
+      [ "fields" Data.=: fields,
+        "include" Data.=: include,
+        "limit" Data.=: limit,
+        "marker" Data.=: marker,
+        "order" Data.=: order,
+        "organizationId" Data.=: organizationId,
+        "query" Data.=: query,
+        "sort" Data.=: sort,
+        "userIds" Data.=: userIds
+      ]
+
+-- | /See:/ 'newDescribeUsersResponse' smart constructor.
+data DescribeUsersResponse = DescribeUsersResponse'
+  { -- | The marker to use when requesting the next set of results. If there are
+    -- no additional results, the string is empty.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The total number of users included in the results.
+    totalNumberOfUsers :: Prelude.Maybe Prelude.Integer,
+    -- | The users.
+    users :: Prelude.Maybe [User],
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DescribeUsersResponse' 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:
+--
+-- 'marker', 'describeUsersResponse_marker' - The marker to use when requesting the next set of results. If there are
+-- no additional results, the string is empty.
+--
+-- 'totalNumberOfUsers', 'describeUsersResponse_totalNumberOfUsers' - The total number of users included in the results.
+--
+-- 'users', 'describeUsersResponse_users' - The users.
+--
+-- 'httpStatus', 'describeUsersResponse_httpStatus' - The response's http status code.
+newDescribeUsersResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  DescribeUsersResponse
+newDescribeUsersResponse pHttpStatus_ =
+  DescribeUsersResponse'
+    { marker = Prelude.Nothing,
+      totalNumberOfUsers = Prelude.Nothing,
+      users = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The marker to use when requesting the next set of results. If there are
+-- no additional results, the string is empty.
+describeUsersResponse_marker :: Lens.Lens' DescribeUsersResponse (Prelude.Maybe Prelude.Text)
+describeUsersResponse_marker = Lens.lens (\DescribeUsersResponse' {marker} -> marker) (\s@DescribeUsersResponse' {} a -> s {marker = a} :: DescribeUsersResponse)
+
+-- | The total number of users included in the results.
+describeUsersResponse_totalNumberOfUsers :: Lens.Lens' DescribeUsersResponse (Prelude.Maybe Prelude.Integer)
+describeUsersResponse_totalNumberOfUsers = Lens.lens (\DescribeUsersResponse' {totalNumberOfUsers} -> totalNumberOfUsers) (\s@DescribeUsersResponse' {} a -> s {totalNumberOfUsers = a} :: DescribeUsersResponse)
+
+-- | The users.
+describeUsersResponse_users :: Lens.Lens' DescribeUsersResponse (Prelude.Maybe [User])
+describeUsersResponse_users = Lens.lens (\DescribeUsersResponse' {users} -> users) (\s@DescribeUsersResponse' {} a -> s {users = a} :: DescribeUsersResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The response's http status code.
+describeUsersResponse_httpStatus :: Lens.Lens' DescribeUsersResponse Prelude.Int
+describeUsersResponse_httpStatus = Lens.lens (\DescribeUsersResponse' {httpStatus} -> httpStatus) (\s@DescribeUsersResponse' {} a -> s {httpStatus = a} :: DescribeUsersResponse)
+
+instance Prelude.NFData DescribeUsersResponse where
+  rnf DescribeUsersResponse' {..} =
+    Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf totalNumberOfUsers
+      `Prelude.seq` Prelude.rnf users
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/GetCurrentUser.hs b/gen/Amazonka/WorkDocs/GetCurrentUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/GetCurrentUser.hs
@@ -0,0 +1,165 @@
+{-# 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.WorkDocs.GetCurrentUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves details of the current user for whom the authentication token
+-- was generated. This is not a valid action for SigV4 (administrative API)
+-- clients.
+--
+-- This action requires an authentication token. To get an authentication
+-- token, register an application with Amazon WorkDocs. For more
+-- information, see
+-- <https://docs.aws.amazon.com/workdocs/latest/developerguide/wd-auth-user.html Authentication and Access Control for User Applications>
+-- in the /Amazon WorkDocs Developer Guide/.
+module Amazonka.WorkDocs.GetCurrentUser
+  ( -- * Creating a Request
+    GetCurrentUser (..),
+    newGetCurrentUser,
+
+    -- * Request Lenses
+    getCurrentUser_authenticationToken,
+
+    -- * Destructuring the Response
+    GetCurrentUserResponse (..),
+    newGetCurrentUserResponse,
+
+    -- * Response Lenses
+    getCurrentUserResponse_user,
+    getCurrentUserResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newGetCurrentUser' smart constructor.
+data GetCurrentUser = GetCurrentUser'
+  { -- | Amazon WorkDocs authentication token.
+    authenticationToken :: Data.Sensitive Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetCurrentUser' 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:
+--
+-- 'authenticationToken', 'getCurrentUser_authenticationToken' - Amazon WorkDocs authentication token.
+newGetCurrentUser ::
+  -- | 'authenticationToken'
+  Prelude.Text ->
+  GetCurrentUser
+newGetCurrentUser pAuthenticationToken_ =
+  GetCurrentUser'
+    { authenticationToken =
+        Data._Sensitive Lens.# pAuthenticationToken_
+    }
+
+-- | Amazon WorkDocs authentication token.
+getCurrentUser_authenticationToken :: Lens.Lens' GetCurrentUser Prelude.Text
+getCurrentUser_authenticationToken = Lens.lens (\GetCurrentUser' {authenticationToken} -> authenticationToken) (\s@GetCurrentUser' {} a -> s {authenticationToken = a} :: GetCurrentUser) Prelude.. Data._Sensitive
+
+instance Core.AWSRequest GetCurrentUser where
+  type
+    AWSResponse GetCurrentUser =
+      GetCurrentUserResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetCurrentUserResponse'
+            Prelude.<$> (x Data..?> "User")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetCurrentUser where
+  hashWithSalt _salt GetCurrentUser' {..} =
+    _salt `Prelude.hashWithSalt` authenticationToken
+
+instance Prelude.NFData GetCurrentUser where
+  rnf GetCurrentUser' {..} =
+    Prelude.rnf authenticationToken
+
+instance Data.ToHeaders GetCurrentUser where
+  toHeaders GetCurrentUser' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath GetCurrentUser where
+  toPath = Prelude.const "/api/v1/me"
+
+instance Data.ToQuery GetCurrentUser where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newGetCurrentUserResponse' smart constructor.
+data GetCurrentUserResponse = GetCurrentUserResponse'
+  { -- | Metadata of the user.
+    user :: Prelude.Maybe User,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetCurrentUserResponse' 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:
+--
+-- 'user', 'getCurrentUserResponse_user' - Metadata of the user.
+--
+-- 'httpStatus', 'getCurrentUserResponse_httpStatus' - The response's http status code.
+newGetCurrentUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetCurrentUserResponse
+newGetCurrentUserResponse pHttpStatus_ =
+  GetCurrentUserResponse'
+    { user = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | Metadata of the user.
+getCurrentUserResponse_user :: Lens.Lens' GetCurrentUserResponse (Prelude.Maybe User)
+getCurrentUserResponse_user = Lens.lens (\GetCurrentUserResponse' {user} -> user) (\s@GetCurrentUserResponse' {} a -> s {user = a} :: GetCurrentUserResponse)
+
+-- | The response's http status code.
+getCurrentUserResponse_httpStatus :: Lens.Lens' GetCurrentUserResponse Prelude.Int
+getCurrentUserResponse_httpStatus = Lens.lens (\GetCurrentUserResponse' {httpStatus} -> httpStatus) (\s@GetCurrentUserResponse' {} a -> s {httpStatus = a} :: GetCurrentUserResponse)
+
+instance Prelude.NFData GetCurrentUserResponse where
+  rnf GetCurrentUserResponse' {..} =
+    Prelude.rnf user
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/GetDocument.hs b/gen/Amazonka/WorkDocs/GetDocument.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/GetDocument.hs
@@ -0,0 +1,201 @@
+{-# 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.WorkDocs.GetDocument
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves details of a document.
+module Amazonka.WorkDocs.GetDocument
+  ( -- * Creating a Request
+    GetDocument (..),
+    newGetDocument,
+
+    -- * Request Lenses
+    getDocument_authenticationToken,
+    getDocument_includeCustomMetadata,
+    getDocument_documentId,
+
+    -- * Destructuring the Response
+    GetDocumentResponse (..),
+    newGetDocumentResponse,
+
+    -- * Response Lenses
+    getDocumentResponse_customMetadata,
+    getDocumentResponse_metadata,
+    getDocumentResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newGetDocument' smart constructor.
+data GetDocument = GetDocument'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Set this to @TRUE@ to include custom metadata in the response.
+    includeCustomMetadata :: Prelude.Maybe Prelude.Bool,
+    -- | The ID of the document.
+    documentId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetDocument' 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:
+--
+-- 'authenticationToken', 'getDocument_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'includeCustomMetadata', 'getDocument_includeCustomMetadata' - Set this to @TRUE@ to include custom metadata in the response.
+--
+-- 'documentId', 'getDocument_documentId' - The ID of the document.
+newGetDocument ::
+  -- | 'documentId'
+  Prelude.Text ->
+  GetDocument
+newGetDocument pDocumentId_ =
+  GetDocument'
+    { authenticationToken = Prelude.Nothing,
+      includeCustomMetadata = Prelude.Nothing,
+      documentId = pDocumentId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+getDocument_authenticationToken :: Lens.Lens' GetDocument (Prelude.Maybe Prelude.Text)
+getDocument_authenticationToken = Lens.lens (\GetDocument' {authenticationToken} -> authenticationToken) (\s@GetDocument' {} a -> s {authenticationToken = a} :: GetDocument) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Set this to @TRUE@ to include custom metadata in the response.
+getDocument_includeCustomMetadata :: Lens.Lens' GetDocument (Prelude.Maybe Prelude.Bool)
+getDocument_includeCustomMetadata = Lens.lens (\GetDocument' {includeCustomMetadata} -> includeCustomMetadata) (\s@GetDocument' {} a -> s {includeCustomMetadata = a} :: GetDocument)
+
+-- | The ID of the document.
+getDocument_documentId :: Lens.Lens' GetDocument Prelude.Text
+getDocument_documentId = Lens.lens (\GetDocument' {documentId} -> documentId) (\s@GetDocument' {} a -> s {documentId = a} :: GetDocument)
+
+instance Core.AWSRequest GetDocument where
+  type AWSResponse GetDocument = GetDocumentResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetDocumentResponse'
+            Prelude.<$> (x Data..?> "CustomMetadata" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Metadata")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetDocument where
+  hashWithSalt _salt GetDocument' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` includeCustomMetadata
+      `Prelude.hashWithSalt` documentId
+
+instance Prelude.NFData GetDocument where
+  rnf GetDocument' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf includeCustomMetadata
+      `Prelude.seq` Prelude.rnf documentId
+
+instance Data.ToHeaders GetDocument where
+  toHeaders GetDocument' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath GetDocument where
+  toPath GetDocument' {..} =
+    Prelude.mconcat
+      ["/api/v1/documents/", Data.toBS documentId]
+
+instance Data.ToQuery GetDocument where
+  toQuery GetDocument' {..} =
+    Prelude.mconcat
+      [ "includeCustomMetadata"
+          Data.=: includeCustomMetadata
+      ]
+
+-- | /See:/ 'newGetDocumentResponse' smart constructor.
+data GetDocumentResponse = GetDocumentResponse'
+  { -- | The custom metadata on the document.
+    customMetadata :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The metadata details of the document.
+    metadata :: Prelude.Maybe DocumentMetadata,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetDocumentResponse' 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:
+--
+-- 'customMetadata', 'getDocumentResponse_customMetadata' - The custom metadata on the document.
+--
+-- 'metadata', 'getDocumentResponse_metadata' - The metadata details of the document.
+--
+-- 'httpStatus', 'getDocumentResponse_httpStatus' - The response's http status code.
+newGetDocumentResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetDocumentResponse
+newGetDocumentResponse pHttpStatus_ =
+  GetDocumentResponse'
+    { customMetadata =
+        Prelude.Nothing,
+      metadata = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The custom metadata on the document.
+getDocumentResponse_customMetadata :: Lens.Lens' GetDocumentResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getDocumentResponse_customMetadata = Lens.lens (\GetDocumentResponse' {customMetadata} -> customMetadata) (\s@GetDocumentResponse' {} a -> s {customMetadata = a} :: GetDocumentResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The metadata details of the document.
+getDocumentResponse_metadata :: Lens.Lens' GetDocumentResponse (Prelude.Maybe DocumentMetadata)
+getDocumentResponse_metadata = Lens.lens (\GetDocumentResponse' {metadata} -> metadata) (\s@GetDocumentResponse' {} a -> s {metadata = a} :: GetDocumentResponse)
+
+-- | The response's http status code.
+getDocumentResponse_httpStatus :: Lens.Lens' GetDocumentResponse Prelude.Int
+getDocumentResponse_httpStatus = Lens.lens (\GetDocumentResponse' {httpStatus} -> httpStatus) (\s@GetDocumentResponse' {} a -> s {httpStatus = a} :: GetDocumentResponse)
+
+instance Prelude.NFData GetDocumentResponse where
+  rnf GetDocumentResponse' {..} =
+    Prelude.rnf customMetadata
+      `Prelude.seq` Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/GetDocumentPath.hs b/gen/Amazonka/WorkDocs/GetDocumentPath.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/GetDocumentPath.hs
@@ -0,0 +1,225 @@
+{-# 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.WorkDocs.GetDocumentPath
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the path information (the hierarchy from the root folder) for
+-- the requested document.
+--
+-- By default, Amazon WorkDocs returns a maximum of 100 levels upwards from
+-- the requested document and only includes the IDs of the parent folders
+-- in the path. You can limit the maximum number of levels. You can also
+-- request the names of the parent folders.
+module Amazonka.WorkDocs.GetDocumentPath
+  ( -- * Creating a Request
+    GetDocumentPath (..),
+    newGetDocumentPath,
+
+    -- * Request Lenses
+    getDocumentPath_authenticationToken,
+    getDocumentPath_fields,
+    getDocumentPath_limit,
+    getDocumentPath_marker,
+    getDocumentPath_documentId,
+
+    -- * Destructuring the Response
+    GetDocumentPathResponse (..),
+    newGetDocumentPathResponse,
+
+    -- * Response Lenses
+    getDocumentPathResponse_path,
+    getDocumentPathResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newGetDocumentPath' smart constructor.
+data GetDocumentPath = GetDocumentPath'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | A comma-separated list of values. Specify @NAME@ to include the names of
+    -- the parent folders.
+    fields :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of levels in the hierarchy to return.
+    limit :: Prelude.Maybe Prelude.Natural,
+    -- | This value is not supported.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the document.
+    documentId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetDocumentPath' 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:
+--
+-- 'authenticationToken', 'getDocumentPath_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'fields', 'getDocumentPath_fields' - A comma-separated list of values. Specify @NAME@ to include the names of
+-- the parent folders.
+--
+-- 'limit', 'getDocumentPath_limit' - The maximum number of levels in the hierarchy to return.
+--
+-- 'marker', 'getDocumentPath_marker' - This value is not supported.
+--
+-- 'documentId', 'getDocumentPath_documentId' - The ID of the document.
+newGetDocumentPath ::
+  -- | 'documentId'
+  Prelude.Text ->
+  GetDocumentPath
+newGetDocumentPath pDocumentId_ =
+  GetDocumentPath'
+    { authenticationToken =
+        Prelude.Nothing,
+      fields = Prelude.Nothing,
+      limit = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      documentId = pDocumentId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+getDocumentPath_authenticationToken :: Lens.Lens' GetDocumentPath (Prelude.Maybe Prelude.Text)
+getDocumentPath_authenticationToken = Lens.lens (\GetDocumentPath' {authenticationToken} -> authenticationToken) (\s@GetDocumentPath' {} a -> s {authenticationToken = a} :: GetDocumentPath) Prelude.. Lens.mapping Data._Sensitive
+
+-- | A comma-separated list of values. Specify @NAME@ to include the names of
+-- the parent folders.
+getDocumentPath_fields :: Lens.Lens' GetDocumentPath (Prelude.Maybe Prelude.Text)
+getDocumentPath_fields = Lens.lens (\GetDocumentPath' {fields} -> fields) (\s@GetDocumentPath' {} a -> s {fields = a} :: GetDocumentPath)
+
+-- | The maximum number of levels in the hierarchy to return.
+getDocumentPath_limit :: Lens.Lens' GetDocumentPath (Prelude.Maybe Prelude.Natural)
+getDocumentPath_limit = Lens.lens (\GetDocumentPath' {limit} -> limit) (\s@GetDocumentPath' {} a -> s {limit = a} :: GetDocumentPath)
+
+-- | This value is not supported.
+getDocumentPath_marker :: Lens.Lens' GetDocumentPath (Prelude.Maybe Prelude.Text)
+getDocumentPath_marker = Lens.lens (\GetDocumentPath' {marker} -> marker) (\s@GetDocumentPath' {} a -> s {marker = a} :: GetDocumentPath)
+
+-- | The ID of the document.
+getDocumentPath_documentId :: Lens.Lens' GetDocumentPath Prelude.Text
+getDocumentPath_documentId = Lens.lens (\GetDocumentPath' {documentId} -> documentId) (\s@GetDocumentPath' {} a -> s {documentId = a} :: GetDocumentPath)
+
+instance Core.AWSRequest GetDocumentPath where
+  type
+    AWSResponse GetDocumentPath =
+      GetDocumentPathResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetDocumentPathResponse'
+            Prelude.<$> (x Data..?> "Path")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetDocumentPath where
+  hashWithSalt _salt GetDocumentPath' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` fields
+      `Prelude.hashWithSalt` limit
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` documentId
+
+instance Prelude.NFData GetDocumentPath where
+  rnf GetDocumentPath' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf fields
+      `Prelude.seq` Prelude.rnf limit
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf documentId
+
+instance Data.ToHeaders GetDocumentPath where
+  toHeaders GetDocumentPath' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath GetDocumentPath where
+  toPath GetDocumentPath' {..} =
+    Prelude.mconcat
+      ["/api/v1/documents/", Data.toBS documentId, "/path"]
+
+instance Data.ToQuery GetDocumentPath where
+  toQuery GetDocumentPath' {..} =
+    Prelude.mconcat
+      [ "fields" Data.=: fields,
+        "limit" Data.=: limit,
+        "marker" Data.=: marker
+      ]
+
+-- | /See:/ 'newGetDocumentPathResponse' smart constructor.
+data GetDocumentPathResponse = GetDocumentPathResponse'
+  { -- | The path information.
+    path :: Prelude.Maybe ResourcePath,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetDocumentPathResponse' 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:
+--
+-- 'path', 'getDocumentPathResponse_path' - The path information.
+--
+-- 'httpStatus', 'getDocumentPathResponse_httpStatus' - The response's http status code.
+newGetDocumentPathResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetDocumentPathResponse
+newGetDocumentPathResponse pHttpStatus_ =
+  GetDocumentPathResponse'
+    { path = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The path information.
+getDocumentPathResponse_path :: Lens.Lens' GetDocumentPathResponse (Prelude.Maybe ResourcePath)
+getDocumentPathResponse_path = Lens.lens (\GetDocumentPathResponse' {path} -> path) (\s@GetDocumentPathResponse' {} a -> s {path = a} :: GetDocumentPathResponse)
+
+-- | The response's http status code.
+getDocumentPathResponse_httpStatus :: Lens.Lens' GetDocumentPathResponse Prelude.Int
+getDocumentPathResponse_httpStatus = Lens.lens (\GetDocumentPathResponse' {httpStatus} -> httpStatus) (\s@GetDocumentPathResponse' {} a -> s {httpStatus = a} :: GetDocumentPathResponse)
+
+instance Prelude.NFData GetDocumentPathResponse where
+  rnf GetDocumentPathResponse' {..} =
+    Prelude.rnf path
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/GetDocumentVersion.hs b/gen/Amazonka/WorkDocs/GetDocumentVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/GetDocumentVersion.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.WorkDocs.GetDocumentVersion
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves version metadata for the specified document.
+module Amazonka.WorkDocs.GetDocumentVersion
+  ( -- * Creating a Request
+    GetDocumentVersion (..),
+    newGetDocumentVersion,
+
+    -- * Request Lenses
+    getDocumentVersion_authenticationToken,
+    getDocumentVersion_fields,
+    getDocumentVersion_includeCustomMetadata,
+    getDocumentVersion_documentId,
+    getDocumentVersion_versionId,
+
+    -- * Destructuring the Response
+    GetDocumentVersionResponse (..),
+    newGetDocumentVersionResponse,
+
+    -- * Response Lenses
+    getDocumentVersionResponse_customMetadata,
+    getDocumentVersionResponse_metadata,
+    getDocumentVersionResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newGetDocumentVersion' smart constructor.
+data GetDocumentVersion = GetDocumentVersion'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | A comma-separated list of values. Specify \"SOURCE\" to include a URL
+    -- for the source document.
+    fields :: Prelude.Maybe Prelude.Text,
+    -- | Set this to TRUE to include custom metadata in the response.
+    includeCustomMetadata :: Prelude.Maybe Prelude.Bool,
+    -- | The ID of the document.
+    documentId :: Prelude.Text,
+    -- | The version ID of the document.
+    versionId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetDocumentVersion' 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:
+--
+-- 'authenticationToken', 'getDocumentVersion_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'fields', 'getDocumentVersion_fields' - A comma-separated list of values. Specify \"SOURCE\" to include a URL
+-- for the source document.
+--
+-- 'includeCustomMetadata', 'getDocumentVersion_includeCustomMetadata' - Set this to TRUE to include custom metadata in the response.
+--
+-- 'documentId', 'getDocumentVersion_documentId' - The ID of the document.
+--
+-- 'versionId', 'getDocumentVersion_versionId' - The version ID of the document.
+newGetDocumentVersion ::
+  -- | 'documentId'
+  Prelude.Text ->
+  -- | 'versionId'
+  Prelude.Text ->
+  GetDocumentVersion
+newGetDocumentVersion pDocumentId_ pVersionId_ =
+  GetDocumentVersion'
+    { authenticationToken =
+        Prelude.Nothing,
+      fields = Prelude.Nothing,
+      includeCustomMetadata = Prelude.Nothing,
+      documentId = pDocumentId_,
+      versionId = pVersionId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+getDocumentVersion_authenticationToken :: Lens.Lens' GetDocumentVersion (Prelude.Maybe Prelude.Text)
+getDocumentVersion_authenticationToken = Lens.lens (\GetDocumentVersion' {authenticationToken} -> authenticationToken) (\s@GetDocumentVersion' {} a -> s {authenticationToken = a} :: GetDocumentVersion) Prelude.. Lens.mapping Data._Sensitive
+
+-- | A comma-separated list of values. Specify \"SOURCE\" to include a URL
+-- for the source document.
+getDocumentVersion_fields :: Lens.Lens' GetDocumentVersion (Prelude.Maybe Prelude.Text)
+getDocumentVersion_fields = Lens.lens (\GetDocumentVersion' {fields} -> fields) (\s@GetDocumentVersion' {} a -> s {fields = a} :: GetDocumentVersion)
+
+-- | Set this to TRUE to include custom metadata in the response.
+getDocumentVersion_includeCustomMetadata :: Lens.Lens' GetDocumentVersion (Prelude.Maybe Prelude.Bool)
+getDocumentVersion_includeCustomMetadata = Lens.lens (\GetDocumentVersion' {includeCustomMetadata} -> includeCustomMetadata) (\s@GetDocumentVersion' {} a -> s {includeCustomMetadata = a} :: GetDocumentVersion)
+
+-- | The ID of the document.
+getDocumentVersion_documentId :: Lens.Lens' GetDocumentVersion Prelude.Text
+getDocumentVersion_documentId = Lens.lens (\GetDocumentVersion' {documentId} -> documentId) (\s@GetDocumentVersion' {} a -> s {documentId = a} :: GetDocumentVersion)
+
+-- | The version ID of the document.
+getDocumentVersion_versionId :: Lens.Lens' GetDocumentVersion Prelude.Text
+getDocumentVersion_versionId = Lens.lens (\GetDocumentVersion' {versionId} -> versionId) (\s@GetDocumentVersion' {} a -> s {versionId = a} :: GetDocumentVersion)
+
+instance Core.AWSRequest GetDocumentVersion where
+  type
+    AWSResponse GetDocumentVersion =
+      GetDocumentVersionResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetDocumentVersionResponse'
+            Prelude.<$> (x Data..?> "CustomMetadata" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Metadata")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetDocumentVersion where
+  hashWithSalt _salt GetDocumentVersion' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` fields
+      `Prelude.hashWithSalt` includeCustomMetadata
+      `Prelude.hashWithSalt` documentId
+      `Prelude.hashWithSalt` versionId
+
+instance Prelude.NFData GetDocumentVersion where
+  rnf GetDocumentVersion' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf fields
+      `Prelude.seq` Prelude.rnf includeCustomMetadata
+      `Prelude.seq` Prelude.rnf documentId
+      `Prelude.seq` Prelude.rnf versionId
+
+instance Data.ToHeaders GetDocumentVersion where
+  toHeaders GetDocumentVersion' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath GetDocumentVersion where
+  toPath GetDocumentVersion' {..} =
+    Prelude.mconcat
+      [ "/api/v1/documents/",
+        Data.toBS documentId,
+        "/versions/",
+        Data.toBS versionId
+      ]
+
+instance Data.ToQuery GetDocumentVersion where
+  toQuery GetDocumentVersion' {..} =
+    Prelude.mconcat
+      [ "fields" Data.=: fields,
+        "includeCustomMetadata"
+          Data.=: includeCustomMetadata
+      ]
+
+-- | /See:/ 'newGetDocumentVersionResponse' smart constructor.
+data GetDocumentVersionResponse = GetDocumentVersionResponse'
+  { -- | The custom metadata on the document version.
+    customMetadata :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The version metadata.
+    metadata :: Prelude.Maybe DocumentVersionMetadata,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetDocumentVersionResponse' 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:
+--
+-- 'customMetadata', 'getDocumentVersionResponse_customMetadata' - The custom metadata on the document version.
+--
+-- 'metadata', 'getDocumentVersionResponse_metadata' - The version metadata.
+--
+-- 'httpStatus', 'getDocumentVersionResponse_httpStatus' - The response's http status code.
+newGetDocumentVersionResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetDocumentVersionResponse
+newGetDocumentVersionResponse pHttpStatus_ =
+  GetDocumentVersionResponse'
+    { customMetadata =
+        Prelude.Nothing,
+      metadata = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The custom metadata on the document version.
+getDocumentVersionResponse_customMetadata :: Lens.Lens' GetDocumentVersionResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getDocumentVersionResponse_customMetadata = Lens.lens (\GetDocumentVersionResponse' {customMetadata} -> customMetadata) (\s@GetDocumentVersionResponse' {} a -> s {customMetadata = a} :: GetDocumentVersionResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The version metadata.
+getDocumentVersionResponse_metadata :: Lens.Lens' GetDocumentVersionResponse (Prelude.Maybe DocumentVersionMetadata)
+getDocumentVersionResponse_metadata = Lens.lens (\GetDocumentVersionResponse' {metadata} -> metadata) (\s@GetDocumentVersionResponse' {} a -> s {metadata = a} :: GetDocumentVersionResponse)
+
+-- | The response's http status code.
+getDocumentVersionResponse_httpStatus :: Lens.Lens' GetDocumentVersionResponse Prelude.Int
+getDocumentVersionResponse_httpStatus = Lens.lens (\GetDocumentVersionResponse' {httpStatus} -> httpStatus) (\s@GetDocumentVersionResponse' {} a -> s {httpStatus = a} :: GetDocumentVersionResponse)
+
+instance Prelude.NFData GetDocumentVersionResponse where
+  rnf GetDocumentVersionResponse' {..} =
+    Prelude.rnf customMetadata
+      `Prelude.seq` Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/GetFolder.hs b/gen/Amazonka/WorkDocs/GetFolder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/GetFolder.hs
@@ -0,0 +1,201 @@
+{-# 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.WorkDocs.GetFolder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the metadata of the specified folder.
+module Amazonka.WorkDocs.GetFolder
+  ( -- * Creating a Request
+    GetFolder (..),
+    newGetFolder,
+
+    -- * Request Lenses
+    getFolder_authenticationToken,
+    getFolder_includeCustomMetadata,
+    getFolder_folderId,
+
+    -- * Destructuring the Response
+    GetFolderResponse (..),
+    newGetFolderResponse,
+
+    -- * Response Lenses
+    getFolderResponse_customMetadata,
+    getFolderResponse_metadata,
+    getFolderResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newGetFolder' smart constructor.
+data GetFolder = GetFolder'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Set to TRUE to include custom metadata in the response.
+    includeCustomMetadata :: Prelude.Maybe Prelude.Bool,
+    -- | The ID of the folder.
+    folderId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetFolder' 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:
+--
+-- 'authenticationToken', 'getFolder_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'includeCustomMetadata', 'getFolder_includeCustomMetadata' - Set to TRUE to include custom metadata in the response.
+--
+-- 'folderId', 'getFolder_folderId' - The ID of the folder.
+newGetFolder ::
+  -- | 'folderId'
+  Prelude.Text ->
+  GetFolder
+newGetFolder pFolderId_ =
+  GetFolder'
+    { authenticationToken = Prelude.Nothing,
+      includeCustomMetadata = Prelude.Nothing,
+      folderId = pFolderId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+getFolder_authenticationToken :: Lens.Lens' GetFolder (Prelude.Maybe Prelude.Text)
+getFolder_authenticationToken = Lens.lens (\GetFolder' {authenticationToken} -> authenticationToken) (\s@GetFolder' {} a -> s {authenticationToken = a} :: GetFolder) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Set to TRUE to include custom metadata in the response.
+getFolder_includeCustomMetadata :: Lens.Lens' GetFolder (Prelude.Maybe Prelude.Bool)
+getFolder_includeCustomMetadata = Lens.lens (\GetFolder' {includeCustomMetadata} -> includeCustomMetadata) (\s@GetFolder' {} a -> s {includeCustomMetadata = a} :: GetFolder)
+
+-- | The ID of the folder.
+getFolder_folderId :: Lens.Lens' GetFolder Prelude.Text
+getFolder_folderId = Lens.lens (\GetFolder' {folderId} -> folderId) (\s@GetFolder' {} a -> s {folderId = a} :: GetFolder)
+
+instance Core.AWSRequest GetFolder where
+  type AWSResponse GetFolder = GetFolderResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetFolderResponse'
+            Prelude.<$> (x Data..?> "CustomMetadata" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Metadata")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetFolder where
+  hashWithSalt _salt GetFolder' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` includeCustomMetadata
+      `Prelude.hashWithSalt` folderId
+
+instance Prelude.NFData GetFolder where
+  rnf GetFolder' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf includeCustomMetadata
+      `Prelude.seq` Prelude.rnf folderId
+
+instance Data.ToHeaders GetFolder where
+  toHeaders GetFolder' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath GetFolder where
+  toPath GetFolder' {..} =
+    Prelude.mconcat
+      ["/api/v1/folders/", Data.toBS folderId]
+
+instance Data.ToQuery GetFolder where
+  toQuery GetFolder' {..} =
+    Prelude.mconcat
+      [ "includeCustomMetadata"
+          Data.=: includeCustomMetadata
+      ]
+
+-- | /See:/ 'newGetFolderResponse' smart constructor.
+data GetFolderResponse = GetFolderResponse'
+  { -- | The custom metadata on the folder.
+    customMetadata :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The metadata of the folder.
+    metadata :: Prelude.Maybe FolderMetadata,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetFolderResponse' 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:
+--
+-- 'customMetadata', 'getFolderResponse_customMetadata' - The custom metadata on the folder.
+--
+-- 'metadata', 'getFolderResponse_metadata' - The metadata of the folder.
+--
+-- 'httpStatus', 'getFolderResponse_httpStatus' - The response's http status code.
+newGetFolderResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetFolderResponse
+newGetFolderResponse pHttpStatus_ =
+  GetFolderResponse'
+    { customMetadata =
+        Prelude.Nothing,
+      metadata = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The custom metadata on the folder.
+getFolderResponse_customMetadata :: Lens.Lens' GetFolderResponse (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+getFolderResponse_customMetadata = Lens.lens (\GetFolderResponse' {customMetadata} -> customMetadata) (\s@GetFolderResponse' {} a -> s {customMetadata = a} :: GetFolderResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The metadata of the folder.
+getFolderResponse_metadata :: Lens.Lens' GetFolderResponse (Prelude.Maybe FolderMetadata)
+getFolderResponse_metadata = Lens.lens (\GetFolderResponse' {metadata} -> metadata) (\s@GetFolderResponse' {} a -> s {metadata = a} :: GetFolderResponse)
+
+-- | The response's http status code.
+getFolderResponse_httpStatus :: Lens.Lens' GetFolderResponse Prelude.Int
+getFolderResponse_httpStatus = Lens.lens (\GetFolderResponse' {httpStatus} -> httpStatus) (\s@GetFolderResponse' {} a -> s {httpStatus = a} :: GetFolderResponse)
+
+instance Prelude.NFData GetFolderResponse where
+  rnf GetFolderResponse' {..} =
+    Prelude.rnf customMetadata
+      `Prelude.seq` Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/GetFolderPath.hs b/gen/Amazonka/WorkDocs/GetFolderPath.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/GetFolderPath.hs
@@ -0,0 +1,225 @@
+{-# 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.WorkDocs.GetFolderPath
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves the path information (the hierarchy from the root folder) for
+-- the specified folder.
+--
+-- By default, Amazon WorkDocs returns a maximum of 100 levels upwards from
+-- the requested folder and only includes the IDs of the parent folders in
+-- the path. You can limit the maximum number of levels. You can also
+-- request the parent folder names.
+module Amazonka.WorkDocs.GetFolderPath
+  ( -- * Creating a Request
+    GetFolderPath (..),
+    newGetFolderPath,
+
+    -- * Request Lenses
+    getFolderPath_authenticationToken,
+    getFolderPath_fields,
+    getFolderPath_limit,
+    getFolderPath_marker,
+    getFolderPath_folderId,
+
+    -- * Destructuring the Response
+    GetFolderPathResponse (..),
+    newGetFolderPathResponse,
+
+    -- * Response Lenses
+    getFolderPathResponse_path,
+    getFolderPathResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newGetFolderPath' smart constructor.
+data GetFolderPath = GetFolderPath'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | A comma-separated list of values. Specify \"NAME\" to include the names
+    -- of the parent folders.
+    fields :: Prelude.Maybe Prelude.Text,
+    -- | The maximum number of levels in the hierarchy to return.
+    limit :: Prelude.Maybe Prelude.Natural,
+    -- | This value is not supported.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the folder.
+    folderId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetFolderPath' 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:
+--
+-- 'authenticationToken', 'getFolderPath_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'fields', 'getFolderPath_fields' - A comma-separated list of values. Specify \"NAME\" to include the names
+-- of the parent folders.
+--
+-- 'limit', 'getFolderPath_limit' - The maximum number of levels in the hierarchy to return.
+--
+-- 'marker', 'getFolderPath_marker' - This value is not supported.
+--
+-- 'folderId', 'getFolderPath_folderId' - The ID of the folder.
+newGetFolderPath ::
+  -- | 'folderId'
+  Prelude.Text ->
+  GetFolderPath
+newGetFolderPath pFolderId_ =
+  GetFolderPath'
+    { authenticationToken =
+        Prelude.Nothing,
+      fields = Prelude.Nothing,
+      limit = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      folderId = pFolderId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+getFolderPath_authenticationToken :: Lens.Lens' GetFolderPath (Prelude.Maybe Prelude.Text)
+getFolderPath_authenticationToken = Lens.lens (\GetFolderPath' {authenticationToken} -> authenticationToken) (\s@GetFolderPath' {} a -> s {authenticationToken = a} :: GetFolderPath) Prelude.. Lens.mapping Data._Sensitive
+
+-- | A comma-separated list of values. Specify \"NAME\" to include the names
+-- of the parent folders.
+getFolderPath_fields :: Lens.Lens' GetFolderPath (Prelude.Maybe Prelude.Text)
+getFolderPath_fields = Lens.lens (\GetFolderPath' {fields} -> fields) (\s@GetFolderPath' {} a -> s {fields = a} :: GetFolderPath)
+
+-- | The maximum number of levels in the hierarchy to return.
+getFolderPath_limit :: Lens.Lens' GetFolderPath (Prelude.Maybe Prelude.Natural)
+getFolderPath_limit = Lens.lens (\GetFolderPath' {limit} -> limit) (\s@GetFolderPath' {} a -> s {limit = a} :: GetFolderPath)
+
+-- | This value is not supported.
+getFolderPath_marker :: Lens.Lens' GetFolderPath (Prelude.Maybe Prelude.Text)
+getFolderPath_marker = Lens.lens (\GetFolderPath' {marker} -> marker) (\s@GetFolderPath' {} a -> s {marker = a} :: GetFolderPath)
+
+-- | The ID of the folder.
+getFolderPath_folderId :: Lens.Lens' GetFolderPath Prelude.Text
+getFolderPath_folderId = Lens.lens (\GetFolderPath' {folderId} -> folderId) (\s@GetFolderPath' {} a -> s {folderId = a} :: GetFolderPath)
+
+instance Core.AWSRequest GetFolderPath where
+  type
+    AWSResponse GetFolderPath =
+      GetFolderPathResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetFolderPathResponse'
+            Prelude.<$> (x Data..?> "Path")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetFolderPath where
+  hashWithSalt _salt GetFolderPath' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` fields
+      `Prelude.hashWithSalt` limit
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` folderId
+
+instance Prelude.NFData GetFolderPath where
+  rnf GetFolderPath' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf fields
+      `Prelude.seq` Prelude.rnf limit
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf folderId
+
+instance Data.ToHeaders GetFolderPath where
+  toHeaders GetFolderPath' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath GetFolderPath where
+  toPath GetFolderPath' {..} =
+    Prelude.mconcat
+      ["/api/v1/folders/", Data.toBS folderId, "/path"]
+
+instance Data.ToQuery GetFolderPath where
+  toQuery GetFolderPath' {..} =
+    Prelude.mconcat
+      [ "fields" Data.=: fields,
+        "limit" Data.=: limit,
+        "marker" Data.=: marker
+      ]
+
+-- | /See:/ 'newGetFolderPathResponse' smart constructor.
+data GetFolderPathResponse = GetFolderPathResponse'
+  { -- | The path information.
+    path :: Prelude.Maybe ResourcePath,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetFolderPathResponse' 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:
+--
+-- 'path', 'getFolderPathResponse_path' - The path information.
+--
+-- 'httpStatus', 'getFolderPathResponse_httpStatus' - The response's http status code.
+newGetFolderPathResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetFolderPathResponse
+newGetFolderPathResponse pHttpStatus_ =
+  GetFolderPathResponse'
+    { path = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The path information.
+getFolderPathResponse_path :: Lens.Lens' GetFolderPathResponse (Prelude.Maybe ResourcePath)
+getFolderPathResponse_path = Lens.lens (\GetFolderPathResponse' {path} -> path) (\s@GetFolderPathResponse' {} a -> s {path = a} :: GetFolderPathResponse)
+
+-- | The response's http status code.
+getFolderPathResponse_httpStatus :: Lens.Lens' GetFolderPathResponse Prelude.Int
+getFolderPathResponse_httpStatus = Lens.lens (\GetFolderPathResponse' {httpStatus} -> httpStatus) (\s@GetFolderPathResponse' {} a -> s {httpStatus = a} :: GetFolderPathResponse)
+
+instance Prelude.NFData GetFolderPathResponse where
+  rnf GetFolderPathResponse' {..} =
+    Prelude.rnf path
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/GetResources.hs b/gen/Amazonka/WorkDocs/GetResources.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/GetResources.hs
@@ -0,0 +1,245 @@
+{-# 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.WorkDocs.GetResources
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Retrieves a collection of resources, including folders and documents.
+-- The only @CollectionType@ supported is @SHARED_WITH_ME@.
+module Amazonka.WorkDocs.GetResources
+  ( -- * Creating a Request
+    GetResources (..),
+    newGetResources,
+
+    -- * Request Lenses
+    getResources_authenticationToken,
+    getResources_collectionType,
+    getResources_limit,
+    getResources_marker,
+    getResources_userId,
+
+    -- * Destructuring the Response
+    GetResourcesResponse (..),
+    newGetResourcesResponse,
+
+    -- * Response Lenses
+    getResourcesResponse_documents,
+    getResourcesResponse_folders,
+    getResourcesResponse_marker,
+    getResourcesResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newGetResources' smart constructor.
+data GetResources = GetResources'
+  { -- | The Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The collection type.
+    collectionType :: Prelude.Maybe ResourceCollectionType,
+    -- | The maximum number of resources to return.
+    limit :: Prelude.Maybe Prelude.Natural,
+    -- | The marker for the next set of results. This marker was received from a
+    -- previous call.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The user ID for the resource collection. This is a required field for
+    -- accessing the API operation using IAM credentials.
+    userId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetResources' 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:
+--
+-- 'authenticationToken', 'getResources_authenticationToken' - The Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'collectionType', 'getResources_collectionType' - The collection type.
+--
+-- 'limit', 'getResources_limit' - The maximum number of resources to return.
+--
+-- 'marker', 'getResources_marker' - The marker for the next set of results. This marker was received from a
+-- previous call.
+--
+-- 'userId', 'getResources_userId' - The user ID for the resource collection. This is a required field for
+-- accessing the API operation using IAM credentials.
+newGetResources ::
+  GetResources
+newGetResources =
+  GetResources'
+    { authenticationToken =
+        Prelude.Nothing,
+      collectionType = Prelude.Nothing,
+      limit = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      userId = Prelude.Nothing
+    }
+
+-- | The Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+getResources_authenticationToken :: Lens.Lens' GetResources (Prelude.Maybe Prelude.Text)
+getResources_authenticationToken = Lens.lens (\GetResources' {authenticationToken} -> authenticationToken) (\s@GetResources' {} a -> s {authenticationToken = a} :: GetResources) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The collection type.
+getResources_collectionType :: Lens.Lens' GetResources (Prelude.Maybe ResourceCollectionType)
+getResources_collectionType = Lens.lens (\GetResources' {collectionType} -> collectionType) (\s@GetResources' {} a -> s {collectionType = a} :: GetResources)
+
+-- | The maximum number of resources to return.
+getResources_limit :: Lens.Lens' GetResources (Prelude.Maybe Prelude.Natural)
+getResources_limit = Lens.lens (\GetResources' {limit} -> limit) (\s@GetResources' {} a -> s {limit = a} :: GetResources)
+
+-- | The marker for the next set of results. This marker was received from a
+-- previous call.
+getResources_marker :: Lens.Lens' GetResources (Prelude.Maybe Prelude.Text)
+getResources_marker = Lens.lens (\GetResources' {marker} -> marker) (\s@GetResources' {} a -> s {marker = a} :: GetResources)
+
+-- | The user ID for the resource collection. This is a required field for
+-- accessing the API operation using IAM credentials.
+getResources_userId :: Lens.Lens' GetResources (Prelude.Maybe Prelude.Text)
+getResources_userId = Lens.lens (\GetResources' {userId} -> userId) (\s@GetResources' {} a -> s {userId = a} :: GetResources)
+
+instance Core.AWSRequest GetResources where
+  type AWSResponse GetResources = GetResourcesResponse
+  request overrides =
+    Request.get (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          GetResourcesResponse'
+            Prelude.<$> (x Data..?> "Documents" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Folders" Core..!@ Prelude.mempty)
+            Prelude.<*> (x Data..?> "Marker")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable GetResources where
+  hashWithSalt _salt GetResources' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` collectionType
+      `Prelude.hashWithSalt` limit
+      `Prelude.hashWithSalt` marker
+      `Prelude.hashWithSalt` userId
+
+instance Prelude.NFData GetResources where
+  rnf GetResources' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf collectionType
+      `Prelude.seq` Prelude.rnf limit
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf userId
+
+instance Data.ToHeaders GetResources where
+  toHeaders GetResources' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath GetResources where
+  toPath = Prelude.const "/api/v1/resources"
+
+instance Data.ToQuery GetResources where
+  toQuery GetResources' {..} =
+    Prelude.mconcat
+      [ "collectionType" Data.=: collectionType,
+        "limit" Data.=: limit,
+        "marker" Data.=: marker,
+        "userId" Data.=: userId
+      ]
+
+-- | /See:/ 'newGetResourcesResponse' smart constructor.
+data GetResourcesResponse = GetResourcesResponse'
+  { -- | The documents in the specified collection.
+    documents :: Prelude.Maybe [DocumentMetadata],
+    -- | The folders in the specified folder.
+    folders :: Prelude.Maybe [FolderMetadata],
+    -- | The marker to use when requesting the next set of results. If there are
+    -- no additional results, the string is empty.
+    marker :: Prelude.Maybe Prelude.Text,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GetResourcesResponse' 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:
+--
+-- 'documents', 'getResourcesResponse_documents' - The documents in the specified collection.
+--
+-- 'folders', 'getResourcesResponse_folders' - The folders in the specified folder.
+--
+-- 'marker', 'getResourcesResponse_marker' - The marker to use when requesting the next set of results. If there are
+-- no additional results, the string is empty.
+--
+-- 'httpStatus', 'getResourcesResponse_httpStatus' - The response's http status code.
+newGetResourcesResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  GetResourcesResponse
+newGetResourcesResponse pHttpStatus_ =
+  GetResourcesResponse'
+    { documents = Prelude.Nothing,
+      folders = Prelude.Nothing,
+      marker = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The documents in the specified collection.
+getResourcesResponse_documents :: Lens.Lens' GetResourcesResponse (Prelude.Maybe [DocumentMetadata])
+getResourcesResponse_documents = Lens.lens (\GetResourcesResponse' {documents} -> documents) (\s@GetResourcesResponse' {} a -> s {documents = a} :: GetResourcesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The folders in the specified folder.
+getResourcesResponse_folders :: Lens.Lens' GetResourcesResponse (Prelude.Maybe [FolderMetadata])
+getResourcesResponse_folders = Lens.lens (\GetResourcesResponse' {folders} -> folders) (\s@GetResourcesResponse' {} a -> s {folders = a} :: GetResourcesResponse) Prelude.. Lens.mapping Lens.coerced
+
+-- | The marker to use when requesting the next set of results. If there are
+-- no additional results, the string is empty.
+getResourcesResponse_marker :: Lens.Lens' GetResourcesResponse (Prelude.Maybe Prelude.Text)
+getResourcesResponse_marker = Lens.lens (\GetResourcesResponse' {marker} -> marker) (\s@GetResourcesResponse' {} a -> s {marker = a} :: GetResourcesResponse)
+
+-- | The response's http status code.
+getResourcesResponse_httpStatus :: Lens.Lens' GetResourcesResponse Prelude.Int
+getResourcesResponse_httpStatus = Lens.lens (\GetResourcesResponse' {httpStatus} -> httpStatus) (\s@GetResourcesResponse' {} a -> s {httpStatus = a} :: GetResourcesResponse)
+
+instance Prelude.NFData GetResourcesResponse where
+  rnf GetResourcesResponse' {..} =
+    Prelude.rnf documents
+      `Prelude.seq` Prelude.rnf folders
+      `Prelude.seq` Prelude.rnf marker
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/InitiateDocumentVersionUpload.hs b/gen/Amazonka/WorkDocs/InitiateDocumentVersionUpload.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/InitiateDocumentVersionUpload.hs
@@ -0,0 +1,291 @@
+{-# 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.WorkDocs.InitiateDocumentVersionUpload
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new document object and version object.
+--
+-- The client specifies the parent folder ID and name of the document to
+-- upload. The ID is optionally specified when creating a new version of an
+-- existing document. This is the first step to upload a document. Next,
+-- upload the document to the URL returned from the call, and then call
+-- UpdateDocumentVersion.
+--
+-- To cancel the document upload, call AbortDocumentVersionUpload.
+module Amazonka.WorkDocs.InitiateDocumentVersionUpload
+  ( -- * Creating a Request
+    InitiateDocumentVersionUpload (..),
+    newInitiateDocumentVersionUpload,
+
+    -- * Request Lenses
+    initiateDocumentVersionUpload_authenticationToken,
+    initiateDocumentVersionUpload_contentCreatedTimestamp,
+    initiateDocumentVersionUpload_contentModifiedTimestamp,
+    initiateDocumentVersionUpload_contentType,
+    initiateDocumentVersionUpload_documentSizeInBytes,
+    initiateDocumentVersionUpload_id,
+    initiateDocumentVersionUpload_name,
+    initiateDocumentVersionUpload_parentFolderId,
+
+    -- * Destructuring the Response
+    InitiateDocumentVersionUploadResponse (..),
+    newInitiateDocumentVersionUploadResponse,
+
+    -- * Response Lenses
+    initiateDocumentVersionUploadResponse_metadata,
+    initiateDocumentVersionUploadResponse_uploadMetadata,
+    initiateDocumentVersionUploadResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newInitiateDocumentVersionUpload' smart constructor.
+data InitiateDocumentVersionUpload = InitiateDocumentVersionUpload'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The timestamp when the content of the document was originally created.
+    contentCreatedTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The timestamp when the content of the document was modified.
+    contentModifiedTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The content type of the document.
+    contentType :: Prelude.Maybe Prelude.Text,
+    -- | The size of the document, in bytes.
+    documentSizeInBytes :: Prelude.Maybe Prelude.Integer,
+    -- | The ID of the document.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | The name of the document.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the parent folder.
+    parentFolderId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InitiateDocumentVersionUpload' 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:
+--
+-- 'authenticationToken', 'initiateDocumentVersionUpload_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'contentCreatedTimestamp', 'initiateDocumentVersionUpload_contentCreatedTimestamp' - The timestamp when the content of the document was originally created.
+--
+-- 'contentModifiedTimestamp', 'initiateDocumentVersionUpload_contentModifiedTimestamp' - The timestamp when the content of the document was modified.
+--
+-- 'contentType', 'initiateDocumentVersionUpload_contentType' - The content type of the document.
+--
+-- 'documentSizeInBytes', 'initiateDocumentVersionUpload_documentSizeInBytes' - The size of the document, in bytes.
+--
+-- 'id', 'initiateDocumentVersionUpload_id' - The ID of the document.
+--
+-- 'name', 'initiateDocumentVersionUpload_name' - The name of the document.
+--
+-- 'parentFolderId', 'initiateDocumentVersionUpload_parentFolderId' - The ID of the parent folder.
+newInitiateDocumentVersionUpload ::
+  InitiateDocumentVersionUpload
+newInitiateDocumentVersionUpload =
+  InitiateDocumentVersionUpload'
+    { authenticationToken =
+        Prelude.Nothing,
+      contentCreatedTimestamp = Prelude.Nothing,
+      contentModifiedTimestamp = Prelude.Nothing,
+      contentType = Prelude.Nothing,
+      documentSizeInBytes = Prelude.Nothing,
+      id = Prelude.Nothing,
+      name = Prelude.Nothing,
+      parentFolderId = Prelude.Nothing
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+initiateDocumentVersionUpload_authenticationToken :: Lens.Lens' InitiateDocumentVersionUpload (Prelude.Maybe Prelude.Text)
+initiateDocumentVersionUpload_authenticationToken = Lens.lens (\InitiateDocumentVersionUpload' {authenticationToken} -> authenticationToken) (\s@InitiateDocumentVersionUpload' {} a -> s {authenticationToken = a} :: InitiateDocumentVersionUpload) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The timestamp when the content of the document was originally created.
+initiateDocumentVersionUpload_contentCreatedTimestamp :: Lens.Lens' InitiateDocumentVersionUpload (Prelude.Maybe Prelude.UTCTime)
+initiateDocumentVersionUpload_contentCreatedTimestamp = Lens.lens (\InitiateDocumentVersionUpload' {contentCreatedTimestamp} -> contentCreatedTimestamp) (\s@InitiateDocumentVersionUpload' {} a -> s {contentCreatedTimestamp = a} :: InitiateDocumentVersionUpload) Prelude.. Lens.mapping Data._Time
+
+-- | The timestamp when the content of the document was modified.
+initiateDocumentVersionUpload_contentModifiedTimestamp :: Lens.Lens' InitiateDocumentVersionUpload (Prelude.Maybe Prelude.UTCTime)
+initiateDocumentVersionUpload_contentModifiedTimestamp = Lens.lens (\InitiateDocumentVersionUpload' {contentModifiedTimestamp} -> contentModifiedTimestamp) (\s@InitiateDocumentVersionUpload' {} a -> s {contentModifiedTimestamp = a} :: InitiateDocumentVersionUpload) Prelude.. Lens.mapping Data._Time
+
+-- | The content type of the document.
+initiateDocumentVersionUpload_contentType :: Lens.Lens' InitiateDocumentVersionUpload (Prelude.Maybe Prelude.Text)
+initiateDocumentVersionUpload_contentType = Lens.lens (\InitiateDocumentVersionUpload' {contentType} -> contentType) (\s@InitiateDocumentVersionUpload' {} a -> s {contentType = a} :: InitiateDocumentVersionUpload)
+
+-- | The size of the document, in bytes.
+initiateDocumentVersionUpload_documentSizeInBytes :: Lens.Lens' InitiateDocumentVersionUpload (Prelude.Maybe Prelude.Integer)
+initiateDocumentVersionUpload_documentSizeInBytes = Lens.lens (\InitiateDocumentVersionUpload' {documentSizeInBytes} -> documentSizeInBytes) (\s@InitiateDocumentVersionUpload' {} a -> s {documentSizeInBytes = a} :: InitiateDocumentVersionUpload)
+
+-- | The ID of the document.
+initiateDocumentVersionUpload_id :: Lens.Lens' InitiateDocumentVersionUpload (Prelude.Maybe Prelude.Text)
+initiateDocumentVersionUpload_id = Lens.lens (\InitiateDocumentVersionUpload' {id} -> id) (\s@InitiateDocumentVersionUpload' {} a -> s {id = a} :: InitiateDocumentVersionUpload)
+
+-- | The name of the document.
+initiateDocumentVersionUpload_name :: Lens.Lens' InitiateDocumentVersionUpload (Prelude.Maybe Prelude.Text)
+initiateDocumentVersionUpload_name = Lens.lens (\InitiateDocumentVersionUpload' {name} -> name) (\s@InitiateDocumentVersionUpload' {} a -> s {name = a} :: InitiateDocumentVersionUpload)
+
+-- | The ID of the parent folder.
+initiateDocumentVersionUpload_parentFolderId :: Lens.Lens' InitiateDocumentVersionUpload (Prelude.Maybe Prelude.Text)
+initiateDocumentVersionUpload_parentFolderId = Lens.lens (\InitiateDocumentVersionUpload' {parentFolderId} -> parentFolderId) (\s@InitiateDocumentVersionUpload' {} a -> s {parentFolderId = a} :: InitiateDocumentVersionUpload)
+
+instance
+  Core.AWSRequest
+    InitiateDocumentVersionUpload
+  where
+  type
+    AWSResponse InitiateDocumentVersionUpload =
+      InitiateDocumentVersionUploadResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          InitiateDocumentVersionUploadResponse'
+            Prelude.<$> (x Data..?> "Metadata")
+            Prelude.<*> (x Data..?> "UploadMetadata")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance
+  Prelude.Hashable
+    InitiateDocumentVersionUpload
+  where
+  hashWithSalt _salt InitiateDocumentVersionUpload' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` contentCreatedTimestamp
+      `Prelude.hashWithSalt` contentModifiedTimestamp
+      `Prelude.hashWithSalt` contentType
+      `Prelude.hashWithSalt` documentSizeInBytes
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` parentFolderId
+
+instance Prelude.NFData InitiateDocumentVersionUpload where
+  rnf InitiateDocumentVersionUpload' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf contentCreatedTimestamp
+      `Prelude.seq` Prelude.rnf contentModifiedTimestamp
+      `Prelude.seq` Prelude.rnf contentType
+      `Prelude.seq` Prelude.rnf documentSizeInBytes
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf parentFolderId
+
+instance Data.ToHeaders InitiateDocumentVersionUpload where
+  toHeaders InitiateDocumentVersionUpload' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToJSON InitiateDocumentVersionUpload where
+  toJSON InitiateDocumentVersionUpload' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("ContentCreatedTimestamp" Data..=)
+              Prelude.<$> contentCreatedTimestamp,
+            ("ContentModifiedTimestamp" Data..=)
+              Prelude.<$> contentModifiedTimestamp,
+            ("ContentType" Data..=) Prelude.<$> contentType,
+            ("DocumentSizeInBytes" Data..=)
+              Prelude.<$> documentSizeInBytes,
+            ("Id" Data..=) Prelude.<$> id,
+            ("Name" Data..=) Prelude.<$> name,
+            ("ParentFolderId" Data..=)
+              Prelude.<$> parentFolderId
+          ]
+      )
+
+instance Data.ToPath InitiateDocumentVersionUpload where
+  toPath = Prelude.const "/api/v1/documents"
+
+instance Data.ToQuery InitiateDocumentVersionUpload where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newInitiateDocumentVersionUploadResponse' smart constructor.
+data InitiateDocumentVersionUploadResponse = InitiateDocumentVersionUploadResponse'
+  { -- | The document metadata.
+    metadata :: Prelude.Maybe DocumentMetadata,
+    -- | The upload metadata.
+    uploadMetadata :: Prelude.Maybe UploadMetadata,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'InitiateDocumentVersionUploadResponse' 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:
+--
+-- 'metadata', 'initiateDocumentVersionUploadResponse_metadata' - The document metadata.
+--
+-- 'uploadMetadata', 'initiateDocumentVersionUploadResponse_uploadMetadata' - The upload metadata.
+--
+-- 'httpStatus', 'initiateDocumentVersionUploadResponse_httpStatus' - The response's http status code.
+newInitiateDocumentVersionUploadResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  InitiateDocumentVersionUploadResponse
+newInitiateDocumentVersionUploadResponse pHttpStatus_ =
+  InitiateDocumentVersionUploadResponse'
+    { metadata =
+        Prelude.Nothing,
+      uploadMetadata = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The document metadata.
+initiateDocumentVersionUploadResponse_metadata :: Lens.Lens' InitiateDocumentVersionUploadResponse (Prelude.Maybe DocumentMetadata)
+initiateDocumentVersionUploadResponse_metadata = Lens.lens (\InitiateDocumentVersionUploadResponse' {metadata} -> metadata) (\s@InitiateDocumentVersionUploadResponse' {} a -> s {metadata = a} :: InitiateDocumentVersionUploadResponse)
+
+-- | The upload metadata.
+initiateDocumentVersionUploadResponse_uploadMetadata :: Lens.Lens' InitiateDocumentVersionUploadResponse (Prelude.Maybe UploadMetadata)
+initiateDocumentVersionUploadResponse_uploadMetadata = Lens.lens (\InitiateDocumentVersionUploadResponse' {uploadMetadata} -> uploadMetadata) (\s@InitiateDocumentVersionUploadResponse' {} a -> s {uploadMetadata = a} :: InitiateDocumentVersionUploadResponse)
+
+-- | The response's http status code.
+initiateDocumentVersionUploadResponse_httpStatus :: Lens.Lens' InitiateDocumentVersionUploadResponse Prelude.Int
+initiateDocumentVersionUploadResponse_httpStatus = Lens.lens (\InitiateDocumentVersionUploadResponse' {httpStatus} -> httpStatus) (\s@InitiateDocumentVersionUploadResponse' {} a -> s {httpStatus = a} :: InitiateDocumentVersionUploadResponse)
+
+instance
+  Prelude.NFData
+    InitiateDocumentVersionUploadResponse
+  where
+  rnf InitiateDocumentVersionUploadResponse' {..} =
+    Prelude.rnf metadata
+      `Prelude.seq` Prelude.rnf uploadMetadata
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/Lens.hs b/gen/Amazonka/WorkDocs/Lens.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Lens.hs
@@ -0,0 +1,588 @@
+{-# 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.WorkDocs.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.WorkDocs.Lens
+  ( -- * Operations
+
+    -- ** AbortDocumentVersionUpload
+    abortDocumentVersionUpload_authenticationToken,
+    abortDocumentVersionUpload_documentId,
+    abortDocumentVersionUpload_versionId,
+
+    -- ** ActivateUser
+    activateUser_authenticationToken,
+    activateUser_userId,
+    activateUserResponse_user,
+    activateUserResponse_httpStatus,
+
+    -- ** AddResourcePermissions
+    addResourcePermissions_authenticationToken,
+    addResourcePermissions_notificationOptions,
+    addResourcePermissions_resourceId,
+    addResourcePermissions_principals,
+    addResourcePermissionsResponse_shareResults,
+    addResourcePermissionsResponse_httpStatus,
+
+    -- ** CreateComment
+    createComment_authenticationToken,
+    createComment_notifyCollaborators,
+    createComment_parentId,
+    createComment_threadId,
+    createComment_visibility,
+    createComment_documentId,
+    createComment_versionId,
+    createComment_text,
+    createCommentResponse_comment,
+    createCommentResponse_httpStatus,
+
+    -- ** CreateCustomMetadata
+    createCustomMetadata_authenticationToken,
+    createCustomMetadata_versionId,
+    createCustomMetadata_resourceId,
+    createCustomMetadata_customMetadata,
+    createCustomMetadataResponse_httpStatus,
+
+    -- ** CreateFolder
+    createFolder_authenticationToken,
+    createFolder_name,
+    createFolder_parentFolderId,
+    createFolderResponse_metadata,
+    createFolderResponse_httpStatus,
+
+    -- ** CreateLabels
+    createLabels_authenticationToken,
+    createLabels_resourceId,
+    createLabels_labels,
+    createLabelsResponse_httpStatus,
+
+    -- ** CreateNotificationSubscription
+    createNotificationSubscription_organizationId,
+    createNotificationSubscription_endpoint,
+    createNotificationSubscription_protocol,
+    createNotificationSubscription_subscriptionType,
+    createNotificationSubscriptionResponse_subscription,
+    createNotificationSubscriptionResponse_httpStatus,
+
+    -- ** CreateUser
+    createUser_authenticationToken,
+    createUser_emailAddress,
+    createUser_organizationId,
+    createUser_storageRule,
+    createUser_timeZoneId,
+    createUser_username,
+    createUser_givenName,
+    createUser_surname,
+    createUser_password,
+    createUserResponse_user,
+    createUserResponse_httpStatus,
+
+    -- ** DeactivateUser
+    deactivateUser_authenticationToken,
+    deactivateUser_userId,
+
+    -- ** DeleteComment
+    deleteComment_authenticationToken,
+    deleteComment_documentId,
+    deleteComment_versionId,
+    deleteComment_commentId,
+
+    -- ** DeleteCustomMetadata
+    deleteCustomMetadata_authenticationToken,
+    deleteCustomMetadata_deleteAll,
+    deleteCustomMetadata_keys,
+    deleteCustomMetadata_versionId,
+    deleteCustomMetadata_resourceId,
+    deleteCustomMetadataResponse_httpStatus,
+
+    -- ** DeleteDocument
+    deleteDocument_authenticationToken,
+    deleteDocument_documentId,
+
+    -- ** DeleteDocumentVersion
+    deleteDocumentVersion_authenticationToken,
+    deleteDocumentVersion_documentId,
+    deleteDocumentVersion_versionId,
+    deleteDocumentVersion_deletePriorVersions,
+
+    -- ** DeleteFolder
+    deleteFolder_authenticationToken,
+    deleteFolder_folderId,
+
+    -- ** DeleteFolderContents
+    deleteFolderContents_authenticationToken,
+    deleteFolderContents_folderId,
+
+    -- ** DeleteLabels
+    deleteLabels_authenticationToken,
+    deleteLabels_deleteAll,
+    deleteLabels_labels,
+    deleteLabels_resourceId,
+    deleteLabelsResponse_httpStatus,
+
+    -- ** DeleteNotificationSubscription
+    deleteNotificationSubscription_subscriptionId,
+    deleteNotificationSubscription_organizationId,
+
+    -- ** DeleteUser
+    deleteUser_authenticationToken,
+    deleteUser_userId,
+
+    -- ** DescribeActivities
+    describeActivities_activityTypes,
+    describeActivities_authenticationToken,
+    describeActivities_endTime,
+    describeActivities_includeIndirectActivities,
+    describeActivities_limit,
+    describeActivities_marker,
+    describeActivities_organizationId,
+    describeActivities_resourceId,
+    describeActivities_startTime,
+    describeActivities_userId,
+    describeActivitiesResponse_marker,
+    describeActivitiesResponse_userActivities,
+    describeActivitiesResponse_httpStatus,
+
+    -- ** DescribeComments
+    describeComments_authenticationToken,
+    describeComments_limit,
+    describeComments_marker,
+    describeComments_documentId,
+    describeComments_versionId,
+    describeCommentsResponse_comments,
+    describeCommentsResponse_marker,
+    describeCommentsResponse_httpStatus,
+
+    -- ** DescribeDocumentVersions
+    describeDocumentVersions_authenticationToken,
+    describeDocumentVersions_fields,
+    describeDocumentVersions_include,
+    describeDocumentVersions_limit,
+    describeDocumentVersions_marker,
+    describeDocumentVersions_documentId,
+    describeDocumentVersionsResponse_documentVersions,
+    describeDocumentVersionsResponse_marker,
+    describeDocumentVersionsResponse_httpStatus,
+
+    -- ** DescribeFolderContents
+    describeFolderContents_authenticationToken,
+    describeFolderContents_include,
+    describeFolderContents_limit,
+    describeFolderContents_marker,
+    describeFolderContents_order,
+    describeFolderContents_sort,
+    describeFolderContents_type,
+    describeFolderContents_folderId,
+    describeFolderContentsResponse_documents,
+    describeFolderContentsResponse_folders,
+    describeFolderContentsResponse_marker,
+    describeFolderContentsResponse_httpStatus,
+
+    -- ** DescribeGroups
+    describeGroups_authenticationToken,
+    describeGroups_limit,
+    describeGroups_marker,
+    describeGroups_organizationId,
+    describeGroups_searchQuery,
+    describeGroupsResponse_groups,
+    describeGroupsResponse_marker,
+    describeGroupsResponse_httpStatus,
+
+    -- ** DescribeNotificationSubscriptions
+    describeNotificationSubscriptions_limit,
+    describeNotificationSubscriptions_marker,
+    describeNotificationSubscriptions_organizationId,
+    describeNotificationSubscriptionsResponse_marker,
+    describeNotificationSubscriptionsResponse_subscriptions,
+    describeNotificationSubscriptionsResponse_httpStatus,
+
+    -- ** DescribeResourcePermissions
+    describeResourcePermissions_authenticationToken,
+    describeResourcePermissions_limit,
+    describeResourcePermissions_marker,
+    describeResourcePermissions_principalId,
+    describeResourcePermissions_resourceId,
+    describeResourcePermissionsResponse_marker,
+    describeResourcePermissionsResponse_principals,
+    describeResourcePermissionsResponse_httpStatus,
+
+    -- ** DescribeRootFolders
+    describeRootFolders_limit,
+    describeRootFolders_marker,
+    describeRootFolders_authenticationToken,
+    describeRootFoldersResponse_folders,
+    describeRootFoldersResponse_marker,
+    describeRootFoldersResponse_httpStatus,
+
+    -- ** DescribeUsers
+    describeUsers_authenticationToken,
+    describeUsers_fields,
+    describeUsers_include,
+    describeUsers_limit,
+    describeUsers_marker,
+    describeUsers_order,
+    describeUsers_organizationId,
+    describeUsers_query,
+    describeUsers_sort,
+    describeUsers_userIds,
+    describeUsersResponse_marker,
+    describeUsersResponse_totalNumberOfUsers,
+    describeUsersResponse_users,
+    describeUsersResponse_httpStatus,
+
+    -- ** GetCurrentUser
+    getCurrentUser_authenticationToken,
+    getCurrentUserResponse_user,
+    getCurrentUserResponse_httpStatus,
+
+    -- ** GetDocument
+    getDocument_authenticationToken,
+    getDocument_includeCustomMetadata,
+    getDocument_documentId,
+    getDocumentResponse_customMetadata,
+    getDocumentResponse_metadata,
+    getDocumentResponse_httpStatus,
+
+    -- ** GetDocumentPath
+    getDocumentPath_authenticationToken,
+    getDocumentPath_fields,
+    getDocumentPath_limit,
+    getDocumentPath_marker,
+    getDocumentPath_documentId,
+    getDocumentPathResponse_path,
+    getDocumentPathResponse_httpStatus,
+
+    -- ** GetDocumentVersion
+    getDocumentVersion_authenticationToken,
+    getDocumentVersion_fields,
+    getDocumentVersion_includeCustomMetadata,
+    getDocumentVersion_documentId,
+    getDocumentVersion_versionId,
+    getDocumentVersionResponse_customMetadata,
+    getDocumentVersionResponse_metadata,
+    getDocumentVersionResponse_httpStatus,
+
+    -- ** GetFolder
+    getFolder_authenticationToken,
+    getFolder_includeCustomMetadata,
+    getFolder_folderId,
+    getFolderResponse_customMetadata,
+    getFolderResponse_metadata,
+    getFolderResponse_httpStatus,
+
+    -- ** GetFolderPath
+    getFolderPath_authenticationToken,
+    getFolderPath_fields,
+    getFolderPath_limit,
+    getFolderPath_marker,
+    getFolderPath_folderId,
+    getFolderPathResponse_path,
+    getFolderPathResponse_httpStatus,
+
+    -- ** GetResources
+    getResources_authenticationToken,
+    getResources_collectionType,
+    getResources_limit,
+    getResources_marker,
+    getResources_userId,
+    getResourcesResponse_documents,
+    getResourcesResponse_folders,
+    getResourcesResponse_marker,
+    getResourcesResponse_httpStatus,
+
+    -- ** InitiateDocumentVersionUpload
+    initiateDocumentVersionUpload_authenticationToken,
+    initiateDocumentVersionUpload_contentCreatedTimestamp,
+    initiateDocumentVersionUpload_contentModifiedTimestamp,
+    initiateDocumentVersionUpload_contentType,
+    initiateDocumentVersionUpload_documentSizeInBytes,
+    initiateDocumentVersionUpload_id,
+    initiateDocumentVersionUpload_name,
+    initiateDocumentVersionUpload_parentFolderId,
+    initiateDocumentVersionUploadResponse_metadata,
+    initiateDocumentVersionUploadResponse_uploadMetadata,
+    initiateDocumentVersionUploadResponse_httpStatus,
+
+    -- ** RemoveAllResourcePermissions
+    removeAllResourcePermissions_authenticationToken,
+    removeAllResourcePermissions_resourceId,
+
+    -- ** RemoveResourcePermission
+    removeResourcePermission_authenticationToken,
+    removeResourcePermission_principalType,
+    removeResourcePermission_resourceId,
+    removeResourcePermission_principalId,
+
+    -- ** RestoreDocumentVersions
+    restoreDocumentVersions_authenticationToken,
+    restoreDocumentVersions_documentId,
+
+    -- ** UpdateDocument
+    updateDocument_authenticationToken,
+    updateDocument_name,
+    updateDocument_parentFolderId,
+    updateDocument_resourceState,
+    updateDocument_documentId,
+
+    -- ** UpdateDocumentVersion
+    updateDocumentVersion_authenticationToken,
+    updateDocumentVersion_versionStatus,
+    updateDocumentVersion_documentId,
+    updateDocumentVersion_versionId,
+
+    -- ** UpdateFolder
+    updateFolder_authenticationToken,
+    updateFolder_name,
+    updateFolder_parentFolderId,
+    updateFolder_resourceState,
+    updateFolder_folderId,
+
+    -- ** UpdateUser
+    updateUser_authenticationToken,
+    updateUser_givenName,
+    updateUser_grantPoweruserPrivileges,
+    updateUser_locale,
+    updateUser_storageRule,
+    updateUser_surname,
+    updateUser_timeZoneId,
+    updateUser_type,
+    updateUser_userId,
+    updateUserResponse_user,
+    updateUserResponse_httpStatus,
+
+    -- * Types
+
+    -- ** Activity
+    activity_commentMetadata,
+    activity_initiator,
+    activity_isIndirectActivity,
+    activity_organizationId,
+    activity_originalParent,
+    activity_participants,
+    activity_resourceMetadata,
+    activity_timeStamp,
+    activity_type,
+
+    -- ** Comment
+    comment_contributor,
+    comment_createdTimestamp,
+    comment_parentId,
+    comment_recipientId,
+    comment_status,
+    comment_text,
+    comment_threadId,
+    comment_visibility,
+    comment_commentId,
+
+    -- ** CommentMetadata
+    commentMetadata_commentId,
+    commentMetadata_commentStatus,
+    commentMetadata_contributor,
+    commentMetadata_createdTimestamp,
+    commentMetadata_recipientId,
+
+    -- ** DocumentMetadata
+    documentMetadata_createdTimestamp,
+    documentMetadata_creatorId,
+    documentMetadata_id,
+    documentMetadata_labels,
+    documentMetadata_latestVersionMetadata,
+    documentMetadata_modifiedTimestamp,
+    documentMetadata_parentFolderId,
+    documentMetadata_resourceState,
+
+    -- ** DocumentVersionMetadata
+    documentVersionMetadata_contentCreatedTimestamp,
+    documentVersionMetadata_contentModifiedTimestamp,
+    documentVersionMetadata_contentType,
+    documentVersionMetadata_createdTimestamp,
+    documentVersionMetadata_creatorId,
+    documentVersionMetadata_id,
+    documentVersionMetadata_modifiedTimestamp,
+    documentVersionMetadata_name,
+    documentVersionMetadata_signature,
+    documentVersionMetadata_size,
+    documentVersionMetadata_source,
+    documentVersionMetadata_status,
+    documentVersionMetadata_thumbnail,
+
+    -- ** FolderMetadata
+    folderMetadata_createdTimestamp,
+    folderMetadata_creatorId,
+    folderMetadata_id,
+    folderMetadata_labels,
+    folderMetadata_latestVersionSize,
+    folderMetadata_modifiedTimestamp,
+    folderMetadata_name,
+    folderMetadata_parentFolderId,
+    folderMetadata_resourceState,
+    folderMetadata_signature,
+    folderMetadata_size,
+
+    -- ** GroupMetadata
+    groupMetadata_id,
+    groupMetadata_name,
+
+    -- ** NotificationOptions
+    notificationOptions_emailMessage,
+    notificationOptions_sendEmail,
+
+    -- ** Participants
+    participants_groups,
+    participants_users,
+
+    -- ** PermissionInfo
+    permissionInfo_role,
+    permissionInfo_type,
+
+    -- ** Principal
+    principal_id,
+    principal_roles,
+    principal_type,
+
+    -- ** ResourceMetadata
+    resourceMetadata_id,
+    resourceMetadata_name,
+    resourceMetadata_originalName,
+    resourceMetadata_owner,
+    resourceMetadata_parentId,
+    resourceMetadata_type,
+    resourceMetadata_versionId,
+
+    -- ** ResourcePath
+    resourcePath_components,
+
+    -- ** ResourcePathComponent
+    resourcePathComponent_id,
+    resourcePathComponent_name,
+
+    -- ** SharePrincipal
+    sharePrincipal_id,
+    sharePrincipal_type,
+    sharePrincipal_role,
+
+    -- ** ShareResult
+    shareResult_inviteePrincipalId,
+    shareResult_principalId,
+    shareResult_role,
+    shareResult_shareId,
+    shareResult_status,
+    shareResult_statusMessage,
+
+    -- ** StorageRuleType
+    storageRuleType_storageAllocatedInBytes,
+    storageRuleType_storageType,
+
+    -- ** Subscription
+    subscription_endPoint,
+    subscription_protocol,
+    subscription_subscriptionId,
+
+    -- ** UploadMetadata
+    uploadMetadata_signedHeaders,
+    uploadMetadata_uploadUrl,
+
+    -- ** User
+    user_createdTimestamp,
+    user_emailAddress,
+    user_givenName,
+    user_id,
+    user_locale,
+    user_modifiedTimestamp,
+    user_organizationId,
+    user_recycleBinFolderId,
+    user_rootFolderId,
+    user_status,
+    user_storage,
+    user_surname,
+    user_timeZoneId,
+    user_type,
+    user_username,
+
+    -- ** UserMetadata
+    userMetadata_emailAddress,
+    userMetadata_givenName,
+    userMetadata_id,
+    userMetadata_surname,
+    userMetadata_username,
+
+    -- ** UserStorageMetadata
+    userStorageMetadata_storageRule,
+    userStorageMetadata_storageUtilizedInBytes,
+  )
+where
+
+import Amazonka.WorkDocs.AbortDocumentVersionUpload
+import Amazonka.WorkDocs.ActivateUser
+import Amazonka.WorkDocs.AddResourcePermissions
+import Amazonka.WorkDocs.CreateComment
+import Amazonka.WorkDocs.CreateCustomMetadata
+import Amazonka.WorkDocs.CreateFolder
+import Amazonka.WorkDocs.CreateLabels
+import Amazonka.WorkDocs.CreateNotificationSubscription
+import Amazonka.WorkDocs.CreateUser
+import Amazonka.WorkDocs.DeactivateUser
+import Amazonka.WorkDocs.DeleteComment
+import Amazonka.WorkDocs.DeleteCustomMetadata
+import Amazonka.WorkDocs.DeleteDocument
+import Amazonka.WorkDocs.DeleteDocumentVersion
+import Amazonka.WorkDocs.DeleteFolder
+import Amazonka.WorkDocs.DeleteFolderContents
+import Amazonka.WorkDocs.DeleteLabels
+import Amazonka.WorkDocs.DeleteNotificationSubscription
+import Amazonka.WorkDocs.DeleteUser
+import Amazonka.WorkDocs.DescribeActivities
+import Amazonka.WorkDocs.DescribeComments
+import Amazonka.WorkDocs.DescribeDocumentVersions
+import Amazonka.WorkDocs.DescribeFolderContents
+import Amazonka.WorkDocs.DescribeGroups
+import Amazonka.WorkDocs.DescribeNotificationSubscriptions
+import Amazonka.WorkDocs.DescribeResourcePermissions
+import Amazonka.WorkDocs.DescribeRootFolders
+import Amazonka.WorkDocs.DescribeUsers
+import Amazonka.WorkDocs.GetCurrentUser
+import Amazonka.WorkDocs.GetDocument
+import Amazonka.WorkDocs.GetDocumentPath
+import Amazonka.WorkDocs.GetDocumentVersion
+import Amazonka.WorkDocs.GetFolder
+import Amazonka.WorkDocs.GetFolderPath
+import Amazonka.WorkDocs.GetResources
+import Amazonka.WorkDocs.InitiateDocumentVersionUpload
+import Amazonka.WorkDocs.RemoveAllResourcePermissions
+import Amazonka.WorkDocs.RemoveResourcePermission
+import Amazonka.WorkDocs.RestoreDocumentVersions
+import Amazonka.WorkDocs.Types.Activity
+import Amazonka.WorkDocs.Types.Comment
+import Amazonka.WorkDocs.Types.CommentMetadata
+import Amazonka.WorkDocs.Types.DocumentMetadata
+import Amazonka.WorkDocs.Types.DocumentVersionMetadata
+import Amazonka.WorkDocs.Types.FolderMetadata
+import Amazonka.WorkDocs.Types.GroupMetadata
+import Amazonka.WorkDocs.Types.NotificationOptions
+import Amazonka.WorkDocs.Types.Participants
+import Amazonka.WorkDocs.Types.PermissionInfo
+import Amazonka.WorkDocs.Types.Principal
+import Amazonka.WorkDocs.Types.ResourceMetadata
+import Amazonka.WorkDocs.Types.ResourcePath
+import Amazonka.WorkDocs.Types.ResourcePathComponent
+import Amazonka.WorkDocs.Types.SharePrincipal
+import Amazonka.WorkDocs.Types.ShareResult
+import Amazonka.WorkDocs.Types.StorageRuleType
+import Amazonka.WorkDocs.Types.Subscription
+import Amazonka.WorkDocs.Types.UploadMetadata
+import Amazonka.WorkDocs.Types.User
+import Amazonka.WorkDocs.Types.UserMetadata
+import Amazonka.WorkDocs.Types.UserStorageMetadata
+import Amazonka.WorkDocs.UpdateDocument
+import Amazonka.WorkDocs.UpdateDocumentVersion
+import Amazonka.WorkDocs.UpdateFolder
+import Amazonka.WorkDocs.UpdateUser
diff --git a/gen/Amazonka/WorkDocs/RemoveAllResourcePermissions.hs b/gen/Amazonka/WorkDocs/RemoveAllResourcePermissions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/RemoveAllResourcePermissions.hs
@@ -0,0 +1,151 @@
+{-# 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.WorkDocs.RemoveAllResourcePermissions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes all the permissions from the specified resource.
+module Amazonka.WorkDocs.RemoveAllResourcePermissions
+  ( -- * Creating a Request
+    RemoveAllResourcePermissions (..),
+    newRemoveAllResourcePermissions,
+
+    -- * Request Lenses
+    removeAllResourcePermissions_authenticationToken,
+    removeAllResourcePermissions_resourceId,
+
+    -- * Destructuring the Response
+    RemoveAllResourcePermissionsResponse (..),
+    newRemoveAllResourcePermissionsResponse,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newRemoveAllResourcePermissions' smart constructor.
+data RemoveAllResourcePermissions = RemoveAllResourcePermissions'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ID of the resource.
+    resourceId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RemoveAllResourcePermissions' 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:
+--
+-- 'authenticationToken', 'removeAllResourcePermissions_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'resourceId', 'removeAllResourcePermissions_resourceId' - The ID of the resource.
+newRemoveAllResourcePermissions ::
+  -- | 'resourceId'
+  Prelude.Text ->
+  RemoveAllResourcePermissions
+newRemoveAllResourcePermissions pResourceId_ =
+  RemoveAllResourcePermissions'
+    { authenticationToken =
+        Prelude.Nothing,
+      resourceId = pResourceId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+removeAllResourcePermissions_authenticationToken :: Lens.Lens' RemoveAllResourcePermissions (Prelude.Maybe Prelude.Text)
+removeAllResourcePermissions_authenticationToken = Lens.lens (\RemoveAllResourcePermissions' {authenticationToken} -> authenticationToken) (\s@RemoveAllResourcePermissions' {} a -> s {authenticationToken = a} :: RemoveAllResourcePermissions) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ID of the resource.
+removeAllResourcePermissions_resourceId :: Lens.Lens' RemoveAllResourcePermissions Prelude.Text
+removeAllResourcePermissions_resourceId = Lens.lens (\RemoveAllResourcePermissions' {resourceId} -> resourceId) (\s@RemoveAllResourcePermissions' {} a -> s {resourceId = a} :: RemoveAllResourcePermissions)
+
+instance Core.AWSRequest RemoveAllResourcePermissions where
+  type
+    AWSResponse RemoveAllResourcePermissions =
+      RemoveAllResourcePermissionsResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull
+      RemoveAllResourcePermissionsResponse'
+
+instance
+  Prelude.Hashable
+    RemoveAllResourcePermissions
+  where
+  hashWithSalt _salt RemoveAllResourcePermissions' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` resourceId
+
+instance Prelude.NFData RemoveAllResourcePermissions where
+  rnf RemoveAllResourcePermissions' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf resourceId
+
+instance Data.ToHeaders RemoveAllResourcePermissions where
+  toHeaders RemoveAllResourcePermissions' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath RemoveAllResourcePermissions where
+  toPath RemoveAllResourcePermissions' {..} =
+    Prelude.mconcat
+      [ "/api/v1/resources/",
+        Data.toBS resourceId,
+        "/permissions"
+      ]
+
+instance Data.ToQuery RemoveAllResourcePermissions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newRemoveAllResourcePermissionsResponse' smart constructor.
+data RemoveAllResourcePermissionsResponse = RemoveAllResourcePermissionsResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RemoveAllResourcePermissionsResponse' 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.
+newRemoveAllResourcePermissionsResponse ::
+  RemoveAllResourcePermissionsResponse
+newRemoveAllResourcePermissionsResponse =
+  RemoveAllResourcePermissionsResponse'
+
+instance
+  Prelude.NFData
+    RemoveAllResourcePermissionsResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/WorkDocs/RemoveResourcePermission.hs b/gen/Amazonka/WorkDocs/RemoveResourcePermission.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/RemoveResourcePermission.hs
@@ -0,0 +1,179 @@
+{-# 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.WorkDocs.RemoveResourcePermission
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Removes the permission for the specified principal from the specified
+-- resource.
+module Amazonka.WorkDocs.RemoveResourcePermission
+  ( -- * Creating a Request
+    RemoveResourcePermission (..),
+    newRemoveResourcePermission,
+
+    -- * Request Lenses
+    removeResourcePermission_authenticationToken,
+    removeResourcePermission_principalType,
+    removeResourcePermission_resourceId,
+    removeResourcePermission_principalId,
+
+    -- * Destructuring the Response
+    RemoveResourcePermissionResponse (..),
+    newRemoveResourcePermissionResponse,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newRemoveResourcePermission' smart constructor.
+data RemoveResourcePermission = RemoveResourcePermission'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The principal type of the resource.
+    principalType :: Prelude.Maybe PrincipalType,
+    -- | The ID of the resource.
+    resourceId :: Prelude.Text,
+    -- | The principal ID of the resource.
+    principalId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RemoveResourcePermission' 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:
+--
+-- 'authenticationToken', 'removeResourcePermission_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'principalType', 'removeResourcePermission_principalType' - The principal type of the resource.
+--
+-- 'resourceId', 'removeResourcePermission_resourceId' - The ID of the resource.
+--
+-- 'principalId', 'removeResourcePermission_principalId' - The principal ID of the resource.
+newRemoveResourcePermission ::
+  -- | 'resourceId'
+  Prelude.Text ->
+  -- | 'principalId'
+  Prelude.Text ->
+  RemoveResourcePermission
+newRemoveResourcePermission
+  pResourceId_
+  pPrincipalId_ =
+    RemoveResourcePermission'
+      { authenticationToken =
+          Prelude.Nothing,
+        principalType = Prelude.Nothing,
+        resourceId = pResourceId_,
+        principalId = pPrincipalId_
+      }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+removeResourcePermission_authenticationToken :: Lens.Lens' RemoveResourcePermission (Prelude.Maybe Prelude.Text)
+removeResourcePermission_authenticationToken = Lens.lens (\RemoveResourcePermission' {authenticationToken} -> authenticationToken) (\s@RemoveResourcePermission' {} a -> s {authenticationToken = a} :: RemoveResourcePermission) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The principal type of the resource.
+removeResourcePermission_principalType :: Lens.Lens' RemoveResourcePermission (Prelude.Maybe PrincipalType)
+removeResourcePermission_principalType = Lens.lens (\RemoveResourcePermission' {principalType} -> principalType) (\s@RemoveResourcePermission' {} a -> s {principalType = a} :: RemoveResourcePermission)
+
+-- | The ID of the resource.
+removeResourcePermission_resourceId :: Lens.Lens' RemoveResourcePermission Prelude.Text
+removeResourcePermission_resourceId = Lens.lens (\RemoveResourcePermission' {resourceId} -> resourceId) (\s@RemoveResourcePermission' {} a -> s {resourceId = a} :: RemoveResourcePermission)
+
+-- | The principal ID of the resource.
+removeResourcePermission_principalId :: Lens.Lens' RemoveResourcePermission Prelude.Text
+removeResourcePermission_principalId = Lens.lens (\RemoveResourcePermission' {principalId} -> principalId) (\s@RemoveResourcePermission' {} a -> s {principalId = a} :: RemoveResourcePermission)
+
+instance Core.AWSRequest RemoveResourcePermission where
+  type
+    AWSResponse RemoveResourcePermission =
+      RemoveResourcePermissionResponse
+  request overrides =
+    Request.delete (overrides defaultService)
+  response =
+    Response.receiveNull
+      RemoveResourcePermissionResponse'
+
+instance Prelude.Hashable RemoveResourcePermission where
+  hashWithSalt _salt RemoveResourcePermission' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` principalType
+      `Prelude.hashWithSalt` resourceId
+      `Prelude.hashWithSalt` principalId
+
+instance Prelude.NFData RemoveResourcePermission where
+  rnf RemoveResourcePermission' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf principalType
+      `Prelude.seq` Prelude.rnf resourceId
+      `Prelude.seq` Prelude.rnf principalId
+
+instance Data.ToHeaders RemoveResourcePermission where
+  toHeaders RemoveResourcePermission' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToPath RemoveResourcePermission where
+  toPath RemoveResourcePermission' {..} =
+    Prelude.mconcat
+      [ "/api/v1/resources/",
+        Data.toBS resourceId,
+        "/permissions/",
+        Data.toBS principalId
+      ]
+
+instance Data.ToQuery RemoveResourcePermission where
+  toQuery RemoveResourcePermission' {..} =
+    Prelude.mconcat ["type" Data.=: principalType]
+
+-- | /See:/ 'newRemoveResourcePermissionResponse' smart constructor.
+data RemoveResourcePermissionResponse = RemoveResourcePermissionResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RemoveResourcePermissionResponse' 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.
+newRemoveResourcePermissionResponse ::
+  RemoveResourcePermissionResponse
+newRemoveResourcePermissionResponse =
+  RemoveResourcePermissionResponse'
+
+instance
+  Prelude.NFData
+    RemoveResourcePermissionResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/WorkDocs/RestoreDocumentVersions.hs b/gen/Amazonka/WorkDocs/RestoreDocumentVersions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/RestoreDocumentVersions.hs
@@ -0,0 +1,150 @@
+{-# 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.WorkDocs.RestoreDocumentVersions
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Recovers a deleted version of an Amazon WorkDocs document.
+module Amazonka.WorkDocs.RestoreDocumentVersions
+  ( -- * Creating a Request
+    RestoreDocumentVersions (..),
+    newRestoreDocumentVersions,
+
+    -- * Request Lenses
+    restoreDocumentVersions_authenticationToken,
+    restoreDocumentVersions_documentId,
+
+    -- * Destructuring the Response
+    RestoreDocumentVersionsResponse (..),
+    newRestoreDocumentVersionsResponse,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newRestoreDocumentVersions' smart constructor.
+data RestoreDocumentVersions = RestoreDocumentVersions'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ID of the document.
+    documentId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RestoreDocumentVersions' 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:
+--
+-- 'authenticationToken', 'restoreDocumentVersions_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'documentId', 'restoreDocumentVersions_documentId' - The ID of the document.
+newRestoreDocumentVersions ::
+  -- | 'documentId'
+  Prelude.Text ->
+  RestoreDocumentVersions
+newRestoreDocumentVersions pDocumentId_ =
+  RestoreDocumentVersions'
+    { authenticationToken =
+        Prelude.Nothing,
+      documentId = pDocumentId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+restoreDocumentVersions_authenticationToken :: Lens.Lens' RestoreDocumentVersions (Prelude.Maybe Prelude.Text)
+restoreDocumentVersions_authenticationToken = Lens.lens (\RestoreDocumentVersions' {authenticationToken} -> authenticationToken) (\s@RestoreDocumentVersions' {} a -> s {authenticationToken = a} :: RestoreDocumentVersions) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ID of the document.
+restoreDocumentVersions_documentId :: Lens.Lens' RestoreDocumentVersions Prelude.Text
+restoreDocumentVersions_documentId = Lens.lens (\RestoreDocumentVersions' {documentId} -> documentId) (\s@RestoreDocumentVersions' {} a -> s {documentId = a} :: RestoreDocumentVersions)
+
+instance Core.AWSRequest RestoreDocumentVersions where
+  type
+    AWSResponse RestoreDocumentVersions =
+      RestoreDocumentVersionsResponse
+  request overrides =
+    Request.postJSON (overrides defaultService)
+  response =
+    Response.receiveNull
+      RestoreDocumentVersionsResponse'
+
+instance Prelude.Hashable RestoreDocumentVersions where
+  hashWithSalt _salt RestoreDocumentVersions' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` documentId
+
+instance Prelude.NFData RestoreDocumentVersions where
+  rnf RestoreDocumentVersions' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf documentId
+
+instance Data.ToHeaders RestoreDocumentVersions where
+  toHeaders RestoreDocumentVersions' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToJSON RestoreDocumentVersions where
+  toJSON = Prelude.const (Data.Object Prelude.mempty)
+
+instance Data.ToPath RestoreDocumentVersions where
+  toPath RestoreDocumentVersions' {..} =
+    Prelude.mconcat
+      [ "/api/v1/documentVersions/restore/",
+        Data.toBS documentId
+      ]
+
+instance Data.ToQuery RestoreDocumentVersions where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newRestoreDocumentVersionsResponse' smart constructor.
+data RestoreDocumentVersionsResponse = RestoreDocumentVersionsResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'RestoreDocumentVersionsResponse' 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.
+newRestoreDocumentVersionsResponse ::
+  RestoreDocumentVersionsResponse
+newRestoreDocumentVersionsResponse =
+  RestoreDocumentVersionsResponse'
+
+instance
+  Prelude.NFData
+    RestoreDocumentVersionsResponse
+  where
+  rnf _ = ()
diff --git a/gen/Amazonka/WorkDocs/Types.hs b/gen/Amazonka/WorkDocs/Types.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types.hs
@@ -0,0 +1,661 @@
+{-# 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.WorkDocs.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.WorkDocs.Types
+  ( -- * Service Configuration
+    defaultService,
+
+    -- * Errors
+    _ConcurrentModificationException,
+    _ConflictingOperationException,
+    _CustomMetadataLimitExceededException,
+    _DeactivatingLastSystemUserException,
+    _DocumentLockedForCommentsException,
+    _DraftUploadOutOfSyncException,
+    _EntityAlreadyExistsException,
+    _EntityNotExistsException,
+    _FailedDependencyException,
+    _IllegalUserStateException,
+    _InvalidArgumentException,
+    _InvalidCommentOperationException,
+    _InvalidOperationException,
+    _InvalidPasswordException,
+    _LimitExceededException,
+    _ProhibitedStateException,
+    _RequestedEntityTooLargeException,
+    _ResourceAlreadyCheckedOutException,
+    _ServiceUnavailableException,
+    _StorageLimitExceededException,
+    _StorageLimitWillExceedException,
+    _TooManyLabelsException,
+    _TooManySubscriptionsException,
+    _UnauthorizedOperationException,
+    _UnauthorizedResourceAccessException,
+
+    -- * ActivityType
+    ActivityType (..),
+
+    -- * BooleanEnumType
+    BooleanEnumType (..),
+
+    -- * CommentStatusType
+    CommentStatusType (..),
+
+    -- * CommentVisibilityType
+    CommentVisibilityType (..),
+
+    -- * DocumentSourceType
+    DocumentSourceType (..),
+
+    -- * DocumentStatusType
+    DocumentStatusType (..),
+
+    -- * DocumentThumbnailType
+    DocumentThumbnailType (..),
+
+    -- * DocumentVersionStatus
+    DocumentVersionStatus (..),
+
+    -- * FolderContentType
+    FolderContentType (..),
+
+    -- * LocaleType
+    LocaleType (..),
+
+    -- * OrderType
+    OrderType (..),
+
+    -- * PrincipalType
+    PrincipalType (..),
+
+    -- * ResourceCollectionType
+    ResourceCollectionType (..),
+
+    -- * ResourceSortType
+    ResourceSortType (..),
+
+    -- * ResourceStateType
+    ResourceStateType (..),
+
+    -- * ResourceType
+    ResourceType (..),
+
+    -- * RolePermissionType
+    RolePermissionType (..),
+
+    -- * RoleType
+    RoleType (..),
+
+    -- * ShareStatusType
+    ShareStatusType (..),
+
+    -- * StorageType
+    StorageType (..),
+
+    -- * SubscriptionProtocolType
+    SubscriptionProtocolType (..),
+
+    -- * SubscriptionType
+    SubscriptionType (..),
+
+    -- * UserFilterType
+    UserFilterType (..),
+
+    -- * UserSortType
+    UserSortType (..),
+
+    -- * UserStatusType
+    UserStatusType (..),
+
+    -- * UserType
+    UserType (..),
+
+    -- * Activity
+    Activity (..),
+    newActivity,
+    activity_commentMetadata,
+    activity_initiator,
+    activity_isIndirectActivity,
+    activity_organizationId,
+    activity_originalParent,
+    activity_participants,
+    activity_resourceMetadata,
+    activity_timeStamp,
+    activity_type,
+
+    -- * Comment
+    Comment (..),
+    newComment,
+    comment_contributor,
+    comment_createdTimestamp,
+    comment_parentId,
+    comment_recipientId,
+    comment_status,
+    comment_text,
+    comment_threadId,
+    comment_visibility,
+    comment_commentId,
+
+    -- * CommentMetadata
+    CommentMetadata (..),
+    newCommentMetadata,
+    commentMetadata_commentId,
+    commentMetadata_commentStatus,
+    commentMetadata_contributor,
+    commentMetadata_createdTimestamp,
+    commentMetadata_recipientId,
+
+    -- * DocumentMetadata
+    DocumentMetadata (..),
+    newDocumentMetadata,
+    documentMetadata_createdTimestamp,
+    documentMetadata_creatorId,
+    documentMetadata_id,
+    documentMetadata_labels,
+    documentMetadata_latestVersionMetadata,
+    documentMetadata_modifiedTimestamp,
+    documentMetadata_parentFolderId,
+    documentMetadata_resourceState,
+
+    -- * DocumentVersionMetadata
+    DocumentVersionMetadata (..),
+    newDocumentVersionMetadata,
+    documentVersionMetadata_contentCreatedTimestamp,
+    documentVersionMetadata_contentModifiedTimestamp,
+    documentVersionMetadata_contentType,
+    documentVersionMetadata_createdTimestamp,
+    documentVersionMetadata_creatorId,
+    documentVersionMetadata_id,
+    documentVersionMetadata_modifiedTimestamp,
+    documentVersionMetadata_name,
+    documentVersionMetadata_signature,
+    documentVersionMetadata_size,
+    documentVersionMetadata_source,
+    documentVersionMetadata_status,
+    documentVersionMetadata_thumbnail,
+
+    -- * FolderMetadata
+    FolderMetadata (..),
+    newFolderMetadata,
+    folderMetadata_createdTimestamp,
+    folderMetadata_creatorId,
+    folderMetadata_id,
+    folderMetadata_labels,
+    folderMetadata_latestVersionSize,
+    folderMetadata_modifiedTimestamp,
+    folderMetadata_name,
+    folderMetadata_parentFolderId,
+    folderMetadata_resourceState,
+    folderMetadata_signature,
+    folderMetadata_size,
+
+    -- * GroupMetadata
+    GroupMetadata (..),
+    newGroupMetadata,
+    groupMetadata_id,
+    groupMetadata_name,
+
+    -- * NotificationOptions
+    NotificationOptions (..),
+    newNotificationOptions,
+    notificationOptions_emailMessage,
+    notificationOptions_sendEmail,
+
+    -- * Participants
+    Participants (..),
+    newParticipants,
+    participants_groups,
+    participants_users,
+
+    -- * PermissionInfo
+    PermissionInfo (..),
+    newPermissionInfo,
+    permissionInfo_role,
+    permissionInfo_type,
+
+    -- * Principal
+    Principal (..),
+    newPrincipal,
+    principal_id,
+    principal_roles,
+    principal_type,
+
+    -- * ResourceMetadata
+    ResourceMetadata (..),
+    newResourceMetadata,
+    resourceMetadata_id,
+    resourceMetadata_name,
+    resourceMetadata_originalName,
+    resourceMetadata_owner,
+    resourceMetadata_parentId,
+    resourceMetadata_type,
+    resourceMetadata_versionId,
+
+    -- * ResourcePath
+    ResourcePath (..),
+    newResourcePath,
+    resourcePath_components,
+
+    -- * ResourcePathComponent
+    ResourcePathComponent (..),
+    newResourcePathComponent,
+    resourcePathComponent_id,
+    resourcePathComponent_name,
+
+    -- * SharePrincipal
+    SharePrincipal (..),
+    newSharePrincipal,
+    sharePrincipal_id,
+    sharePrincipal_type,
+    sharePrincipal_role,
+
+    -- * ShareResult
+    ShareResult (..),
+    newShareResult,
+    shareResult_inviteePrincipalId,
+    shareResult_principalId,
+    shareResult_role,
+    shareResult_shareId,
+    shareResult_status,
+    shareResult_statusMessage,
+
+    -- * StorageRuleType
+    StorageRuleType (..),
+    newStorageRuleType,
+    storageRuleType_storageAllocatedInBytes,
+    storageRuleType_storageType,
+
+    -- * Subscription
+    Subscription (..),
+    newSubscription,
+    subscription_endPoint,
+    subscription_protocol,
+    subscription_subscriptionId,
+
+    -- * UploadMetadata
+    UploadMetadata (..),
+    newUploadMetadata,
+    uploadMetadata_signedHeaders,
+    uploadMetadata_uploadUrl,
+
+    -- * User
+    User (..),
+    newUser,
+    user_createdTimestamp,
+    user_emailAddress,
+    user_givenName,
+    user_id,
+    user_locale,
+    user_modifiedTimestamp,
+    user_organizationId,
+    user_recycleBinFolderId,
+    user_rootFolderId,
+    user_status,
+    user_storage,
+    user_surname,
+    user_timeZoneId,
+    user_type,
+    user_username,
+
+    -- * UserMetadata
+    UserMetadata (..),
+    newUserMetadata,
+    userMetadata_emailAddress,
+    userMetadata_givenName,
+    userMetadata_id,
+    userMetadata_surname,
+    userMetadata_username,
+
+    -- * UserStorageMetadata
+    UserStorageMetadata (..),
+    newUserStorageMetadata,
+    userStorageMetadata_storageRule,
+    userStorageMetadata_storageUtilizedInBytes,
+  )
+where
+
+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
+import Amazonka.WorkDocs.Types.Activity
+import Amazonka.WorkDocs.Types.ActivityType
+import Amazonka.WorkDocs.Types.BooleanEnumType
+import Amazonka.WorkDocs.Types.Comment
+import Amazonka.WorkDocs.Types.CommentMetadata
+import Amazonka.WorkDocs.Types.CommentStatusType
+import Amazonka.WorkDocs.Types.CommentVisibilityType
+import Amazonka.WorkDocs.Types.DocumentMetadata
+import Amazonka.WorkDocs.Types.DocumentSourceType
+import Amazonka.WorkDocs.Types.DocumentStatusType
+import Amazonka.WorkDocs.Types.DocumentThumbnailType
+import Amazonka.WorkDocs.Types.DocumentVersionMetadata
+import Amazonka.WorkDocs.Types.DocumentVersionStatus
+import Amazonka.WorkDocs.Types.FolderContentType
+import Amazonka.WorkDocs.Types.FolderMetadata
+import Amazonka.WorkDocs.Types.GroupMetadata
+import Amazonka.WorkDocs.Types.LocaleType
+import Amazonka.WorkDocs.Types.NotificationOptions
+import Amazonka.WorkDocs.Types.OrderType
+import Amazonka.WorkDocs.Types.Participants
+import Amazonka.WorkDocs.Types.PermissionInfo
+import Amazonka.WorkDocs.Types.Principal
+import Amazonka.WorkDocs.Types.PrincipalType
+import Amazonka.WorkDocs.Types.ResourceCollectionType
+import Amazonka.WorkDocs.Types.ResourceMetadata
+import Amazonka.WorkDocs.Types.ResourcePath
+import Amazonka.WorkDocs.Types.ResourcePathComponent
+import Amazonka.WorkDocs.Types.ResourceSortType
+import Amazonka.WorkDocs.Types.ResourceStateType
+import Amazonka.WorkDocs.Types.ResourceType
+import Amazonka.WorkDocs.Types.RolePermissionType
+import Amazonka.WorkDocs.Types.RoleType
+import Amazonka.WorkDocs.Types.SharePrincipal
+import Amazonka.WorkDocs.Types.ShareResult
+import Amazonka.WorkDocs.Types.ShareStatusType
+import Amazonka.WorkDocs.Types.StorageRuleType
+import Amazonka.WorkDocs.Types.StorageType
+import Amazonka.WorkDocs.Types.Subscription
+import Amazonka.WorkDocs.Types.SubscriptionProtocolType
+import Amazonka.WorkDocs.Types.SubscriptionType
+import Amazonka.WorkDocs.Types.UploadMetadata
+import Amazonka.WorkDocs.Types.User
+import Amazonka.WorkDocs.Types.UserFilterType
+import Amazonka.WorkDocs.Types.UserMetadata
+import Amazonka.WorkDocs.Types.UserSortType
+import Amazonka.WorkDocs.Types.UserStatusType
+import Amazonka.WorkDocs.Types.UserStorageMetadata
+import Amazonka.WorkDocs.Types.UserType
+
+-- | API version @2016-05-01@ of the Amazon WorkDocs SDK configuration.
+defaultService :: Core.Service
+defaultService =
+  Core.Service
+    { Core.abbrev = "WorkDocs",
+      Core.signer = Sign.v4,
+      Core.endpointPrefix = "workdocs",
+      Core.signingName = "workdocs",
+      Core.version = "2016-05-01",
+      Core.s3AddressingStyle = Core.S3AddressingStyleAuto,
+      Core.endpoint = Core.defaultEndpoint defaultService,
+      Core.timeout = Prelude.Just 70,
+      Core.check = Core.statusSuccess,
+      Core.error = Core.parseJSONError "WorkDocs",
+      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
+
+-- | The resource hierarchy is changing.
+_ConcurrentModificationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConcurrentModificationException =
+  Core._MatchServiceError
+    defaultService
+    "ConcurrentModificationException"
+    Prelude.. Core.hasStatus 409
+
+-- | Another operation is in progress on the resource that conflicts with the
+-- current operation.
+_ConflictingOperationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ConflictingOperationException =
+  Core._MatchServiceError
+    defaultService
+    "ConflictingOperationException"
+    Prelude.. Core.hasStatus 409
+
+-- | The limit has been reached on the number of custom properties for the
+-- specified resource.
+_CustomMetadataLimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_CustomMetadataLimitExceededException =
+  Core._MatchServiceError
+    defaultService
+    "CustomMetadataLimitExceededException"
+    Prelude.. Core.hasStatus 429
+
+-- | The last user in the organization is being deactivated.
+_DeactivatingLastSystemUserException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DeactivatingLastSystemUserException =
+  Core._MatchServiceError
+    defaultService
+    "DeactivatingLastSystemUserException"
+    Prelude.. Core.hasStatus 409
+
+-- | This exception is thrown when the document is locked for comments and
+-- user tries to create or delete a comment on that document.
+_DocumentLockedForCommentsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DocumentLockedForCommentsException =
+  Core._MatchServiceError
+    defaultService
+    "DocumentLockedForCommentsException"
+    Prelude.. Core.hasStatus 409
+
+-- | This exception is thrown when a valid checkout ID is not presented on
+-- document version upload calls for a document that has been checked out
+-- from Web client.
+_DraftUploadOutOfSyncException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_DraftUploadOutOfSyncException =
+  Core._MatchServiceError
+    defaultService
+    "DraftUploadOutOfSyncException"
+    Prelude.. Core.hasStatus 409
+
+-- | The resource already exists.
+_EntityAlreadyExistsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_EntityAlreadyExistsException =
+  Core._MatchServiceError
+    defaultService
+    "EntityAlreadyExistsException"
+    Prelude.. Core.hasStatus 409
+
+-- | The resource does not exist.
+_EntityNotExistsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_EntityNotExistsException =
+  Core._MatchServiceError
+    defaultService
+    "EntityNotExistsException"
+    Prelude.. Core.hasStatus 404
+
+-- | The AWS Directory Service cannot reach an on-premises instance. Or a
+-- dependency under the control of the organization is failing, such as a
+-- connected Active Directory.
+_FailedDependencyException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_FailedDependencyException =
+  Core._MatchServiceError
+    defaultService
+    "FailedDependencyException"
+    Prelude.. Core.hasStatus 424
+
+-- | The user is undergoing transfer of ownership.
+_IllegalUserStateException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_IllegalUserStateException =
+  Core._MatchServiceError
+    defaultService
+    "IllegalUserStateException"
+    Prelude.. Core.hasStatus 409
+
+-- | The pagination marker or limit fields are not valid.
+_InvalidArgumentException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidArgumentException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidArgumentException"
+    Prelude.. Core.hasStatus 400
+
+-- | The requested operation is not allowed on the specified comment object.
+_InvalidCommentOperationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidCommentOperationException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidCommentOperationException"
+    Prelude.. Core.hasStatus 409
+
+-- | The operation is invalid.
+_InvalidOperationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidOperationException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidOperationException"
+    Prelude.. Core.hasStatus 405
+
+-- | The password is invalid.
+_InvalidPasswordException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_InvalidPasswordException =
+  Core._MatchServiceError
+    defaultService
+    "InvalidPasswordException"
+    Prelude.. Core.hasStatus 401
+
+-- | The maximum of 100,000 files and folders under the parent folder has
+-- been exceeded.
+_LimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_LimitExceededException =
+  Core._MatchServiceError
+    defaultService
+    "LimitExceededException"
+    Prelude.. Core.hasStatus 409
+
+-- | The specified document version is not in the INITIALIZED state.
+_ProhibitedStateException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ProhibitedStateException =
+  Core._MatchServiceError
+    defaultService
+    "ProhibitedStateException"
+    Prelude.. Core.hasStatus 409
+
+-- | The response is too large to return. The request must include a filter
+-- to reduce the size of the response.
+_RequestedEntityTooLargeException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_RequestedEntityTooLargeException =
+  Core._MatchServiceError
+    defaultService
+    "RequestedEntityTooLargeException"
+    Prelude.. Core.hasStatus 413
+
+-- | The resource is already checked out.
+_ResourceAlreadyCheckedOutException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ResourceAlreadyCheckedOutException =
+  Core._MatchServiceError
+    defaultService
+    "ResourceAlreadyCheckedOutException"
+    Prelude.. Core.hasStatus 409
+
+-- | One or more of the dependencies is unavailable.
+_ServiceUnavailableException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_ServiceUnavailableException =
+  Core._MatchServiceError
+    defaultService
+    "ServiceUnavailableException"
+    Prelude.. Core.hasStatus 503
+
+-- | The storage limit has been exceeded.
+_StorageLimitExceededException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_StorageLimitExceededException =
+  Core._MatchServiceError
+    defaultService
+    "StorageLimitExceededException"
+    Prelude.. Core.hasStatus 409
+
+-- | The storage limit will be exceeded.
+_StorageLimitWillExceedException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_StorageLimitWillExceedException =
+  Core._MatchServiceError
+    defaultService
+    "StorageLimitWillExceedException"
+    Prelude.. Core.hasStatus 413
+
+-- | The limit has been reached on the number of labels for the specified
+-- resource.
+_TooManyLabelsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_TooManyLabelsException =
+  Core._MatchServiceError
+    defaultService
+    "TooManyLabelsException"
+    Prelude.. Core.hasStatus 429
+
+-- | You\'ve reached the limit on the number of subscriptions for the
+-- WorkDocs instance.
+_TooManySubscriptionsException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_TooManySubscriptionsException =
+  Core._MatchServiceError
+    defaultService
+    "TooManySubscriptionsException"
+    Prelude.. Core.hasStatus 429
+
+-- | The operation is not permitted.
+_UnauthorizedOperationException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_UnauthorizedOperationException =
+  Core._MatchServiceError
+    defaultService
+    "UnauthorizedOperationException"
+    Prelude.. Core.hasStatus 403
+
+-- | The caller does not have access to perform the action on the resource.
+_UnauthorizedResourceAccessException :: (Core.AsError a) => Lens.Fold a Core.ServiceError
+_UnauthorizedResourceAccessException =
+  Core._MatchServiceError
+    defaultService
+    "UnauthorizedResourceAccessException"
+    Prelude.. Core.hasStatus 404
diff --git a/gen/Amazonka/WorkDocs/Types/Activity.hs b/gen/Amazonka/WorkDocs/Types/Activity.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/Activity.hs
@@ -0,0 +1,200 @@
+{-# 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.WorkDocs.Types.Activity
+-- 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.WorkDocs.Types.Activity 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
+import Amazonka.WorkDocs.Types.ActivityType
+import Amazonka.WorkDocs.Types.CommentMetadata
+import Amazonka.WorkDocs.Types.Participants
+import Amazonka.WorkDocs.Types.ResourceMetadata
+import Amazonka.WorkDocs.Types.UserMetadata
+
+-- | Describes the activity information.
+--
+-- /See:/ 'newActivity' smart constructor.
+data Activity = Activity'
+  { -- | Metadata of the commenting activity. This is an optional field and is
+    -- filled for commenting activities.
+    commentMetadata :: Prelude.Maybe CommentMetadata,
+    -- | The user who performed the action.
+    initiator :: Prelude.Maybe UserMetadata,
+    -- | Indicates whether an activity is indirect or direct. An indirect
+    -- activity results from a direct activity performed on a parent resource.
+    -- For example, sharing a parent folder (the direct activity) shares all of
+    -- the subfolders and documents within the parent folder (the indirect
+    -- activity).
+    isIndirectActivity :: Prelude.Maybe Prelude.Bool,
+    -- | The ID of the organization.
+    organizationId :: Prelude.Maybe Prelude.Text,
+    -- | The original parent of the resource. This is an optional field and is
+    -- filled for move activities.
+    originalParent :: Prelude.Maybe ResourceMetadata,
+    -- | The list of users or groups impacted by this action. This is an optional
+    -- field and is filled for the following sharing activities:
+    -- DOCUMENT_SHARED, DOCUMENT_SHARED, DOCUMENT_UNSHARED, FOLDER_SHARED,
+    -- FOLDER_UNSHARED.
+    participants :: Prelude.Maybe Participants,
+    -- | The metadata of the resource involved in the user action.
+    resourceMetadata :: Prelude.Maybe ResourceMetadata,
+    -- | The timestamp when the action was performed.
+    timeStamp :: Prelude.Maybe Data.POSIX,
+    -- | The activity type.
+    type' :: Prelude.Maybe ActivityType
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Activity' 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:
+--
+-- 'commentMetadata', 'activity_commentMetadata' - Metadata of the commenting activity. This is an optional field and is
+-- filled for commenting activities.
+--
+-- 'initiator', 'activity_initiator' - The user who performed the action.
+--
+-- 'isIndirectActivity', 'activity_isIndirectActivity' - Indicates whether an activity is indirect or direct. An indirect
+-- activity results from a direct activity performed on a parent resource.
+-- For example, sharing a parent folder (the direct activity) shares all of
+-- the subfolders and documents within the parent folder (the indirect
+-- activity).
+--
+-- 'organizationId', 'activity_organizationId' - The ID of the organization.
+--
+-- 'originalParent', 'activity_originalParent' - The original parent of the resource. This is an optional field and is
+-- filled for move activities.
+--
+-- 'participants', 'activity_participants' - The list of users or groups impacted by this action. This is an optional
+-- field and is filled for the following sharing activities:
+-- DOCUMENT_SHARED, DOCUMENT_SHARED, DOCUMENT_UNSHARED, FOLDER_SHARED,
+-- FOLDER_UNSHARED.
+--
+-- 'resourceMetadata', 'activity_resourceMetadata' - The metadata of the resource involved in the user action.
+--
+-- 'timeStamp', 'activity_timeStamp' - The timestamp when the action was performed.
+--
+-- 'type'', 'activity_type' - The activity type.
+newActivity ::
+  Activity
+newActivity =
+  Activity'
+    { commentMetadata = Prelude.Nothing,
+      initiator = Prelude.Nothing,
+      isIndirectActivity = Prelude.Nothing,
+      organizationId = Prelude.Nothing,
+      originalParent = Prelude.Nothing,
+      participants = Prelude.Nothing,
+      resourceMetadata = Prelude.Nothing,
+      timeStamp = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | Metadata of the commenting activity. This is an optional field and is
+-- filled for commenting activities.
+activity_commentMetadata :: Lens.Lens' Activity (Prelude.Maybe CommentMetadata)
+activity_commentMetadata = Lens.lens (\Activity' {commentMetadata} -> commentMetadata) (\s@Activity' {} a -> s {commentMetadata = a} :: Activity)
+
+-- | The user who performed the action.
+activity_initiator :: Lens.Lens' Activity (Prelude.Maybe UserMetadata)
+activity_initiator = Lens.lens (\Activity' {initiator} -> initiator) (\s@Activity' {} a -> s {initiator = a} :: Activity)
+
+-- | Indicates whether an activity is indirect or direct. An indirect
+-- activity results from a direct activity performed on a parent resource.
+-- For example, sharing a parent folder (the direct activity) shares all of
+-- the subfolders and documents within the parent folder (the indirect
+-- activity).
+activity_isIndirectActivity :: Lens.Lens' Activity (Prelude.Maybe Prelude.Bool)
+activity_isIndirectActivity = Lens.lens (\Activity' {isIndirectActivity} -> isIndirectActivity) (\s@Activity' {} a -> s {isIndirectActivity = a} :: Activity)
+
+-- | The ID of the organization.
+activity_organizationId :: Lens.Lens' Activity (Prelude.Maybe Prelude.Text)
+activity_organizationId = Lens.lens (\Activity' {organizationId} -> organizationId) (\s@Activity' {} a -> s {organizationId = a} :: Activity)
+
+-- | The original parent of the resource. This is an optional field and is
+-- filled for move activities.
+activity_originalParent :: Lens.Lens' Activity (Prelude.Maybe ResourceMetadata)
+activity_originalParent = Lens.lens (\Activity' {originalParent} -> originalParent) (\s@Activity' {} a -> s {originalParent = a} :: Activity)
+
+-- | The list of users or groups impacted by this action. This is an optional
+-- field and is filled for the following sharing activities:
+-- DOCUMENT_SHARED, DOCUMENT_SHARED, DOCUMENT_UNSHARED, FOLDER_SHARED,
+-- FOLDER_UNSHARED.
+activity_participants :: Lens.Lens' Activity (Prelude.Maybe Participants)
+activity_participants = Lens.lens (\Activity' {participants} -> participants) (\s@Activity' {} a -> s {participants = a} :: Activity)
+
+-- | The metadata of the resource involved in the user action.
+activity_resourceMetadata :: Lens.Lens' Activity (Prelude.Maybe ResourceMetadata)
+activity_resourceMetadata = Lens.lens (\Activity' {resourceMetadata} -> resourceMetadata) (\s@Activity' {} a -> s {resourceMetadata = a} :: Activity)
+
+-- | The timestamp when the action was performed.
+activity_timeStamp :: Lens.Lens' Activity (Prelude.Maybe Prelude.UTCTime)
+activity_timeStamp = Lens.lens (\Activity' {timeStamp} -> timeStamp) (\s@Activity' {} a -> s {timeStamp = a} :: Activity) Prelude.. Lens.mapping Data._Time
+
+-- | The activity type.
+activity_type :: Lens.Lens' Activity (Prelude.Maybe ActivityType)
+activity_type = Lens.lens (\Activity' {type'} -> type') (\s@Activity' {} a -> s {type' = a} :: Activity)
+
+instance Data.FromJSON Activity where
+  parseJSON =
+    Data.withObject
+      "Activity"
+      ( \x ->
+          Activity'
+            Prelude.<$> (x Data..:? "CommentMetadata")
+            Prelude.<*> (x Data..:? "Initiator")
+            Prelude.<*> (x Data..:? "IsIndirectActivity")
+            Prelude.<*> (x Data..:? "OrganizationId")
+            Prelude.<*> (x Data..:? "OriginalParent")
+            Prelude.<*> (x Data..:? "Participants")
+            Prelude.<*> (x Data..:? "ResourceMetadata")
+            Prelude.<*> (x Data..:? "TimeStamp")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable Activity where
+  hashWithSalt _salt Activity' {..} =
+    _salt
+      `Prelude.hashWithSalt` commentMetadata
+      `Prelude.hashWithSalt` initiator
+      `Prelude.hashWithSalt` isIndirectActivity
+      `Prelude.hashWithSalt` organizationId
+      `Prelude.hashWithSalt` originalParent
+      `Prelude.hashWithSalt` participants
+      `Prelude.hashWithSalt` resourceMetadata
+      `Prelude.hashWithSalt` timeStamp
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData Activity where
+  rnf Activity' {..} =
+    Prelude.rnf commentMetadata
+      `Prelude.seq` Prelude.rnf initiator
+      `Prelude.seq` Prelude.rnf isIndirectActivity
+      `Prelude.seq` Prelude.rnf organizationId
+      `Prelude.seq` Prelude.rnf originalParent
+      `Prelude.seq` Prelude.rnf participants
+      `Prelude.seq` Prelude.rnf resourceMetadata
+      `Prelude.seq` Prelude.rnf timeStamp
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/WorkDocs/Types/ActivityType.hs b/gen/Amazonka/WorkDocs/Types/ActivityType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/ActivityType.hs
@@ -0,0 +1,226 @@
+{-# 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.WorkDocs.Types.ActivityType
+-- 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.WorkDocs.Types.ActivityType
+  ( ActivityType
+      ( ..,
+        ActivityType_DOCUMENT_ANNOTATION_ADDED,
+        ActivityType_DOCUMENT_ANNOTATION_DELETED,
+        ActivityType_DOCUMENT_CHECKED_IN,
+        ActivityType_DOCUMENT_CHECKED_OUT,
+        ActivityType_DOCUMENT_COMMENT_ADDED,
+        ActivityType_DOCUMENT_COMMENT_DELETED,
+        ActivityType_DOCUMENT_MOVED,
+        ActivityType_DOCUMENT_RECYCLED,
+        ActivityType_DOCUMENT_RENAMED,
+        ActivityType_DOCUMENT_RESTORED,
+        ActivityType_DOCUMENT_REVERTED,
+        ActivityType_DOCUMENT_SHAREABLE_LINK_CREATED,
+        ActivityType_DOCUMENT_SHAREABLE_LINK_PERMISSION_CHANGED,
+        ActivityType_DOCUMENT_SHAREABLE_LINK_REMOVED,
+        ActivityType_DOCUMENT_SHARED,
+        ActivityType_DOCUMENT_SHARE_PERMISSION_CHANGED,
+        ActivityType_DOCUMENT_UNSHARED,
+        ActivityType_DOCUMENT_VERSION_DELETED,
+        ActivityType_DOCUMENT_VERSION_DOWNLOADED,
+        ActivityType_DOCUMENT_VERSION_UPLOADED,
+        ActivityType_DOCUMENT_VERSION_VIEWED,
+        ActivityType_FOLDER_CREATED,
+        ActivityType_FOLDER_DELETED,
+        ActivityType_FOLDER_MOVED,
+        ActivityType_FOLDER_RECYCLED,
+        ActivityType_FOLDER_RENAMED,
+        ActivityType_FOLDER_RESTORED,
+        ActivityType_FOLDER_SHAREABLE_LINK_CREATED,
+        ActivityType_FOLDER_SHAREABLE_LINK_PERMISSION_CHANGED,
+        ActivityType_FOLDER_SHAREABLE_LINK_REMOVED,
+        ActivityType_FOLDER_SHARED,
+        ActivityType_FOLDER_SHARE_PERMISSION_CHANGED,
+        ActivityType_FOLDER_UNSHARED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ActivityType = ActivityType'
+  { fromActivityType ::
+      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 ActivityType_DOCUMENT_ANNOTATION_ADDED :: ActivityType
+pattern ActivityType_DOCUMENT_ANNOTATION_ADDED = ActivityType' "DOCUMENT_ANNOTATION_ADDED"
+
+pattern ActivityType_DOCUMENT_ANNOTATION_DELETED :: ActivityType
+pattern ActivityType_DOCUMENT_ANNOTATION_DELETED = ActivityType' "DOCUMENT_ANNOTATION_DELETED"
+
+pattern ActivityType_DOCUMENT_CHECKED_IN :: ActivityType
+pattern ActivityType_DOCUMENT_CHECKED_IN = ActivityType' "DOCUMENT_CHECKED_IN"
+
+pattern ActivityType_DOCUMENT_CHECKED_OUT :: ActivityType
+pattern ActivityType_DOCUMENT_CHECKED_OUT = ActivityType' "DOCUMENT_CHECKED_OUT"
+
+pattern ActivityType_DOCUMENT_COMMENT_ADDED :: ActivityType
+pattern ActivityType_DOCUMENT_COMMENT_ADDED = ActivityType' "DOCUMENT_COMMENT_ADDED"
+
+pattern ActivityType_DOCUMENT_COMMENT_DELETED :: ActivityType
+pattern ActivityType_DOCUMENT_COMMENT_DELETED = ActivityType' "DOCUMENT_COMMENT_DELETED"
+
+pattern ActivityType_DOCUMENT_MOVED :: ActivityType
+pattern ActivityType_DOCUMENT_MOVED = ActivityType' "DOCUMENT_MOVED"
+
+pattern ActivityType_DOCUMENT_RECYCLED :: ActivityType
+pattern ActivityType_DOCUMENT_RECYCLED = ActivityType' "DOCUMENT_RECYCLED"
+
+pattern ActivityType_DOCUMENT_RENAMED :: ActivityType
+pattern ActivityType_DOCUMENT_RENAMED = ActivityType' "DOCUMENT_RENAMED"
+
+pattern ActivityType_DOCUMENT_RESTORED :: ActivityType
+pattern ActivityType_DOCUMENT_RESTORED = ActivityType' "DOCUMENT_RESTORED"
+
+pattern ActivityType_DOCUMENT_REVERTED :: ActivityType
+pattern ActivityType_DOCUMENT_REVERTED = ActivityType' "DOCUMENT_REVERTED"
+
+pattern ActivityType_DOCUMENT_SHAREABLE_LINK_CREATED :: ActivityType
+pattern ActivityType_DOCUMENT_SHAREABLE_LINK_CREATED = ActivityType' "DOCUMENT_SHAREABLE_LINK_CREATED"
+
+pattern ActivityType_DOCUMENT_SHAREABLE_LINK_PERMISSION_CHANGED :: ActivityType
+pattern ActivityType_DOCUMENT_SHAREABLE_LINK_PERMISSION_CHANGED = ActivityType' "DOCUMENT_SHAREABLE_LINK_PERMISSION_CHANGED"
+
+pattern ActivityType_DOCUMENT_SHAREABLE_LINK_REMOVED :: ActivityType
+pattern ActivityType_DOCUMENT_SHAREABLE_LINK_REMOVED = ActivityType' "DOCUMENT_SHAREABLE_LINK_REMOVED"
+
+pattern ActivityType_DOCUMENT_SHARED :: ActivityType
+pattern ActivityType_DOCUMENT_SHARED = ActivityType' "DOCUMENT_SHARED"
+
+pattern ActivityType_DOCUMENT_SHARE_PERMISSION_CHANGED :: ActivityType
+pattern ActivityType_DOCUMENT_SHARE_PERMISSION_CHANGED = ActivityType' "DOCUMENT_SHARE_PERMISSION_CHANGED"
+
+pattern ActivityType_DOCUMENT_UNSHARED :: ActivityType
+pattern ActivityType_DOCUMENT_UNSHARED = ActivityType' "DOCUMENT_UNSHARED"
+
+pattern ActivityType_DOCUMENT_VERSION_DELETED :: ActivityType
+pattern ActivityType_DOCUMENT_VERSION_DELETED = ActivityType' "DOCUMENT_VERSION_DELETED"
+
+pattern ActivityType_DOCUMENT_VERSION_DOWNLOADED :: ActivityType
+pattern ActivityType_DOCUMENT_VERSION_DOWNLOADED = ActivityType' "DOCUMENT_VERSION_DOWNLOADED"
+
+pattern ActivityType_DOCUMENT_VERSION_UPLOADED :: ActivityType
+pattern ActivityType_DOCUMENT_VERSION_UPLOADED = ActivityType' "DOCUMENT_VERSION_UPLOADED"
+
+pattern ActivityType_DOCUMENT_VERSION_VIEWED :: ActivityType
+pattern ActivityType_DOCUMENT_VERSION_VIEWED = ActivityType' "DOCUMENT_VERSION_VIEWED"
+
+pattern ActivityType_FOLDER_CREATED :: ActivityType
+pattern ActivityType_FOLDER_CREATED = ActivityType' "FOLDER_CREATED"
+
+pattern ActivityType_FOLDER_DELETED :: ActivityType
+pattern ActivityType_FOLDER_DELETED = ActivityType' "FOLDER_DELETED"
+
+pattern ActivityType_FOLDER_MOVED :: ActivityType
+pattern ActivityType_FOLDER_MOVED = ActivityType' "FOLDER_MOVED"
+
+pattern ActivityType_FOLDER_RECYCLED :: ActivityType
+pattern ActivityType_FOLDER_RECYCLED = ActivityType' "FOLDER_RECYCLED"
+
+pattern ActivityType_FOLDER_RENAMED :: ActivityType
+pattern ActivityType_FOLDER_RENAMED = ActivityType' "FOLDER_RENAMED"
+
+pattern ActivityType_FOLDER_RESTORED :: ActivityType
+pattern ActivityType_FOLDER_RESTORED = ActivityType' "FOLDER_RESTORED"
+
+pattern ActivityType_FOLDER_SHAREABLE_LINK_CREATED :: ActivityType
+pattern ActivityType_FOLDER_SHAREABLE_LINK_CREATED = ActivityType' "FOLDER_SHAREABLE_LINK_CREATED"
+
+pattern ActivityType_FOLDER_SHAREABLE_LINK_PERMISSION_CHANGED :: ActivityType
+pattern ActivityType_FOLDER_SHAREABLE_LINK_PERMISSION_CHANGED = ActivityType' "FOLDER_SHAREABLE_LINK_PERMISSION_CHANGED"
+
+pattern ActivityType_FOLDER_SHAREABLE_LINK_REMOVED :: ActivityType
+pattern ActivityType_FOLDER_SHAREABLE_LINK_REMOVED = ActivityType' "FOLDER_SHAREABLE_LINK_REMOVED"
+
+pattern ActivityType_FOLDER_SHARED :: ActivityType
+pattern ActivityType_FOLDER_SHARED = ActivityType' "FOLDER_SHARED"
+
+pattern ActivityType_FOLDER_SHARE_PERMISSION_CHANGED :: ActivityType
+pattern ActivityType_FOLDER_SHARE_PERMISSION_CHANGED = ActivityType' "FOLDER_SHARE_PERMISSION_CHANGED"
+
+pattern ActivityType_FOLDER_UNSHARED :: ActivityType
+pattern ActivityType_FOLDER_UNSHARED = ActivityType' "FOLDER_UNSHARED"
+
+{-# COMPLETE
+  ActivityType_DOCUMENT_ANNOTATION_ADDED,
+  ActivityType_DOCUMENT_ANNOTATION_DELETED,
+  ActivityType_DOCUMENT_CHECKED_IN,
+  ActivityType_DOCUMENT_CHECKED_OUT,
+  ActivityType_DOCUMENT_COMMENT_ADDED,
+  ActivityType_DOCUMENT_COMMENT_DELETED,
+  ActivityType_DOCUMENT_MOVED,
+  ActivityType_DOCUMENT_RECYCLED,
+  ActivityType_DOCUMENT_RENAMED,
+  ActivityType_DOCUMENT_RESTORED,
+  ActivityType_DOCUMENT_REVERTED,
+  ActivityType_DOCUMENT_SHAREABLE_LINK_CREATED,
+  ActivityType_DOCUMENT_SHAREABLE_LINK_PERMISSION_CHANGED,
+  ActivityType_DOCUMENT_SHAREABLE_LINK_REMOVED,
+  ActivityType_DOCUMENT_SHARED,
+  ActivityType_DOCUMENT_SHARE_PERMISSION_CHANGED,
+  ActivityType_DOCUMENT_UNSHARED,
+  ActivityType_DOCUMENT_VERSION_DELETED,
+  ActivityType_DOCUMENT_VERSION_DOWNLOADED,
+  ActivityType_DOCUMENT_VERSION_UPLOADED,
+  ActivityType_DOCUMENT_VERSION_VIEWED,
+  ActivityType_FOLDER_CREATED,
+  ActivityType_FOLDER_DELETED,
+  ActivityType_FOLDER_MOVED,
+  ActivityType_FOLDER_RECYCLED,
+  ActivityType_FOLDER_RENAMED,
+  ActivityType_FOLDER_RESTORED,
+  ActivityType_FOLDER_SHAREABLE_LINK_CREATED,
+  ActivityType_FOLDER_SHAREABLE_LINK_PERMISSION_CHANGED,
+  ActivityType_FOLDER_SHAREABLE_LINK_REMOVED,
+  ActivityType_FOLDER_SHARED,
+  ActivityType_FOLDER_SHARE_PERMISSION_CHANGED,
+  ActivityType_FOLDER_UNSHARED,
+  ActivityType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/BooleanEnumType.hs b/gen/Amazonka/WorkDocs/Types/BooleanEnumType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/BooleanEnumType.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.WorkDocs.Types.BooleanEnumType
+-- 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.WorkDocs.Types.BooleanEnumType
+  ( BooleanEnumType
+      ( ..,
+        BooleanEnumType_FALSE,
+        BooleanEnumType_TRUE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype BooleanEnumType = BooleanEnumType'
+  { fromBooleanEnumType ::
+      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 BooleanEnumType_FALSE :: BooleanEnumType
+pattern BooleanEnumType_FALSE = BooleanEnumType' "FALSE"
+
+pattern BooleanEnumType_TRUE :: BooleanEnumType
+pattern BooleanEnumType_TRUE = BooleanEnumType' "TRUE"
+
+{-# COMPLETE
+  BooleanEnumType_FALSE,
+  BooleanEnumType_TRUE,
+  BooleanEnumType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/Comment.hs b/gen/Amazonka/WorkDocs/Types/Comment.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/Comment.hs
@@ -0,0 +1,185 @@
+{-# 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.WorkDocs.Types.Comment
+-- 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.WorkDocs.Types.Comment 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
+import Amazonka.WorkDocs.Types.CommentStatusType
+import Amazonka.WorkDocs.Types.CommentVisibilityType
+import Amazonka.WorkDocs.Types.User
+
+-- | Describes a comment.
+--
+-- /See:/ 'newComment' smart constructor.
+data Comment = Comment'
+  { -- | The details of the user who made the comment.
+    contributor :: Prelude.Maybe User,
+    -- | The time that the comment was created.
+    createdTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the parent comment.
+    parentId :: Prelude.Maybe Prelude.Text,
+    -- | If the comment is a reply to another user\'s comment, this field
+    -- contains the user ID of the user being replied to.
+    recipientId :: Prelude.Maybe Prelude.Text,
+    -- | The status of the comment.
+    status :: Prelude.Maybe CommentStatusType,
+    -- | The text of the comment.
+    text :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The ID of the root comment in the thread.
+    threadId :: Prelude.Maybe Prelude.Text,
+    -- | The visibility of the comment. Options are either PRIVATE, where the
+    -- comment is visible only to the comment author and document owner and
+    -- co-owners, or PUBLIC, where the comment is visible to document owners,
+    -- co-owners, and contributors.
+    visibility :: Prelude.Maybe CommentVisibilityType,
+    -- | The ID of the comment.
+    commentId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Comment' 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:
+--
+-- 'contributor', 'comment_contributor' - The details of the user who made the comment.
+--
+-- 'createdTimestamp', 'comment_createdTimestamp' - The time that the comment was created.
+--
+-- 'parentId', 'comment_parentId' - The ID of the parent comment.
+--
+-- 'recipientId', 'comment_recipientId' - If the comment is a reply to another user\'s comment, this field
+-- contains the user ID of the user being replied to.
+--
+-- 'status', 'comment_status' - The status of the comment.
+--
+-- 'text', 'comment_text' - The text of the comment.
+--
+-- 'threadId', 'comment_threadId' - The ID of the root comment in the thread.
+--
+-- 'visibility', 'comment_visibility' - The visibility of the comment. Options are either PRIVATE, where the
+-- comment is visible only to the comment author and document owner and
+-- co-owners, or PUBLIC, where the comment is visible to document owners,
+-- co-owners, and contributors.
+--
+-- 'commentId', 'comment_commentId' - The ID of the comment.
+newComment ::
+  -- | 'commentId'
+  Prelude.Text ->
+  Comment
+newComment pCommentId_ =
+  Comment'
+    { contributor = Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing,
+      parentId = Prelude.Nothing,
+      recipientId = Prelude.Nothing,
+      status = Prelude.Nothing,
+      text = Prelude.Nothing,
+      threadId = Prelude.Nothing,
+      visibility = Prelude.Nothing,
+      commentId = pCommentId_
+    }
+
+-- | The details of the user who made the comment.
+comment_contributor :: Lens.Lens' Comment (Prelude.Maybe User)
+comment_contributor = Lens.lens (\Comment' {contributor} -> contributor) (\s@Comment' {} a -> s {contributor = a} :: Comment)
+
+-- | The time that the comment was created.
+comment_createdTimestamp :: Lens.Lens' Comment (Prelude.Maybe Prelude.UTCTime)
+comment_createdTimestamp = Lens.lens (\Comment' {createdTimestamp} -> createdTimestamp) (\s@Comment' {} a -> s {createdTimestamp = a} :: Comment) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the parent comment.
+comment_parentId :: Lens.Lens' Comment (Prelude.Maybe Prelude.Text)
+comment_parentId = Lens.lens (\Comment' {parentId} -> parentId) (\s@Comment' {} a -> s {parentId = a} :: Comment)
+
+-- | If the comment is a reply to another user\'s comment, this field
+-- contains the user ID of the user being replied to.
+comment_recipientId :: Lens.Lens' Comment (Prelude.Maybe Prelude.Text)
+comment_recipientId = Lens.lens (\Comment' {recipientId} -> recipientId) (\s@Comment' {} a -> s {recipientId = a} :: Comment)
+
+-- | The status of the comment.
+comment_status :: Lens.Lens' Comment (Prelude.Maybe CommentStatusType)
+comment_status = Lens.lens (\Comment' {status} -> status) (\s@Comment' {} a -> s {status = a} :: Comment)
+
+-- | The text of the comment.
+comment_text :: Lens.Lens' Comment (Prelude.Maybe Prelude.Text)
+comment_text = Lens.lens (\Comment' {text} -> text) (\s@Comment' {} a -> s {text = a} :: Comment) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The ID of the root comment in the thread.
+comment_threadId :: Lens.Lens' Comment (Prelude.Maybe Prelude.Text)
+comment_threadId = Lens.lens (\Comment' {threadId} -> threadId) (\s@Comment' {} a -> s {threadId = a} :: Comment)
+
+-- | The visibility of the comment. Options are either PRIVATE, where the
+-- comment is visible only to the comment author and document owner and
+-- co-owners, or PUBLIC, where the comment is visible to document owners,
+-- co-owners, and contributors.
+comment_visibility :: Lens.Lens' Comment (Prelude.Maybe CommentVisibilityType)
+comment_visibility = Lens.lens (\Comment' {visibility} -> visibility) (\s@Comment' {} a -> s {visibility = a} :: Comment)
+
+-- | The ID of the comment.
+comment_commentId :: Lens.Lens' Comment Prelude.Text
+comment_commentId = Lens.lens (\Comment' {commentId} -> commentId) (\s@Comment' {} a -> s {commentId = a} :: Comment)
+
+instance Data.FromJSON Comment where
+  parseJSON =
+    Data.withObject
+      "Comment"
+      ( \x ->
+          Comment'
+            Prelude.<$> (x Data..:? "Contributor")
+            Prelude.<*> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "ParentId")
+            Prelude.<*> (x Data..:? "RecipientId")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "Text")
+            Prelude.<*> (x Data..:? "ThreadId")
+            Prelude.<*> (x Data..:? "Visibility")
+            Prelude.<*> (x Data..: "CommentId")
+      )
+
+instance Prelude.Hashable Comment where
+  hashWithSalt _salt Comment' {..} =
+    _salt
+      `Prelude.hashWithSalt` contributor
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` parentId
+      `Prelude.hashWithSalt` recipientId
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` text
+      `Prelude.hashWithSalt` threadId
+      `Prelude.hashWithSalt` visibility
+      `Prelude.hashWithSalt` commentId
+
+instance Prelude.NFData Comment where
+  rnf Comment' {..} =
+    Prelude.rnf contributor
+      `Prelude.seq` Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf parentId
+      `Prelude.seq` Prelude.rnf recipientId
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf text
+      `Prelude.seq` Prelude.rnf threadId
+      `Prelude.seq` Prelude.rnf visibility
+      `Prelude.seq` Prelude.rnf commentId
diff --git a/gen/Amazonka/WorkDocs/Types/CommentMetadata.hs b/gen/Amazonka/WorkDocs/Types/CommentMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/CommentMetadata.hs
@@ -0,0 +1,122 @@
+{-# 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.WorkDocs.Types.CommentMetadata
+-- 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.WorkDocs.Types.CommentMetadata 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
+import Amazonka.WorkDocs.Types.CommentStatusType
+import Amazonka.WorkDocs.Types.User
+
+-- | Describes the metadata of a comment.
+--
+-- /See:/ 'newCommentMetadata' smart constructor.
+data CommentMetadata = CommentMetadata'
+  { -- | The ID of the comment.
+    commentId :: Prelude.Maybe Prelude.Text,
+    -- | The status of the comment.
+    commentStatus :: Prelude.Maybe CommentStatusType,
+    -- | The user who made the comment.
+    contributor :: Prelude.Maybe User,
+    -- | The timestamp that the comment was created.
+    createdTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the user being replied to.
+    recipientId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'CommentMetadata' 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:
+--
+-- 'commentId', 'commentMetadata_commentId' - The ID of the comment.
+--
+-- 'commentStatus', 'commentMetadata_commentStatus' - The status of the comment.
+--
+-- 'contributor', 'commentMetadata_contributor' - The user who made the comment.
+--
+-- 'createdTimestamp', 'commentMetadata_createdTimestamp' - The timestamp that the comment was created.
+--
+-- 'recipientId', 'commentMetadata_recipientId' - The ID of the user being replied to.
+newCommentMetadata ::
+  CommentMetadata
+newCommentMetadata =
+  CommentMetadata'
+    { commentId = Prelude.Nothing,
+      commentStatus = Prelude.Nothing,
+      contributor = Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing,
+      recipientId = Prelude.Nothing
+    }
+
+-- | The ID of the comment.
+commentMetadata_commentId :: Lens.Lens' CommentMetadata (Prelude.Maybe Prelude.Text)
+commentMetadata_commentId = Lens.lens (\CommentMetadata' {commentId} -> commentId) (\s@CommentMetadata' {} a -> s {commentId = a} :: CommentMetadata)
+
+-- | The status of the comment.
+commentMetadata_commentStatus :: Lens.Lens' CommentMetadata (Prelude.Maybe CommentStatusType)
+commentMetadata_commentStatus = Lens.lens (\CommentMetadata' {commentStatus} -> commentStatus) (\s@CommentMetadata' {} a -> s {commentStatus = a} :: CommentMetadata)
+
+-- | The user who made the comment.
+commentMetadata_contributor :: Lens.Lens' CommentMetadata (Prelude.Maybe User)
+commentMetadata_contributor = Lens.lens (\CommentMetadata' {contributor} -> contributor) (\s@CommentMetadata' {} a -> s {contributor = a} :: CommentMetadata)
+
+-- | The timestamp that the comment was created.
+commentMetadata_createdTimestamp :: Lens.Lens' CommentMetadata (Prelude.Maybe Prelude.UTCTime)
+commentMetadata_createdTimestamp = Lens.lens (\CommentMetadata' {createdTimestamp} -> createdTimestamp) (\s@CommentMetadata' {} a -> s {createdTimestamp = a} :: CommentMetadata) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the user being replied to.
+commentMetadata_recipientId :: Lens.Lens' CommentMetadata (Prelude.Maybe Prelude.Text)
+commentMetadata_recipientId = Lens.lens (\CommentMetadata' {recipientId} -> recipientId) (\s@CommentMetadata' {} a -> s {recipientId = a} :: CommentMetadata)
+
+instance Data.FromJSON CommentMetadata where
+  parseJSON =
+    Data.withObject
+      "CommentMetadata"
+      ( \x ->
+          CommentMetadata'
+            Prelude.<$> (x Data..:? "CommentId")
+            Prelude.<*> (x Data..:? "CommentStatus")
+            Prelude.<*> (x Data..:? "Contributor")
+            Prelude.<*> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "RecipientId")
+      )
+
+instance Prelude.Hashable CommentMetadata where
+  hashWithSalt _salt CommentMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` commentId
+      `Prelude.hashWithSalt` commentStatus
+      `Prelude.hashWithSalt` contributor
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` recipientId
+
+instance Prelude.NFData CommentMetadata where
+  rnf CommentMetadata' {..} =
+    Prelude.rnf commentId
+      `Prelude.seq` Prelude.rnf commentStatus
+      `Prelude.seq` Prelude.rnf contributor
+      `Prelude.seq` Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf recipientId
diff --git a/gen/Amazonka/WorkDocs/Types/CommentStatusType.hs b/gen/Amazonka/WorkDocs/Types/CommentStatusType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/CommentStatusType.hs
@@ -0,0 +1,76 @@
+{-# 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.WorkDocs.Types.CommentStatusType
+-- 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.WorkDocs.Types.CommentStatusType
+  ( CommentStatusType
+      ( ..,
+        CommentStatusType_DELETED,
+        CommentStatusType_DRAFT,
+        CommentStatusType_PUBLISHED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CommentStatusType = CommentStatusType'
+  { fromCommentStatusType ::
+      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 CommentStatusType_DELETED :: CommentStatusType
+pattern CommentStatusType_DELETED = CommentStatusType' "DELETED"
+
+pattern CommentStatusType_DRAFT :: CommentStatusType
+pattern CommentStatusType_DRAFT = CommentStatusType' "DRAFT"
+
+pattern CommentStatusType_PUBLISHED :: CommentStatusType
+pattern CommentStatusType_PUBLISHED = CommentStatusType' "PUBLISHED"
+
+{-# COMPLETE
+  CommentStatusType_DELETED,
+  CommentStatusType_DRAFT,
+  CommentStatusType_PUBLISHED,
+  CommentStatusType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/CommentVisibilityType.hs b/gen/Amazonka/WorkDocs/Types/CommentVisibilityType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/CommentVisibilityType.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.WorkDocs.Types.CommentVisibilityType
+-- 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.WorkDocs.Types.CommentVisibilityType
+  ( CommentVisibilityType
+      ( ..,
+        CommentVisibilityType_PRIVATE,
+        CommentVisibilityType_PUBLIC
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype CommentVisibilityType = CommentVisibilityType'
+  { fromCommentVisibilityType ::
+      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 CommentVisibilityType_PRIVATE :: CommentVisibilityType
+pattern CommentVisibilityType_PRIVATE = CommentVisibilityType' "PRIVATE"
+
+pattern CommentVisibilityType_PUBLIC :: CommentVisibilityType
+pattern CommentVisibilityType_PUBLIC = CommentVisibilityType' "PUBLIC"
+
+{-# COMPLETE
+  CommentVisibilityType_PRIVATE,
+  CommentVisibilityType_PUBLIC,
+  CommentVisibilityType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/DocumentMetadata.hs b/gen/Amazonka/WorkDocs/Types/DocumentMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/DocumentMetadata.hs
@@ -0,0 +1,159 @@
+{-# 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.WorkDocs.Types.DocumentMetadata
+-- 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.WorkDocs.Types.DocumentMetadata 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
+import Amazonka.WorkDocs.Types.DocumentVersionMetadata
+import Amazonka.WorkDocs.Types.ResourceStateType
+
+-- | Describes the document.
+--
+-- /See:/ 'newDocumentMetadata' smart constructor.
+data DocumentMetadata = DocumentMetadata'
+  { -- | The time when the document was created.
+    createdTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the creator.
+    creatorId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the document.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | List of labels on the document.
+    labels :: Prelude.Maybe [Prelude.Text],
+    -- | The latest version of the document.
+    latestVersionMetadata :: Prelude.Maybe DocumentVersionMetadata,
+    -- | The time when the document was updated.
+    modifiedTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the parent folder.
+    parentFolderId :: Prelude.Maybe Prelude.Text,
+    -- | The resource state.
+    resourceState :: Prelude.Maybe ResourceStateType
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DocumentMetadata' 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:
+--
+-- 'createdTimestamp', 'documentMetadata_createdTimestamp' - The time when the document was created.
+--
+-- 'creatorId', 'documentMetadata_creatorId' - The ID of the creator.
+--
+-- 'id', 'documentMetadata_id' - The ID of the document.
+--
+-- 'labels', 'documentMetadata_labels' - List of labels on the document.
+--
+-- 'latestVersionMetadata', 'documentMetadata_latestVersionMetadata' - The latest version of the document.
+--
+-- 'modifiedTimestamp', 'documentMetadata_modifiedTimestamp' - The time when the document was updated.
+--
+-- 'parentFolderId', 'documentMetadata_parentFolderId' - The ID of the parent folder.
+--
+-- 'resourceState', 'documentMetadata_resourceState' - The resource state.
+newDocumentMetadata ::
+  DocumentMetadata
+newDocumentMetadata =
+  DocumentMetadata'
+    { createdTimestamp =
+        Prelude.Nothing,
+      creatorId = Prelude.Nothing,
+      id = Prelude.Nothing,
+      labels = Prelude.Nothing,
+      latestVersionMetadata = Prelude.Nothing,
+      modifiedTimestamp = Prelude.Nothing,
+      parentFolderId = Prelude.Nothing,
+      resourceState = Prelude.Nothing
+    }
+
+-- | The time when the document was created.
+documentMetadata_createdTimestamp :: Lens.Lens' DocumentMetadata (Prelude.Maybe Prelude.UTCTime)
+documentMetadata_createdTimestamp = Lens.lens (\DocumentMetadata' {createdTimestamp} -> createdTimestamp) (\s@DocumentMetadata' {} a -> s {createdTimestamp = a} :: DocumentMetadata) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the creator.
+documentMetadata_creatorId :: Lens.Lens' DocumentMetadata (Prelude.Maybe Prelude.Text)
+documentMetadata_creatorId = Lens.lens (\DocumentMetadata' {creatorId} -> creatorId) (\s@DocumentMetadata' {} a -> s {creatorId = a} :: DocumentMetadata)
+
+-- | The ID of the document.
+documentMetadata_id :: Lens.Lens' DocumentMetadata (Prelude.Maybe Prelude.Text)
+documentMetadata_id = Lens.lens (\DocumentMetadata' {id} -> id) (\s@DocumentMetadata' {} a -> s {id = a} :: DocumentMetadata)
+
+-- | List of labels on the document.
+documentMetadata_labels :: Lens.Lens' DocumentMetadata (Prelude.Maybe [Prelude.Text])
+documentMetadata_labels = Lens.lens (\DocumentMetadata' {labels} -> labels) (\s@DocumentMetadata' {} a -> s {labels = a} :: DocumentMetadata) Prelude.. Lens.mapping Lens.coerced
+
+-- | The latest version of the document.
+documentMetadata_latestVersionMetadata :: Lens.Lens' DocumentMetadata (Prelude.Maybe DocumentVersionMetadata)
+documentMetadata_latestVersionMetadata = Lens.lens (\DocumentMetadata' {latestVersionMetadata} -> latestVersionMetadata) (\s@DocumentMetadata' {} a -> s {latestVersionMetadata = a} :: DocumentMetadata)
+
+-- | The time when the document was updated.
+documentMetadata_modifiedTimestamp :: Lens.Lens' DocumentMetadata (Prelude.Maybe Prelude.UTCTime)
+documentMetadata_modifiedTimestamp = Lens.lens (\DocumentMetadata' {modifiedTimestamp} -> modifiedTimestamp) (\s@DocumentMetadata' {} a -> s {modifiedTimestamp = a} :: DocumentMetadata) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the parent folder.
+documentMetadata_parentFolderId :: Lens.Lens' DocumentMetadata (Prelude.Maybe Prelude.Text)
+documentMetadata_parentFolderId = Lens.lens (\DocumentMetadata' {parentFolderId} -> parentFolderId) (\s@DocumentMetadata' {} a -> s {parentFolderId = a} :: DocumentMetadata)
+
+-- | The resource state.
+documentMetadata_resourceState :: Lens.Lens' DocumentMetadata (Prelude.Maybe ResourceStateType)
+documentMetadata_resourceState = Lens.lens (\DocumentMetadata' {resourceState} -> resourceState) (\s@DocumentMetadata' {} a -> s {resourceState = a} :: DocumentMetadata)
+
+instance Data.FromJSON DocumentMetadata where
+  parseJSON =
+    Data.withObject
+      "DocumentMetadata"
+      ( \x ->
+          DocumentMetadata'
+            Prelude.<$> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "CreatorId")
+            Prelude.<*> (x Data..:? "Id")
+            Prelude.<*> (x Data..:? "Labels" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "LatestVersionMetadata")
+            Prelude.<*> (x Data..:? "ModifiedTimestamp")
+            Prelude.<*> (x Data..:? "ParentFolderId")
+            Prelude.<*> (x Data..:? "ResourceState")
+      )
+
+instance Prelude.Hashable DocumentMetadata where
+  hashWithSalt _salt DocumentMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` creatorId
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` labels
+      `Prelude.hashWithSalt` latestVersionMetadata
+      `Prelude.hashWithSalt` modifiedTimestamp
+      `Prelude.hashWithSalt` parentFolderId
+      `Prelude.hashWithSalt` resourceState
+
+instance Prelude.NFData DocumentMetadata where
+  rnf DocumentMetadata' {..} =
+    Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf creatorId
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf labels
+      `Prelude.seq` Prelude.rnf latestVersionMetadata
+      `Prelude.seq` Prelude.rnf modifiedTimestamp
+      `Prelude.seq` Prelude.rnf parentFolderId
+      `Prelude.seq` Prelude.rnf resourceState
diff --git a/gen/Amazonka/WorkDocs/Types/DocumentSourceType.hs b/gen/Amazonka/WorkDocs/Types/DocumentSourceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/DocumentSourceType.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.WorkDocs.Types.DocumentSourceType
+-- 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.WorkDocs.Types.DocumentSourceType
+  ( DocumentSourceType
+      ( ..,
+        DocumentSourceType_ORIGINAL,
+        DocumentSourceType_WITH_COMMENTS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DocumentSourceType = DocumentSourceType'
+  { fromDocumentSourceType ::
+      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 DocumentSourceType_ORIGINAL :: DocumentSourceType
+pattern DocumentSourceType_ORIGINAL = DocumentSourceType' "ORIGINAL"
+
+pattern DocumentSourceType_WITH_COMMENTS :: DocumentSourceType
+pattern DocumentSourceType_WITH_COMMENTS = DocumentSourceType' "WITH_COMMENTS"
+
+{-# COMPLETE
+  DocumentSourceType_ORIGINAL,
+  DocumentSourceType_WITH_COMMENTS,
+  DocumentSourceType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/DocumentStatusType.hs b/gen/Amazonka/WorkDocs/Types/DocumentStatusType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/DocumentStatusType.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.WorkDocs.Types.DocumentStatusType
+-- 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.WorkDocs.Types.DocumentStatusType
+  ( DocumentStatusType
+      ( ..,
+        DocumentStatusType_ACTIVE,
+        DocumentStatusType_INITIALIZED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DocumentStatusType = DocumentStatusType'
+  { fromDocumentStatusType ::
+      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 DocumentStatusType_ACTIVE :: DocumentStatusType
+pattern DocumentStatusType_ACTIVE = DocumentStatusType' "ACTIVE"
+
+pattern DocumentStatusType_INITIALIZED :: DocumentStatusType
+pattern DocumentStatusType_INITIALIZED = DocumentStatusType' "INITIALIZED"
+
+{-# COMPLETE
+  DocumentStatusType_ACTIVE,
+  DocumentStatusType_INITIALIZED,
+  DocumentStatusType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/DocumentThumbnailType.hs b/gen/Amazonka/WorkDocs/Types/DocumentThumbnailType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/DocumentThumbnailType.hs
@@ -0,0 +1,76 @@
+{-# 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.WorkDocs.Types.DocumentThumbnailType
+-- 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.WorkDocs.Types.DocumentThumbnailType
+  ( DocumentThumbnailType
+      ( ..,
+        DocumentThumbnailType_LARGE,
+        DocumentThumbnailType_SMALL,
+        DocumentThumbnailType_SMALL_HQ
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DocumentThumbnailType = DocumentThumbnailType'
+  { fromDocumentThumbnailType ::
+      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 DocumentThumbnailType_LARGE :: DocumentThumbnailType
+pattern DocumentThumbnailType_LARGE = DocumentThumbnailType' "LARGE"
+
+pattern DocumentThumbnailType_SMALL :: DocumentThumbnailType
+pattern DocumentThumbnailType_SMALL = DocumentThumbnailType' "SMALL"
+
+pattern DocumentThumbnailType_SMALL_HQ :: DocumentThumbnailType
+pattern DocumentThumbnailType_SMALL_HQ = DocumentThumbnailType' "SMALL_HQ"
+
+{-# COMPLETE
+  DocumentThumbnailType_LARGE,
+  DocumentThumbnailType_SMALL,
+  DocumentThumbnailType_SMALL_HQ,
+  DocumentThumbnailType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/DocumentVersionMetadata.hs b/gen/Amazonka/WorkDocs/Types/DocumentVersionMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/DocumentVersionMetadata.hs
@@ -0,0 +1,220 @@
+{-# 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.WorkDocs.Types.DocumentVersionMetadata
+-- 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.WorkDocs.Types.DocumentVersionMetadata 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
+import Amazonka.WorkDocs.Types.DocumentSourceType
+import Amazonka.WorkDocs.Types.DocumentStatusType
+import Amazonka.WorkDocs.Types.DocumentThumbnailType
+
+-- | Describes a version of a document.
+--
+-- /See:/ 'newDocumentVersionMetadata' smart constructor.
+data DocumentVersionMetadata = DocumentVersionMetadata'
+  { -- | The timestamp when the content of the document was originally created.
+    contentCreatedTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The timestamp when the content of the document was modified.
+    contentModifiedTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The content type of the document.
+    contentType :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp when the document was first uploaded.
+    createdTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the creator.
+    creatorId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the version.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | The timestamp when the document was last uploaded.
+    modifiedTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The name of the version.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The signature of the document.
+    signature :: Prelude.Maybe Prelude.Text,
+    -- | The size of the document, in bytes.
+    size :: Prelude.Maybe Prelude.Integer,
+    -- | The source of the document.
+    source :: Prelude.Maybe (Prelude.HashMap DocumentSourceType (Data.Sensitive Prelude.Text)),
+    -- | The status of the document.
+    status :: Prelude.Maybe DocumentStatusType,
+    -- | The thumbnail of the document.
+    thumbnail :: Prelude.Maybe (Prelude.HashMap DocumentThumbnailType (Data.Sensitive Prelude.Text))
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'DocumentVersionMetadata' 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:
+--
+-- 'contentCreatedTimestamp', 'documentVersionMetadata_contentCreatedTimestamp' - The timestamp when the content of the document was originally created.
+--
+-- 'contentModifiedTimestamp', 'documentVersionMetadata_contentModifiedTimestamp' - The timestamp when the content of the document was modified.
+--
+-- 'contentType', 'documentVersionMetadata_contentType' - The content type of the document.
+--
+-- 'createdTimestamp', 'documentVersionMetadata_createdTimestamp' - The timestamp when the document was first uploaded.
+--
+-- 'creatorId', 'documentVersionMetadata_creatorId' - The ID of the creator.
+--
+-- 'id', 'documentVersionMetadata_id' - The ID of the version.
+--
+-- 'modifiedTimestamp', 'documentVersionMetadata_modifiedTimestamp' - The timestamp when the document was last uploaded.
+--
+-- 'name', 'documentVersionMetadata_name' - The name of the version.
+--
+-- 'signature', 'documentVersionMetadata_signature' - The signature of the document.
+--
+-- 'size', 'documentVersionMetadata_size' - The size of the document, in bytes.
+--
+-- 'source', 'documentVersionMetadata_source' - The source of the document.
+--
+-- 'status', 'documentVersionMetadata_status' - The status of the document.
+--
+-- 'thumbnail', 'documentVersionMetadata_thumbnail' - The thumbnail of the document.
+newDocumentVersionMetadata ::
+  DocumentVersionMetadata
+newDocumentVersionMetadata =
+  DocumentVersionMetadata'
+    { contentCreatedTimestamp =
+        Prelude.Nothing,
+      contentModifiedTimestamp = Prelude.Nothing,
+      contentType = Prelude.Nothing,
+      createdTimestamp = Prelude.Nothing,
+      creatorId = Prelude.Nothing,
+      id = Prelude.Nothing,
+      modifiedTimestamp = Prelude.Nothing,
+      name = Prelude.Nothing,
+      signature = Prelude.Nothing,
+      size = Prelude.Nothing,
+      source = Prelude.Nothing,
+      status = Prelude.Nothing,
+      thumbnail = Prelude.Nothing
+    }
+
+-- | The timestamp when the content of the document was originally created.
+documentVersionMetadata_contentCreatedTimestamp :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe Prelude.UTCTime)
+documentVersionMetadata_contentCreatedTimestamp = Lens.lens (\DocumentVersionMetadata' {contentCreatedTimestamp} -> contentCreatedTimestamp) (\s@DocumentVersionMetadata' {} a -> s {contentCreatedTimestamp = a} :: DocumentVersionMetadata) Prelude.. Lens.mapping Data._Time
+
+-- | The timestamp when the content of the document was modified.
+documentVersionMetadata_contentModifiedTimestamp :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe Prelude.UTCTime)
+documentVersionMetadata_contentModifiedTimestamp = Lens.lens (\DocumentVersionMetadata' {contentModifiedTimestamp} -> contentModifiedTimestamp) (\s@DocumentVersionMetadata' {} a -> s {contentModifiedTimestamp = a} :: DocumentVersionMetadata) Prelude.. Lens.mapping Data._Time
+
+-- | The content type of the document.
+documentVersionMetadata_contentType :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe Prelude.Text)
+documentVersionMetadata_contentType = Lens.lens (\DocumentVersionMetadata' {contentType} -> contentType) (\s@DocumentVersionMetadata' {} a -> s {contentType = a} :: DocumentVersionMetadata)
+
+-- | The timestamp when the document was first uploaded.
+documentVersionMetadata_createdTimestamp :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe Prelude.UTCTime)
+documentVersionMetadata_createdTimestamp = Lens.lens (\DocumentVersionMetadata' {createdTimestamp} -> createdTimestamp) (\s@DocumentVersionMetadata' {} a -> s {createdTimestamp = a} :: DocumentVersionMetadata) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the creator.
+documentVersionMetadata_creatorId :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe Prelude.Text)
+documentVersionMetadata_creatorId = Lens.lens (\DocumentVersionMetadata' {creatorId} -> creatorId) (\s@DocumentVersionMetadata' {} a -> s {creatorId = a} :: DocumentVersionMetadata)
+
+-- | The ID of the version.
+documentVersionMetadata_id :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe Prelude.Text)
+documentVersionMetadata_id = Lens.lens (\DocumentVersionMetadata' {id} -> id) (\s@DocumentVersionMetadata' {} a -> s {id = a} :: DocumentVersionMetadata)
+
+-- | The timestamp when the document was last uploaded.
+documentVersionMetadata_modifiedTimestamp :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe Prelude.UTCTime)
+documentVersionMetadata_modifiedTimestamp = Lens.lens (\DocumentVersionMetadata' {modifiedTimestamp} -> modifiedTimestamp) (\s@DocumentVersionMetadata' {} a -> s {modifiedTimestamp = a} :: DocumentVersionMetadata) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the version.
+documentVersionMetadata_name :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe Prelude.Text)
+documentVersionMetadata_name = Lens.lens (\DocumentVersionMetadata' {name} -> name) (\s@DocumentVersionMetadata' {} a -> s {name = a} :: DocumentVersionMetadata)
+
+-- | The signature of the document.
+documentVersionMetadata_signature :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe Prelude.Text)
+documentVersionMetadata_signature = Lens.lens (\DocumentVersionMetadata' {signature} -> signature) (\s@DocumentVersionMetadata' {} a -> s {signature = a} :: DocumentVersionMetadata)
+
+-- | The size of the document, in bytes.
+documentVersionMetadata_size :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe Prelude.Integer)
+documentVersionMetadata_size = Lens.lens (\DocumentVersionMetadata' {size} -> size) (\s@DocumentVersionMetadata' {} a -> s {size = a} :: DocumentVersionMetadata)
+
+-- | The source of the document.
+documentVersionMetadata_source :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe (Prelude.HashMap DocumentSourceType Prelude.Text))
+documentVersionMetadata_source = Lens.lens (\DocumentVersionMetadata' {source} -> source) (\s@DocumentVersionMetadata' {} a -> s {source = a} :: DocumentVersionMetadata) Prelude.. Lens.mapping Lens.coerced
+
+-- | The status of the document.
+documentVersionMetadata_status :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe DocumentStatusType)
+documentVersionMetadata_status = Lens.lens (\DocumentVersionMetadata' {status} -> status) (\s@DocumentVersionMetadata' {} a -> s {status = a} :: DocumentVersionMetadata)
+
+-- | The thumbnail of the document.
+documentVersionMetadata_thumbnail :: Lens.Lens' DocumentVersionMetadata (Prelude.Maybe (Prelude.HashMap DocumentThumbnailType Prelude.Text))
+documentVersionMetadata_thumbnail = Lens.lens (\DocumentVersionMetadata' {thumbnail} -> thumbnail) (\s@DocumentVersionMetadata' {} a -> s {thumbnail = a} :: DocumentVersionMetadata) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON DocumentVersionMetadata where
+  parseJSON =
+    Data.withObject
+      "DocumentVersionMetadata"
+      ( \x ->
+          DocumentVersionMetadata'
+            Prelude.<$> (x Data..:? "ContentCreatedTimestamp")
+            Prelude.<*> (x Data..:? "ContentModifiedTimestamp")
+            Prelude.<*> (x Data..:? "ContentType")
+            Prelude.<*> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "CreatorId")
+            Prelude.<*> (x Data..:? "Id")
+            Prelude.<*> (x Data..:? "ModifiedTimestamp")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "Signature")
+            Prelude.<*> (x Data..:? "Size")
+            Prelude.<*> (x Data..:? "Source" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "Thumbnail" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable DocumentVersionMetadata where
+  hashWithSalt _salt DocumentVersionMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` contentCreatedTimestamp
+      `Prelude.hashWithSalt` contentModifiedTimestamp
+      `Prelude.hashWithSalt` contentType
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` creatorId
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` modifiedTimestamp
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` signature
+      `Prelude.hashWithSalt` size
+      `Prelude.hashWithSalt` source
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` thumbnail
+
+instance Prelude.NFData DocumentVersionMetadata where
+  rnf DocumentVersionMetadata' {..} =
+    Prelude.rnf contentCreatedTimestamp
+      `Prelude.seq` Prelude.rnf contentModifiedTimestamp
+      `Prelude.seq` Prelude.rnf contentType
+      `Prelude.seq` Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf creatorId
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf modifiedTimestamp
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf signature
+      `Prelude.seq` Prelude.rnf size
+      `Prelude.seq` Prelude.rnf source
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf thumbnail
diff --git a/gen/Amazonka/WorkDocs/Types/DocumentVersionStatus.hs b/gen/Amazonka/WorkDocs/Types/DocumentVersionStatus.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/DocumentVersionStatus.hs
@@ -0,0 +1,66 @@
+{-# 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.WorkDocs.Types.DocumentVersionStatus
+-- 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.WorkDocs.Types.DocumentVersionStatus
+  ( DocumentVersionStatus
+      ( ..,
+        DocumentVersionStatus_ACTIVE
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype DocumentVersionStatus = DocumentVersionStatus'
+  { fromDocumentVersionStatus ::
+      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 DocumentVersionStatus_ACTIVE :: DocumentVersionStatus
+pattern DocumentVersionStatus_ACTIVE = DocumentVersionStatus' "ACTIVE"
+
+{-# COMPLETE
+  DocumentVersionStatus_ACTIVE,
+  DocumentVersionStatus'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/FolderContentType.hs b/gen/Amazonka/WorkDocs/Types/FolderContentType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/FolderContentType.hs
@@ -0,0 +1,76 @@
+{-# 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.WorkDocs.Types.FolderContentType
+-- 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.WorkDocs.Types.FolderContentType
+  ( FolderContentType
+      ( ..,
+        FolderContentType_ALL,
+        FolderContentType_DOCUMENT,
+        FolderContentType_FOLDER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype FolderContentType = FolderContentType'
+  { fromFolderContentType ::
+      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 FolderContentType_ALL :: FolderContentType
+pattern FolderContentType_ALL = FolderContentType' "ALL"
+
+pattern FolderContentType_DOCUMENT :: FolderContentType
+pattern FolderContentType_DOCUMENT = FolderContentType' "DOCUMENT"
+
+pattern FolderContentType_FOLDER :: FolderContentType
+pattern FolderContentType_FOLDER = FolderContentType' "FOLDER"
+
+{-# COMPLETE
+  FolderContentType_ALL,
+  FolderContentType_DOCUMENT,
+  FolderContentType_FOLDER,
+  FolderContentType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/FolderMetadata.hs b/gen/Amazonka/WorkDocs/Types/FolderMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/FolderMetadata.hs
@@ -0,0 +1,196 @@
+{-# 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.WorkDocs.Types.FolderMetadata
+-- 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.WorkDocs.Types.FolderMetadata 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
+import Amazonka.WorkDocs.Types.ResourceStateType
+
+-- | Describes a folder.
+--
+-- /See:/ 'newFolderMetadata' smart constructor.
+data FolderMetadata = FolderMetadata'
+  { -- | The time when the folder was created.
+    createdTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the creator.
+    creatorId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the folder.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | List of labels on the folder.
+    labels :: Prelude.Maybe [Prelude.Text],
+    -- | The size of the latest version of the folder metadata.
+    latestVersionSize :: Prelude.Maybe Prelude.Integer,
+    -- | The time when the folder was updated.
+    modifiedTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The name of the folder.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the parent folder.
+    parentFolderId :: Prelude.Maybe Prelude.Text,
+    -- | The resource state of the folder.
+    resourceState :: Prelude.Maybe ResourceStateType,
+    -- | The unique identifier created from the subfolders and documents of the
+    -- folder.
+    signature :: Prelude.Maybe Prelude.Text,
+    -- | The size of the folder metadata.
+    size :: Prelude.Maybe Prelude.Integer
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'FolderMetadata' 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:
+--
+-- 'createdTimestamp', 'folderMetadata_createdTimestamp' - The time when the folder was created.
+--
+-- 'creatorId', 'folderMetadata_creatorId' - The ID of the creator.
+--
+-- 'id', 'folderMetadata_id' - The ID of the folder.
+--
+-- 'labels', 'folderMetadata_labels' - List of labels on the folder.
+--
+-- 'latestVersionSize', 'folderMetadata_latestVersionSize' - The size of the latest version of the folder metadata.
+--
+-- 'modifiedTimestamp', 'folderMetadata_modifiedTimestamp' - The time when the folder was updated.
+--
+-- 'name', 'folderMetadata_name' - The name of the folder.
+--
+-- 'parentFolderId', 'folderMetadata_parentFolderId' - The ID of the parent folder.
+--
+-- 'resourceState', 'folderMetadata_resourceState' - The resource state of the folder.
+--
+-- 'signature', 'folderMetadata_signature' - The unique identifier created from the subfolders and documents of the
+-- folder.
+--
+-- 'size', 'folderMetadata_size' - The size of the folder metadata.
+newFolderMetadata ::
+  FolderMetadata
+newFolderMetadata =
+  FolderMetadata'
+    { createdTimestamp = Prelude.Nothing,
+      creatorId = Prelude.Nothing,
+      id = Prelude.Nothing,
+      labels = Prelude.Nothing,
+      latestVersionSize = Prelude.Nothing,
+      modifiedTimestamp = Prelude.Nothing,
+      name = Prelude.Nothing,
+      parentFolderId = Prelude.Nothing,
+      resourceState = Prelude.Nothing,
+      signature = Prelude.Nothing,
+      size = Prelude.Nothing
+    }
+
+-- | The time when the folder was created.
+folderMetadata_createdTimestamp :: Lens.Lens' FolderMetadata (Prelude.Maybe Prelude.UTCTime)
+folderMetadata_createdTimestamp = Lens.lens (\FolderMetadata' {createdTimestamp} -> createdTimestamp) (\s@FolderMetadata' {} a -> s {createdTimestamp = a} :: FolderMetadata) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the creator.
+folderMetadata_creatorId :: Lens.Lens' FolderMetadata (Prelude.Maybe Prelude.Text)
+folderMetadata_creatorId = Lens.lens (\FolderMetadata' {creatorId} -> creatorId) (\s@FolderMetadata' {} a -> s {creatorId = a} :: FolderMetadata)
+
+-- | The ID of the folder.
+folderMetadata_id :: Lens.Lens' FolderMetadata (Prelude.Maybe Prelude.Text)
+folderMetadata_id = Lens.lens (\FolderMetadata' {id} -> id) (\s@FolderMetadata' {} a -> s {id = a} :: FolderMetadata)
+
+-- | List of labels on the folder.
+folderMetadata_labels :: Lens.Lens' FolderMetadata (Prelude.Maybe [Prelude.Text])
+folderMetadata_labels = Lens.lens (\FolderMetadata' {labels} -> labels) (\s@FolderMetadata' {} a -> s {labels = a} :: FolderMetadata) Prelude.. Lens.mapping Lens.coerced
+
+-- | The size of the latest version of the folder metadata.
+folderMetadata_latestVersionSize :: Lens.Lens' FolderMetadata (Prelude.Maybe Prelude.Integer)
+folderMetadata_latestVersionSize = Lens.lens (\FolderMetadata' {latestVersionSize} -> latestVersionSize) (\s@FolderMetadata' {} a -> s {latestVersionSize = a} :: FolderMetadata)
+
+-- | The time when the folder was updated.
+folderMetadata_modifiedTimestamp :: Lens.Lens' FolderMetadata (Prelude.Maybe Prelude.UTCTime)
+folderMetadata_modifiedTimestamp = Lens.lens (\FolderMetadata' {modifiedTimestamp} -> modifiedTimestamp) (\s@FolderMetadata' {} a -> s {modifiedTimestamp = a} :: FolderMetadata) Prelude.. Lens.mapping Data._Time
+
+-- | The name of the folder.
+folderMetadata_name :: Lens.Lens' FolderMetadata (Prelude.Maybe Prelude.Text)
+folderMetadata_name = Lens.lens (\FolderMetadata' {name} -> name) (\s@FolderMetadata' {} a -> s {name = a} :: FolderMetadata)
+
+-- | The ID of the parent folder.
+folderMetadata_parentFolderId :: Lens.Lens' FolderMetadata (Prelude.Maybe Prelude.Text)
+folderMetadata_parentFolderId = Lens.lens (\FolderMetadata' {parentFolderId} -> parentFolderId) (\s@FolderMetadata' {} a -> s {parentFolderId = a} :: FolderMetadata)
+
+-- | The resource state of the folder.
+folderMetadata_resourceState :: Lens.Lens' FolderMetadata (Prelude.Maybe ResourceStateType)
+folderMetadata_resourceState = Lens.lens (\FolderMetadata' {resourceState} -> resourceState) (\s@FolderMetadata' {} a -> s {resourceState = a} :: FolderMetadata)
+
+-- | The unique identifier created from the subfolders and documents of the
+-- folder.
+folderMetadata_signature :: Lens.Lens' FolderMetadata (Prelude.Maybe Prelude.Text)
+folderMetadata_signature = Lens.lens (\FolderMetadata' {signature} -> signature) (\s@FolderMetadata' {} a -> s {signature = a} :: FolderMetadata)
+
+-- | The size of the folder metadata.
+folderMetadata_size :: Lens.Lens' FolderMetadata (Prelude.Maybe Prelude.Integer)
+folderMetadata_size = Lens.lens (\FolderMetadata' {size} -> size) (\s@FolderMetadata' {} a -> s {size = a} :: FolderMetadata)
+
+instance Data.FromJSON FolderMetadata where
+  parseJSON =
+    Data.withObject
+      "FolderMetadata"
+      ( \x ->
+          FolderMetadata'
+            Prelude.<$> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "CreatorId")
+            Prelude.<*> (x Data..:? "Id")
+            Prelude.<*> (x Data..:? "Labels" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "LatestVersionSize")
+            Prelude.<*> (x Data..:? "ModifiedTimestamp")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "ParentFolderId")
+            Prelude.<*> (x Data..:? "ResourceState")
+            Prelude.<*> (x Data..:? "Signature")
+            Prelude.<*> (x Data..:? "Size")
+      )
+
+instance Prelude.Hashable FolderMetadata where
+  hashWithSalt _salt FolderMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` creatorId
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` labels
+      `Prelude.hashWithSalt` latestVersionSize
+      `Prelude.hashWithSalt` modifiedTimestamp
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` parentFolderId
+      `Prelude.hashWithSalt` resourceState
+      `Prelude.hashWithSalt` signature
+      `Prelude.hashWithSalt` size
+
+instance Prelude.NFData FolderMetadata where
+  rnf FolderMetadata' {..} =
+    Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf creatorId
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf labels
+      `Prelude.seq` Prelude.rnf latestVersionSize
+      `Prelude.seq` Prelude.rnf modifiedTimestamp
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf parentFolderId
+      `Prelude.seq` Prelude.rnf resourceState
+      `Prelude.seq` Prelude.rnf signature
+      `Prelude.seq` Prelude.rnf size
diff --git a/gen/Amazonka/WorkDocs/Types/GroupMetadata.hs b/gen/Amazonka/WorkDocs/Types/GroupMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/GroupMetadata.hs
@@ -0,0 +1,83 @@
+{-# 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.WorkDocs.Types.GroupMetadata
+-- 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.WorkDocs.Types.GroupMetadata 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
+
+-- | Describes the metadata of a user group.
+--
+-- /See:/ 'newGroupMetadata' smart constructor.
+data GroupMetadata = GroupMetadata'
+  { -- | The ID of the user group.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | The name of the group.
+    name :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'GroupMetadata' 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:
+--
+-- 'id', 'groupMetadata_id' - The ID of the user group.
+--
+-- 'name', 'groupMetadata_name' - The name of the group.
+newGroupMetadata ::
+  GroupMetadata
+newGroupMetadata =
+  GroupMetadata'
+    { id = Prelude.Nothing,
+      name = Prelude.Nothing
+    }
+
+-- | The ID of the user group.
+groupMetadata_id :: Lens.Lens' GroupMetadata (Prelude.Maybe Prelude.Text)
+groupMetadata_id = Lens.lens (\GroupMetadata' {id} -> id) (\s@GroupMetadata' {} a -> s {id = a} :: GroupMetadata)
+
+-- | The name of the group.
+groupMetadata_name :: Lens.Lens' GroupMetadata (Prelude.Maybe Prelude.Text)
+groupMetadata_name = Lens.lens (\GroupMetadata' {name} -> name) (\s@GroupMetadata' {} a -> s {name = a} :: GroupMetadata)
+
+instance Data.FromJSON GroupMetadata where
+  parseJSON =
+    Data.withObject
+      "GroupMetadata"
+      ( \x ->
+          GroupMetadata'
+            Prelude.<$> (x Data..:? "Id")
+            Prelude.<*> (x Data..:? "Name")
+      )
+
+instance Prelude.Hashable GroupMetadata where
+  hashWithSalt _salt GroupMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData GroupMetadata where
+  rnf GroupMetadata' {..} =
+    Prelude.rnf id `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/WorkDocs/Types/LocaleType.hs b/gen/Amazonka/WorkDocs/Types/LocaleType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/LocaleType.hs
@@ -0,0 +1,116 @@
+{-# 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.WorkDocs.Types.LocaleType
+-- 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.WorkDocs.Types.LocaleType
+  ( LocaleType
+      ( ..,
+        LocaleType_De,
+        LocaleType_Default,
+        LocaleType_En,
+        LocaleType_Es,
+        LocaleType_Fr,
+        LocaleType_Ja,
+        LocaleType_Ko,
+        LocaleType_Pt_BR,
+        LocaleType_Ru,
+        LocaleType_Zh_CN,
+        LocaleType_Zh_TW
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype LocaleType = LocaleType'
+  { fromLocaleType ::
+      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 LocaleType_De :: LocaleType
+pattern LocaleType_De = LocaleType' "de"
+
+pattern LocaleType_Default :: LocaleType
+pattern LocaleType_Default = LocaleType' "default"
+
+pattern LocaleType_En :: LocaleType
+pattern LocaleType_En = LocaleType' "en"
+
+pattern LocaleType_Es :: LocaleType
+pattern LocaleType_Es = LocaleType' "es"
+
+pattern LocaleType_Fr :: LocaleType
+pattern LocaleType_Fr = LocaleType' "fr"
+
+pattern LocaleType_Ja :: LocaleType
+pattern LocaleType_Ja = LocaleType' "ja"
+
+pattern LocaleType_Ko :: LocaleType
+pattern LocaleType_Ko = LocaleType' "ko"
+
+pattern LocaleType_Pt_BR :: LocaleType
+pattern LocaleType_Pt_BR = LocaleType' "pt_BR"
+
+pattern LocaleType_Ru :: LocaleType
+pattern LocaleType_Ru = LocaleType' "ru"
+
+pattern LocaleType_Zh_CN :: LocaleType
+pattern LocaleType_Zh_CN = LocaleType' "zh_CN"
+
+pattern LocaleType_Zh_TW :: LocaleType
+pattern LocaleType_Zh_TW = LocaleType' "zh_TW"
+
+{-# COMPLETE
+  LocaleType_De,
+  LocaleType_Default,
+  LocaleType_En,
+  LocaleType_Es,
+  LocaleType_Fr,
+  LocaleType_Ja,
+  LocaleType_Ko,
+  LocaleType_Pt_BR,
+  LocaleType_Ru,
+  LocaleType_Zh_CN,
+  LocaleType_Zh_TW,
+  LocaleType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/NotificationOptions.hs b/gen/Amazonka/WorkDocs/Types/NotificationOptions.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/NotificationOptions.hs
@@ -0,0 +1,87 @@
+{-# 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.WorkDocs.Types.NotificationOptions
+-- 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.WorkDocs.Types.NotificationOptions 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
+
+-- | Set of options which defines notification preferences of given action.
+--
+-- /See:/ 'newNotificationOptions' smart constructor.
+data NotificationOptions = NotificationOptions'
+  { -- | Text value to be included in the email body.
+    emailMessage :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | Boolean value to indicate an email notification should be sent to the
+    -- receipients.
+    sendEmail :: Prelude.Maybe Prelude.Bool
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'NotificationOptions' 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:
+--
+-- 'emailMessage', 'notificationOptions_emailMessage' - Text value to be included in the email body.
+--
+-- 'sendEmail', 'notificationOptions_sendEmail' - Boolean value to indicate an email notification should be sent to the
+-- receipients.
+newNotificationOptions ::
+  NotificationOptions
+newNotificationOptions =
+  NotificationOptions'
+    { emailMessage =
+        Prelude.Nothing,
+      sendEmail = Prelude.Nothing
+    }
+
+-- | Text value to be included in the email body.
+notificationOptions_emailMessage :: Lens.Lens' NotificationOptions (Prelude.Maybe Prelude.Text)
+notificationOptions_emailMessage = Lens.lens (\NotificationOptions' {emailMessage} -> emailMessage) (\s@NotificationOptions' {} a -> s {emailMessage = a} :: NotificationOptions) Prelude.. Lens.mapping Data._Sensitive
+
+-- | Boolean value to indicate an email notification should be sent to the
+-- receipients.
+notificationOptions_sendEmail :: Lens.Lens' NotificationOptions (Prelude.Maybe Prelude.Bool)
+notificationOptions_sendEmail = Lens.lens (\NotificationOptions' {sendEmail} -> sendEmail) (\s@NotificationOptions' {} a -> s {sendEmail = a} :: NotificationOptions)
+
+instance Prelude.Hashable NotificationOptions where
+  hashWithSalt _salt NotificationOptions' {..} =
+    _salt
+      `Prelude.hashWithSalt` emailMessage
+      `Prelude.hashWithSalt` sendEmail
+
+instance Prelude.NFData NotificationOptions where
+  rnf NotificationOptions' {..} =
+    Prelude.rnf emailMessage
+      `Prelude.seq` Prelude.rnf sendEmail
+
+instance Data.ToJSON NotificationOptions where
+  toJSON NotificationOptions' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("EmailMessage" Data..=) Prelude.<$> emailMessage,
+            ("SendEmail" Data..=) Prelude.<$> sendEmail
+          ]
+      )
diff --git a/gen/Amazonka/WorkDocs/Types/OrderType.hs b/gen/Amazonka/WorkDocs/Types/OrderType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/OrderType.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.WorkDocs.Types.OrderType
+-- 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.WorkDocs.Types.OrderType
+  ( OrderType
+      ( ..,
+        OrderType_ASCENDING,
+        OrderType_DESCENDING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype OrderType = OrderType'
+  { fromOrderType ::
+      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 OrderType_ASCENDING :: OrderType
+pattern OrderType_ASCENDING = OrderType' "ASCENDING"
+
+pattern OrderType_DESCENDING :: OrderType
+pattern OrderType_DESCENDING = OrderType' "DESCENDING"
+
+{-# COMPLETE
+  OrderType_ASCENDING,
+  OrderType_DESCENDING,
+  OrderType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/Participants.hs b/gen/Amazonka/WorkDocs/Types/Participants.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/Participants.hs
@@ -0,0 +1,85 @@
+{-# 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.WorkDocs.Types.Participants
+-- 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.WorkDocs.Types.Participants 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
+import Amazonka.WorkDocs.Types.GroupMetadata
+import Amazonka.WorkDocs.Types.UserMetadata
+
+-- | Describes the users or user groups.
+--
+-- /See:/ 'newParticipants' smart constructor.
+data Participants = Participants'
+  { -- | The list of user groups.
+    groups :: Prelude.Maybe [GroupMetadata],
+    -- | The list of users.
+    users :: Prelude.Maybe [UserMetadata]
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Participants' 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:
+--
+-- 'groups', 'participants_groups' - The list of user groups.
+--
+-- 'users', 'participants_users' - The list of users.
+newParticipants ::
+  Participants
+newParticipants =
+  Participants'
+    { groups = Prelude.Nothing,
+      users = Prelude.Nothing
+    }
+
+-- | The list of user groups.
+participants_groups :: Lens.Lens' Participants (Prelude.Maybe [GroupMetadata])
+participants_groups = Lens.lens (\Participants' {groups} -> groups) (\s@Participants' {} a -> s {groups = a} :: Participants) Prelude.. Lens.mapping Lens.coerced
+
+-- | The list of users.
+participants_users :: Lens.Lens' Participants (Prelude.Maybe [UserMetadata])
+participants_users = Lens.lens (\Participants' {users} -> users) (\s@Participants' {} a -> s {users = a} :: Participants) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON Participants where
+  parseJSON =
+    Data.withObject
+      "Participants"
+      ( \x ->
+          Participants'
+            Prelude.<$> (x Data..:? "Groups" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Users" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable Participants where
+  hashWithSalt _salt Participants' {..} =
+    _salt
+      `Prelude.hashWithSalt` groups
+      `Prelude.hashWithSalt` users
+
+instance Prelude.NFData Participants where
+  rnf Participants' {..} =
+    Prelude.rnf groups `Prelude.seq` Prelude.rnf users
diff --git a/gen/Amazonka/WorkDocs/Types/PermissionInfo.hs b/gen/Amazonka/WorkDocs/Types/PermissionInfo.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/PermissionInfo.hs
@@ -0,0 +1,85 @@
+{-# 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.WorkDocs.Types.PermissionInfo
+-- 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.WorkDocs.Types.PermissionInfo 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
+import Amazonka.WorkDocs.Types.RolePermissionType
+import Amazonka.WorkDocs.Types.RoleType
+
+-- | Describes the permissions.
+--
+-- /See:/ 'newPermissionInfo' smart constructor.
+data PermissionInfo = PermissionInfo'
+  { -- | The role of the user.
+    role' :: Prelude.Maybe RoleType,
+    -- | The type of permissions.
+    type' :: Prelude.Maybe RolePermissionType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'PermissionInfo' 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:
+--
+-- 'role'', 'permissionInfo_role' - The role of the user.
+--
+-- 'type'', 'permissionInfo_type' - The type of permissions.
+newPermissionInfo ::
+  PermissionInfo
+newPermissionInfo =
+  PermissionInfo'
+    { role' = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The role of the user.
+permissionInfo_role :: Lens.Lens' PermissionInfo (Prelude.Maybe RoleType)
+permissionInfo_role = Lens.lens (\PermissionInfo' {role'} -> role') (\s@PermissionInfo' {} a -> s {role' = a} :: PermissionInfo)
+
+-- | The type of permissions.
+permissionInfo_type :: Lens.Lens' PermissionInfo (Prelude.Maybe RolePermissionType)
+permissionInfo_type = Lens.lens (\PermissionInfo' {type'} -> type') (\s@PermissionInfo' {} a -> s {type' = a} :: PermissionInfo)
+
+instance Data.FromJSON PermissionInfo where
+  parseJSON =
+    Data.withObject
+      "PermissionInfo"
+      ( \x ->
+          PermissionInfo'
+            Prelude.<$> (x Data..:? "Role")
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable PermissionInfo where
+  hashWithSalt _salt PermissionInfo' {..} =
+    _salt
+      `Prelude.hashWithSalt` role'
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData PermissionInfo where
+  rnf PermissionInfo' {..} =
+    Prelude.rnf role' `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/WorkDocs/Types/Principal.hs b/gen/Amazonka/WorkDocs/Types/Principal.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/Principal.hs
@@ -0,0 +1,98 @@
+{-# 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.WorkDocs.Types.Principal
+-- 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.WorkDocs.Types.Principal 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
+import Amazonka.WorkDocs.Types.PermissionInfo
+import Amazonka.WorkDocs.Types.PrincipalType
+
+-- | Describes a resource.
+--
+-- /See:/ 'newPrincipal' smart constructor.
+data Principal = Principal'
+  { -- | The ID of the resource.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | The permission information for the resource.
+    roles :: Prelude.Maybe [PermissionInfo],
+    -- | The type of resource.
+    type' :: Prelude.Maybe PrincipalType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Principal' 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:
+--
+-- 'id', 'principal_id' - The ID of the resource.
+--
+-- 'roles', 'principal_roles' - The permission information for the resource.
+--
+-- 'type'', 'principal_type' - The type of resource.
+newPrincipal ::
+  Principal
+newPrincipal =
+  Principal'
+    { id = Prelude.Nothing,
+      roles = Prelude.Nothing,
+      type' = Prelude.Nothing
+    }
+
+-- | The ID of the resource.
+principal_id :: Lens.Lens' Principal (Prelude.Maybe Prelude.Text)
+principal_id = Lens.lens (\Principal' {id} -> id) (\s@Principal' {} a -> s {id = a} :: Principal)
+
+-- | The permission information for the resource.
+principal_roles :: Lens.Lens' Principal (Prelude.Maybe [PermissionInfo])
+principal_roles = Lens.lens (\Principal' {roles} -> roles) (\s@Principal' {} a -> s {roles = a} :: Principal) Prelude.. Lens.mapping Lens.coerced
+
+-- | The type of resource.
+principal_type :: Lens.Lens' Principal (Prelude.Maybe PrincipalType)
+principal_type = Lens.lens (\Principal' {type'} -> type') (\s@Principal' {} a -> s {type' = a} :: Principal)
+
+instance Data.FromJSON Principal where
+  parseJSON =
+    Data.withObject
+      "Principal"
+      ( \x ->
+          Principal'
+            Prelude.<$> (x Data..:? "Id")
+            Prelude.<*> (x Data..:? "Roles" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "Type")
+      )
+
+instance Prelude.Hashable Principal where
+  hashWithSalt _salt Principal' {..} =
+    _salt
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` roles
+      `Prelude.hashWithSalt` type'
+
+instance Prelude.NFData Principal where
+  rnf Principal' {..} =
+    Prelude.rnf id
+      `Prelude.seq` Prelude.rnf roles
+      `Prelude.seq` Prelude.rnf type'
diff --git a/gen/Amazonka/WorkDocs/Types/PrincipalType.hs b/gen/Amazonka/WorkDocs/Types/PrincipalType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/PrincipalType.hs
@@ -0,0 +1,86 @@
+{-# 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.WorkDocs.Types.PrincipalType
+-- 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.WorkDocs.Types.PrincipalType
+  ( PrincipalType
+      ( ..,
+        PrincipalType_ANONYMOUS,
+        PrincipalType_GROUP,
+        PrincipalType_INVITE,
+        PrincipalType_ORGANIZATION,
+        PrincipalType_USER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype PrincipalType = PrincipalType'
+  { fromPrincipalType ::
+      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 PrincipalType_ANONYMOUS :: PrincipalType
+pattern PrincipalType_ANONYMOUS = PrincipalType' "ANONYMOUS"
+
+pattern PrincipalType_GROUP :: PrincipalType
+pattern PrincipalType_GROUP = PrincipalType' "GROUP"
+
+pattern PrincipalType_INVITE :: PrincipalType
+pattern PrincipalType_INVITE = PrincipalType' "INVITE"
+
+pattern PrincipalType_ORGANIZATION :: PrincipalType
+pattern PrincipalType_ORGANIZATION = PrincipalType' "ORGANIZATION"
+
+pattern PrincipalType_USER :: PrincipalType
+pattern PrincipalType_USER = PrincipalType' "USER"
+
+{-# COMPLETE
+  PrincipalType_ANONYMOUS,
+  PrincipalType_GROUP,
+  PrincipalType_INVITE,
+  PrincipalType_ORGANIZATION,
+  PrincipalType_USER,
+  PrincipalType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/ResourceCollectionType.hs b/gen/Amazonka/WorkDocs/Types/ResourceCollectionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/ResourceCollectionType.hs
@@ -0,0 +1,66 @@
+{-# 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.WorkDocs.Types.ResourceCollectionType
+-- 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.WorkDocs.Types.ResourceCollectionType
+  ( ResourceCollectionType
+      ( ..,
+        ResourceCollectionType_SHARED_WITH_ME
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ResourceCollectionType = ResourceCollectionType'
+  { fromResourceCollectionType ::
+      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 ResourceCollectionType_SHARED_WITH_ME :: ResourceCollectionType
+pattern ResourceCollectionType_SHARED_WITH_ME = ResourceCollectionType' "SHARED_WITH_ME"
+
+{-# COMPLETE
+  ResourceCollectionType_SHARED_WITH_ME,
+  ResourceCollectionType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/ResourceMetadata.hs b/gen/Amazonka/WorkDocs/Types/ResourceMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/ResourceMetadata.hs
@@ -0,0 +1,149 @@
+{-# 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.WorkDocs.Types.ResourceMetadata
+-- 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.WorkDocs.Types.ResourceMetadata 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
+import Amazonka.WorkDocs.Types.ResourceType
+import Amazonka.WorkDocs.Types.UserMetadata
+
+-- | Describes the metadata of a resource.
+--
+-- /See:/ 'newResourceMetadata' smart constructor.
+data ResourceMetadata = ResourceMetadata'
+  { -- | The ID of the resource.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | The name of the resource.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The original name of the resource before a rename operation.
+    originalName :: Prelude.Maybe Prelude.Text,
+    -- | The owner of the resource.
+    owner :: Prelude.Maybe UserMetadata,
+    -- | The parent ID of the resource before a rename operation.
+    parentId :: Prelude.Maybe Prelude.Text,
+    -- | The type of resource.
+    type' :: Prelude.Maybe ResourceType,
+    -- | The version ID of the resource. This is an optional field and is filled
+    -- for action on document version.
+    versionId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ResourceMetadata' 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:
+--
+-- 'id', 'resourceMetadata_id' - The ID of the resource.
+--
+-- 'name', 'resourceMetadata_name' - The name of the resource.
+--
+-- 'originalName', 'resourceMetadata_originalName' - The original name of the resource before a rename operation.
+--
+-- 'owner', 'resourceMetadata_owner' - The owner of the resource.
+--
+-- 'parentId', 'resourceMetadata_parentId' - The parent ID of the resource before a rename operation.
+--
+-- 'type'', 'resourceMetadata_type' - The type of resource.
+--
+-- 'versionId', 'resourceMetadata_versionId' - The version ID of the resource. This is an optional field and is filled
+-- for action on document version.
+newResourceMetadata ::
+  ResourceMetadata
+newResourceMetadata =
+  ResourceMetadata'
+    { id = Prelude.Nothing,
+      name = Prelude.Nothing,
+      originalName = Prelude.Nothing,
+      owner = Prelude.Nothing,
+      parentId = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      versionId = Prelude.Nothing
+    }
+
+-- | The ID of the resource.
+resourceMetadata_id :: Lens.Lens' ResourceMetadata (Prelude.Maybe Prelude.Text)
+resourceMetadata_id = Lens.lens (\ResourceMetadata' {id} -> id) (\s@ResourceMetadata' {} a -> s {id = a} :: ResourceMetadata)
+
+-- | The name of the resource.
+resourceMetadata_name :: Lens.Lens' ResourceMetadata (Prelude.Maybe Prelude.Text)
+resourceMetadata_name = Lens.lens (\ResourceMetadata' {name} -> name) (\s@ResourceMetadata' {} a -> s {name = a} :: ResourceMetadata)
+
+-- | The original name of the resource before a rename operation.
+resourceMetadata_originalName :: Lens.Lens' ResourceMetadata (Prelude.Maybe Prelude.Text)
+resourceMetadata_originalName = Lens.lens (\ResourceMetadata' {originalName} -> originalName) (\s@ResourceMetadata' {} a -> s {originalName = a} :: ResourceMetadata)
+
+-- | The owner of the resource.
+resourceMetadata_owner :: Lens.Lens' ResourceMetadata (Prelude.Maybe UserMetadata)
+resourceMetadata_owner = Lens.lens (\ResourceMetadata' {owner} -> owner) (\s@ResourceMetadata' {} a -> s {owner = a} :: ResourceMetadata)
+
+-- | The parent ID of the resource before a rename operation.
+resourceMetadata_parentId :: Lens.Lens' ResourceMetadata (Prelude.Maybe Prelude.Text)
+resourceMetadata_parentId = Lens.lens (\ResourceMetadata' {parentId} -> parentId) (\s@ResourceMetadata' {} a -> s {parentId = a} :: ResourceMetadata)
+
+-- | The type of resource.
+resourceMetadata_type :: Lens.Lens' ResourceMetadata (Prelude.Maybe ResourceType)
+resourceMetadata_type = Lens.lens (\ResourceMetadata' {type'} -> type') (\s@ResourceMetadata' {} a -> s {type' = a} :: ResourceMetadata)
+
+-- | The version ID of the resource. This is an optional field and is filled
+-- for action on document version.
+resourceMetadata_versionId :: Lens.Lens' ResourceMetadata (Prelude.Maybe Prelude.Text)
+resourceMetadata_versionId = Lens.lens (\ResourceMetadata' {versionId} -> versionId) (\s@ResourceMetadata' {} a -> s {versionId = a} :: ResourceMetadata)
+
+instance Data.FromJSON ResourceMetadata where
+  parseJSON =
+    Data.withObject
+      "ResourceMetadata"
+      ( \x ->
+          ResourceMetadata'
+            Prelude.<$> (x Data..:? "Id")
+            Prelude.<*> (x Data..:? "Name")
+            Prelude.<*> (x Data..:? "OriginalName")
+            Prelude.<*> (x Data..:? "Owner")
+            Prelude.<*> (x Data..:? "ParentId")
+            Prelude.<*> (x Data..:? "Type")
+            Prelude.<*> (x Data..:? "VersionId")
+      )
+
+instance Prelude.Hashable ResourceMetadata where
+  hashWithSalt _salt ResourceMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` originalName
+      `Prelude.hashWithSalt` owner
+      `Prelude.hashWithSalt` parentId
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` versionId
+
+instance Prelude.NFData ResourceMetadata where
+  rnf ResourceMetadata' {..} =
+    Prelude.rnf id
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf originalName
+      `Prelude.seq` Prelude.rnf owner
+      `Prelude.seq` Prelude.rnf parentId
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf versionId
diff --git a/gen/Amazonka/WorkDocs/Types/ResourcePath.hs b/gen/Amazonka/WorkDocs/Types/ResourcePath.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/ResourcePath.hs
@@ -0,0 +1,69 @@
+{-# 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.WorkDocs.Types.ResourcePath
+-- 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.WorkDocs.Types.ResourcePath 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
+import Amazonka.WorkDocs.Types.ResourcePathComponent
+
+-- | Describes the path information of a resource.
+--
+-- /See:/ 'newResourcePath' smart constructor.
+data ResourcePath = ResourcePath'
+  { -- | The components of the resource path.
+    components :: Prelude.Maybe [ResourcePathComponent]
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ResourcePath' 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:
+--
+-- 'components', 'resourcePath_components' - The components of the resource path.
+newResourcePath ::
+  ResourcePath
+newResourcePath =
+  ResourcePath' {components = Prelude.Nothing}
+
+-- | The components of the resource path.
+resourcePath_components :: Lens.Lens' ResourcePath (Prelude.Maybe [ResourcePathComponent])
+resourcePath_components = Lens.lens (\ResourcePath' {components} -> components) (\s@ResourcePath' {} a -> s {components = a} :: ResourcePath) Prelude.. Lens.mapping Lens.coerced
+
+instance Data.FromJSON ResourcePath where
+  parseJSON =
+    Data.withObject
+      "ResourcePath"
+      ( \x ->
+          ResourcePath'
+            Prelude.<$> (x Data..:? "Components" Data..!= Prelude.mempty)
+      )
+
+instance Prelude.Hashable ResourcePath where
+  hashWithSalt _salt ResourcePath' {..} =
+    _salt `Prelude.hashWithSalt` components
+
+instance Prelude.NFData ResourcePath where
+  rnf ResourcePath' {..} = Prelude.rnf components
diff --git a/gen/Amazonka/WorkDocs/Types/ResourcePathComponent.hs b/gen/Amazonka/WorkDocs/Types/ResourcePathComponent.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/ResourcePathComponent.hs
@@ -0,0 +1,83 @@
+{-# 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.WorkDocs.Types.ResourcePathComponent
+-- 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.WorkDocs.Types.ResourcePathComponent 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
+
+-- | Describes the resource path.
+--
+-- /See:/ 'newResourcePathComponent' smart constructor.
+data ResourcePathComponent = ResourcePathComponent'
+  { -- | The ID of the resource path.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | The name of the resource path.
+    name :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ResourcePathComponent' 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:
+--
+-- 'id', 'resourcePathComponent_id' - The ID of the resource path.
+--
+-- 'name', 'resourcePathComponent_name' - The name of the resource path.
+newResourcePathComponent ::
+  ResourcePathComponent
+newResourcePathComponent =
+  ResourcePathComponent'
+    { id = Prelude.Nothing,
+      name = Prelude.Nothing
+    }
+
+-- | The ID of the resource path.
+resourcePathComponent_id :: Lens.Lens' ResourcePathComponent (Prelude.Maybe Prelude.Text)
+resourcePathComponent_id = Lens.lens (\ResourcePathComponent' {id} -> id) (\s@ResourcePathComponent' {} a -> s {id = a} :: ResourcePathComponent)
+
+-- | The name of the resource path.
+resourcePathComponent_name :: Lens.Lens' ResourcePathComponent (Prelude.Maybe Prelude.Text)
+resourcePathComponent_name = Lens.lens (\ResourcePathComponent' {name} -> name) (\s@ResourcePathComponent' {} a -> s {name = a} :: ResourcePathComponent)
+
+instance Data.FromJSON ResourcePathComponent where
+  parseJSON =
+    Data.withObject
+      "ResourcePathComponent"
+      ( \x ->
+          ResourcePathComponent'
+            Prelude.<$> (x Data..:? "Id")
+            Prelude.<*> (x Data..:? "Name")
+      )
+
+instance Prelude.Hashable ResourcePathComponent where
+  hashWithSalt _salt ResourcePathComponent' {..} =
+    _salt
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` name
+
+instance Prelude.NFData ResourcePathComponent where
+  rnf ResourcePathComponent' {..} =
+    Prelude.rnf id `Prelude.seq` Prelude.rnf name
diff --git a/gen/Amazonka/WorkDocs/Types/ResourceSortType.hs b/gen/Amazonka/WorkDocs/Types/ResourceSortType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/ResourceSortType.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.WorkDocs.Types.ResourceSortType
+-- 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.WorkDocs.Types.ResourceSortType
+  ( ResourceSortType
+      ( ..,
+        ResourceSortType_DATE,
+        ResourceSortType_NAME
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ResourceSortType = ResourceSortType'
+  { fromResourceSortType ::
+      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 ResourceSortType_DATE :: ResourceSortType
+pattern ResourceSortType_DATE = ResourceSortType' "DATE"
+
+pattern ResourceSortType_NAME :: ResourceSortType
+pattern ResourceSortType_NAME = ResourceSortType' "NAME"
+
+{-# COMPLETE
+  ResourceSortType_DATE,
+  ResourceSortType_NAME,
+  ResourceSortType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/ResourceStateType.hs b/gen/Amazonka/WorkDocs/Types/ResourceStateType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/ResourceStateType.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.WorkDocs.Types.ResourceStateType
+-- 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.WorkDocs.Types.ResourceStateType
+  ( ResourceStateType
+      ( ..,
+        ResourceStateType_ACTIVE,
+        ResourceStateType_RECYCLED,
+        ResourceStateType_RECYCLING,
+        ResourceStateType_RESTORING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ResourceStateType = ResourceStateType'
+  { fromResourceStateType ::
+      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 ResourceStateType_ACTIVE :: ResourceStateType
+pattern ResourceStateType_ACTIVE = ResourceStateType' "ACTIVE"
+
+pattern ResourceStateType_RECYCLED :: ResourceStateType
+pattern ResourceStateType_RECYCLED = ResourceStateType' "RECYCLED"
+
+pattern ResourceStateType_RECYCLING :: ResourceStateType
+pattern ResourceStateType_RECYCLING = ResourceStateType' "RECYCLING"
+
+pattern ResourceStateType_RESTORING :: ResourceStateType
+pattern ResourceStateType_RESTORING = ResourceStateType' "RESTORING"
+
+{-# COMPLETE
+  ResourceStateType_ACTIVE,
+  ResourceStateType_RECYCLED,
+  ResourceStateType_RECYCLING,
+  ResourceStateType_RESTORING,
+  ResourceStateType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/ResourceType.hs b/gen/Amazonka/WorkDocs/Types/ResourceType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/ResourceType.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.WorkDocs.Types.ResourceType
+-- 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.WorkDocs.Types.ResourceType
+  ( ResourceType
+      ( ..,
+        ResourceType_DOCUMENT,
+        ResourceType_FOLDER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ResourceType = ResourceType'
+  { fromResourceType ::
+      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 ResourceType_DOCUMENT :: ResourceType
+pattern ResourceType_DOCUMENT = ResourceType' "DOCUMENT"
+
+pattern ResourceType_FOLDER :: ResourceType
+pattern ResourceType_FOLDER = ResourceType' "FOLDER"
+
+{-# COMPLETE
+  ResourceType_DOCUMENT,
+  ResourceType_FOLDER,
+  ResourceType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/RolePermissionType.hs b/gen/Amazonka/WorkDocs/Types/RolePermissionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/RolePermissionType.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.WorkDocs.Types.RolePermissionType
+-- 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.WorkDocs.Types.RolePermissionType
+  ( RolePermissionType
+      ( ..,
+        RolePermissionType_DIRECT,
+        RolePermissionType_INHERITED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RolePermissionType = RolePermissionType'
+  { fromRolePermissionType ::
+      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 RolePermissionType_DIRECT :: RolePermissionType
+pattern RolePermissionType_DIRECT = RolePermissionType' "DIRECT"
+
+pattern RolePermissionType_INHERITED :: RolePermissionType
+pattern RolePermissionType_INHERITED = RolePermissionType' "INHERITED"
+
+{-# COMPLETE
+  RolePermissionType_DIRECT,
+  RolePermissionType_INHERITED,
+  RolePermissionType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/RoleType.hs b/gen/Amazonka/WorkDocs/Types/RoleType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/RoleType.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.WorkDocs.Types.RoleType
+-- 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.WorkDocs.Types.RoleType
+  ( RoleType
+      ( ..,
+        RoleType_CONTRIBUTOR,
+        RoleType_COOWNER,
+        RoleType_OWNER,
+        RoleType_VIEWER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype RoleType = RoleType'
+  { fromRoleType ::
+      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 RoleType_CONTRIBUTOR :: RoleType
+pattern RoleType_CONTRIBUTOR = RoleType' "CONTRIBUTOR"
+
+pattern RoleType_COOWNER :: RoleType
+pattern RoleType_COOWNER = RoleType' "COOWNER"
+
+pattern RoleType_OWNER :: RoleType
+pattern RoleType_OWNER = RoleType' "OWNER"
+
+pattern RoleType_VIEWER :: RoleType
+pattern RoleType_VIEWER = RoleType' "VIEWER"
+
+{-# COMPLETE
+  RoleType_CONTRIBUTOR,
+  RoleType_COOWNER,
+  RoleType_OWNER,
+  RoleType_VIEWER,
+  RoleType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/SharePrincipal.hs b/gen/Amazonka/WorkDocs/Types/SharePrincipal.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/SharePrincipal.hs
@@ -0,0 +1,103 @@
+{-# 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.WorkDocs.Types.SharePrincipal
+-- 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.WorkDocs.Types.SharePrincipal 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
+import Amazonka.WorkDocs.Types.PrincipalType
+import Amazonka.WorkDocs.Types.RoleType
+
+-- | Describes the recipient type and ID, if available.
+--
+-- /See:/ 'newSharePrincipal' smart constructor.
+data SharePrincipal = SharePrincipal'
+  { -- | The ID of the recipient.
+    id :: Prelude.Text,
+    -- | The type of the recipient.
+    type' :: PrincipalType,
+    -- | The role of the recipient.
+    role' :: RoleType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'SharePrincipal' 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:
+--
+-- 'id', 'sharePrincipal_id' - The ID of the recipient.
+--
+-- 'type'', 'sharePrincipal_type' - The type of the recipient.
+--
+-- 'role'', 'sharePrincipal_role' - The role of the recipient.
+newSharePrincipal ::
+  -- | 'id'
+  Prelude.Text ->
+  -- | 'type''
+  PrincipalType ->
+  -- | 'role''
+  RoleType ->
+  SharePrincipal
+newSharePrincipal pId_ pType_ pRole_ =
+  SharePrincipal'
+    { id = pId_,
+      type' = pType_,
+      role' = pRole_
+    }
+
+-- | The ID of the recipient.
+sharePrincipal_id :: Lens.Lens' SharePrincipal Prelude.Text
+sharePrincipal_id = Lens.lens (\SharePrincipal' {id} -> id) (\s@SharePrincipal' {} a -> s {id = a} :: SharePrincipal)
+
+-- | The type of the recipient.
+sharePrincipal_type :: Lens.Lens' SharePrincipal PrincipalType
+sharePrincipal_type = Lens.lens (\SharePrincipal' {type'} -> type') (\s@SharePrincipal' {} a -> s {type' = a} :: SharePrincipal)
+
+-- | The role of the recipient.
+sharePrincipal_role :: Lens.Lens' SharePrincipal RoleType
+sharePrincipal_role = Lens.lens (\SharePrincipal' {role'} -> role') (\s@SharePrincipal' {} a -> s {role' = a} :: SharePrincipal)
+
+instance Prelude.Hashable SharePrincipal where
+  hashWithSalt _salt SharePrincipal' {..} =
+    _salt
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` role'
+
+instance Prelude.NFData SharePrincipal where
+  rnf SharePrincipal' {..} =
+    Prelude.rnf id
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf role'
+
+instance Data.ToJSON SharePrincipal where
+  toJSON SharePrincipal' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ Prelude.Just ("Id" Data..= id),
+            Prelude.Just ("Type" Data..= type'),
+            Prelude.Just ("Role" Data..= role')
+          ]
+      )
diff --git a/gen/Amazonka/WorkDocs/Types/ShareResult.hs b/gen/Amazonka/WorkDocs/Types/ShareResult.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/ShareResult.hs
@@ -0,0 +1,134 @@
+{-# 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.WorkDocs.Types.ShareResult
+-- 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.WorkDocs.Types.ShareResult 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
+import Amazonka.WorkDocs.Types.RoleType
+import Amazonka.WorkDocs.Types.ShareStatusType
+
+-- | Describes the share results of a resource.
+--
+-- /See:/ 'newShareResult' smart constructor.
+data ShareResult = ShareResult'
+  { -- | The ID of the invited user.
+    inviteePrincipalId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the principal.
+    principalId :: Prelude.Maybe Prelude.Text,
+    -- | The role.
+    role' :: Prelude.Maybe RoleType,
+    -- | The ID of the resource that was shared.
+    shareId :: Prelude.Maybe Prelude.Text,
+    -- | The status.
+    status :: Prelude.Maybe ShareStatusType,
+    -- | The status message.
+    statusMessage :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'ShareResult' 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:
+--
+-- 'inviteePrincipalId', 'shareResult_inviteePrincipalId' - The ID of the invited user.
+--
+-- 'principalId', 'shareResult_principalId' - The ID of the principal.
+--
+-- 'role'', 'shareResult_role' - The role.
+--
+-- 'shareId', 'shareResult_shareId' - The ID of the resource that was shared.
+--
+-- 'status', 'shareResult_status' - The status.
+--
+-- 'statusMessage', 'shareResult_statusMessage' - The status message.
+newShareResult ::
+  ShareResult
+newShareResult =
+  ShareResult'
+    { inviteePrincipalId = Prelude.Nothing,
+      principalId = Prelude.Nothing,
+      role' = Prelude.Nothing,
+      shareId = Prelude.Nothing,
+      status = Prelude.Nothing,
+      statusMessage = Prelude.Nothing
+    }
+
+-- | The ID of the invited user.
+shareResult_inviteePrincipalId :: Lens.Lens' ShareResult (Prelude.Maybe Prelude.Text)
+shareResult_inviteePrincipalId = Lens.lens (\ShareResult' {inviteePrincipalId} -> inviteePrincipalId) (\s@ShareResult' {} a -> s {inviteePrincipalId = a} :: ShareResult)
+
+-- | The ID of the principal.
+shareResult_principalId :: Lens.Lens' ShareResult (Prelude.Maybe Prelude.Text)
+shareResult_principalId = Lens.lens (\ShareResult' {principalId} -> principalId) (\s@ShareResult' {} a -> s {principalId = a} :: ShareResult)
+
+-- | The role.
+shareResult_role :: Lens.Lens' ShareResult (Prelude.Maybe RoleType)
+shareResult_role = Lens.lens (\ShareResult' {role'} -> role') (\s@ShareResult' {} a -> s {role' = a} :: ShareResult)
+
+-- | The ID of the resource that was shared.
+shareResult_shareId :: Lens.Lens' ShareResult (Prelude.Maybe Prelude.Text)
+shareResult_shareId = Lens.lens (\ShareResult' {shareId} -> shareId) (\s@ShareResult' {} a -> s {shareId = a} :: ShareResult)
+
+-- | The status.
+shareResult_status :: Lens.Lens' ShareResult (Prelude.Maybe ShareStatusType)
+shareResult_status = Lens.lens (\ShareResult' {status} -> status) (\s@ShareResult' {} a -> s {status = a} :: ShareResult)
+
+-- | The status message.
+shareResult_statusMessage :: Lens.Lens' ShareResult (Prelude.Maybe Prelude.Text)
+shareResult_statusMessage = Lens.lens (\ShareResult' {statusMessage} -> statusMessage) (\s@ShareResult' {} a -> s {statusMessage = a} :: ShareResult) Prelude.. Lens.mapping Data._Sensitive
+
+instance Data.FromJSON ShareResult where
+  parseJSON =
+    Data.withObject
+      "ShareResult"
+      ( \x ->
+          ShareResult'
+            Prelude.<$> (x Data..:? "InviteePrincipalId")
+            Prelude.<*> (x Data..:? "PrincipalId")
+            Prelude.<*> (x Data..:? "Role")
+            Prelude.<*> (x Data..:? "ShareId")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "StatusMessage")
+      )
+
+instance Prelude.Hashable ShareResult where
+  hashWithSalt _salt ShareResult' {..} =
+    _salt
+      `Prelude.hashWithSalt` inviteePrincipalId
+      `Prelude.hashWithSalt` principalId
+      `Prelude.hashWithSalt` role'
+      `Prelude.hashWithSalt` shareId
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` statusMessage
+
+instance Prelude.NFData ShareResult where
+  rnf ShareResult' {..} =
+    Prelude.rnf inviteePrincipalId
+      `Prelude.seq` Prelude.rnf principalId
+      `Prelude.seq` Prelude.rnf role'
+      `Prelude.seq` Prelude.rnf shareId
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf statusMessage
diff --git a/gen/Amazonka/WorkDocs/Types/ShareStatusType.hs b/gen/Amazonka/WorkDocs/Types/ShareStatusType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/ShareStatusType.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.WorkDocs.Types.ShareStatusType
+-- 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.WorkDocs.Types.ShareStatusType
+  ( ShareStatusType
+      ( ..,
+        ShareStatusType_FAILURE,
+        ShareStatusType_SUCCESS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype ShareStatusType = ShareStatusType'
+  { fromShareStatusType ::
+      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 ShareStatusType_FAILURE :: ShareStatusType
+pattern ShareStatusType_FAILURE = ShareStatusType' "FAILURE"
+
+pattern ShareStatusType_SUCCESS :: ShareStatusType
+pattern ShareStatusType_SUCCESS = ShareStatusType' "SUCCESS"
+
+{-# COMPLETE
+  ShareStatusType_FAILURE,
+  ShareStatusType_SUCCESS,
+  ShareStatusType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/StorageRuleType.hs b/gen/Amazonka/WorkDocs/Types/StorageRuleType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/StorageRuleType.hs
@@ -0,0 +1,96 @@
+{-# 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.WorkDocs.Types.StorageRuleType
+-- 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.WorkDocs.Types.StorageRuleType 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
+import Amazonka.WorkDocs.Types.StorageType
+
+-- | Describes the storage for a user.
+--
+-- /See:/ 'newStorageRuleType' smart constructor.
+data StorageRuleType = StorageRuleType'
+  { -- | The amount of storage allocated, in bytes.
+    storageAllocatedInBytes :: Prelude.Maybe Prelude.Natural,
+    -- | The type of storage.
+    storageType :: Prelude.Maybe StorageType
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'StorageRuleType' 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:
+--
+-- 'storageAllocatedInBytes', 'storageRuleType_storageAllocatedInBytes' - The amount of storage allocated, in bytes.
+--
+-- 'storageType', 'storageRuleType_storageType' - The type of storage.
+newStorageRuleType ::
+  StorageRuleType
+newStorageRuleType =
+  StorageRuleType'
+    { storageAllocatedInBytes =
+        Prelude.Nothing,
+      storageType = Prelude.Nothing
+    }
+
+-- | The amount of storage allocated, in bytes.
+storageRuleType_storageAllocatedInBytes :: Lens.Lens' StorageRuleType (Prelude.Maybe Prelude.Natural)
+storageRuleType_storageAllocatedInBytes = Lens.lens (\StorageRuleType' {storageAllocatedInBytes} -> storageAllocatedInBytes) (\s@StorageRuleType' {} a -> s {storageAllocatedInBytes = a} :: StorageRuleType)
+
+-- | The type of storage.
+storageRuleType_storageType :: Lens.Lens' StorageRuleType (Prelude.Maybe StorageType)
+storageRuleType_storageType = Lens.lens (\StorageRuleType' {storageType} -> storageType) (\s@StorageRuleType' {} a -> s {storageType = a} :: StorageRuleType)
+
+instance Data.FromJSON StorageRuleType where
+  parseJSON =
+    Data.withObject
+      "StorageRuleType"
+      ( \x ->
+          StorageRuleType'
+            Prelude.<$> (x Data..:? "StorageAllocatedInBytes")
+            Prelude.<*> (x Data..:? "StorageType")
+      )
+
+instance Prelude.Hashable StorageRuleType where
+  hashWithSalt _salt StorageRuleType' {..} =
+    _salt
+      `Prelude.hashWithSalt` storageAllocatedInBytes
+      `Prelude.hashWithSalt` storageType
+
+instance Prelude.NFData StorageRuleType where
+  rnf StorageRuleType' {..} =
+    Prelude.rnf storageAllocatedInBytes
+      `Prelude.seq` Prelude.rnf storageType
+
+instance Data.ToJSON StorageRuleType where
+  toJSON StorageRuleType' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("StorageAllocatedInBytes" Data..=)
+              Prelude.<$> storageAllocatedInBytes,
+            ("StorageType" Data..=) Prelude.<$> storageType
+          ]
+      )
diff --git a/gen/Amazonka/WorkDocs/Types/StorageType.hs b/gen/Amazonka/WorkDocs/Types/StorageType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/StorageType.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.WorkDocs.Types.StorageType
+-- 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.WorkDocs.Types.StorageType
+  ( StorageType
+      ( ..,
+        StorageType_QUOTA,
+        StorageType_UNLIMITED
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype StorageType = StorageType'
+  { fromStorageType ::
+      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 StorageType_QUOTA :: StorageType
+pattern StorageType_QUOTA = StorageType' "QUOTA"
+
+pattern StorageType_UNLIMITED :: StorageType
+pattern StorageType_UNLIMITED = StorageType' "UNLIMITED"
+
+{-# COMPLETE
+  StorageType_QUOTA,
+  StorageType_UNLIMITED,
+  StorageType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/Subscription.hs b/gen/Amazonka/WorkDocs/Types/Subscription.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/Subscription.hs
@@ -0,0 +1,97 @@
+{-# 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.WorkDocs.Types.Subscription
+-- 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.WorkDocs.Types.Subscription 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
+import Amazonka.WorkDocs.Types.SubscriptionProtocolType
+
+-- | Describes a subscription.
+--
+-- /See:/ 'newSubscription' smart constructor.
+data Subscription = Subscription'
+  { -- | The endpoint of the subscription.
+    endPoint :: Prelude.Maybe Prelude.Text,
+    -- | The protocol of the subscription.
+    protocol :: Prelude.Maybe SubscriptionProtocolType,
+    -- | The ID of the subscription.
+    subscriptionId :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'Subscription' 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:
+--
+-- 'endPoint', 'subscription_endPoint' - The endpoint of the subscription.
+--
+-- 'protocol', 'subscription_protocol' - The protocol of the subscription.
+--
+-- 'subscriptionId', 'subscription_subscriptionId' - The ID of the subscription.
+newSubscription ::
+  Subscription
+newSubscription =
+  Subscription'
+    { endPoint = Prelude.Nothing,
+      protocol = Prelude.Nothing,
+      subscriptionId = Prelude.Nothing
+    }
+
+-- | The endpoint of the subscription.
+subscription_endPoint :: Lens.Lens' Subscription (Prelude.Maybe Prelude.Text)
+subscription_endPoint = Lens.lens (\Subscription' {endPoint} -> endPoint) (\s@Subscription' {} a -> s {endPoint = a} :: Subscription)
+
+-- | The protocol of the subscription.
+subscription_protocol :: Lens.Lens' Subscription (Prelude.Maybe SubscriptionProtocolType)
+subscription_protocol = Lens.lens (\Subscription' {protocol} -> protocol) (\s@Subscription' {} a -> s {protocol = a} :: Subscription)
+
+-- | The ID of the subscription.
+subscription_subscriptionId :: Lens.Lens' Subscription (Prelude.Maybe Prelude.Text)
+subscription_subscriptionId = Lens.lens (\Subscription' {subscriptionId} -> subscriptionId) (\s@Subscription' {} a -> s {subscriptionId = a} :: Subscription)
+
+instance Data.FromJSON Subscription where
+  parseJSON =
+    Data.withObject
+      "Subscription"
+      ( \x ->
+          Subscription'
+            Prelude.<$> (x Data..:? "EndPoint")
+            Prelude.<*> (x Data..:? "Protocol")
+            Prelude.<*> (x Data..:? "SubscriptionId")
+      )
+
+instance Prelude.Hashable Subscription where
+  hashWithSalt _salt Subscription' {..} =
+    _salt
+      `Prelude.hashWithSalt` endPoint
+      `Prelude.hashWithSalt` protocol
+      `Prelude.hashWithSalt` subscriptionId
+
+instance Prelude.NFData Subscription where
+  rnf Subscription' {..} =
+    Prelude.rnf endPoint
+      `Prelude.seq` Prelude.rnf protocol
+      `Prelude.seq` Prelude.rnf subscriptionId
diff --git a/gen/Amazonka/WorkDocs/Types/SubscriptionProtocolType.hs b/gen/Amazonka/WorkDocs/Types/SubscriptionProtocolType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/SubscriptionProtocolType.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.WorkDocs.Types.SubscriptionProtocolType
+-- 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.WorkDocs.Types.SubscriptionProtocolType
+  ( SubscriptionProtocolType
+      ( ..,
+        SubscriptionProtocolType_HTTPS,
+        SubscriptionProtocolType_SQS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SubscriptionProtocolType = SubscriptionProtocolType'
+  { fromSubscriptionProtocolType ::
+      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 SubscriptionProtocolType_HTTPS :: SubscriptionProtocolType
+pattern SubscriptionProtocolType_HTTPS = SubscriptionProtocolType' "HTTPS"
+
+pattern SubscriptionProtocolType_SQS :: SubscriptionProtocolType
+pattern SubscriptionProtocolType_SQS = SubscriptionProtocolType' "SQS"
+
+{-# COMPLETE
+  SubscriptionProtocolType_HTTPS,
+  SubscriptionProtocolType_SQS,
+  SubscriptionProtocolType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/SubscriptionType.hs b/gen/Amazonka/WorkDocs/Types/SubscriptionType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/SubscriptionType.hs
@@ -0,0 +1,66 @@
+{-# 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.WorkDocs.Types.SubscriptionType
+-- 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.WorkDocs.Types.SubscriptionType
+  ( SubscriptionType
+      ( ..,
+        SubscriptionType_ALL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype SubscriptionType = SubscriptionType'
+  { fromSubscriptionType ::
+      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 SubscriptionType_ALL :: SubscriptionType
+pattern SubscriptionType_ALL = SubscriptionType' "ALL"
+
+{-# COMPLETE
+  SubscriptionType_ALL,
+  SubscriptionType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/UploadMetadata.hs b/gen/Amazonka/WorkDocs/Types/UploadMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/UploadMetadata.hs
@@ -0,0 +1,84 @@
+{-# 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.WorkDocs.Types.UploadMetadata
+-- 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.WorkDocs.Types.UploadMetadata 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
+
+-- | Describes the upload.
+--
+-- /See:/ 'newUploadMetadata' smart constructor.
+data UploadMetadata = UploadMetadata'
+  { -- | The signed headers.
+    signedHeaders :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
+    -- | The URL of the upload.
+    uploadUrl :: Prelude.Maybe (Data.Sensitive Prelude.Text)
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UploadMetadata' 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:
+--
+-- 'signedHeaders', 'uploadMetadata_signedHeaders' - The signed headers.
+--
+-- 'uploadUrl', 'uploadMetadata_uploadUrl' - The URL of the upload.
+newUploadMetadata ::
+  UploadMetadata
+newUploadMetadata =
+  UploadMetadata'
+    { signedHeaders = Prelude.Nothing,
+      uploadUrl = Prelude.Nothing
+    }
+
+-- | The signed headers.
+uploadMetadata_signedHeaders :: Lens.Lens' UploadMetadata (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
+uploadMetadata_signedHeaders = Lens.lens (\UploadMetadata' {signedHeaders} -> signedHeaders) (\s@UploadMetadata' {} a -> s {signedHeaders = a} :: UploadMetadata) Prelude.. Lens.mapping Lens.coerced
+
+-- | The URL of the upload.
+uploadMetadata_uploadUrl :: Lens.Lens' UploadMetadata (Prelude.Maybe Prelude.Text)
+uploadMetadata_uploadUrl = Lens.lens (\UploadMetadata' {uploadUrl} -> uploadUrl) (\s@UploadMetadata' {} a -> s {uploadUrl = a} :: UploadMetadata) Prelude.. Lens.mapping Data._Sensitive
+
+instance Data.FromJSON UploadMetadata where
+  parseJSON =
+    Data.withObject
+      "UploadMetadata"
+      ( \x ->
+          UploadMetadata'
+            Prelude.<$> (x Data..:? "SignedHeaders" Data..!= Prelude.mempty)
+            Prelude.<*> (x Data..:? "UploadUrl")
+      )
+
+instance Prelude.Hashable UploadMetadata where
+  hashWithSalt _salt UploadMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` signedHeaders
+      `Prelude.hashWithSalt` uploadUrl
+
+instance Prelude.NFData UploadMetadata where
+  rnf UploadMetadata' {..} =
+    Prelude.rnf signedHeaders
+      `Prelude.seq` Prelude.rnf uploadUrl
diff --git a/gen/Amazonka/WorkDocs/Types/User.hs b/gen/Amazonka/WorkDocs/Types/User.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/User.hs
@@ -0,0 +1,244 @@
+{-# 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.WorkDocs.Types.User
+-- 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.WorkDocs.Types.User 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
+import Amazonka.WorkDocs.Types.LocaleType
+import Amazonka.WorkDocs.Types.UserStatusType
+import Amazonka.WorkDocs.Types.UserStorageMetadata
+import Amazonka.WorkDocs.Types.UserType
+
+-- | Describes a user.
+--
+-- /See:/ 'newUser' smart constructor.
+data User = User'
+  { -- | The time when the user was created.
+    createdTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The email address of the user.
+    emailAddress :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The given name of the user.
+    givenName :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the user.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | The locale of the user.
+    locale :: Prelude.Maybe LocaleType,
+    -- | The time when the user was modified.
+    modifiedTimestamp :: Prelude.Maybe Data.POSIX,
+    -- | The ID of the organization.
+    organizationId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the recycle bin folder.
+    recycleBinFolderId :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the root folder.
+    rootFolderId :: Prelude.Maybe Prelude.Text,
+    -- | The status of the user.
+    status :: Prelude.Maybe UserStatusType,
+    -- | The storage for the user.
+    storage :: Prelude.Maybe UserStorageMetadata,
+    -- | The surname of the user.
+    surname :: Prelude.Maybe Prelude.Text,
+    -- | The time zone ID of the user.
+    timeZoneId :: Prelude.Maybe Prelude.Text,
+    -- | The type of user.
+    type' :: Prelude.Maybe UserType,
+    -- | The login name of the user.
+    username :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'User' 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:
+--
+-- 'createdTimestamp', 'user_createdTimestamp' - The time when the user was created.
+--
+-- 'emailAddress', 'user_emailAddress' - The email address of the user.
+--
+-- 'givenName', 'user_givenName' - The given name of the user.
+--
+-- 'id', 'user_id' - The ID of the user.
+--
+-- 'locale', 'user_locale' - The locale of the user.
+--
+-- 'modifiedTimestamp', 'user_modifiedTimestamp' - The time when the user was modified.
+--
+-- 'organizationId', 'user_organizationId' - The ID of the organization.
+--
+-- 'recycleBinFolderId', 'user_recycleBinFolderId' - The ID of the recycle bin folder.
+--
+-- 'rootFolderId', 'user_rootFolderId' - The ID of the root folder.
+--
+-- 'status', 'user_status' - The status of the user.
+--
+-- 'storage', 'user_storage' - The storage for the user.
+--
+-- 'surname', 'user_surname' - The surname of the user.
+--
+-- 'timeZoneId', 'user_timeZoneId' - The time zone ID of the user.
+--
+-- 'type'', 'user_type' - The type of user.
+--
+-- 'username', 'user_username' - The login name of the user.
+newUser ::
+  User
+newUser =
+  User'
+    { createdTimestamp = Prelude.Nothing,
+      emailAddress = Prelude.Nothing,
+      givenName = Prelude.Nothing,
+      id = Prelude.Nothing,
+      locale = Prelude.Nothing,
+      modifiedTimestamp = Prelude.Nothing,
+      organizationId = Prelude.Nothing,
+      recycleBinFolderId = Prelude.Nothing,
+      rootFolderId = Prelude.Nothing,
+      status = Prelude.Nothing,
+      storage = Prelude.Nothing,
+      surname = Prelude.Nothing,
+      timeZoneId = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      username = Prelude.Nothing
+    }
+
+-- | The time when the user was created.
+user_createdTimestamp :: Lens.Lens' User (Prelude.Maybe Prelude.UTCTime)
+user_createdTimestamp = Lens.lens (\User' {createdTimestamp} -> createdTimestamp) (\s@User' {} a -> s {createdTimestamp = a} :: User) Prelude.. Lens.mapping Data._Time
+
+-- | The email address of the user.
+user_emailAddress :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_emailAddress = Lens.lens (\User' {emailAddress} -> emailAddress) (\s@User' {} a -> s {emailAddress = a} :: User) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The given name of the user.
+user_givenName :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_givenName = Lens.lens (\User' {givenName} -> givenName) (\s@User' {} a -> s {givenName = a} :: User)
+
+-- | The ID of the user.
+user_id :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_id = Lens.lens (\User' {id} -> id) (\s@User' {} a -> s {id = a} :: User)
+
+-- | The locale of the user.
+user_locale :: Lens.Lens' User (Prelude.Maybe LocaleType)
+user_locale = Lens.lens (\User' {locale} -> locale) (\s@User' {} a -> s {locale = a} :: User)
+
+-- | The time when the user was modified.
+user_modifiedTimestamp :: Lens.Lens' User (Prelude.Maybe Prelude.UTCTime)
+user_modifiedTimestamp = Lens.lens (\User' {modifiedTimestamp} -> modifiedTimestamp) (\s@User' {} a -> s {modifiedTimestamp = a} :: User) Prelude.. Lens.mapping Data._Time
+
+-- | The ID of the organization.
+user_organizationId :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_organizationId = Lens.lens (\User' {organizationId} -> organizationId) (\s@User' {} a -> s {organizationId = a} :: User)
+
+-- | The ID of the recycle bin folder.
+user_recycleBinFolderId :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_recycleBinFolderId = Lens.lens (\User' {recycleBinFolderId} -> recycleBinFolderId) (\s@User' {} a -> s {recycleBinFolderId = a} :: User)
+
+-- | The ID of the root folder.
+user_rootFolderId :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_rootFolderId = Lens.lens (\User' {rootFolderId} -> rootFolderId) (\s@User' {} a -> s {rootFolderId = a} :: User)
+
+-- | The status of the user.
+user_status :: Lens.Lens' User (Prelude.Maybe UserStatusType)
+user_status = Lens.lens (\User' {status} -> status) (\s@User' {} a -> s {status = a} :: User)
+
+-- | The storage for the user.
+user_storage :: Lens.Lens' User (Prelude.Maybe UserStorageMetadata)
+user_storage = Lens.lens (\User' {storage} -> storage) (\s@User' {} a -> s {storage = a} :: User)
+
+-- | The surname of the user.
+user_surname :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_surname = Lens.lens (\User' {surname} -> surname) (\s@User' {} a -> s {surname = a} :: User)
+
+-- | The time zone ID of the user.
+user_timeZoneId :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_timeZoneId = Lens.lens (\User' {timeZoneId} -> timeZoneId) (\s@User' {} a -> s {timeZoneId = a} :: User)
+
+-- | The type of user.
+user_type :: Lens.Lens' User (Prelude.Maybe UserType)
+user_type = Lens.lens (\User' {type'} -> type') (\s@User' {} a -> s {type' = a} :: User)
+
+-- | The login name of the user.
+user_username :: Lens.Lens' User (Prelude.Maybe Prelude.Text)
+user_username = Lens.lens (\User' {username} -> username) (\s@User' {} a -> s {username = a} :: User)
+
+instance Data.FromJSON User where
+  parseJSON =
+    Data.withObject
+      "User"
+      ( \x ->
+          User'
+            Prelude.<$> (x Data..:? "CreatedTimestamp")
+            Prelude.<*> (x Data..:? "EmailAddress")
+            Prelude.<*> (x Data..:? "GivenName")
+            Prelude.<*> (x Data..:? "Id")
+            Prelude.<*> (x Data..:? "Locale")
+            Prelude.<*> (x Data..:? "ModifiedTimestamp")
+            Prelude.<*> (x Data..:? "OrganizationId")
+            Prelude.<*> (x Data..:? "RecycleBinFolderId")
+            Prelude.<*> (x Data..:? "RootFolderId")
+            Prelude.<*> (x Data..:? "Status")
+            Prelude.<*> (x Data..:? "Storage")
+            Prelude.<*> (x Data..:? "Surname")
+            Prelude.<*> (x Data..:? "TimeZoneId")
+            Prelude.<*> (x Data..:? "Type")
+            Prelude.<*> (x Data..:? "Username")
+      )
+
+instance Prelude.Hashable User where
+  hashWithSalt _salt User' {..} =
+    _salt
+      `Prelude.hashWithSalt` createdTimestamp
+      `Prelude.hashWithSalt` emailAddress
+      `Prelude.hashWithSalt` givenName
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` locale
+      `Prelude.hashWithSalt` modifiedTimestamp
+      `Prelude.hashWithSalt` organizationId
+      `Prelude.hashWithSalt` recycleBinFolderId
+      `Prelude.hashWithSalt` rootFolderId
+      `Prelude.hashWithSalt` status
+      `Prelude.hashWithSalt` storage
+      `Prelude.hashWithSalt` surname
+      `Prelude.hashWithSalt` timeZoneId
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` username
+
+instance Prelude.NFData User where
+  rnf User' {..} =
+    Prelude.rnf createdTimestamp
+      `Prelude.seq` Prelude.rnf emailAddress
+      `Prelude.seq` Prelude.rnf givenName
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf locale
+      `Prelude.seq` Prelude.rnf modifiedTimestamp
+      `Prelude.seq` Prelude.rnf organizationId
+      `Prelude.seq` Prelude.rnf recycleBinFolderId
+      `Prelude.seq` Prelude.rnf rootFolderId
+      `Prelude.seq` Prelude.rnf status
+      `Prelude.seq` Prelude.rnf storage
+      `Prelude.seq` Prelude.rnf surname
+      `Prelude.seq` Prelude.rnf timeZoneId
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf username
diff --git a/gen/Amazonka/WorkDocs/Types/UserFilterType.hs b/gen/Amazonka/WorkDocs/Types/UserFilterType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/UserFilterType.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.WorkDocs.Types.UserFilterType
+-- 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.WorkDocs.Types.UserFilterType
+  ( UserFilterType
+      ( ..,
+        UserFilterType_ACTIVE_PENDING,
+        UserFilterType_ALL
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype UserFilterType = UserFilterType'
+  { fromUserFilterType ::
+      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 UserFilterType_ACTIVE_PENDING :: UserFilterType
+pattern UserFilterType_ACTIVE_PENDING = UserFilterType' "ACTIVE_PENDING"
+
+pattern UserFilterType_ALL :: UserFilterType
+pattern UserFilterType_ALL = UserFilterType' "ALL"
+
+{-# COMPLETE
+  UserFilterType_ACTIVE_PENDING,
+  UserFilterType_ALL,
+  UserFilterType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/UserMetadata.hs b/gen/Amazonka/WorkDocs/Types/UserMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/UserMetadata.hs
@@ -0,0 +1,120 @@
+{-# 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.WorkDocs.Types.UserMetadata
+-- 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.WorkDocs.Types.UserMetadata 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
+
+-- | Describes the metadata of the user.
+--
+-- /See:/ 'newUserMetadata' smart constructor.
+data UserMetadata = UserMetadata'
+  { -- | The email address of the user.
+    emailAddress :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The given name of the user before a rename operation.
+    givenName :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the user.
+    id :: Prelude.Maybe Prelude.Text,
+    -- | The surname of the user.
+    surname :: Prelude.Maybe Prelude.Text,
+    -- | The name of the user.
+    username :: Prelude.Maybe Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UserMetadata' 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:
+--
+-- 'emailAddress', 'userMetadata_emailAddress' - The email address of the user.
+--
+-- 'givenName', 'userMetadata_givenName' - The given name of the user before a rename operation.
+--
+-- 'id', 'userMetadata_id' - The ID of the user.
+--
+-- 'surname', 'userMetadata_surname' - The surname of the user.
+--
+-- 'username', 'userMetadata_username' - The name of the user.
+newUserMetadata ::
+  UserMetadata
+newUserMetadata =
+  UserMetadata'
+    { emailAddress = Prelude.Nothing,
+      givenName = Prelude.Nothing,
+      id = Prelude.Nothing,
+      surname = Prelude.Nothing,
+      username = Prelude.Nothing
+    }
+
+-- | The email address of the user.
+userMetadata_emailAddress :: Lens.Lens' UserMetadata (Prelude.Maybe Prelude.Text)
+userMetadata_emailAddress = Lens.lens (\UserMetadata' {emailAddress} -> emailAddress) (\s@UserMetadata' {} a -> s {emailAddress = a} :: UserMetadata) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The given name of the user before a rename operation.
+userMetadata_givenName :: Lens.Lens' UserMetadata (Prelude.Maybe Prelude.Text)
+userMetadata_givenName = Lens.lens (\UserMetadata' {givenName} -> givenName) (\s@UserMetadata' {} a -> s {givenName = a} :: UserMetadata)
+
+-- | The ID of the user.
+userMetadata_id :: Lens.Lens' UserMetadata (Prelude.Maybe Prelude.Text)
+userMetadata_id = Lens.lens (\UserMetadata' {id} -> id) (\s@UserMetadata' {} a -> s {id = a} :: UserMetadata)
+
+-- | The surname of the user.
+userMetadata_surname :: Lens.Lens' UserMetadata (Prelude.Maybe Prelude.Text)
+userMetadata_surname = Lens.lens (\UserMetadata' {surname} -> surname) (\s@UserMetadata' {} a -> s {surname = a} :: UserMetadata)
+
+-- | The name of the user.
+userMetadata_username :: Lens.Lens' UserMetadata (Prelude.Maybe Prelude.Text)
+userMetadata_username = Lens.lens (\UserMetadata' {username} -> username) (\s@UserMetadata' {} a -> s {username = a} :: UserMetadata)
+
+instance Data.FromJSON UserMetadata where
+  parseJSON =
+    Data.withObject
+      "UserMetadata"
+      ( \x ->
+          UserMetadata'
+            Prelude.<$> (x Data..:? "EmailAddress")
+            Prelude.<*> (x Data..:? "GivenName")
+            Prelude.<*> (x Data..:? "Id")
+            Prelude.<*> (x Data..:? "Surname")
+            Prelude.<*> (x Data..:? "Username")
+      )
+
+instance Prelude.Hashable UserMetadata where
+  hashWithSalt _salt UserMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` emailAddress
+      `Prelude.hashWithSalt` givenName
+      `Prelude.hashWithSalt` id
+      `Prelude.hashWithSalt` surname
+      `Prelude.hashWithSalt` username
+
+instance Prelude.NFData UserMetadata where
+  rnf UserMetadata' {..} =
+    Prelude.rnf emailAddress
+      `Prelude.seq` Prelude.rnf givenName
+      `Prelude.seq` Prelude.rnf id
+      `Prelude.seq` Prelude.rnf surname
+      `Prelude.seq` Prelude.rnf username
diff --git a/gen/Amazonka/WorkDocs/Types/UserSortType.hs b/gen/Amazonka/WorkDocs/Types/UserSortType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/UserSortType.hs
@@ -0,0 +1,86 @@
+{-# 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.WorkDocs.Types.UserSortType
+-- 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.WorkDocs.Types.UserSortType
+  ( UserSortType
+      ( ..,
+        UserSortType_FULL_NAME,
+        UserSortType_STORAGE_LIMIT,
+        UserSortType_STORAGE_USED,
+        UserSortType_USER_NAME,
+        UserSortType_USER_STATUS
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype UserSortType = UserSortType'
+  { fromUserSortType ::
+      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 UserSortType_FULL_NAME :: UserSortType
+pattern UserSortType_FULL_NAME = UserSortType' "FULL_NAME"
+
+pattern UserSortType_STORAGE_LIMIT :: UserSortType
+pattern UserSortType_STORAGE_LIMIT = UserSortType' "STORAGE_LIMIT"
+
+pattern UserSortType_STORAGE_USED :: UserSortType
+pattern UserSortType_STORAGE_USED = UserSortType' "STORAGE_USED"
+
+pattern UserSortType_USER_NAME :: UserSortType
+pattern UserSortType_USER_NAME = UserSortType' "USER_NAME"
+
+pattern UserSortType_USER_STATUS :: UserSortType
+pattern UserSortType_USER_STATUS = UserSortType' "USER_STATUS"
+
+{-# COMPLETE
+  UserSortType_FULL_NAME,
+  UserSortType_STORAGE_LIMIT,
+  UserSortType_STORAGE_USED,
+  UserSortType_USER_NAME,
+  UserSortType_USER_STATUS,
+  UserSortType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/UserStatusType.hs b/gen/Amazonka/WorkDocs/Types/UserStatusType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/UserStatusType.hs
@@ -0,0 +1,76 @@
+{-# 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.WorkDocs.Types.UserStatusType
+-- 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.WorkDocs.Types.UserStatusType
+  ( UserStatusType
+      ( ..,
+        UserStatusType_ACTIVE,
+        UserStatusType_INACTIVE,
+        UserStatusType_PENDING
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype UserStatusType = UserStatusType'
+  { fromUserStatusType ::
+      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 UserStatusType_ACTIVE :: UserStatusType
+pattern UserStatusType_ACTIVE = UserStatusType' "ACTIVE"
+
+pattern UserStatusType_INACTIVE :: UserStatusType
+pattern UserStatusType_INACTIVE = UserStatusType' "INACTIVE"
+
+pattern UserStatusType_PENDING :: UserStatusType
+pattern UserStatusType_PENDING = UserStatusType' "PENDING"
+
+{-# COMPLETE
+  UserStatusType_ACTIVE,
+  UserStatusType_INACTIVE,
+  UserStatusType_PENDING,
+  UserStatusType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/Types/UserStorageMetadata.hs b/gen/Amazonka/WorkDocs/Types/UserStorageMetadata.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/UserStorageMetadata.hs
@@ -0,0 +1,85 @@
+{-# 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.WorkDocs.Types.UserStorageMetadata
+-- 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.WorkDocs.Types.UserStorageMetadata 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
+import Amazonka.WorkDocs.Types.StorageRuleType
+
+-- | Describes the storage for a user.
+--
+-- /See:/ 'newUserStorageMetadata' smart constructor.
+data UserStorageMetadata = UserStorageMetadata'
+  { -- | The storage for a user.
+    storageRule :: Prelude.Maybe StorageRuleType,
+    -- | The amount of storage used, in bytes.
+    storageUtilizedInBytes :: Prelude.Maybe Prelude.Integer
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UserStorageMetadata' 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:
+--
+-- 'storageRule', 'userStorageMetadata_storageRule' - The storage for a user.
+--
+-- 'storageUtilizedInBytes', 'userStorageMetadata_storageUtilizedInBytes' - The amount of storage used, in bytes.
+newUserStorageMetadata ::
+  UserStorageMetadata
+newUserStorageMetadata =
+  UserStorageMetadata'
+    { storageRule = Prelude.Nothing,
+      storageUtilizedInBytes = Prelude.Nothing
+    }
+
+-- | The storage for a user.
+userStorageMetadata_storageRule :: Lens.Lens' UserStorageMetadata (Prelude.Maybe StorageRuleType)
+userStorageMetadata_storageRule = Lens.lens (\UserStorageMetadata' {storageRule} -> storageRule) (\s@UserStorageMetadata' {} a -> s {storageRule = a} :: UserStorageMetadata)
+
+-- | The amount of storage used, in bytes.
+userStorageMetadata_storageUtilizedInBytes :: Lens.Lens' UserStorageMetadata (Prelude.Maybe Prelude.Integer)
+userStorageMetadata_storageUtilizedInBytes = Lens.lens (\UserStorageMetadata' {storageUtilizedInBytes} -> storageUtilizedInBytes) (\s@UserStorageMetadata' {} a -> s {storageUtilizedInBytes = a} :: UserStorageMetadata)
+
+instance Data.FromJSON UserStorageMetadata where
+  parseJSON =
+    Data.withObject
+      "UserStorageMetadata"
+      ( \x ->
+          UserStorageMetadata'
+            Prelude.<$> (x Data..:? "StorageRule")
+            Prelude.<*> (x Data..:? "StorageUtilizedInBytes")
+      )
+
+instance Prelude.Hashable UserStorageMetadata where
+  hashWithSalt _salt UserStorageMetadata' {..} =
+    _salt
+      `Prelude.hashWithSalt` storageRule
+      `Prelude.hashWithSalt` storageUtilizedInBytes
+
+instance Prelude.NFData UserStorageMetadata where
+  rnf UserStorageMetadata' {..} =
+    Prelude.rnf storageRule
+      `Prelude.seq` Prelude.rnf storageUtilizedInBytes
diff --git a/gen/Amazonka/WorkDocs/Types/UserType.hs b/gen/Amazonka/WorkDocs/Types/UserType.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/Types/UserType.hs
@@ -0,0 +1,86 @@
+{-# 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.WorkDocs.Types.UserType
+-- 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.WorkDocs.Types.UserType
+  ( UserType
+      ( ..,
+        UserType_ADMIN,
+        UserType_MINIMALUSER,
+        UserType_POWERUSER,
+        UserType_USER,
+        UserType_WORKSPACESUSER
+      ),
+  )
+where
+
+import qualified Amazonka.Core as Core
+import qualified Amazonka.Data as Data
+import qualified Amazonka.Prelude as Prelude
+
+newtype UserType = UserType'
+  { fromUserType ::
+      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 UserType_ADMIN :: UserType
+pattern UserType_ADMIN = UserType' "ADMIN"
+
+pattern UserType_MINIMALUSER :: UserType
+pattern UserType_MINIMALUSER = UserType' "MINIMALUSER"
+
+pattern UserType_POWERUSER :: UserType
+pattern UserType_POWERUSER = UserType' "POWERUSER"
+
+pattern UserType_USER :: UserType
+pattern UserType_USER = UserType' "USER"
+
+pattern UserType_WORKSPACESUSER :: UserType
+pattern UserType_WORKSPACESUSER = UserType' "WORKSPACESUSER"
+
+{-# COMPLETE
+  UserType_ADMIN,
+  UserType_MINIMALUSER,
+  UserType_POWERUSER,
+  UserType_USER,
+  UserType_WORKSPACESUSER,
+  UserType'
+  #-}
diff --git a/gen/Amazonka/WorkDocs/UpdateDocument.hs b/gen/Amazonka/WorkDocs/UpdateDocument.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/UpdateDocument.hs
@@ -0,0 +1,191 @@
+{-# 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.WorkDocs.UpdateDocument
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the specified attributes of a document. The user must have
+-- access to both the document and its parent folder, if applicable.
+module Amazonka.WorkDocs.UpdateDocument
+  ( -- * Creating a Request
+    UpdateDocument (..),
+    newUpdateDocument,
+
+    -- * Request Lenses
+    updateDocument_authenticationToken,
+    updateDocument_name,
+    updateDocument_parentFolderId,
+    updateDocument_resourceState,
+    updateDocument_documentId,
+
+    -- * Destructuring the Response
+    UpdateDocumentResponse (..),
+    newUpdateDocumentResponse,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newUpdateDocument' smart constructor.
+data UpdateDocument = UpdateDocument'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The name of the document.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the parent folder.
+    parentFolderId :: Prelude.Maybe Prelude.Text,
+    -- | The resource state of the document. Only ACTIVE and RECYCLED are
+    -- supported.
+    resourceState :: Prelude.Maybe ResourceStateType,
+    -- | The ID of the document.
+    documentId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDocument' 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:
+--
+-- 'authenticationToken', 'updateDocument_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'name', 'updateDocument_name' - The name of the document.
+--
+-- 'parentFolderId', 'updateDocument_parentFolderId' - The ID of the parent folder.
+--
+-- 'resourceState', 'updateDocument_resourceState' - The resource state of the document. Only ACTIVE and RECYCLED are
+-- supported.
+--
+-- 'documentId', 'updateDocument_documentId' - The ID of the document.
+newUpdateDocument ::
+  -- | 'documentId'
+  Prelude.Text ->
+  UpdateDocument
+newUpdateDocument pDocumentId_ =
+  UpdateDocument'
+    { authenticationToken =
+        Prelude.Nothing,
+      name = Prelude.Nothing,
+      parentFolderId = Prelude.Nothing,
+      resourceState = Prelude.Nothing,
+      documentId = pDocumentId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+updateDocument_authenticationToken :: Lens.Lens' UpdateDocument (Prelude.Maybe Prelude.Text)
+updateDocument_authenticationToken = Lens.lens (\UpdateDocument' {authenticationToken} -> authenticationToken) (\s@UpdateDocument' {} a -> s {authenticationToken = a} :: UpdateDocument) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The name of the document.
+updateDocument_name :: Lens.Lens' UpdateDocument (Prelude.Maybe Prelude.Text)
+updateDocument_name = Lens.lens (\UpdateDocument' {name} -> name) (\s@UpdateDocument' {} a -> s {name = a} :: UpdateDocument)
+
+-- | The ID of the parent folder.
+updateDocument_parentFolderId :: Lens.Lens' UpdateDocument (Prelude.Maybe Prelude.Text)
+updateDocument_parentFolderId = Lens.lens (\UpdateDocument' {parentFolderId} -> parentFolderId) (\s@UpdateDocument' {} a -> s {parentFolderId = a} :: UpdateDocument)
+
+-- | The resource state of the document. Only ACTIVE and RECYCLED are
+-- supported.
+updateDocument_resourceState :: Lens.Lens' UpdateDocument (Prelude.Maybe ResourceStateType)
+updateDocument_resourceState = Lens.lens (\UpdateDocument' {resourceState} -> resourceState) (\s@UpdateDocument' {} a -> s {resourceState = a} :: UpdateDocument)
+
+-- | The ID of the document.
+updateDocument_documentId :: Lens.Lens' UpdateDocument Prelude.Text
+updateDocument_documentId = Lens.lens (\UpdateDocument' {documentId} -> documentId) (\s@UpdateDocument' {} a -> s {documentId = a} :: UpdateDocument)
+
+instance Core.AWSRequest UpdateDocument where
+  type
+    AWSResponse UpdateDocument =
+      UpdateDocumentResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveNull UpdateDocumentResponse'
+
+instance Prelude.Hashable UpdateDocument where
+  hashWithSalt _salt UpdateDocument' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` parentFolderId
+      `Prelude.hashWithSalt` resourceState
+      `Prelude.hashWithSalt` documentId
+
+instance Prelude.NFData UpdateDocument where
+  rnf UpdateDocument' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf parentFolderId
+      `Prelude.seq` Prelude.rnf resourceState
+      `Prelude.seq` Prelude.rnf documentId
+
+instance Data.ToHeaders UpdateDocument where
+  toHeaders UpdateDocument' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToJSON UpdateDocument where
+  toJSON UpdateDocument' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Name" Data..=) Prelude.<$> name,
+            ("ParentFolderId" Data..=)
+              Prelude.<$> parentFolderId,
+            ("ResourceState" Data..=) Prelude.<$> resourceState
+          ]
+      )
+
+instance Data.ToPath UpdateDocument where
+  toPath UpdateDocument' {..} =
+    Prelude.mconcat
+      ["/api/v1/documents/", Data.toBS documentId]
+
+instance Data.ToQuery UpdateDocument where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateDocumentResponse' smart constructor.
+data UpdateDocumentResponse = UpdateDocumentResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDocumentResponse' 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.
+newUpdateDocumentResponse ::
+  UpdateDocumentResponse
+newUpdateDocumentResponse = UpdateDocumentResponse'
+
+instance Prelude.NFData UpdateDocumentResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/WorkDocs/UpdateDocumentVersion.hs b/gen/Amazonka/WorkDocs/UpdateDocumentVersion.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/UpdateDocumentVersion.hs
@@ -0,0 +1,184 @@
+{-# 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.WorkDocs.UpdateDocumentVersion
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Changes the status of the document version to ACTIVE.
+--
+-- Amazon WorkDocs also sets its document container to ACTIVE. This is the
+-- last step in a document upload, after the client uploads the document to
+-- an S3-presigned URL returned by InitiateDocumentVersionUpload.
+module Amazonka.WorkDocs.UpdateDocumentVersion
+  ( -- * Creating a Request
+    UpdateDocumentVersion (..),
+    newUpdateDocumentVersion,
+
+    -- * Request Lenses
+    updateDocumentVersion_authenticationToken,
+    updateDocumentVersion_versionStatus,
+    updateDocumentVersion_documentId,
+    updateDocumentVersion_versionId,
+
+    -- * Destructuring the Response
+    UpdateDocumentVersionResponse (..),
+    newUpdateDocumentVersionResponse,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newUpdateDocumentVersion' smart constructor.
+data UpdateDocumentVersion = UpdateDocumentVersion'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The status of the version.
+    versionStatus :: Prelude.Maybe DocumentVersionStatus,
+    -- | The ID of the document.
+    documentId :: Prelude.Text,
+    -- | The version ID of the document.
+    versionId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDocumentVersion' 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:
+--
+-- 'authenticationToken', 'updateDocumentVersion_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'versionStatus', 'updateDocumentVersion_versionStatus' - The status of the version.
+--
+-- 'documentId', 'updateDocumentVersion_documentId' - The ID of the document.
+--
+-- 'versionId', 'updateDocumentVersion_versionId' - The version ID of the document.
+newUpdateDocumentVersion ::
+  -- | 'documentId'
+  Prelude.Text ->
+  -- | 'versionId'
+  Prelude.Text ->
+  UpdateDocumentVersion
+newUpdateDocumentVersion pDocumentId_ pVersionId_ =
+  UpdateDocumentVersion'
+    { authenticationToken =
+        Prelude.Nothing,
+      versionStatus = Prelude.Nothing,
+      documentId = pDocumentId_,
+      versionId = pVersionId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+updateDocumentVersion_authenticationToken :: Lens.Lens' UpdateDocumentVersion (Prelude.Maybe Prelude.Text)
+updateDocumentVersion_authenticationToken = Lens.lens (\UpdateDocumentVersion' {authenticationToken} -> authenticationToken) (\s@UpdateDocumentVersion' {} a -> s {authenticationToken = a} :: UpdateDocumentVersion) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The status of the version.
+updateDocumentVersion_versionStatus :: Lens.Lens' UpdateDocumentVersion (Prelude.Maybe DocumentVersionStatus)
+updateDocumentVersion_versionStatus = Lens.lens (\UpdateDocumentVersion' {versionStatus} -> versionStatus) (\s@UpdateDocumentVersion' {} a -> s {versionStatus = a} :: UpdateDocumentVersion)
+
+-- | The ID of the document.
+updateDocumentVersion_documentId :: Lens.Lens' UpdateDocumentVersion Prelude.Text
+updateDocumentVersion_documentId = Lens.lens (\UpdateDocumentVersion' {documentId} -> documentId) (\s@UpdateDocumentVersion' {} a -> s {documentId = a} :: UpdateDocumentVersion)
+
+-- | The version ID of the document.
+updateDocumentVersion_versionId :: Lens.Lens' UpdateDocumentVersion Prelude.Text
+updateDocumentVersion_versionId = Lens.lens (\UpdateDocumentVersion' {versionId} -> versionId) (\s@UpdateDocumentVersion' {} a -> s {versionId = a} :: UpdateDocumentVersion)
+
+instance Core.AWSRequest UpdateDocumentVersion where
+  type
+    AWSResponse UpdateDocumentVersion =
+      UpdateDocumentVersionResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveNull UpdateDocumentVersionResponse'
+
+instance Prelude.Hashable UpdateDocumentVersion where
+  hashWithSalt _salt UpdateDocumentVersion' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` versionStatus
+      `Prelude.hashWithSalt` documentId
+      `Prelude.hashWithSalt` versionId
+
+instance Prelude.NFData UpdateDocumentVersion where
+  rnf UpdateDocumentVersion' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf versionStatus
+      `Prelude.seq` Prelude.rnf documentId
+      `Prelude.seq` Prelude.rnf versionId
+
+instance Data.ToHeaders UpdateDocumentVersion where
+  toHeaders UpdateDocumentVersion' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToJSON UpdateDocumentVersion where
+  toJSON UpdateDocumentVersion' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("VersionStatus" Data..=)
+              Prelude.<$> versionStatus
+          ]
+      )
+
+instance Data.ToPath UpdateDocumentVersion where
+  toPath UpdateDocumentVersion' {..} =
+    Prelude.mconcat
+      [ "/api/v1/documents/",
+        Data.toBS documentId,
+        "/versions/",
+        Data.toBS versionId
+      ]
+
+instance Data.ToQuery UpdateDocumentVersion where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateDocumentVersionResponse' smart constructor.
+data UpdateDocumentVersionResponse = UpdateDocumentVersionResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateDocumentVersionResponse' 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.
+newUpdateDocumentVersionResponse ::
+  UpdateDocumentVersionResponse
+newUpdateDocumentVersionResponse =
+  UpdateDocumentVersionResponse'
+
+instance Prelude.NFData UpdateDocumentVersionResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/WorkDocs/UpdateFolder.hs b/gen/Amazonka/WorkDocs/UpdateFolder.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/UpdateFolder.hs
@@ -0,0 +1,188 @@
+{-# 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.WorkDocs.UpdateFolder
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the specified attributes of the specified folder. The user must
+-- have access to both the folder and its parent folder, if applicable.
+module Amazonka.WorkDocs.UpdateFolder
+  ( -- * Creating a Request
+    UpdateFolder (..),
+    newUpdateFolder,
+
+    -- * Request Lenses
+    updateFolder_authenticationToken,
+    updateFolder_name,
+    updateFolder_parentFolderId,
+    updateFolder_resourceState,
+    updateFolder_folderId,
+
+    -- * Destructuring the Response
+    UpdateFolderResponse (..),
+    newUpdateFolderResponse,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newUpdateFolder' smart constructor.
+data UpdateFolder = UpdateFolder'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The name of the folder.
+    name :: Prelude.Maybe Prelude.Text,
+    -- | The ID of the parent folder.
+    parentFolderId :: Prelude.Maybe Prelude.Text,
+    -- | The resource state of the folder. Only ACTIVE and RECYCLED are accepted
+    -- values from the API.
+    resourceState :: Prelude.Maybe ResourceStateType,
+    -- | The ID of the folder.
+    folderId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFolder' 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:
+--
+-- 'authenticationToken', 'updateFolder_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'name', 'updateFolder_name' - The name of the folder.
+--
+-- 'parentFolderId', 'updateFolder_parentFolderId' - The ID of the parent folder.
+--
+-- 'resourceState', 'updateFolder_resourceState' - The resource state of the folder. Only ACTIVE and RECYCLED are accepted
+-- values from the API.
+--
+-- 'folderId', 'updateFolder_folderId' - The ID of the folder.
+newUpdateFolder ::
+  -- | 'folderId'
+  Prelude.Text ->
+  UpdateFolder
+newUpdateFolder pFolderId_ =
+  UpdateFolder'
+    { authenticationToken =
+        Prelude.Nothing,
+      name = Prelude.Nothing,
+      parentFolderId = Prelude.Nothing,
+      resourceState = Prelude.Nothing,
+      folderId = pFolderId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+updateFolder_authenticationToken :: Lens.Lens' UpdateFolder (Prelude.Maybe Prelude.Text)
+updateFolder_authenticationToken = Lens.lens (\UpdateFolder' {authenticationToken} -> authenticationToken) (\s@UpdateFolder' {} a -> s {authenticationToken = a} :: UpdateFolder) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The name of the folder.
+updateFolder_name :: Lens.Lens' UpdateFolder (Prelude.Maybe Prelude.Text)
+updateFolder_name = Lens.lens (\UpdateFolder' {name} -> name) (\s@UpdateFolder' {} a -> s {name = a} :: UpdateFolder)
+
+-- | The ID of the parent folder.
+updateFolder_parentFolderId :: Lens.Lens' UpdateFolder (Prelude.Maybe Prelude.Text)
+updateFolder_parentFolderId = Lens.lens (\UpdateFolder' {parentFolderId} -> parentFolderId) (\s@UpdateFolder' {} a -> s {parentFolderId = a} :: UpdateFolder)
+
+-- | The resource state of the folder. Only ACTIVE and RECYCLED are accepted
+-- values from the API.
+updateFolder_resourceState :: Lens.Lens' UpdateFolder (Prelude.Maybe ResourceStateType)
+updateFolder_resourceState = Lens.lens (\UpdateFolder' {resourceState} -> resourceState) (\s@UpdateFolder' {} a -> s {resourceState = a} :: UpdateFolder)
+
+-- | The ID of the folder.
+updateFolder_folderId :: Lens.Lens' UpdateFolder Prelude.Text
+updateFolder_folderId = Lens.lens (\UpdateFolder' {folderId} -> folderId) (\s@UpdateFolder' {} a -> s {folderId = a} :: UpdateFolder)
+
+instance Core.AWSRequest UpdateFolder where
+  type AWSResponse UpdateFolder = UpdateFolderResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response = Response.receiveNull UpdateFolderResponse'
+
+instance Prelude.Hashable UpdateFolder where
+  hashWithSalt _salt UpdateFolder' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` name
+      `Prelude.hashWithSalt` parentFolderId
+      `Prelude.hashWithSalt` resourceState
+      `Prelude.hashWithSalt` folderId
+
+instance Prelude.NFData UpdateFolder where
+  rnf UpdateFolder' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf name
+      `Prelude.seq` Prelude.rnf parentFolderId
+      `Prelude.seq` Prelude.rnf resourceState
+      `Prelude.seq` Prelude.rnf folderId
+
+instance Data.ToHeaders UpdateFolder where
+  toHeaders UpdateFolder' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToJSON UpdateFolder where
+  toJSON UpdateFolder' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("Name" Data..=) Prelude.<$> name,
+            ("ParentFolderId" Data..=)
+              Prelude.<$> parentFolderId,
+            ("ResourceState" Data..=) Prelude.<$> resourceState
+          ]
+      )
+
+instance Data.ToPath UpdateFolder where
+  toPath UpdateFolder' {..} =
+    Prelude.mconcat
+      ["/api/v1/folders/", Data.toBS folderId]
+
+instance Data.ToQuery UpdateFolder where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateFolderResponse' smart constructor.
+data UpdateFolderResponse = UpdateFolderResponse'
+  {
+  }
+  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateFolderResponse' 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.
+newUpdateFolderResponse ::
+  UpdateFolderResponse
+newUpdateFolderResponse = UpdateFolderResponse'
+
+instance Prelude.NFData UpdateFolderResponse where
+  rnf _ = ()
diff --git a/gen/Amazonka/WorkDocs/UpdateUser.hs b/gen/Amazonka/WorkDocs/UpdateUser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/UpdateUser.hs
@@ -0,0 +1,275 @@
+{-# 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.WorkDocs.UpdateUser
+-- Copyright   : (c) 2013-2023 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the specified attributes of the specified user, and grants or
+-- revokes administrative privileges to the Amazon WorkDocs site.
+module Amazonka.WorkDocs.UpdateUser
+  ( -- * Creating a Request
+    UpdateUser (..),
+    newUpdateUser,
+
+    -- * Request Lenses
+    updateUser_authenticationToken,
+    updateUser_givenName,
+    updateUser_grantPoweruserPrivileges,
+    updateUser_locale,
+    updateUser_storageRule,
+    updateUser_surname,
+    updateUser_timeZoneId,
+    updateUser_type,
+    updateUser_userId,
+
+    -- * Destructuring the Response
+    UpdateUserResponse (..),
+    newUpdateUserResponse,
+
+    -- * Response Lenses
+    updateUserResponse_user,
+    updateUserResponse_httpStatus,
+  )
+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
+import qualified Amazonka.Request as Request
+import qualified Amazonka.Response as Response
+import Amazonka.WorkDocs.Types
+
+-- | /See:/ 'newUpdateUser' smart constructor.
+data UpdateUser = UpdateUser'
+  { -- | Amazon WorkDocs authentication token. Not required when using AWS
+    -- administrator credentials to access the API.
+    authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
+    -- | The given name of the user.
+    givenName :: Prelude.Maybe Prelude.Text,
+    -- | Boolean value to determine whether the user is granted Poweruser
+    -- privileges.
+    grantPoweruserPrivileges :: Prelude.Maybe BooleanEnumType,
+    -- | The locale of the user.
+    locale :: Prelude.Maybe LocaleType,
+    -- | The amount of storage for the user.
+    storageRule :: Prelude.Maybe StorageRuleType,
+    -- | The surname of the user.
+    surname :: Prelude.Maybe Prelude.Text,
+    -- | The time zone ID of the user.
+    timeZoneId :: Prelude.Maybe Prelude.Text,
+    -- | The type of the user.
+    type' :: Prelude.Maybe UserType,
+    -- | The ID of the user.
+    userId :: Prelude.Text
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateUser' 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:
+--
+-- 'authenticationToken', 'updateUser_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+--
+-- 'givenName', 'updateUser_givenName' - The given name of the user.
+--
+-- 'grantPoweruserPrivileges', 'updateUser_grantPoweruserPrivileges' - Boolean value to determine whether the user is granted Poweruser
+-- privileges.
+--
+-- 'locale', 'updateUser_locale' - The locale of the user.
+--
+-- 'storageRule', 'updateUser_storageRule' - The amount of storage for the user.
+--
+-- 'surname', 'updateUser_surname' - The surname of the user.
+--
+-- 'timeZoneId', 'updateUser_timeZoneId' - The time zone ID of the user.
+--
+-- 'type'', 'updateUser_type' - The type of the user.
+--
+-- 'userId', 'updateUser_userId' - The ID of the user.
+newUpdateUser ::
+  -- | 'userId'
+  Prelude.Text ->
+  UpdateUser
+newUpdateUser pUserId_ =
+  UpdateUser'
+    { authenticationToken = Prelude.Nothing,
+      givenName = Prelude.Nothing,
+      grantPoweruserPrivileges = Prelude.Nothing,
+      locale = Prelude.Nothing,
+      storageRule = Prelude.Nothing,
+      surname = Prelude.Nothing,
+      timeZoneId = Prelude.Nothing,
+      type' = Prelude.Nothing,
+      userId = pUserId_
+    }
+
+-- | Amazon WorkDocs authentication token. Not required when using AWS
+-- administrator credentials to access the API.
+updateUser_authenticationToken :: Lens.Lens' UpdateUser (Prelude.Maybe Prelude.Text)
+updateUser_authenticationToken = Lens.lens (\UpdateUser' {authenticationToken} -> authenticationToken) (\s@UpdateUser' {} a -> s {authenticationToken = a} :: UpdateUser) Prelude.. Lens.mapping Data._Sensitive
+
+-- | The given name of the user.
+updateUser_givenName :: Lens.Lens' UpdateUser (Prelude.Maybe Prelude.Text)
+updateUser_givenName = Lens.lens (\UpdateUser' {givenName} -> givenName) (\s@UpdateUser' {} a -> s {givenName = a} :: UpdateUser)
+
+-- | Boolean value to determine whether the user is granted Poweruser
+-- privileges.
+updateUser_grantPoweruserPrivileges :: Lens.Lens' UpdateUser (Prelude.Maybe BooleanEnumType)
+updateUser_grantPoweruserPrivileges = Lens.lens (\UpdateUser' {grantPoweruserPrivileges} -> grantPoweruserPrivileges) (\s@UpdateUser' {} a -> s {grantPoweruserPrivileges = a} :: UpdateUser)
+
+-- | The locale of the user.
+updateUser_locale :: Lens.Lens' UpdateUser (Prelude.Maybe LocaleType)
+updateUser_locale = Lens.lens (\UpdateUser' {locale} -> locale) (\s@UpdateUser' {} a -> s {locale = a} :: UpdateUser)
+
+-- | The amount of storage for the user.
+updateUser_storageRule :: Lens.Lens' UpdateUser (Prelude.Maybe StorageRuleType)
+updateUser_storageRule = Lens.lens (\UpdateUser' {storageRule} -> storageRule) (\s@UpdateUser' {} a -> s {storageRule = a} :: UpdateUser)
+
+-- | The surname of the user.
+updateUser_surname :: Lens.Lens' UpdateUser (Prelude.Maybe Prelude.Text)
+updateUser_surname = Lens.lens (\UpdateUser' {surname} -> surname) (\s@UpdateUser' {} a -> s {surname = a} :: UpdateUser)
+
+-- | The time zone ID of the user.
+updateUser_timeZoneId :: Lens.Lens' UpdateUser (Prelude.Maybe Prelude.Text)
+updateUser_timeZoneId = Lens.lens (\UpdateUser' {timeZoneId} -> timeZoneId) (\s@UpdateUser' {} a -> s {timeZoneId = a} :: UpdateUser)
+
+-- | The type of the user.
+updateUser_type :: Lens.Lens' UpdateUser (Prelude.Maybe UserType)
+updateUser_type = Lens.lens (\UpdateUser' {type'} -> type') (\s@UpdateUser' {} a -> s {type' = a} :: UpdateUser)
+
+-- | The ID of the user.
+updateUser_userId :: Lens.Lens' UpdateUser Prelude.Text
+updateUser_userId = Lens.lens (\UpdateUser' {userId} -> userId) (\s@UpdateUser' {} a -> s {userId = a} :: UpdateUser)
+
+instance Core.AWSRequest UpdateUser where
+  type AWSResponse UpdateUser = UpdateUserResponse
+  request overrides =
+    Request.patchJSON (overrides defaultService)
+  response =
+    Response.receiveJSON
+      ( \s h x ->
+          UpdateUserResponse'
+            Prelude.<$> (x Data..?> "User")
+            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
+      )
+
+instance Prelude.Hashable UpdateUser where
+  hashWithSalt _salt UpdateUser' {..} =
+    _salt
+      `Prelude.hashWithSalt` authenticationToken
+      `Prelude.hashWithSalt` givenName
+      `Prelude.hashWithSalt` grantPoweruserPrivileges
+      `Prelude.hashWithSalt` locale
+      `Prelude.hashWithSalt` storageRule
+      `Prelude.hashWithSalt` surname
+      `Prelude.hashWithSalt` timeZoneId
+      `Prelude.hashWithSalt` type'
+      `Prelude.hashWithSalt` userId
+
+instance Prelude.NFData UpdateUser where
+  rnf UpdateUser' {..} =
+    Prelude.rnf authenticationToken
+      `Prelude.seq` Prelude.rnf givenName
+      `Prelude.seq` Prelude.rnf grantPoweruserPrivileges
+      `Prelude.seq` Prelude.rnf locale
+      `Prelude.seq` Prelude.rnf storageRule
+      `Prelude.seq` Prelude.rnf surname
+      `Prelude.seq` Prelude.rnf timeZoneId
+      `Prelude.seq` Prelude.rnf type'
+      `Prelude.seq` Prelude.rnf userId
+
+instance Data.ToHeaders UpdateUser where
+  toHeaders UpdateUser' {..} =
+    Prelude.mconcat
+      [ "Authentication" Data.=# authenticationToken,
+        "Content-Type"
+          Data.=# ("application/x-amz-json-1.1" :: Prelude.ByteString)
+      ]
+
+instance Data.ToJSON UpdateUser where
+  toJSON UpdateUser' {..} =
+    Data.object
+      ( Prelude.catMaybes
+          [ ("GivenName" Data..=) Prelude.<$> givenName,
+            ("GrantPoweruserPrivileges" Data..=)
+              Prelude.<$> grantPoweruserPrivileges,
+            ("Locale" Data..=) Prelude.<$> locale,
+            ("StorageRule" Data..=) Prelude.<$> storageRule,
+            ("Surname" Data..=) Prelude.<$> surname,
+            ("TimeZoneId" Data..=) Prelude.<$> timeZoneId,
+            ("Type" Data..=) Prelude.<$> type'
+          ]
+      )
+
+instance Data.ToPath UpdateUser where
+  toPath UpdateUser' {..} =
+    Prelude.mconcat
+      ["/api/v1/users/", Data.toBS userId]
+
+instance Data.ToQuery UpdateUser where
+  toQuery = Prelude.const Prelude.mempty
+
+-- | /See:/ 'newUpdateUserResponse' smart constructor.
+data UpdateUserResponse = UpdateUserResponse'
+  { -- | The user information.
+    user :: Prelude.Maybe User,
+    -- | The response's http status code.
+    httpStatus :: Prelude.Int
+  }
+  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)
+
+-- |
+-- Create a value of 'UpdateUserResponse' 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:
+--
+-- 'user', 'updateUserResponse_user' - The user information.
+--
+-- 'httpStatus', 'updateUserResponse_httpStatus' - The response's http status code.
+newUpdateUserResponse ::
+  -- | 'httpStatus'
+  Prelude.Int ->
+  UpdateUserResponse
+newUpdateUserResponse pHttpStatus_ =
+  UpdateUserResponse'
+    { user = Prelude.Nothing,
+      httpStatus = pHttpStatus_
+    }
+
+-- | The user information.
+updateUserResponse_user :: Lens.Lens' UpdateUserResponse (Prelude.Maybe User)
+updateUserResponse_user = Lens.lens (\UpdateUserResponse' {user} -> user) (\s@UpdateUserResponse' {} a -> s {user = a} :: UpdateUserResponse)
+
+-- | The response's http status code.
+updateUserResponse_httpStatus :: Lens.Lens' UpdateUserResponse Prelude.Int
+updateUserResponse_httpStatus = Lens.lens (\UpdateUserResponse' {httpStatus} -> httpStatus) (\s@UpdateUserResponse' {} a -> s {httpStatus = a} :: UpdateUserResponse)
+
+instance Prelude.NFData UpdateUserResponse where
+  rnf UpdateUserResponse' {..} =
+    Prelude.rnf user
+      `Prelude.seq` Prelude.rnf httpStatus
diff --git a/gen/Amazonka/WorkDocs/Waiters.hs b/gen/Amazonka/WorkDocs/Waiters.hs
new file mode 100644
--- /dev/null
+++ b/gen/Amazonka/WorkDocs/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.WorkDocs.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.WorkDocs.Waiters 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
+import Amazonka.WorkDocs.Lens
+import Amazonka.WorkDocs.Types
diff --git a/gen/Network/AWS/WorkDocs.hs b/gen/Network/AWS/WorkDocs.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs.hs
+++ /dev/null
@@ -1,576 +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.WorkDocs
--- 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)
---
--- The WorkDocs API is designed for the following use cases:
---
---
---     * File Migration: File migration applications are supported for users who want to migrate their files from an on-premises or off-premises file system or service. Users can insert files into a user directory structure, as well as allow for basic metadata changes, such as modifications to the permissions of files.
---
---     * Security: Support security applications are supported for users who have additional security needs, such as antivirus or data loss prevention. The API actions, along with AWS CloudTrail, allow these applications to detect when changes occur in Amazon WorkDocs. Then, the application can take the necessary actions and replace the target file. If the target file violates the policy, the application can also choose to email the user.
---
---     * eDiscovery/Analytics: General administrative applications are supported, such as eDiscovery and analytics. These applications can choose to mimic or record the actions in an Amazon WorkDocs site, along with AWS CloudTrail, to replicate data for eDiscovery, backup, or analytical applications.
---
---
---
--- All Amazon WorkDocs API actions are Amazon authenticated and certificate-signed. They not only require the use of the AWS SDK, but also allow for the exclusive use of IAM users and roles to help facilitate access, trust, and permission policies. By creating a role and allowing an IAM user to access the Amazon WorkDocs site, the IAM user gains full administrative visibility into the entire Amazon WorkDocs site (or as set in the IAM policy). This includes, but is not limited to, the ability to modify file permissions and upload any file to any user. This allows developers to perform the three use cases above, as well as give users the ability to grant access on a selective basis using the IAM model.
---
-module Network.AWS.WorkDocs
-    (
-    -- * Service Configuration
-      workDocs
-
-    -- * Errors
-    -- $errors
-
-    -- ** CustomMetadataLimitExceededException
-    , _CustomMetadataLimitExceededException
-
-    -- ** EntityAlreadyExistsException
-    , _EntityAlreadyExistsException
-
-    -- ** ResourceAlreadyCheckedOutException
-    , _ResourceAlreadyCheckedOutException
-
-    -- ** ProhibitedStateException
-    , _ProhibitedStateException
-
-    -- ** TooManyLabelsException
-    , _TooManyLabelsException
-
-    -- ** InvalidArgumentException
-    , _InvalidArgumentException
-
-    -- ** UnauthorizedResourceAccessException
-    , _UnauthorizedResourceAccessException
-
-    -- ** TooManySubscriptionsException
-    , _TooManySubscriptionsException
-
-    -- ** FailedDependencyException
-    , _FailedDependencyException
-
-    -- ** DocumentLockedForCommentsException
-    , _DocumentLockedForCommentsException
-
-    -- ** EntityNotExistsException
-    , _EntityNotExistsException
-
-    -- ** DeactivatingLastSystemUserException
-    , _DeactivatingLastSystemUserException
-
-    -- ** IllegalUserStateException
-    , _IllegalUserStateException
-
-    -- ** StorageLimitWillExceedException
-    , _StorageLimitWillExceedException
-
-    -- ** ConcurrentModificationException
-    , _ConcurrentModificationException
-
-    -- ** StorageLimitExceededException
-    , _StorageLimitExceededException
-
-    -- ** ServiceUnavailableException
-    , _ServiceUnavailableException
-
-    -- ** InvalidOperationException
-    , _InvalidOperationException
-
-    -- ** UnauthorizedOperationException
-    , _UnauthorizedOperationException
-
-    -- ** DraftUploadOutOfSyncException
-    , _DraftUploadOutOfSyncException
-
-    -- ** LimitExceededException
-    , _LimitExceededException
-
-    -- ** InvalidPasswordException
-    , _InvalidPasswordException
-
-    -- * Waiters
-    -- $waiters
-
-    -- * Operations
-    -- $operations
-
-    -- ** DeleteLabels
-    , module Network.AWS.WorkDocs.DeleteLabels
-
-    -- ** AbortDocumentVersionUpload
-    , module Network.AWS.WorkDocs.AbortDocumentVersionUpload
-
-    -- ** GetDocumentPath
-    , module Network.AWS.WorkDocs.GetDocumentPath
-
-    -- ** CreateComment
-    , module Network.AWS.WorkDocs.CreateComment
-
-    -- ** DescribeUsers (Paginated)
-    , module Network.AWS.WorkDocs.DescribeUsers
-
-    -- ** DeleteFolder
-    , module Network.AWS.WorkDocs.DeleteFolder
-
-    -- ** UpdateFolder
-    , module Network.AWS.WorkDocs.UpdateFolder
-
-    -- ** DeleteCustomMetadata
-    , module Network.AWS.WorkDocs.DeleteCustomMetadata
-
-    -- ** DescribeResourcePermissions
-    , module Network.AWS.WorkDocs.DescribeResourcePermissions
-
-    -- ** DeleteNotificationSubscription
-    , module Network.AWS.WorkDocs.DeleteNotificationSubscription
-
-    -- ** CreateFolder
-    , module Network.AWS.WorkDocs.CreateFolder
-
-    -- ** CreateNotificationSubscription
-    , module Network.AWS.WorkDocs.CreateNotificationSubscription
-
-    -- ** CreateCustomMetadata
-    , module Network.AWS.WorkDocs.CreateCustomMetadata
-
-    -- ** GetFolderPath
-    , module Network.AWS.WorkDocs.GetFolderPath
-
-    -- ** DescribeComments
-    , module Network.AWS.WorkDocs.DescribeComments
-
-    -- ** DeleteFolderContents
-    , module Network.AWS.WorkDocs.DeleteFolderContents
-
-    -- ** RemoveAllResourcePermissions
-    , module Network.AWS.WorkDocs.RemoveAllResourcePermissions
-
-    -- ** GetFolder
-    , module Network.AWS.WorkDocs.GetFolder
-
-    -- ** DescribeNotificationSubscriptions
-    , module Network.AWS.WorkDocs.DescribeNotificationSubscriptions
-
-    -- ** ActivateUser
-    , module Network.AWS.WorkDocs.ActivateUser
-
-    -- ** DescribeDocumentVersions (Paginated)
-    , module Network.AWS.WorkDocs.DescribeDocumentVersions
-
-    -- ** GetDocumentVersion
-    , module Network.AWS.WorkDocs.GetDocumentVersion
-
-    -- ** DescribeActivities
-    , module Network.AWS.WorkDocs.DescribeActivities
-
-    -- ** DescribeRootFolders
-    , module Network.AWS.WorkDocs.DescribeRootFolders
-
-    -- ** GetCurrentUser
-    , module Network.AWS.WorkDocs.GetCurrentUser
-
-    -- ** DeactivateUser
-    , module Network.AWS.WorkDocs.DeactivateUser
-
-    -- ** GetDocument
-    , module Network.AWS.WorkDocs.GetDocument
-
-    -- ** DescribeFolderContents (Paginated)
-    , module Network.AWS.WorkDocs.DescribeFolderContents
-
-    -- ** CreateLabels
-    , module Network.AWS.WorkDocs.CreateLabels
-
-    -- ** UpdateDocumentVersion
-    , module Network.AWS.WorkDocs.UpdateDocumentVersion
-
-    -- ** RemoveResourcePermission
-    , module Network.AWS.WorkDocs.RemoveResourcePermission
-
-    -- ** DeleteComment
-    , module Network.AWS.WorkDocs.DeleteComment
-
-    -- ** InitiateDocumentVersionUpload
-    , module Network.AWS.WorkDocs.InitiateDocumentVersionUpload
-
-    -- ** CreateUser
-    , module Network.AWS.WorkDocs.CreateUser
-
-    -- ** UpdateUser
-    , module Network.AWS.WorkDocs.UpdateUser
-
-    -- ** DeleteUser
-    , module Network.AWS.WorkDocs.DeleteUser
-
-    -- ** AddResourcePermissions
-    , module Network.AWS.WorkDocs.AddResourcePermissions
-
-    -- ** UpdateDocument
-    , module Network.AWS.WorkDocs.UpdateDocument
-
-    -- ** DeleteDocument
-    , module Network.AWS.WorkDocs.DeleteDocument
-
-    -- ** DescribeGroups
-    , module Network.AWS.WorkDocs.DescribeGroups
-
-    -- * Types
-
-    -- ** ActivityType
-    , ActivityType (..)
-
-    -- ** BooleanEnumType
-    , BooleanEnumType (..)
-
-    -- ** CommentStatusType
-    , CommentStatusType (..)
-
-    -- ** CommentVisibilityType
-    , CommentVisibilityType (..)
-
-    -- ** DocumentSourceType
-    , DocumentSourceType (..)
-
-    -- ** DocumentStatusType
-    , DocumentStatusType (..)
-
-    -- ** DocumentThumbnailType
-    , DocumentThumbnailType (..)
-
-    -- ** DocumentVersionStatus
-    , DocumentVersionStatus (..)
-
-    -- ** FolderContentType
-    , FolderContentType (..)
-
-    -- ** LocaleType
-    , LocaleType (..)
-
-    -- ** OrderType
-    , OrderType (..)
-
-    -- ** PrincipalType
-    , PrincipalType (..)
-
-    -- ** ResourceSortType
-    , ResourceSortType (..)
-
-    -- ** ResourceStateType
-    , ResourceStateType (..)
-
-    -- ** ResourceType
-    , ResourceType (..)
-
-    -- ** RolePermissionType
-    , RolePermissionType (..)
-
-    -- ** RoleType
-    , RoleType (..)
-
-    -- ** ShareStatusType
-    , ShareStatusType (..)
-
-    -- ** StorageType
-    , StorageType (..)
-
-    -- ** SubscriptionProtocolType
-    , SubscriptionProtocolType (..)
-
-    -- ** SubscriptionType
-    , SubscriptionType (..)
-
-    -- ** UserFilterType
-    , UserFilterType (..)
-
-    -- ** UserSortType
-    , UserSortType (..)
-
-    -- ** UserStatusType
-    , UserStatusType (..)
-
-    -- ** UserType
-    , UserType (..)
-
-    -- ** Activity
-    , Activity
-    , activity
-    , aResourceMetadata
-    , aInitiator
-    , aParticipants
-    , aOriginalParent
-    , aType
-    , aCommentMetadata
-    , aTimeStamp
-    , aOrganizationId
-
-    -- ** Comment
-    , Comment
-    , comment
-    , cStatus
-    , cText
-    , cVisibility
-    , cThreadId
-    , cContributor
-    , cCreatedTimestamp
-    , cRecipientId
-    , cParentId
-    , cCommentId
-
-    -- ** CommentMetadata
-    , CommentMetadata
-    , commentMetadata
-    , cmCommentStatus
-    , cmContributor
-    , cmCommentId
-    , cmCreatedTimestamp
-    , cmRecipientId
-
-    -- ** DocumentMetadata
-    , DocumentMetadata
-    , documentMetadata
-    , dmLatestVersionMetadata
-    , dmParentFolderId
-    , dmModifiedTimestamp
-    , dmId
-    , dmLabels
-    , dmResourceState
-    , dmCreatedTimestamp
-    , dmCreatorId
-
-    -- ** DocumentVersionMetadata
-    , DocumentVersionMetadata
-    , documentVersionMetadata
-    , dvmThumbnail
-    , dvmStatus
-    , dvmSignature
-    , dvmContentCreatedTimestamp
-    , dvmSize
-    , dvmName
-    , dvmModifiedTimestamp
-    , dvmSource
-    , dvmId
-    , dvmCreatedTimestamp
-    , dvmContentModifiedTimestamp
-    , dvmCreatorId
-    , dvmContentType
-
-    -- ** FolderMetadata
-    , FolderMetadata
-    , folderMetadata
-    , fmSignature
-    , fmParentFolderId
-    , fmSize
-    , fmLatestVersionSize
-    , fmName
-    , fmModifiedTimestamp
-    , fmId
-    , fmLabels
-    , fmResourceState
-    , fmCreatedTimestamp
-    , fmCreatorId
-
-    -- ** GroupMetadata
-    , GroupMetadata
-    , groupMetadata
-    , gmName
-    , gmId
-
-    -- ** NotificationOptions
-    , NotificationOptions
-    , notificationOptions
-    , noEmailMessage
-    , noSendEmail
-
-    -- ** Participants
-    , Participants
-    , participants
-    , pGroups
-    , pUsers
-
-    -- ** PermissionInfo
-    , PermissionInfo
-    , permissionInfo
-    , piRole
-    , piType
-
-    -- ** Principal
-    , Principal
-    , principal
-    , pRoles
-    , pId
-    , pType
-
-    -- ** ResourceMetadata
-    , ResourceMetadata
-    , resourceMetadata
-    , rmVersionId
-    , rmOwner
-    , rmName
-    , rmId
-    , rmType
-    , rmOriginalName
-    , rmParentId
-
-    -- ** ResourcePath
-    , ResourcePath
-    , resourcePath
-    , rpComponents
-
-    -- ** ResourcePathComponent
-    , ResourcePathComponent
-    , resourcePathComponent
-    , rpcName
-    , rpcId
-
-    -- ** SharePrincipal
-    , SharePrincipal
-    , sharePrincipal
-    , spId
-    , spType
-    , spRole
-
-    -- ** ShareResult
-    , ShareResult
-    , shareResult
-    , srStatus
-    , srPrincipalId
-    , srRole
-    , srStatusMessage
-    , srShareId
-
-    -- ** StorageRuleType
-    , StorageRuleType
-    , storageRuleType
-    , srtStorageAllocatedInBytes
-    , srtStorageType
-
-    -- ** Subscription
-    , Subscription
-    , subscription
-    , sProtocol
-    , sEndPoint
-    , sSubscriptionId
-
-    -- ** UploadMetadata
-    , UploadMetadata
-    , uploadMetadata
-    , umUploadURL
-    , umSignedHeaders
-
-    -- ** User
-    , User
-    , user
-    , uGivenName
-    , uStatus
-    , uLocale
-    , uUsername
-    , uStorage
-    , uModifiedTimestamp
-    , uEmailAddress
-    , uId
-    , uRootFolderId
-    , uType
-    , uSurname
-    , uTimeZoneId
-    , uCreatedTimestamp
-    , uOrganizationId
-    , uRecycleBinFolderId
-
-    -- ** UserMetadata
-    , UserMetadata
-    , userMetadata
-    , umGivenName
-    , umUsername
-    , umEmailAddress
-    , umId
-    , umSurname
-
-    -- ** UserStorageMetadata
-    , UserStorageMetadata
-    , userStorageMetadata
-    , usmStorageUtilizedInBytes
-    , usmStorageRule
-    ) where
-
-import Network.AWS.WorkDocs.AbortDocumentVersionUpload
-import Network.AWS.WorkDocs.ActivateUser
-import Network.AWS.WorkDocs.AddResourcePermissions
-import Network.AWS.WorkDocs.CreateComment
-import Network.AWS.WorkDocs.CreateCustomMetadata
-import Network.AWS.WorkDocs.CreateFolder
-import Network.AWS.WorkDocs.CreateLabels
-import Network.AWS.WorkDocs.CreateNotificationSubscription
-import Network.AWS.WorkDocs.CreateUser
-import Network.AWS.WorkDocs.DeactivateUser
-import Network.AWS.WorkDocs.DeleteComment
-import Network.AWS.WorkDocs.DeleteCustomMetadata
-import Network.AWS.WorkDocs.DeleteDocument
-import Network.AWS.WorkDocs.DeleteFolder
-import Network.AWS.WorkDocs.DeleteFolderContents
-import Network.AWS.WorkDocs.DeleteLabels
-import Network.AWS.WorkDocs.DeleteNotificationSubscription
-import Network.AWS.WorkDocs.DeleteUser
-import Network.AWS.WorkDocs.DescribeActivities
-import Network.AWS.WorkDocs.DescribeComments
-import Network.AWS.WorkDocs.DescribeDocumentVersions
-import Network.AWS.WorkDocs.DescribeFolderContents
-import Network.AWS.WorkDocs.DescribeGroups
-import Network.AWS.WorkDocs.DescribeNotificationSubscriptions
-import Network.AWS.WorkDocs.DescribeResourcePermissions
-import Network.AWS.WorkDocs.DescribeRootFolders
-import Network.AWS.WorkDocs.DescribeUsers
-import Network.AWS.WorkDocs.GetCurrentUser
-import Network.AWS.WorkDocs.GetDocument
-import Network.AWS.WorkDocs.GetDocumentPath
-import Network.AWS.WorkDocs.GetDocumentVersion
-import Network.AWS.WorkDocs.GetFolder
-import Network.AWS.WorkDocs.GetFolderPath
-import Network.AWS.WorkDocs.InitiateDocumentVersionUpload
-import Network.AWS.WorkDocs.RemoveAllResourcePermissions
-import Network.AWS.WorkDocs.RemoveResourcePermission
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.UpdateDocument
-import Network.AWS.WorkDocs.UpdateDocumentVersion
-import Network.AWS.WorkDocs.UpdateFolder
-import Network.AWS.WorkDocs.UpdateUser
-import Network.AWS.WorkDocs.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 'WorkDocs'.
--}
-
-{- $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/WorkDocs/AbortDocumentVersionUpload.hs b/gen/Network/AWS/WorkDocs/AbortDocumentVersionUpload.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/AbortDocumentVersionUpload.hs
+++ /dev/null
@@ -1,128 +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.WorkDocs.AbortDocumentVersionUpload
--- 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)
---
--- Aborts the upload of the specified document version that was previously initiated by 'InitiateDocumentVersionUpload' . The client should make this call only when it no longer intends to upload the document version, or fails to do so.
---
---
-module Network.AWS.WorkDocs.AbortDocumentVersionUpload
-    (
-    -- * Creating a Request
-      abortDocumentVersionUpload
-    , AbortDocumentVersionUpload
-    -- * Request Lenses
-    , advuAuthenticationToken
-    , advuDocumentId
-    , advuVersionId
-
-    -- * Destructuring the Response
-    , abortDocumentVersionUploadResponse
-    , AbortDocumentVersionUploadResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'abortDocumentVersionUpload' smart constructor.
-data AbortDocumentVersionUpload = AbortDocumentVersionUpload'
-  { _advuAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _advuDocumentId          :: !Text
-  , _advuVersionId           :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AbortDocumentVersionUpload' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'advuAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'advuDocumentId' - The ID of the document.
---
--- * 'advuVersionId' - The ID of the version.
-abortDocumentVersionUpload
-    :: Text -- ^ 'advuDocumentId'
-    -> Text -- ^ 'advuVersionId'
-    -> AbortDocumentVersionUpload
-abortDocumentVersionUpload pDocumentId_ pVersionId_ =
-  AbortDocumentVersionUpload'
-    { _advuAuthenticationToken = Nothing
-    , _advuDocumentId = pDocumentId_
-    , _advuVersionId = pVersionId_
-    }
-
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-advuAuthenticationToken :: Lens' AbortDocumentVersionUpload (Maybe Text)
-advuAuthenticationToken = lens _advuAuthenticationToken (\ s a -> s{_advuAuthenticationToken = a}) . mapping _Sensitive
-
--- | The ID of the document.
-advuDocumentId :: Lens' AbortDocumentVersionUpload Text
-advuDocumentId = lens _advuDocumentId (\ s a -> s{_advuDocumentId = a})
-
--- | The ID of the version.
-advuVersionId :: Lens' AbortDocumentVersionUpload Text
-advuVersionId = lens _advuVersionId (\ s a -> s{_advuVersionId = a})
-
-instance AWSRequest AbortDocumentVersionUpload where
-        type Rs AbortDocumentVersionUpload =
-             AbortDocumentVersionUploadResponse
-        request = delete workDocs
-        response
-          = receiveNull AbortDocumentVersionUploadResponse'
-
-instance Hashable AbortDocumentVersionUpload where
-
-instance NFData AbortDocumentVersionUpload where
-
-instance ToHeaders AbortDocumentVersionUpload where
-        toHeaders AbortDocumentVersionUpload'{..}
-          = mconcat
-              ["Authentication" =# _advuAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath AbortDocumentVersionUpload where
-        toPath AbortDocumentVersionUpload'{..}
-          = mconcat
-              ["/api/v1/documents/", toBS _advuDocumentId,
-               "/versions/", toBS _advuVersionId]
-
-instance ToQuery AbortDocumentVersionUpload where
-        toQuery = const mempty
-
--- | /See:/ 'abortDocumentVersionUploadResponse' smart constructor.
-data AbortDocumentVersionUploadResponse =
-  AbortDocumentVersionUploadResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AbortDocumentVersionUploadResponse' with the minimum fields required to make a request.
---
-abortDocumentVersionUploadResponse
-    :: AbortDocumentVersionUploadResponse
-abortDocumentVersionUploadResponse = AbortDocumentVersionUploadResponse'
-
-
-instance NFData AbortDocumentVersionUploadResponse
-         where
diff --git a/gen/Network/AWS/WorkDocs/ActivateUser.hs b/gen/Network/AWS/WorkDocs/ActivateUser.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/ActivateUser.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.WorkDocs.ActivateUser
--- 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)
---
--- Activates the specified user. Only active users can access Amazon WorkDocs.
---
---
-module Network.AWS.WorkDocs.ActivateUser
-    (
-    -- * Creating a Request
-      activateUser
-    , ActivateUser
-    -- * Request Lenses
-    , auAuthenticationToken
-    , auUserId
-
-    -- * Destructuring the Response
-    , activateUserResponse
-    , ActivateUserResponse
-    -- * Response Lenses
-    , aursUser
-    , aursResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'activateUser' smart constructor.
-data ActivateUser = ActivateUser'
-  { _auAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _auUserId              :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ActivateUser' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'auAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'auUserId' - The ID of the user.
-activateUser
-    :: Text -- ^ 'auUserId'
-    -> ActivateUser
-activateUser pUserId_ =
-  ActivateUser' {_auAuthenticationToken = Nothing, _auUserId = pUserId_}
-
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-auAuthenticationToken :: Lens' ActivateUser (Maybe Text)
-auAuthenticationToken = lens _auAuthenticationToken (\ s a -> s{_auAuthenticationToken = a}) . mapping _Sensitive
-
--- | The ID of the user.
-auUserId :: Lens' ActivateUser Text
-auUserId = lens _auUserId (\ s a -> s{_auUserId = a})
-
-instance AWSRequest ActivateUser where
-        type Rs ActivateUser = ActivateUserResponse
-        request = postJSON workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 ActivateUserResponse' <$>
-                   (x .?> "User") <*> (pure (fromEnum s)))
-
-instance Hashable ActivateUser where
-
-instance NFData ActivateUser where
-
-instance ToHeaders ActivateUser where
-        toHeaders ActivateUser'{..}
-          = mconcat
-              ["Authentication" =# _auAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToJSON ActivateUser where
-        toJSON = const (Object mempty)
-
-instance ToPath ActivateUser where
-        toPath ActivateUser'{..}
-          = mconcat
-              ["/api/v1/users/", toBS _auUserId, "/activation"]
-
-instance ToQuery ActivateUser where
-        toQuery = const mempty
-
--- | /See:/ 'activateUserResponse' smart constructor.
-data ActivateUserResponse = ActivateUserResponse'
-  { _aursUser           :: !(Maybe User)
-  , _aursResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ActivateUserResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aursUser' - The user information.
---
--- * 'aursResponseStatus' - -- | The response status code.
-activateUserResponse
-    :: Int -- ^ 'aursResponseStatus'
-    -> ActivateUserResponse
-activateUserResponse pResponseStatus_ =
-  ActivateUserResponse'
-    {_aursUser = Nothing, _aursResponseStatus = pResponseStatus_}
-
-
--- | The user information.
-aursUser :: Lens' ActivateUserResponse (Maybe User)
-aursUser = lens _aursUser (\ s a -> s{_aursUser = a})
-
--- | -- | The response status code.
-aursResponseStatus :: Lens' ActivateUserResponse Int
-aursResponseStatus = lens _aursResponseStatus (\ s a -> s{_aursResponseStatus = a})
-
-instance NFData ActivateUserResponse where
diff --git a/gen/Network/AWS/WorkDocs/AddResourcePermissions.hs b/gen/Network/AWS/WorkDocs/AddResourcePermissions.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/AddResourcePermissions.hs
+++ /dev/null
@@ -1,167 +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.WorkDocs.AddResourcePermissions
--- 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)
---
--- Creates a set of permissions for the specified folder or document. The resource permissions are overwritten if the principals already have different permissions.
---
---
-module Network.AWS.WorkDocs.AddResourcePermissions
-    (
-    -- * Creating a Request
-      addResourcePermissions
-    , AddResourcePermissions
-    -- * Request Lenses
-    , arpNotificationOptions
-    , arpAuthenticationToken
-    , arpResourceId
-    , arpPrincipals
-
-    -- * Destructuring the Response
-    , addResourcePermissionsResponse
-    , AddResourcePermissionsResponse
-    -- * Response Lenses
-    , arprsShareResults
-    , arprsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'addResourcePermissions' smart constructor.
-data AddResourcePermissions = AddResourcePermissions'
-  { _arpNotificationOptions :: !(Maybe NotificationOptions)
-  , _arpAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _arpResourceId          :: !Text
-  , _arpPrincipals          :: ![SharePrincipal]
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddResourcePermissions' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'arpNotificationOptions' - The notification options.
---
--- * 'arpAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'arpResourceId' - The ID of the resource.
---
--- * 'arpPrincipals' - The users, groups, or organization being granted permission.
-addResourcePermissions
-    :: Text -- ^ 'arpResourceId'
-    -> AddResourcePermissions
-addResourcePermissions pResourceId_ =
-  AddResourcePermissions'
-    { _arpNotificationOptions = Nothing
-    , _arpAuthenticationToken = Nothing
-    , _arpResourceId = pResourceId_
-    , _arpPrincipals = mempty
-    }
-
-
--- | The notification options.
-arpNotificationOptions :: Lens' AddResourcePermissions (Maybe NotificationOptions)
-arpNotificationOptions = lens _arpNotificationOptions (\ s a -> s{_arpNotificationOptions = a})
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-arpAuthenticationToken :: Lens' AddResourcePermissions (Maybe Text)
-arpAuthenticationToken = lens _arpAuthenticationToken (\ s a -> s{_arpAuthenticationToken = a}) . mapping _Sensitive
-
--- | The ID of the resource.
-arpResourceId :: Lens' AddResourcePermissions Text
-arpResourceId = lens _arpResourceId (\ s a -> s{_arpResourceId = a})
-
--- | The users, groups, or organization being granted permission.
-arpPrincipals :: Lens' AddResourcePermissions [SharePrincipal]
-arpPrincipals = lens _arpPrincipals (\ s a -> s{_arpPrincipals = a}) . _Coerce
-
-instance AWSRequest AddResourcePermissions where
-        type Rs AddResourcePermissions =
-             AddResourcePermissionsResponse
-        request = postJSON workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 AddResourcePermissionsResponse' <$>
-                   (x .?> "ShareResults" .!@ mempty) <*>
-                     (pure (fromEnum s)))
-
-instance Hashable AddResourcePermissions where
-
-instance NFData AddResourcePermissions where
-
-instance ToHeaders AddResourcePermissions where
-        toHeaders AddResourcePermissions'{..}
-          = mconcat
-              ["Authentication" =# _arpAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToJSON AddResourcePermissions where
-        toJSON AddResourcePermissions'{..}
-          = object
-              (catMaybes
-                 [("NotificationOptions" .=) <$>
-                    _arpNotificationOptions,
-                  Just ("Principals" .= _arpPrincipals)])
-
-instance ToPath AddResourcePermissions where
-        toPath AddResourcePermissions'{..}
-          = mconcat
-              ["/api/v1/resources/", toBS _arpResourceId,
-               "/permissions"]
-
-instance ToQuery AddResourcePermissions where
-        toQuery = const mempty
-
--- | /See:/ 'addResourcePermissionsResponse' smart constructor.
-data AddResourcePermissionsResponse = AddResourcePermissionsResponse'
-  { _arprsShareResults   :: !(Maybe [ShareResult])
-  , _arprsResponseStatus :: !Int
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'AddResourcePermissionsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'arprsShareResults' - The share results.
---
--- * 'arprsResponseStatus' - -- | The response status code.
-addResourcePermissionsResponse
-    :: Int -- ^ 'arprsResponseStatus'
-    -> AddResourcePermissionsResponse
-addResourcePermissionsResponse pResponseStatus_ =
-  AddResourcePermissionsResponse'
-    {_arprsShareResults = Nothing, _arprsResponseStatus = pResponseStatus_}
-
-
--- | The share results.
-arprsShareResults :: Lens' AddResourcePermissionsResponse [ShareResult]
-arprsShareResults = lens _arprsShareResults (\ s a -> s{_arprsShareResults = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-arprsResponseStatus :: Lens' AddResourcePermissionsResponse Int
-arprsResponseStatus = lens _arprsResponseStatus (\ s a -> s{_arprsResponseStatus = a})
-
-instance NFData AddResourcePermissionsResponse where
diff --git a/gen/Network/AWS/WorkDocs/CreateComment.hs b/gen/Network/AWS/WorkDocs/CreateComment.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/CreateComment.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.WorkDocs.CreateComment
--- 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)
---
--- Adds a new comment to the specified document version.
---
---
-module Network.AWS.WorkDocs.CreateComment
-    (
-    -- * Creating a Request
-      createComment
-    , CreateComment
-    -- * Request Lenses
-    , ccNotifyCollaborators
-    , ccAuthenticationToken
-    , ccVisibility
-    , ccThreadId
-    , ccParentId
-    , ccDocumentId
-    , ccVersionId
-    , ccText
-
-    -- * Destructuring the Response
-    , createCommentResponse
-    , CreateCommentResponse
-    -- * Response Lenses
-    , ccrsComment
-    , ccrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'createComment' smart constructor.
-data CreateComment = CreateComment'
-  { _ccNotifyCollaborators :: !(Maybe Bool)
-  , _ccAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _ccVisibility          :: !(Maybe CommentVisibilityType)
-  , _ccThreadId            :: !(Maybe Text)
-  , _ccParentId            :: !(Maybe Text)
-  , _ccDocumentId          :: !Text
-  , _ccVersionId           :: !Text
-  , _ccText                :: !(Sensitive Text)
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateComment' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccNotifyCollaborators' - Set this parameter to TRUE to send an email out to the document collaborators after the comment is created.
---
--- * 'ccAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'ccVisibility' - The visibility of the comment. Options are either PRIVATE, where the comment is visible only to the comment author and document owner and co-owners, or PUBLIC, where the comment is visible to document owners, co-owners, and contributors.
---
--- * 'ccThreadId' - The ID of the root comment in the thread.
---
--- * 'ccParentId' - The ID of the parent comment.
---
--- * 'ccDocumentId' - The ID of the document.
---
--- * 'ccVersionId' - The ID of the document version.
---
--- * 'ccText' - The text of the comment.
-createComment
-    :: Text -- ^ 'ccDocumentId'
-    -> Text -- ^ 'ccVersionId'
-    -> Text -- ^ 'ccText'
-    -> CreateComment
-createComment pDocumentId_ pVersionId_ pText_ =
-  CreateComment'
-    { _ccNotifyCollaborators = Nothing
-    , _ccAuthenticationToken = Nothing
-    , _ccVisibility = Nothing
-    , _ccThreadId = Nothing
-    , _ccParentId = Nothing
-    , _ccDocumentId = pDocumentId_
-    , _ccVersionId = pVersionId_
-    , _ccText = _Sensitive # pText_
-    }
-
-
--- | Set this parameter to TRUE to send an email out to the document collaborators after the comment is created.
-ccNotifyCollaborators :: Lens' CreateComment (Maybe Bool)
-ccNotifyCollaborators = lens _ccNotifyCollaborators (\ s a -> s{_ccNotifyCollaborators = a})
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-ccAuthenticationToken :: Lens' CreateComment (Maybe Text)
-ccAuthenticationToken = lens _ccAuthenticationToken (\ s a -> s{_ccAuthenticationToken = a}) . mapping _Sensitive
-
--- | The visibility of the comment. Options are either PRIVATE, where the comment is visible only to the comment author and document owner and co-owners, or PUBLIC, where the comment is visible to document owners, co-owners, and contributors.
-ccVisibility :: Lens' CreateComment (Maybe CommentVisibilityType)
-ccVisibility = lens _ccVisibility (\ s a -> s{_ccVisibility = a})
-
--- | The ID of the root comment in the thread.
-ccThreadId :: Lens' CreateComment (Maybe Text)
-ccThreadId = lens _ccThreadId (\ s a -> s{_ccThreadId = a})
-
--- | The ID of the parent comment.
-ccParentId :: Lens' CreateComment (Maybe Text)
-ccParentId = lens _ccParentId (\ s a -> s{_ccParentId = a})
-
--- | The ID of the document.
-ccDocumentId :: Lens' CreateComment Text
-ccDocumentId = lens _ccDocumentId (\ s a -> s{_ccDocumentId = a})
-
--- | The ID of the document version.
-ccVersionId :: Lens' CreateComment Text
-ccVersionId = lens _ccVersionId (\ s a -> s{_ccVersionId = a})
-
--- | The text of the comment.
-ccText :: Lens' CreateComment Text
-ccText = lens _ccText (\ s a -> s{_ccText = a}) . _Sensitive
-
-instance AWSRequest CreateComment where
-        type Rs CreateComment = CreateCommentResponse
-        request = postJSON workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 CreateCommentResponse' <$>
-                   (x .?> "Comment") <*> (pure (fromEnum s)))
-
-instance Hashable CreateComment where
-
-instance NFData CreateComment where
-
-instance ToHeaders CreateComment where
-        toHeaders CreateComment'{..}
-          = mconcat
-              ["Authentication" =# _ccAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToJSON CreateComment where
-        toJSON CreateComment'{..}
-          = object
-              (catMaybes
-                 [("NotifyCollaborators" .=) <$>
-                    _ccNotifyCollaborators,
-                  ("Visibility" .=) <$> _ccVisibility,
-                  ("ThreadId" .=) <$> _ccThreadId,
-                  ("ParentId" .=) <$> _ccParentId,
-                  Just ("Text" .= _ccText)])
-
-instance ToPath CreateComment where
-        toPath CreateComment'{..}
-          = mconcat
-              ["/api/v1/documents/", toBS _ccDocumentId,
-               "/versions/", toBS _ccVersionId, "/comment"]
-
-instance ToQuery CreateComment where
-        toQuery = const mempty
-
--- | /See:/ 'createCommentResponse' smart constructor.
-data CreateCommentResponse = CreateCommentResponse'
-  { _ccrsComment        :: !(Maybe Comment)
-  , _ccrsResponseStatus :: !Int
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateCommentResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccrsComment' - The comment that has been created.
---
--- * 'ccrsResponseStatus' - -- | The response status code.
-createCommentResponse
-    :: Int -- ^ 'ccrsResponseStatus'
-    -> CreateCommentResponse
-createCommentResponse pResponseStatus_ =
-  CreateCommentResponse'
-    {_ccrsComment = Nothing, _ccrsResponseStatus = pResponseStatus_}
-
-
--- | The comment that has been created.
-ccrsComment :: Lens' CreateCommentResponse (Maybe Comment)
-ccrsComment = lens _ccrsComment (\ s a -> s{_ccrsComment = a})
-
--- | -- | The response status code.
-ccrsResponseStatus :: Lens' CreateCommentResponse Int
-ccrsResponseStatus = lens _ccrsResponseStatus (\ s a -> s{_ccrsResponseStatus = a})
-
-instance NFData CreateCommentResponse where
diff --git a/gen/Network/AWS/WorkDocs/CreateCustomMetadata.hs b/gen/Network/AWS/WorkDocs/CreateCustomMetadata.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/CreateCustomMetadata.hs
+++ /dev/null
@@ -1,156 +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.WorkDocs.CreateCustomMetadata
--- 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)
---
--- Adds one or more custom properties to the specified resource (a folder, document, or version).
---
---
-module Network.AWS.WorkDocs.CreateCustomMetadata
-    (
-    -- * Creating a Request
-      createCustomMetadata
-    , CreateCustomMetadata
-    -- * Request Lenses
-    , ccmVersionId
-    , ccmAuthenticationToken
-    , ccmResourceId
-    , ccmCustomMetadata
-
-    -- * Destructuring the Response
-    , createCustomMetadataResponse
-    , CreateCustomMetadataResponse
-    -- * Response Lenses
-    , ccmrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'createCustomMetadata' smart constructor.
-data CreateCustomMetadata = CreateCustomMetadata'
-  { _ccmVersionId           :: !(Maybe Text)
-  , _ccmAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _ccmResourceId          :: !Text
-  , _ccmCustomMetadata      :: !(Map Text Text)
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateCustomMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccmVersionId' - The ID of the version, if the custom metadata is being added to a document version.
---
--- * 'ccmAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'ccmResourceId' - The ID of the resource.
---
--- * 'ccmCustomMetadata' - Custom metadata in the form of name-value pairs.
-createCustomMetadata
-    :: Text -- ^ 'ccmResourceId'
-    -> CreateCustomMetadata
-createCustomMetadata pResourceId_ =
-  CreateCustomMetadata'
-    { _ccmVersionId = Nothing
-    , _ccmAuthenticationToken = Nothing
-    , _ccmResourceId = pResourceId_
-    , _ccmCustomMetadata = mempty
-    }
-
-
--- | The ID of the version, if the custom metadata is being added to a document version.
-ccmVersionId :: Lens' CreateCustomMetadata (Maybe Text)
-ccmVersionId = lens _ccmVersionId (\ s a -> s{_ccmVersionId = a})
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-ccmAuthenticationToken :: Lens' CreateCustomMetadata (Maybe Text)
-ccmAuthenticationToken = lens _ccmAuthenticationToken (\ s a -> s{_ccmAuthenticationToken = a}) . mapping _Sensitive
-
--- | The ID of the resource.
-ccmResourceId :: Lens' CreateCustomMetadata Text
-ccmResourceId = lens _ccmResourceId (\ s a -> s{_ccmResourceId = a})
-
--- | Custom metadata in the form of name-value pairs.
-ccmCustomMetadata :: Lens' CreateCustomMetadata (HashMap Text Text)
-ccmCustomMetadata = lens _ccmCustomMetadata (\ s a -> s{_ccmCustomMetadata = a}) . _Map
-
-instance AWSRequest CreateCustomMetadata where
-        type Rs CreateCustomMetadata =
-             CreateCustomMetadataResponse
-        request = putJSON workDocs
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 CreateCustomMetadataResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable CreateCustomMetadata where
-
-instance NFData CreateCustomMetadata where
-
-instance ToHeaders CreateCustomMetadata where
-        toHeaders CreateCustomMetadata'{..}
-          = mconcat
-              ["Authentication" =# _ccmAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToJSON CreateCustomMetadata where
-        toJSON CreateCustomMetadata'{..}
-          = object
-              (catMaybes
-                 [Just ("CustomMetadata" .= _ccmCustomMetadata)])
-
-instance ToPath CreateCustomMetadata where
-        toPath CreateCustomMetadata'{..}
-          = mconcat
-              ["/api/v1/resources/", toBS _ccmResourceId,
-               "/customMetadata"]
-
-instance ToQuery CreateCustomMetadata where
-        toQuery CreateCustomMetadata'{..}
-          = mconcat ["versionid" =: _ccmVersionId]
-
--- | /See:/ 'createCustomMetadataResponse' smart constructor.
-newtype CreateCustomMetadataResponse = CreateCustomMetadataResponse'
-  { _ccmrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateCustomMetadataResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccmrsResponseStatus' - -- | The response status code.
-createCustomMetadataResponse
-    :: Int -- ^ 'ccmrsResponseStatus'
-    -> CreateCustomMetadataResponse
-createCustomMetadataResponse pResponseStatus_ =
-  CreateCustomMetadataResponse' {_ccmrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-ccmrsResponseStatus :: Lens' CreateCustomMetadataResponse Int
-ccmrsResponseStatus = lens _ccmrsResponseStatus (\ s a -> s{_ccmrsResponseStatus = a})
-
-instance NFData CreateCustomMetadataResponse where
diff --git a/gen/Network/AWS/WorkDocs/CreateFolder.hs b/gen/Network/AWS/WorkDocs/CreateFolder.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/CreateFolder.hs
+++ /dev/null
@@ -1,152 +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.WorkDocs.CreateFolder
--- 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)
---
--- Creates a folder with the specified name and parent folder.
---
---
-module Network.AWS.WorkDocs.CreateFolder
-    (
-    -- * Creating a Request
-      createFolder
-    , CreateFolder
-    -- * Request Lenses
-    , cfAuthenticationToken
-    , cfName
-    , cfParentFolderId
-
-    -- * Destructuring the Response
-    , createFolderResponse
-    , CreateFolderResponse
-    -- * Response Lenses
-    , cfrsMetadata
-    , cfrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'createFolder' smart constructor.
-data CreateFolder = CreateFolder'
-  { _cfAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _cfName                :: !(Maybe Text)
-  , _cfParentFolderId      :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateFolder' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cfAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'cfName' - The name of the new folder.
---
--- * 'cfParentFolderId' - The ID of the parent folder.
-createFolder
-    :: Text -- ^ 'cfParentFolderId'
-    -> CreateFolder
-createFolder pParentFolderId_ =
-  CreateFolder'
-    { _cfAuthenticationToken = Nothing
-    , _cfName = Nothing
-    , _cfParentFolderId = pParentFolderId_
-    }
-
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-cfAuthenticationToken :: Lens' CreateFolder (Maybe Text)
-cfAuthenticationToken = lens _cfAuthenticationToken (\ s a -> s{_cfAuthenticationToken = a}) . mapping _Sensitive
-
--- | The name of the new folder.
-cfName :: Lens' CreateFolder (Maybe Text)
-cfName = lens _cfName (\ s a -> s{_cfName = a})
-
--- | The ID of the parent folder.
-cfParentFolderId :: Lens' CreateFolder Text
-cfParentFolderId = lens _cfParentFolderId (\ s a -> s{_cfParentFolderId = a})
-
-instance AWSRequest CreateFolder where
-        type Rs CreateFolder = CreateFolderResponse
-        request = postJSON workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 CreateFolderResponse' <$>
-                   (x .?> "Metadata") <*> (pure (fromEnum s)))
-
-instance Hashable CreateFolder where
-
-instance NFData CreateFolder where
-
-instance ToHeaders CreateFolder where
-        toHeaders CreateFolder'{..}
-          = mconcat
-              ["Authentication" =# _cfAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToJSON CreateFolder where
-        toJSON CreateFolder'{..}
-          = object
-              (catMaybes
-                 [("Name" .=) <$> _cfName,
-                  Just ("ParentFolderId" .= _cfParentFolderId)])
-
-instance ToPath CreateFolder where
-        toPath = const "/api/v1/folders"
-
-instance ToQuery CreateFolder where
-        toQuery = const mempty
-
--- | /See:/ 'createFolderResponse' smart constructor.
-data CreateFolderResponse = CreateFolderResponse'
-  { _cfrsMetadata       :: !(Maybe FolderMetadata)
-  , _cfrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateFolderResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cfrsMetadata' - The metadata of the folder.
---
--- * 'cfrsResponseStatus' - -- | The response status code.
-createFolderResponse
-    :: Int -- ^ 'cfrsResponseStatus'
-    -> CreateFolderResponse
-createFolderResponse pResponseStatus_ =
-  CreateFolderResponse'
-    {_cfrsMetadata = Nothing, _cfrsResponseStatus = pResponseStatus_}
-
-
--- | The metadata of the folder.
-cfrsMetadata :: Lens' CreateFolderResponse (Maybe FolderMetadata)
-cfrsMetadata = lens _cfrsMetadata (\ s a -> s{_cfrsMetadata = a})
-
--- | -- | The response status code.
-cfrsResponseStatus :: Lens' CreateFolderResponse Int
-cfrsResponseStatus = lens _cfrsResponseStatus (\ s a -> s{_cfrsResponseStatus = a})
-
-instance NFData CreateFolderResponse where
diff --git a/gen/Network/AWS/WorkDocs/CreateLabels.hs b/gen/Network/AWS/WorkDocs/CreateLabels.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/CreateLabels.hs
+++ /dev/null
@@ -1,141 +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.WorkDocs.CreateLabels
--- 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)
---
--- Adds the specified list of labels to the given resource (a document or folder)
---
---
-module Network.AWS.WorkDocs.CreateLabels
-    (
-    -- * Creating a Request
-      createLabels
-    , CreateLabels
-    -- * Request Lenses
-    , clAuthenticationToken
-    , clResourceId
-    , clLabels
-
-    -- * Destructuring the Response
-    , createLabelsResponse
-    , CreateLabelsResponse
-    -- * Response Lenses
-    , clrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'createLabels' smart constructor.
-data CreateLabels = CreateLabels'
-  { _clAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _clResourceId          :: !Text
-  , _clLabels              :: ![Text]
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateLabels' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'clAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'clResourceId' - The ID of the resource.
---
--- * 'clLabels' - List of labels to add to the resource.
-createLabels
-    :: Text -- ^ 'clResourceId'
-    -> CreateLabels
-createLabels pResourceId_ =
-  CreateLabels'
-    { _clAuthenticationToken = Nothing
-    , _clResourceId = pResourceId_
-    , _clLabels = mempty
-    }
-
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-clAuthenticationToken :: Lens' CreateLabels (Maybe Text)
-clAuthenticationToken = lens _clAuthenticationToken (\ s a -> s{_clAuthenticationToken = a}) . mapping _Sensitive
-
--- | The ID of the resource.
-clResourceId :: Lens' CreateLabels Text
-clResourceId = lens _clResourceId (\ s a -> s{_clResourceId = a})
-
--- | List of labels to add to the resource.
-clLabels :: Lens' CreateLabels [Text]
-clLabels = lens _clLabels (\ s a -> s{_clLabels = a}) . _Coerce
-
-instance AWSRequest CreateLabels where
-        type Rs CreateLabels = CreateLabelsResponse
-        request = putJSON workDocs
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 CreateLabelsResponse' <$> (pure (fromEnum s)))
-
-instance Hashable CreateLabels where
-
-instance NFData CreateLabels where
-
-instance ToHeaders CreateLabels where
-        toHeaders CreateLabels'{..}
-          = mconcat
-              ["Authentication" =# _clAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToJSON CreateLabels where
-        toJSON CreateLabels'{..}
-          = object (catMaybes [Just ("Labels" .= _clLabels)])
-
-instance ToPath CreateLabels where
-        toPath CreateLabels'{..}
-          = mconcat
-              ["/api/v1/resources/", toBS _clResourceId, "/labels"]
-
-instance ToQuery CreateLabels where
-        toQuery = const mempty
-
--- | /See:/ 'createLabelsResponse' smart constructor.
-newtype CreateLabelsResponse = CreateLabelsResponse'
-  { _clrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateLabelsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'clrsResponseStatus' - -- | The response status code.
-createLabelsResponse
-    :: Int -- ^ 'clrsResponseStatus'
-    -> CreateLabelsResponse
-createLabelsResponse pResponseStatus_ =
-  CreateLabelsResponse' {_clrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-clrsResponseStatus :: Lens' CreateLabelsResponse Int
-clrsResponseStatus = lens _clrsResponseStatus (\ s a -> s{_clrsResponseStatus = a})
-
-instance NFData CreateLabelsResponse where
diff --git a/gen/Network/AWS/WorkDocs/CreateNotificationSubscription.hs b/gen/Network/AWS/WorkDocs/CreateNotificationSubscription.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/CreateNotificationSubscription.hs
+++ /dev/null
@@ -1,176 +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.WorkDocs.CreateNotificationSubscription
--- 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)
---
--- Configure WorkDocs to use Amazon SNS notifications.
---
---
--- The endpoint receives a confirmation message, and must confirm the subscription. For more information, see <http://docs.aws.amazon.com/sns/latest/dg/SendMessageToHttp.html#SendMessageToHttp.confirm Confirm the Subscription> in the /Amazon Simple Notification Service Developer Guide/ .
---
-module Network.AWS.WorkDocs.CreateNotificationSubscription
-    (
-    -- * Creating a Request
-      createNotificationSubscription
-    , CreateNotificationSubscription
-    -- * Request Lenses
-    , cnsOrganizationId
-    , cnsEndpoint
-    , cnsProtocol
-    , cnsSubscriptionType
-
-    -- * Destructuring the Response
-    , createNotificationSubscriptionResponse
-    , CreateNotificationSubscriptionResponse
-    -- * Response Lenses
-    , cnsrsSubscription
-    , cnsrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'createNotificationSubscription' smart constructor.
-data CreateNotificationSubscription = CreateNotificationSubscription'
-  { _cnsOrganizationId   :: !Text
-  , _cnsEndpoint         :: !Text
-  , _cnsProtocol         :: !SubscriptionProtocolType
-  , _cnsSubscriptionType :: !SubscriptionType
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateNotificationSubscription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cnsOrganizationId' - The ID of the organization.
---
--- * 'cnsEndpoint' - The endpoint to receive the notifications. If the protocol is HTTPS, the endpoint is a URL that begins with "https://".
---
--- * 'cnsProtocol' - The protocol to use. The supported value is https, which delivers JSON-encoded messages using HTTPS POST.
---
--- * 'cnsSubscriptionType' - The notification type.
-createNotificationSubscription
-    :: Text -- ^ 'cnsOrganizationId'
-    -> Text -- ^ 'cnsEndpoint'
-    -> SubscriptionProtocolType -- ^ 'cnsProtocol'
-    -> SubscriptionType -- ^ 'cnsSubscriptionType'
-    -> CreateNotificationSubscription
-createNotificationSubscription pOrganizationId_ pEndpoint_ pProtocol_ pSubscriptionType_ =
-  CreateNotificationSubscription'
-    { _cnsOrganizationId = pOrganizationId_
-    , _cnsEndpoint = pEndpoint_
-    , _cnsProtocol = pProtocol_
-    , _cnsSubscriptionType = pSubscriptionType_
-    }
-
-
--- | The ID of the organization.
-cnsOrganizationId :: Lens' CreateNotificationSubscription Text
-cnsOrganizationId = lens _cnsOrganizationId (\ s a -> s{_cnsOrganizationId = a})
-
--- | The endpoint to receive the notifications. If the protocol is HTTPS, the endpoint is a URL that begins with "https://".
-cnsEndpoint :: Lens' CreateNotificationSubscription Text
-cnsEndpoint = lens _cnsEndpoint (\ s a -> s{_cnsEndpoint = a})
-
--- | The protocol to use. The supported value is https, which delivers JSON-encoded messages using HTTPS POST.
-cnsProtocol :: Lens' CreateNotificationSubscription SubscriptionProtocolType
-cnsProtocol = lens _cnsProtocol (\ s a -> s{_cnsProtocol = a})
-
--- | The notification type.
-cnsSubscriptionType :: Lens' CreateNotificationSubscription SubscriptionType
-cnsSubscriptionType = lens _cnsSubscriptionType (\ s a -> s{_cnsSubscriptionType = a})
-
-instance AWSRequest CreateNotificationSubscription
-         where
-        type Rs CreateNotificationSubscription =
-             CreateNotificationSubscriptionResponse
-        request = postJSON workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 CreateNotificationSubscriptionResponse' <$>
-                   (x .?> "Subscription") <*> (pure (fromEnum s)))
-
-instance Hashable CreateNotificationSubscription
-         where
-
-instance NFData CreateNotificationSubscription where
-
-instance ToHeaders CreateNotificationSubscription
-         where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToJSON CreateNotificationSubscription where
-        toJSON CreateNotificationSubscription'{..}
-          = object
-              (catMaybes
-                 [Just ("Endpoint" .= _cnsEndpoint),
-                  Just ("Protocol" .= _cnsProtocol),
-                  Just ("SubscriptionType" .= _cnsSubscriptionType)])
-
-instance ToPath CreateNotificationSubscription where
-        toPath CreateNotificationSubscription'{..}
-          = mconcat
-              ["/api/v1/organizations/", toBS _cnsOrganizationId,
-               "/subscriptions"]
-
-instance ToQuery CreateNotificationSubscription where
-        toQuery = const mempty
-
--- | /See:/ 'createNotificationSubscriptionResponse' smart constructor.
-data CreateNotificationSubscriptionResponse = CreateNotificationSubscriptionResponse'
-  { _cnsrsSubscription   :: !(Maybe Subscription)
-  , _cnsrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateNotificationSubscriptionResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cnsrsSubscription' - The subscription.
---
--- * 'cnsrsResponseStatus' - -- | The response status code.
-createNotificationSubscriptionResponse
-    :: Int -- ^ 'cnsrsResponseStatus'
-    -> CreateNotificationSubscriptionResponse
-createNotificationSubscriptionResponse pResponseStatus_ =
-  CreateNotificationSubscriptionResponse'
-    {_cnsrsSubscription = Nothing, _cnsrsResponseStatus = pResponseStatus_}
-
-
--- | The subscription.
-cnsrsSubscription :: Lens' CreateNotificationSubscriptionResponse (Maybe Subscription)
-cnsrsSubscription = lens _cnsrsSubscription (\ s a -> s{_cnsrsSubscription = a})
-
--- | -- | The response status code.
-cnsrsResponseStatus :: Lens' CreateNotificationSubscriptionResponse Int
-cnsrsResponseStatus = lens _cnsrsResponseStatus (\ s a -> s{_cnsrsResponseStatus = a})
-
-instance NFData
-           CreateNotificationSubscriptionResponse
-         where
diff --git a/gen/Network/AWS/WorkDocs/CreateUser.hs b/gen/Network/AWS/WorkDocs/CreateUser.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/CreateUser.hs
+++ /dev/null
@@ -1,215 +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.WorkDocs.CreateUser
--- 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)
---
--- Creates a user in a Simple AD or Microsoft AD directory. The status of a newly created user is "ACTIVE". New users can access Amazon WorkDocs.
---
---
-module Network.AWS.WorkDocs.CreateUser
-    (
-    -- * Creating a Request
-      createUser
-    , CreateUser
-    -- * Request Lenses
-    , cuAuthenticationToken
-    , cuStorageRule
-    , cuEmailAddress
-    , cuTimeZoneId
-    , cuOrganizationId
-    , cuUsername
-    , cuGivenName
-    , cuSurname
-    , cuPassword
-
-    -- * Destructuring the Response
-    , createUserResponse
-    , CreateUserResponse
-    -- * Response Lenses
-    , cursUser
-    , cursResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'createUser' smart constructor.
-data CreateUser = CreateUser'
-  { _cuAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _cuStorageRule         :: !(Maybe StorageRuleType)
-  , _cuEmailAddress        :: !(Maybe Text)
-  , _cuTimeZoneId          :: !(Maybe Text)
-  , _cuOrganizationId      :: !(Maybe Text)
-  , _cuUsername            :: !Text
-  , _cuGivenName           :: !Text
-  , _cuSurname             :: !Text
-  , _cuPassword            :: !(Sensitive Text)
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateUser' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cuAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'cuStorageRule' - The amount of storage for the user.
---
--- * 'cuEmailAddress' - The email address of the user.
---
--- * 'cuTimeZoneId' - The time zone ID of the user.
---
--- * 'cuOrganizationId' - The ID of the organization.
---
--- * 'cuUsername' - The login name of the user.
---
--- * 'cuGivenName' - The given name of the user.
---
--- * 'cuSurname' - The surname of the user.
---
--- * 'cuPassword' - The password of the user.
-createUser
-    :: Text -- ^ 'cuUsername'
-    -> Text -- ^ 'cuGivenName'
-    -> Text -- ^ 'cuSurname'
-    -> Text -- ^ 'cuPassword'
-    -> CreateUser
-createUser pUsername_ pGivenName_ pSurname_ pPassword_ =
-  CreateUser'
-    { _cuAuthenticationToken = Nothing
-    , _cuStorageRule = Nothing
-    , _cuEmailAddress = Nothing
-    , _cuTimeZoneId = Nothing
-    , _cuOrganizationId = Nothing
-    , _cuUsername = pUsername_
-    , _cuGivenName = pGivenName_
-    , _cuSurname = pSurname_
-    , _cuPassword = _Sensitive # pPassword_
-    }
-
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-cuAuthenticationToken :: Lens' CreateUser (Maybe Text)
-cuAuthenticationToken = lens _cuAuthenticationToken (\ s a -> s{_cuAuthenticationToken = a}) . mapping _Sensitive
-
--- | The amount of storage for the user.
-cuStorageRule :: Lens' CreateUser (Maybe StorageRuleType)
-cuStorageRule = lens _cuStorageRule (\ s a -> s{_cuStorageRule = a})
-
--- | The email address of the user.
-cuEmailAddress :: Lens' CreateUser (Maybe Text)
-cuEmailAddress = lens _cuEmailAddress (\ s a -> s{_cuEmailAddress = a})
-
--- | The time zone ID of the user.
-cuTimeZoneId :: Lens' CreateUser (Maybe Text)
-cuTimeZoneId = lens _cuTimeZoneId (\ s a -> s{_cuTimeZoneId = a})
-
--- | The ID of the organization.
-cuOrganizationId :: Lens' CreateUser (Maybe Text)
-cuOrganizationId = lens _cuOrganizationId (\ s a -> s{_cuOrganizationId = a})
-
--- | The login name of the user.
-cuUsername :: Lens' CreateUser Text
-cuUsername = lens _cuUsername (\ s a -> s{_cuUsername = a})
-
--- | The given name of the user.
-cuGivenName :: Lens' CreateUser Text
-cuGivenName = lens _cuGivenName (\ s a -> s{_cuGivenName = a})
-
--- | The surname of the user.
-cuSurname :: Lens' CreateUser Text
-cuSurname = lens _cuSurname (\ s a -> s{_cuSurname = a})
-
--- | The password of the user.
-cuPassword :: Lens' CreateUser Text
-cuPassword = lens _cuPassword (\ s a -> s{_cuPassword = a}) . _Sensitive
-
-instance AWSRequest CreateUser where
-        type Rs CreateUser = CreateUserResponse
-        request = postJSON workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 CreateUserResponse' <$>
-                   (x .?> "User") <*> (pure (fromEnum s)))
-
-instance Hashable CreateUser where
-
-instance NFData CreateUser where
-
-instance ToHeaders CreateUser where
-        toHeaders CreateUser'{..}
-          = mconcat
-              ["Authentication" =# _cuAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToJSON CreateUser where
-        toJSON CreateUser'{..}
-          = object
-              (catMaybes
-                 [("StorageRule" .=) <$> _cuStorageRule,
-                  ("EmailAddress" .=) <$> _cuEmailAddress,
-                  ("TimeZoneId" .=) <$> _cuTimeZoneId,
-                  ("OrganizationId" .=) <$> _cuOrganizationId,
-                  Just ("Username" .= _cuUsername),
-                  Just ("GivenName" .= _cuGivenName),
-                  Just ("Surname" .= _cuSurname),
-                  Just ("Password" .= _cuPassword)])
-
-instance ToPath CreateUser where
-        toPath = const "/api/v1/users"
-
-instance ToQuery CreateUser where
-        toQuery = const mempty
-
--- | /See:/ 'createUserResponse' smart constructor.
-data CreateUserResponse = CreateUserResponse'
-  { _cursUser           :: !(Maybe User)
-  , _cursResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CreateUserResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cursUser' - The user information.
---
--- * 'cursResponseStatus' - -- | The response status code.
-createUserResponse
-    :: Int -- ^ 'cursResponseStatus'
-    -> CreateUserResponse
-createUserResponse pResponseStatus_ =
-  CreateUserResponse'
-    {_cursUser = Nothing, _cursResponseStatus = pResponseStatus_}
-
-
--- | The user information.
-cursUser :: Lens' CreateUserResponse (Maybe User)
-cursUser = lens _cursUser (\ s a -> s{_cursUser = a})
-
--- | -- | The response status code.
-cursResponseStatus :: Lens' CreateUserResponse Int
-cursResponseStatus = lens _cursResponseStatus (\ s a -> s{_cursResponseStatus = a})
-
-instance NFData CreateUserResponse where
diff --git a/gen/Network/AWS/WorkDocs/DeactivateUser.hs b/gen/Network/AWS/WorkDocs/DeactivateUser.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/DeactivateUser.hs
+++ /dev/null
@@ -1,111 +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.WorkDocs.DeactivateUser
--- 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)
---
--- Deactivates the specified user, which revokes the user's access to Amazon WorkDocs.
---
---
-module Network.AWS.WorkDocs.DeactivateUser
-    (
-    -- * Creating a Request
-      deactivateUser
-    , DeactivateUser
-    -- * Request Lenses
-    , dAuthenticationToken
-    , dUserId
-
-    -- * Destructuring the Response
-    , deactivateUserResponse
-    , DeactivateUserResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'deactivateUser' smart constructor.
-data DeactivateUser = DeactivateUser'
-  { _dAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _dUserId              :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeactivateUser' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'dUserId' - The ID of the user.
-deactivateUser
-    :: Text -- ^ 'dUserId'
-    -> DeactivateUser
-deactivateUser pUserId_ =
-  DeactivateUser' {_dAuthenticationToken = Nothing, _dUserId = pUserId_}
-
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-dAuthenticationToken :: Lens' DeactivateUser (Maybe Text)
-dAuthenticationToken = lens _dAuthenticationToken (\ s a -> s{_dAuthenticationToken = a}) . mapping _Sensitive
-
--- | The ID of the user.
-dUserId :: Lens' DeactivateUser Text
-dUserId = lens _dUserId (\ s a -> s{_dUserId = a})
-
-instance AWSRequest DeactivateUser where
-        type Rs DeactivateUser = DeactivateUserResponse
-        request = delete workDocs
-        response = receiveNull DeactivateUserResponse'
-
-instance Hashable DeactivateUser where
-
-instance NFData DeactivateUser where
-
-instance ToHeaders DeactivateUser where
-        toHeaders DeactivateUser'{..}
-          = mconcat
-              ["Authentication" =# _dAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath DeactivateUser where
-        toPath DeactivateUser'{..}
-          = mconcat
-              ["/api/v1/users/", toBS _dUserId, "/activation"]
-
-instance ToQuery DeactivateUser where
-        toQuery = const mempty
-
--- | /See:/ 'deactivateUserResponse' smart constructor.
-data DeactivateUserResponse =
-  DeactivateUserResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeactivateUserResponse' with the minimum fields required to make a request.
---
-deactivateUserResponse
-    :: DeactivateUserResponse
-deactivateUserResponse = DeactivateUserResponse'
-
-
-instance NFData DeactivateUserResponse where
diff --git a/gen/Network/AWS/WorkDocs/DeleteComment.hs b/gen/Network/AWS/WorkDocs/DeleteComment.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/DeleteComment.hs
+++ /dev/null
@@ -1,136 +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.WorkDocs.DeleteComment
--- 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 specified comment from the document version.
---
---
-module Network.AWS.WorkDocs.DeleteComment
-    (
-    -- * Creating a Request
-      deleteComment
-    , DeleteComment
-    -- * Request Lenses
-    , delAuthenticationToken
-    , delDocumentId
-    , delVersionId
-    , delCommentId
-
-    -- * Destructuring the Response
-    , deleteCommentResponse
-    , DeleteCommentResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'deleteComment' smart constructor.
-data DeleteComment = DeleteComment'
-  { _delAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _delDocumentId          :: !Text
-  , _delVersionId           :: !Text
-  , _delCommentId           :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteComment' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'delAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'delDocumentId' - The ID of the document.
---
--- * 'delVersionId' - The ID of the document version.
---
--- * 'delCommentId' - The ID of the comment.
-deleteComment
-    :: Text -- ^ 'delDocumentId'
-    -> Text -- ^ 'delVersionId'
-    -> Text -- ^ 'delCommentId'
-    -> DeleteComment
-deleteComment pDocumentId_ pVersionId_ pCommentId_ =
-  DeleteComment'
-    { _delAuthenticationToken = Nothing
-    , _delDocumentId = pDocumentId_
-    , _delVersionId = pVersionId_
-    , _delCommentId = pCommentId_
-    }
-
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-delAuthenticationToken :: Lens' DeleteComment (Maybe Text)
-delAuthenticationToken = lens _delAuthenticationToken (\ s a -> s{_delAuthenticationToken = a}) . mapping _Sensitive
-
--- | The ID of the document.
-delDocumentId :: Lens' DeleteComment Text
-delDocumentId = lens _delDocumentId (\ s a -> s{_delDocumentId = a})
-
--- | The ID of the document version.
-delVersionId :: Lens' DeleteComment Text
-delVersionId = lens _delVersionId (\ s a -> s{_delVersionId = a})
-
--- | The ID of the comment.
-delCommentId :: Lens' DeleteComment Text
-delCommentId = lens _delCommentId (\ s a -> s{_delCommentId = a})
-
-instance AWSRequest DeleteComment where
-        type Rs DeleteComment = DeleteCommentResponse
-        request = delete workDocs
-        response = receiveNull DeleteCommentResponse'
-
-instance Hashable DeleteComment where
-
-instance NFData DeleteComment where
-
-instance ToHeaders DeleteComment where
-        toHeaders DeleteComment'{..}
-          = mconcat
-              ["Authentication" =# _delAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath DeleteComment where
-        toPath DeleteComment'{..}
-          = mconcat
-              ["/api/v1/documents/", toBS _delDocumentId,
-               "/versions/", toBS _delVersionId, "/comment/",
-               toBS _delCommentId]
-
-instance ToQuery DeleteComment where
-        toQuery = const mempty
-
--- | /See:/ 'deleteCommentResponse' smart constructor.
-data DeleteCommentResponse =
-  DeleteCommentResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteCommentResponse' with the minimum fields required to make a request.
---
-deleteCommentResponse
-    :: DeleteCommentResponse
-deleteCommentResponse = DeleteCommentResponse'
-
-
-instance NFData DeleteCommentResponse where
diff --git a/gen/Network/AWS/WorkDocs/DeleteCustomMetadata.hs b/gen/Network/AWS/WorkDocs/DeleteCustomMetadata.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/DeleteCustomMetadata.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.WorkDocs.DeleteCustomMetadata
--- 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 custom metadata from the specified resource.
---
---
-module Network.AWS.WorkDocs.DeleteCustomMetadata
-    (
-    -- * Creating a Request
-      deleteCustomMetadata
-    , DeleteCustomMetadata
-    -- * Request Lenses
-    , dcmVersionId
-    , dcmDeleteAll
-    , dcmAuthenticationToken
-    , dcmKeys
-    , dcmResourceId
-
-    -- * Destructuring the Response
-    , deleteCustomMetadataResponse
-    , DeleteCustomMetadataResponse
-    -- * Response Lenses
-    , dcmrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'deleteCustomMetadata' smart constructor.
-data DeleteCustomMetadata = DeleteCustomMetadata'
-  { _dcmVersionId           :: !(Maybe Text)
-  , _dcmDeleteAll           :: !(Maybe Bool)
-  , _dcmAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _dcmKeys                :: !(Maybe [Text])
-  , _dcmResourceId          :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteCustomMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcmVersionId' - The ID of the version, if the custom metadata is being deleted from a document version.
---
--- * 'dcmDeleteAll' - Flag to indicate removal of all custom metadata properties from the specified resource.
---
--- * 'dcmAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'dcmKeys' - List of properties to remove.
---
--- * 'dcmResourceId' - The ID of the resource, either a document or folder.
-deleteCustomMetadata
-    :: Text -- ^ 'dcmResourceId'
-    -> DeleteCustomMetadata
-deleteCustomMetadata pResourceId_ =
-  DeleteCustomMetadata'
-    { _dcmVersionId = Nothing
-    , _dcmDeleteAll = Nothing
-    , _dcmAuthenticationToken = Nothing
-    , _dcmKeys = Nothing
-    , _dcmResourceId = pResourceId_
-    }
-
-
--- | The ID of the version, if the custom metadata is being deleted from a document version.
-dcmVersionId :: Lens' DeleteCustomMetadata (Maybe Text)
-dcmVersionId = lens _dcmVersionId (\ s a -> s{_dcmVersionId = a})
-
--- | Flag to indicate removal of all custom metadata properties from the specified resource.
-dcmDeleteAll :: Lens' DeleteCustomMetadata (Maybe Bool)
-dcmDeleteAll = lens _dcmDeleteAll (\ s a -> s{_dcmDeleteAll = a})
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-dcmAuthenticationToken :: Lens' DeleteCustomMetadata (Maybe Text)
-dcmAuthenticationToken = lens _dcmAuthenticationToken (\ s a -> s{_dcmAuthenticationToken = a}) . mapping _Sensitive
-
--- | List of properties to remove.
-dcmKeys :: Lens' DeleteCustomMetadata [Text]
-dcmKeys = lens _dcmKeys (\ s a -> s{_dcmKeys = a}) . _Default . _Coerce
-
--- | The ID of the resource, either a document or folder.
-dcmResourceId :: Lens' DeleteCustomMetadata Text
-dcmResourceId = lens _dcmResourceId (\ s a -> s{_dcmResourceId = a})
-
-instance AWSRequest DeleteCustomMetadata where
-        type Rs DeleteCustomMetadata =
-             DeleteCustomMetadataResponse
-        request = delete workDocs
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 DeleteCustomMetadataResponse' <$>
-                   (pure (fromEnum s)))
-
-instance Hashable DeleteCustomMetadata where
-
-instance NFData DeleteCustomMetadata where
-
-instance ToHeaders DeleteCustomMetadata where
-        toHeaders DeleteCustomMetadata'{..}
-          = mconcat
-              ["Authentication" =# _dcmAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath DeleteCustomMetadata where
-        toPath DeleteCustomMetadata'{..}
-          = mconcat
-              ["/api/v1/resources/", toBS _dcmResourceId,
-               "/customMetadata"]
-
-instance ToQuery DeleteCustomMetadata where
-        toQuery DeleteCustomMetadata'{..}
-          = mconcat
-              ["versionId" =: _dcmVersionId,
-               "deleteAll" =: _dcmDeleteAll,
-               "keys" =:
-                 toQuery (toQueryList "member" <$> _dcmKeys)]
-
--- | /See:/ 'deleteCustomMetadataResponse' smart constructor.
-newtype DeleteCustomMetadataResponse = DeleteCustomMetadataResponse'
-  { _dcmrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteCustomMetadataResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcmrsResponseStatus' - -- | The response status code.
-deleteCustomMetadataResponse
-    :: Int -- ^ 'dcmrsResponseStatus'
-    -> DeleteCustomMetadataResponse
-deleteCustomMetadataResponse pResponseStatus_ =
-  DeleteCustomMetadataResponse' {_dcmrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-dcmrsResponseStatus :: Lens' DeleteCustomMetadataResponse Int
-dcmrsResponseStatus = lens _dcmrsResponseStatus (\ s a -> s{_dcmrsResponseStatus = a})
-
-instance NFData DeleteCustomMetadataResponse where
diff --git a/gen/Network/AWS/WorkDocs/DeleteDocument.hs b/gen/Network/AWS/WorkDocs/DeleteDocument.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/DeleteDocument.hs
+++ /dev/null
@@ -1,111 +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.WorkDocs.DeleteDocument
--- 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)
---
--- Permanently deletes the specified document and its associated metadata.
---
---
-module Network.AWS.WorkDocs.DeleteDocument
-    (
-    -- * Creating a Request
-      deleteDocument
-    , DeleteDocument
-    -- * Request Lenses
-    , ddAuthenticationToken
-    , ddDocumentId
-
-    -- * Destructuring the Response
-    , deleteDocumentResponse
-    , DeleteDocumentResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'deleteDocument' smart constructor.
-data DeleteDocument = DeleteDocument'
-  { _ddAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _ddDocumentId          :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteDocument' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ddAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'ddDocumentId' - The ID of the document.
-deleteDocument
-    :: Text -- ^ 'ddDocumentId'
-    -> DeleteDocument
-deleteDocument pDocumentId_ =
-  DeleteDocument'
-    {_ddAuthenticationToken = Nothing, _ddDocumentId = pDocumentId_}
-
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-ddAuthenticationToken :: Lens' DeleteDocument (Maybe Text)
-ddAuthenticationToken = lens _ddAuthenticationToken (\ s a -> s{_ddAuthenticationToken = a}) . mapping _Sensitive
-
--- | The ID of the document.
-ddDocumentId :: Lens' DeleteDocument Text
-ddDocumentId = lens _ddDocumentId (\ s a -> s{_ddDocumentId = a})
-
-instance AWSRequest DeleteDocument where
-        type Rs DeleteDocument = DeleteDocumentResponse
-        request = delete workDocs
-        response = receiveNull DeleteDocumentResponse'
-
-instance Hashable DeleteDocument where
-
-instance NFData DeleteDocument where
-
-instance ToHeaders DeleteDocument where
-        toHeaders DeleteDocument'{..}
-          = mconcat
-              ["Authentication" =# _ddAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath DeleteDocument where
-        toPath DeleteDocument'{..}
-          = mconcat ["/api/v1/documents/", toBS _ddDocumentId]
-
-instance ToQuery DeleteDocument where
-        toQuery = const mempty
-
--- | /See:/ 'deleteDocumentResponse' smart constructor.
-data DeleteDocumentResponse =
-  DeleteDocumentResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteDocumentResponse' with the minimum fields required to make a request.
---
-deleteDocumentResponse
-    :: DeleteDocumentResponse
-deleteDocumentResponse = DeleteDocumentResponse'
-
-
-instance NFData DeleteDocumentResponse where
diff --git a/gen/Network/AWS/WorkDocs/DeleteFolder.hs b/gen/Network/AWS/WorkDocs/DeleteFolder.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/DeleteFolder.hs
+++ /dev/null
@@ -1,110 +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.WorkDocs.DeleteFolder
--- 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)
---
--- Permanently deletes the specified folder and its contents.
---
---
-module Network.AWS.WorkDocs.DeleteFolder
-    (
-    -- * Creating a Request
-      deleteFolder
-    , DeleteFolder
-    -- * Request Lenses
-    , dfAuthenticationToken
-    , dfFolderId
-
-    -- * Destructuring the Response
-    , deleteFolderResponse
-    , DeleteFolderResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'deleteFolder' smart constructor.
-data DeleteFolder = DeleteFolder'
-  { _dfAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _dfFolderId            :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteFolder' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dfAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'dfFolderId' - The ID of the folder.
-deleteFolder
-    :: Text -- ^ 'dfFolderId'
-    -> DeleteFolder
-deleteFolder pFolderId_ =
-  DeleteFolder' {_dfAuthenticationToken = Nothing, _dfFolderId = pFolderId_}
-
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-dfAuthenticationToken :: Lens' DeleteFolder (Maybe Text)
-dfAuthenticationToken = lens _dfAuthenticationToken (\ s a -> s{_dfAuthenticationToken = a}) . mapping _Sensitive
-
--- | The ID of the folder.
-dfFolderId :: Lens' DeleteFolder Text
-dfFolderId = lens _dfFolderId (\ s a -> s{_dfFolderId = a})
-
-instance AWSRequest DeleteFolder where
-        type Rs DeleteFolder = DeleteFolderResponse
-        request = delete workDocs
-        response = receiveNull DeleteFolderResponse'
-
-instance Hashable DeleteFolder where
-
-instance NFData DeleteFolder where
-
-instance ToHeaders DeleteFolder where
-        toHeaders DeleteFolder'{..}
-          = mconcat
-              ["Authentication" =# _dfAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath DeleteFolder where
-        toPath DeleteFolder'{..}
-          = mconcat ["/api/v1/folders/", toBS _dfFolderId]
-
-instance ToQuery DeleteFolder where
-        toQuery = const mempty
-
--- | /See:/ 'deleteFolderResponse' smart constructor.
-data DeleteFolderResponse =
-  DeleteFolderResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteFolderResponse' with the minimum fields required to make a request.
---
-deleteFolderResponse
-    :: DeleteFolderResponse
-deleteFolderResponse = DeleteFolderResponse'
-
-
-instance NFData DeleteFolderResponse where
diff --git a/gen/Network/AWS/WorkDocs/DeleteFolderContents.hs b/gen/Network/AWS/WorkDocs/DeleteFolderContents.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/DeleteFolderContents.hs
+++ /dev/null
@@ -1,113 +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.WorkDocs.DeleteFolderContents
--- 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 contents of the specified folder.
---
---
-module Network.AWS.WorkDocs.DeleteFolderContents
-    (
-    -- * Creating a Request
-      deleteFolderContents
-    , DeleteFolderContents
-    -- * Request Lenses
-    , dfcAuthenticationToken
-    , dfcFolderId
-
-    -- * Destructuring the Response
-    , deleteFolderContentsResponse
-    , DeleteFolderContentsResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'deleteFolderContents' smart constructor.
-data DeleteFolderContents = DeleteFolderContents'
-  { _dfcAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _dfcFolderId            :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteFolderContents' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dfcAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'dfcFolderId' - The ID of the folder.
-deleteFolderContents
-    :: Text -- ^ 'dfcFolderId'
-    -> DeleteFolderContents
-deleteFolderContents pFolderId_ =
-  DeleteFolderContents'
-    {_dfcAuthenticationToken = Nothing, _dfcFolderId = pFolderId_}
-
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-dfcAuthenticationToken :: Lens' DeleteFolderContents (Maybe Text)
-dfcAuthenticationToken = lens _dfcAuthenticationToken (\ s a -> s{_dfcAuthenticationToken = a}) . mapping _Sensitive
-
--- | The ID of the folder.
-dfcFolderId :: Lens' DeleteFolderContents Text
-dfcFolderId = lens _dfcFolderId (\ s a -> s{_dfcFolderId = a})
-
-instance AWSRequest DeleteFolderContents where
-        type Rs DeleteFolderContents =
-             DeleteFolderContentsResponse
-        request = delete workDocs
-        response = receiveNull DeleteFolderContentsResponse'
-
-instance Hashable DeleteFolderContents where
-
-instance NFData DeleteFolderContents where
-
-instance ToHeaders DeleteFolderContents where
-        toHeaders DeleteFolderContents'{..}
-          = mconcat
-              ["Authentication" =# _dfcAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath DeleteFolderContents where
-        toPath DeleteFolderContents'{..}
-          = mconcat
-              ["/api/v1/folders/", toBS _dfcFolderId, "/contents"]
-
-instance ToQuery DeleteFolderContents where
-        toQuery = const mempty
-
--- | /See:/ 'deleteFolderContentsResponse' smart constructor.
-data DeleteFolderContentsResponse =
-  DeleteFolderContentsResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteFolderContentsResponse' with the minimum fields required to make a request.
---
-deleteFolderContentsResponse
-    :: DeleteFolderContentsResponse
-deleteFolderContentsResponse = DeleteFolderContentsResponse'
-
-
-instance NFData DeleteFolderContentsResponse where
diff --git a/gen/Network/AWS/WorkDocs/DeleteLabels.hs b/gen/Network/AWS/WorkDocs/DeleteLabels.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/DeleteLabels.hs
+++ /dev/null
@@ -1,150 +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.WorkDocs.DeleteLabels
--- 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 specified list of labels from a resource.
---
---
-module Network.AWS.WorkDocs.DeleteLabels
-    (
-    -- * Creating a Request
-      deleteLabels
-    , DeleteLabels
-    -- * Request Lenses
-    , dlDeleteAll
-    , dlAuthenticationToken
-    , dlLabels
-    , dlResourceId
-
-    -- * Destructuring the Response
-    , deleteLabelsResponse
-    , DeleteLabelsResponse
-    -- * Response Lenses
-    , dlrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'deleteLabels' smart constructor.
-data DeleteLabels = DeleteLabels'
-  { _dlDeleteAll           :: !(Maybe Bool)
-  , _dlAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _dlLabels              :: !(Maybe [Text])
-  , _dlResourceId          :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteLabels' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dlDeleteAll' - Flag to request removal of all labels from the specified resource.
---
--- * 'dlAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'dlLabels' - List of labels to delete from the resource.
---
--- * 'dlResourceId' - The ID of the resource.
-deleteLabels
-    :: Text -- ^ 'dlResourceId'
-    -> DeleteLabels
-deleteLabels pResourceId_ =
-  DeleteLabels'
-    { _dlDeleteAll = Nothing
-    , _dlAuthenticationToken = Nothing
-    , _dlLabels = Nothing
-    , _dlResourceId = pResourceId_
-    }
-
-
--- | Flag to request removal of all labels from the specified resource.
-dlDeleteAll :: Lens' DeleteLabels (Maybe Bool)
-dlDeleteAll = lens _dlDeleteAll (\ s a -> s{_dlDeleteAll = a})
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-dlAuthenticationToken :: Lens' DeleteLabels (Maybe Text)
-dlAuthenticationToken = lens _dlAuthenticationToken (\ s a -> s{_dlAuthenticationToken = a}) . mapping _Sensitive
-
--- | List of labels to delete from the resource.
-dlLabels :: Lens' DeleteLabels [Text]
-dlLabels = lens _dlLabels (\ s a -> s{_dlLabels = a}) . _Default . _Coerce
-
--- | The ID of the resource.
-dlResourceId :: Lens' DeleteLabels Text
-dlResourceId = lens _dlResourceId (\ s a -> s{_dlResourceId = a})
-
-instance AWSRequest DeleteLabels where
-        type Rs DeleteLabels = DeleteLabelsResponse
-        request = delete workDocs
-        response
-          = receiveEmpty
-              (\ s h x ->
-                 DeleteLabelsResponse' <$> (pure (fromEnum s)))
-
-instance Hashable DeleteLabels where
-
-instance NFData DeleteLabels where
-
-instance ToHeaders DeleteLabels where
-        toHeaders DeleteLabels'{..}
-          = mconcat
-              ["Authentication" =# _dlAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath DeleteLabels where
-        toPath DeleteLabels'{..}
-          = mconcat
-              ["/api/v1/resources/", toBS _dlResourceId, "/labels"]
-
-instance ToQuery DeleteLabels where
-        toQuery DeleteLabels'{..}
-          = mconcat
-              ["deleteAll" =: _dlDeleteAll,
-               "labels" =:
-                 toQuery (toQueryList "member" <$> _dlLabels)]
-
--- | /See:/ 'deleteLabelsResponse' smart constructor.
-newtype DeleteLabelsResponse = DeleteLabelsResponse'
-  { _dlrsResponseStatus :: Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteLabelsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dlrsResponseStatus' - -- | The response status code.
-deleteLabelsResponse
-    :: Int -- ^ 'dlrsResponseStatus'
-    -> DeleteLabelsResponse
-deleteLabelsResponse pResponseStatus_ =
-  DeleteLabelsResponse' {_dlrsResponseStatus = pResponseStatus_}
-
-
--- | -- | The response status code.
-dlrsResponseStatus :: Lens' DeleteLabelsResponse Int
-dlrsResponseStatus = lens _dlrsResponseStatus (\ s a -> s{_dlrsResponseStatus = a})
-
-instance NFData DeleteLabelsResponse where
diff --git a/gen/Network/AWS/WorkDocs/DeleteNotificationSubscription.hs b/gen/Network/AWS/WorkDocs/DeleteNotificationSubscription.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/DeleteNotificationSubscription.hs
+++ /dev/null
@@ -1,123 +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.WorkDocs.DeleteNotificationSubscription
--- 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 specified subscription from the specified organization.
---
---
-module Network.AWS.WorkDocs.DeleteNotificationSubscription
-    (
-    -- * Creating a Request
-      deleteNotificationSubscription
-    , DeleteNotificationSubscription
-    -- * Request Lenses
-    , dnsSubscriptionId
-    , dnsOrganizationId
-
-    -- * Destructuring the Response
-    , deleteNotificationSubscriptionResponse
-    , DeleteNotificationSubscriptionResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'deleteNotificationSubscription' smart constructor.
-data DeleteNotificationSubscription = DeleteNotificationSubscription'
-  { _dnsSubscriptionId :: !Text
-  , _dnsOrganizationId :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteNotificationSubscription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dnsSubscriptionId' - The ID of the subscription.
---
--- * 'dnsOrganizationId' - The ID of the organization.
-deleteNotificationSubscription
-    :: Text -- ^ 'dnsSubscriptionId'
-    -> Text -- ^ 'dnsOrganizationId'
-    -> DeleteNotificationSubscription
-deleteNotificationSubscription pSubscriptionId_ pOrganizationId_ =
-  DeleteNotificationSubscription'
-    { _dnsSubscriptionId = pSubscriptionId_
-    , _dnsOrganizationId = pOrganizationId_
-    }
-
-
--- | The ID of the subscription.
-dnsSubscriptionId :: Lens' DeleteNotificationSubscription Text
-dnsSubscriptionId = lens _dnsSubscriptionId (\ s a -> s{_dnsSubscriptionId = a})
-
--- | The ID of the organization.
-dnsOrganizationId :: Lens' DeleteNotificationSubscription Text
-dnsOrganizationId = lens _dnsOrganizationId (\ s a -> s{_dnsOrganizationId = a})
-
-instance AWSRequest DeleteNotificationSubscription
-         where
-        type Rs DeleteNotificationSubscription =
-             DeleteNotificationSubscriptionResponse
-        request = delete workDocs
-        response
-          = receiveNull DeleteNotificationSubscriptionResponse'
-
-instance Hashable DeleteNotificationSubscription
-         where
-
-instance NFData DeleteNotificationSubscription where
-
-instance ToHeaders DeleteNotificationSubscription
-         where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath DeleteNotificationSubscription where
-        toPath DeleteNotificationSubscription'{..}
-          = mconcat
-              ["/api/v1/organizations/", toBS _dnsOrganizationId,
-               "/subscriptions/", toBS _dnsSubscriptionId]
-
-instance ToQuery DeleteNotificationSubscription where
-        toQuery = const mempty
-
--- | /See:/ 'deleteNotificationSubscriptionResponse' smart constructor.
-data DeleteNotificationSubscriptionResponse =
-  DeleteNotificationSubscriptionResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteNotificationSubscriptionResponse' with the minimum fields required to make a request.
---
-deleteNotificationSubscriptionResponse
-    :: DeleteNotificationSubscriptionResponse
-deleteNotificationSubscriptionResponse = DeleteNotificationSubscriptionResponse'
-
-
-instance NFData
-           DeleteNotificationSubscriptionResponse
-         where
diff --git a/gen/Network/AWS/WorkDocs/DeleteUser.hs b/gen/Network/AWS/WorkDocs/DeleteUser.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/DeleteUser.hs
+++ /dev/null
@@ -1,110 +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.WorkDocs.DeleteUser
--- 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 specified user from a Simple AD or Microsoft AD directory.
---
---
-module Network.AWS.WorkDocs.DeleteUser
-    (
-    -- * Creating a Request
-      deleteUser
-    , DeleteUser
-    -- * Request Lenses
-    , duuAuthenticationToken
-    , duuUserId
-
-    -- * Destructuring the Response
-    , deleteUserResponse
-    , DeleteUserResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'deleteUser' smart constructor.
-data DeleteUser = DeleteUser'
-  { _duuAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _duuUserId              :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteUser' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'duuAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'duuUserId' - The ID of the user.
-deleteUser
-    :: Text -- ^ 'duuUserId'
-    -> DeleteUser
-deleteUser pUserId_ =
-  DeleteUser' {_duuAuthenticationToken = Nothing, _duuUserId = pUserId_}
-
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-duuAuthenticationToken :: Lens' DeleteUser (Maybe Text)
-duuAuthenticationToken = lens _duuAuthenticationToken (\ s a -> s{_duuAuthenticationToken = a}) . mapping _Sensitive
-
--- | The ID of the user.
-duuUserId :: Lens' DeleteUser Text
-duuUserId = lens _duuUserId (\ s a -> s{_duuUserId = a})
-
-instance AWSRequest DeleteUser where
-        type Rs DeleteUser = DeleteUserResponse
-        request = delete workDocs
-        response = receiveNull DeleteUserResponse'
-
-instance Hashable DeleteUser where
-
-instance NFData DeleteUser where
-
-instance ToHeaders DeleteUser where
-        toHeaders DeleteUser'{..}
-          = mconcat
-              ["Authentication" =# _duuAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath DeleteUser where
-        toPath DeleteUser'{..}
-          = mconcat ["/api/v1/users/", toBS _duuUserId]
-
-instance ToQuery DeleteUser where
-        toQuery = const mempty
-
--- | /See:/ 'deleteUserResponse' smart constructor.
-data DeleteUserResponse =
-  DeleteUserResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DeleteUserResponse' with the minimum fields required to make a request.
---
-deleteUserResponse
-    :: DeleteUserResponse
-deleteUserResponse = DeleteUserResponse'
-
-
-instance NFData DeleteUserResponse where
diff --git a/gen/Network/AWS/WorkDocs/DescribeActivities.hs b/gen/Network/AWS/WorkDocs/DescribeActivities.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/DescribeActivities.hs
+++ /dev/null
@@ -1,199 +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.WorkDocs.DescribeActivities
--- 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)
---
--- Describes the user activities in a specified time period.
---
---
-module Network.AWS.WorkDocs.DescribeActivities
-    (
-    -- * Creating a Request
-      describeActivities
-    , DescribeActivities
-    -- * Request Lenses
-    , daStartTime
-    , daAuthenticationToken
-    , daUserId
-    , daMarker
-    , daEndTime
-    , daLimit
-    , daOrganizationId
-
-    -- * Destructuring the Response
-    , describeActivitiesResponse
-    , DescribeActivitiesResponse
-    -- * Response Lenses
-    , darsUserActivities
-    , darsMarker
-    , darsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'describeActivities' smart constructor.
-data DescribeActivities = DescribeActivities'
-  { _daStartTime           :: !(Maybe POSIX)
-  , _daAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _daUserId              :: !(Maybe Text)
-  , _daMarker              :: !(Maybe Text)
-  , _daEndTime             :: !(Maybe POSIX)
-  , _daLimit               :: !(Maybe Nat)
-  , _daOrganizationId      :: !(Maybe Text)
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeActivities' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'daStartTime' - The timestamp that determines the starting time of the activities. The response includes the activities performed after the specified timestamp.
---
--- * 'daAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'daUserId' - The ID of the user who performed the action. The response includes activities pertaining to this user. This is an optional parameter and is only applicable for administrative API (SigV4) requests.
---
--- * 'daMarker' - The marker for the next set of results.
---
--- * 'daEndTime' - The timestamp that determines the end time of the activities. The response includes the activities performed before the specified timestamp.
---
--- * 'daLimit' - The maximum number of items to return.
---
--- * 'daOrganizationId' - The ID of the organization. This is a mandatory parameter when using administrative API (SigV4) requests.
-describeActivities
-    :: DescribeActivities
-describeActivities =
-  DescribeActivities'
-    { _daStartTime = Nothing
-    , _daAuthenticationToken = Nothing
-    , _daUserId = Nothing
-    , _daMarker = Nothing
-    , _daEndTime = Nothing
-    , _daLimit = Nothing
-    , _daOrganizationId = Nothing
-    }
-
-
--- | The timestamp that determines the starting time of the activities. The response includes the activities performed after the specified timestamp.
-daStartTime :: Lens' DescribeActivities (Maybe UTCTime)
-daStartTime = lens _daStartTime (\ s a -> s{_daStartTime = a}) . mapping _Time
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-daAuthenticationToken :: Lens' DescribeActivities (Maybe Text)
-daAuthenticationToken = lens _daAuthenticationToken (\ s a -> s{_daAuthenticationToken = a}) . mapping _Sensitive
-
--- | The ID of the user who performed the action. The response includes activities pertaining to this user. This is an optional parameter and is only applicable for administrative API (SigV4) requests.
-daUserId :: Lens' DescribeActivities (Maybe Text)
-daUserId = lens _daUserId (\ s a -> s{_daUserId = a})
-
--- | The marker for the next set of results.
-daMarker :: Lens' DescribeActivities (Maybe Text)
-daMarker = lens _daMarker (\ s a -> s{_daMarker = a})
-
--- | The timestamp that determines the end time of the activities. The response includes the activities performed before the specified timestamp.
-daEndTime :: Lens' DescribeActivities (Maybe UTCTime)
-daEndTime = lens _daEndTime (\ s a -> s{_daEndTime = a}) . mapping _Time
-
--- | The maximum number of items to return.
-daLimit :: Lens' DescribeActivities (Maybe Natural)
-daLimit = lens _daLimit (\ s a -> s{_daLimit = a}) . mapping _Nat
-
--- | The ID of the organization. This is a mandatory parameter when using administrative API (SigV4) requests.
-daOrganizationId :: Lens' DescribeActivities (Maybe Text)
-daOrganizationId = lens _daOrganizationId (\ s a -> s{_daOrganizationId = a})
-
-instance AWSRequest DescribeActivities where
-        type Rs DescribeActivities =
-             DescribeActivitiesResponse
-        request = get workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeActivitiesResponse' <$>
-                   (x .?> "UserActivities" .!@ mempty) <*>
-                     (x .?> "Marker")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable DescribeActivities where
-
-instance NFData DescribeActivities where
-
-instance ToHeaders DescribeActivities where
-        toHeaders DescribeActivities'{..}
-          = mconcat
-              ["Authentication" =# _daAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath DescribeActivities where
-        toPath = const "/api/v1/activities"
-
-instance ToQuery DescribeActivities where
-        toQuery DescribeActivities'{..}
-          = mconcat
-              ["startTime" =: _daStartTime, "userId" =: _daUserId,
-               "marker" =: _daMarker, "endTime" =: _daEndTime,
-               "limit" =: _daLimit,
-               "organizationId" =: _daOrganizationId]
-
--- | /See:/ 'describeActivitiesResponse' smart constructor.
-data DescribeActivitiesResponse = DescribeActivitiesResponse'
-  { _darsUserActivities :: !(Maybe [Activity])
-  , _darsMarker         :: !(Maybe Text)
-  , _darsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeActivitiesResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'darsUserActivities' - The list of activities for the specified user and time period.
---
--- * 'darsMarker' - The marker for the next set of results.
---
--- * 'darsResponseStatus' - -- | The response status code.
-describeActivitiesResponse
-    :: Int -- ^ 'darsResponseStatus'
-    -> DescribeActivitiesResponse
-describeActivitiesResponse pResponseStatus_ =
-  DescribeActivitiesResponse'
-    { _darsUserActivities = Nothing
-    , _darsMarker = Nothing
-    , _darsResponseStatus = pResponseStatus_
-    }
-
-
--- | The list of activities for the specified user and time period.
-darsUserActivities :: Lens' DescribeActivitiesResponse [Activity]
-darsUserActivities = lens _darsUserActivities (\ s a -> s{_darsUserActivities = a}) . _Default . _Coerce
-
--- | The marker for the next set of results.
-darsMarker :: Lens' DescribeActivitiesResponse (Maybe Text)
-darsMarker = lens _darsMarker (\ s a -> s{_darsMarker = a})
-
--- | -- | The response status code.
-darsResponseStatus :: Lens' DescribeActivitiesResponse Int
-darsResponseStatus = lens _darsResponseStatus (\ s a -> s{_darsResponseStatus = a})
-
-instance NFData DescribeActivitiesResponse where
diff --git a/gen/Network/AWS/WorkDocs/DescribeComments.hs b/gen/Network/AWS/WorkDocs/DescribeComments.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/DescribeComments.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.WorkDocs.DescribeComments
--- 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)
---
--- List all the comments for the specified document version.
---
---
-module Network.AWS.WorkDocs.DescribeComments
-    (
-    -- * Creating a Request
-      describeComments
-    , DescribeComments
-    -- * Request Lenses
-    , dcAuthenticationToken
-    , dcMarker
-    , dcLimit
-    , dcDocumentId
-    , dcVersionId
-
-    -- * Destructuring the Response
-    , describeCommentsResponse
-    , DescribeCommentsResponse
-    -- * Response Lenses
-    , dcrsMarker
-    , dcrsComments
-    , dcrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'describeComments' smart constructor.
-data DescribeComments = DescribeComments'
-  { _dcAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _dcMarker              :: !(Maybe Text)
-  , _dcLimit               :: !(Maybe Nat)
-  , _dcDocumentId          :: !Text
-  , _dcVersionId           :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeComments' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'dcMarker' - The marker for the next set of results. This marker was received from a previous call.
---
--- * 'dcLimit' - The maximum number of items to return.
---
--- * 'dcDocumentId' - The ID of the document.
---
--- * 'dcVersionId' - The ID of the document version.
-describeComments
-    :: Text -- ^ 'dcDocumentId'
-    -> Text -- ^ 'dcVersionId'
-    -> DescribeComments
-describeComments pDocumentId_ pVersionId_ =
-  DescribeComments'
-    { _dcAuthenticationToken = Nothing
-    , _dcMarker = Nothing
-    , _dcLimit = Nothing
-    , _dcDocumentId = pDocumentId_
-    , _dcVersionId = pVersionId_
-    }
-
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-dcAuthenticationToken :: Lens' DescribeComments (Maybe Text)
-dcAuthenticationToken = lens _dcAuthenticationToken (\ s a -> s{_dcAuthenticationToken = a}) . mapping _Sensitive
-
--- | The marker for the next set of results. This marker was received from a previous call.
-dcMarker :: Lens' DescribeComments (Maybe Text)
-dcMarker = lens _dcMarker (\ s a -> s{_dcMarker = a})
-
--- | The maximum number of items to return.
-dcLimit :: Lens' DescribeComments (Maybe Natural)
-dcLimit = lens _dcLimit (\ s a -> s{_dcLimit = a}) . mapping _Nat
-
--- | The ID of the document.
-dcDocumentId :: Lens' DescribeComments Text
-dcDocumentId = lens _dcDocumentId (\ s a -> s{_dcDocumentId = a})
-
--- | The ID of the document version.
-dcVersionId :: Lens' DescribeComments Text
-dcVersionId = lens _dcVersionId (\ s a -> s{_dcVersionId = a})
-
-instance AWSRequest DescribeComments where
-        type Rs DescribeComments = DescribeCommentsResponse
-        request = get workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeCommentsResponse' <$>
-                   (x .?> "Marker") <*> (x .?> "Comments" .!@ mempty)
-                     <*> (pure (fromEnum s)))
-
-instance Hashable DescribeComments where
-
-instance NFData DescribeComments where
-
-instance ToHeaders DescribeComments where
-        toHeaders DescribeComments'{..}
-          = mconcat
-              ["Authentication" =# _dcAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath DescribeComments where
-        toPath DescribeComments'{..}
-          = mconcat
-              ["/api/v1/documents/", toBS _dcDocumentId,
-               "/versions/", toBS _dcVersionId, "/comments"]
-
-instance ToQuery DescribeComments where
-        toQuery DescribeComments'{..}
-          = mconcat
-              ["marker" =: _dcMarker, "limit" =: _dcLimit]
-
--- | /See:/ 'describeCommentsResponse' smart constructor.
-data DescribeCommentsResponse = DescribeCommentsResponse'
-  { _dcrsMarker         :: !(Maybe Text)
-  , _dcrsComments       :: !(Maybe [Comment])
-  , _dcrsResponseStatus :: !Int
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeCommentsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dcrsMarker' - The marker for the next set of results. This marker was received from a previous call.
---
--- * 'dcrsComments' - The list of comments for the specified document version.
---
--- * 'dcrsResponseStatus' - -- | The response status code.
-describeCommentsResponse
-    :: Int -- ^ 'dcrsResponseStatus'
-    -> DescribeCommentsResponse
-describeCommentsResponse pResponseStatus_ =
-  DescribeCommentsResponse'
-    { _dcrsMarker = Nothing
-    , _dcrsComments = Nothing
-    , _dcrsResponseStatus = pResponseStatus_
-    }
-
-
--- | The marker for the next set of results. This marker was received from a previous call.
-dcrsMarker :: Lens' DescribeCommentsResponse (Maybe Text)
-dcrsMarker = lens _dcrsMarker (\ s a -> s{_dcrsMarker = a})
-
--- | The list of comments for the specified document version.
-dcrsComments :: Lens' DescribeCommentsResponse [Comment]
-dcrsComments = lens _dcrsComments (\ s a -> s{_dcrsComments = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-dcrsResponseStatus :: Lens' DescribeCommentsResponse Int
-dcrsResponseStatus = lens _dcrsResponseStatus (\ s a -> s{_dcrsResponseStatus = a})
-
-instance NFData DescribeCommentsResponse where
diff --git a/gen/Network/AWS/WorkDocs/DescribeDocumentVersions.hs b/gen/Network/AWS/WorkDocs/DescribeDocumentVersions.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/DescribeDocumentVersions.hs
+++ /dev/null
@@ -1,205 +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.WorkDocs.DescribeDocumentVersions
--- 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)
---
--- Retrieves the document versions for the specified document.
---
---
--- By default, only active versions are returned.
---
---
--- This operation returns paginated results.
-module Network.AWS.WorkDocs.DescribeDocumentVersions
-    (
-    -- * Creating a Request
-      describeDocumentVersions
-    , DescribeDocumentVersions
-    -- * Request Lenses
-    , ddvInclude
-    , ddvAuthenticationToken
-    , ddvMarker
-    , ddvLimit
-    , ddvFields
-    , ddvDocumentId
-
-    -- * Destructuring the Response
-    , describeDocumentVersionsResponse
-    , DescribeDocumentVersionsResponse
-    -- * Response Lenses
-    , ddvrsDocumentVersions
-    , ddvrsMarker
-    , ddvrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Pager
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'describeDocumentVersions' smart constructor.
-data DescribeDocumentVersions = DescribeDocumentVersions'
-  { _ddvInclude             :: !(Maybe Text)
-  , _ddvAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _ddvMarker              :: !(Maybe Text)
-  , _ddvLimit               :: !(Maybe Nat)
-  , _ddvFields              :: !(Maybe Text)
-  , _ddvDocumentId          :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeDocumentVersions' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ddvInclude' - A comma-separated list of values. Specify "INITIALIZED" to include incomplete versions.
---
--- * 'ddvAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'ddvMarker' - The marker for the next set of results. (You received this marker from a previous call.)
---
--- * 'ddvLimit' - The maximum number of versions to return with this call.
---
--- * 'ddvFields' - Specify "SOURCE" to include initialized versions and a URL for the source document.
---
--- * 'ddvDocumentId' - The ID of the document.
-describeDocumentVersions
-    :: Text -- ^ 'ddvDocumentId'
-    -> DescribeDocumentVersions
-describeDocumentVersions pDocumentId_ =
-  DescribeDocumentVersions'
-    { _ddvInclude = Nothing
-    , _ddvAuthenticationToken = Nothing
-    , _ddvMarker = Nothing
-    , _ddvLimit = Nothing
-    , _ddvFields = Nothing
-    , _ddvDocumentId = pDocumentId_
-    }
-
-
--- | A comma-separated list of values. Specify "INITIALIZED" to include incomplete versions.
-ddvInclude :: Lens' DescribeDocumentVersions (Maybe Text)
-ddvInclude = lens _ddvInclude (\ s a -> s{_ddvInclude = a})
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-ddvAuthenticationToken :: Lens' DescribeDocumentVersions (Maybe Text)
-ddvAuthenticationToken = lens _ddvAuthenticationToken (\ s a -> s{_ddvAuthenticationToken = a}) . mapping _Sensitive
-
--- | The marker for the next set of results. (You received this marker from a previous call.)
-ddvMarker :: Lens' DescribeDocumentVersions (Maybe Text)
-ddvMarker = lens _ddvMarker (\ s a -> s{_ddvMarker = a})
-
--- | The maximum number of versions to return with this call.
-ddvLimit :: Lens' DescribeDocumentVersions (Maybe Natural)
-ddvLimit = lens _ddvLimit (\ s a -> s{_ddvLimit = a}) . mapping _Nat
-
--- | Specify "SOURCE" to include initialized versions and a URL for the source document.
-ddvFields :: Lens' DescribeDocumentVersions (Maybe Text)
-ddvFields = lens _ddvFields (\ s a -> s{_ddvFields = a})
-
--- | The ID of the document.
-ddvDocumentId :: Lens' DescribeDocumentVersions Text
-ddvDocumentId = lens _ddvDocumentId (\ s a -> s{_ddvDocumentId = a})
-
-instance AWSPager DescribeDocumentVersions where
-        page rq rs
-          | stop (rs ^. ddvrsMarker) = Nothing
-          | stop (rs ^. ddvrsDocumentVersions) = Nothing
-          | otherwise =
-            Just $ rq & ddvMarker .~ rs ^. ddvrsMarker
-
-instance AWSRequest DescribeDocumentVersions where
-        type Rs DescribeDocumentVersions =
-             DescribeDocumentVersionsResponse
-        request = get workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeDocumentVersionsResponse' <$>
-                   (x .?> "DocumentVersions" .!@ mempty) <*>
-                     (x .?> "Marker")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable DescribeDocumentVersions where
-
-instance NFData DescribeDocumentVersions where
-
-instance ToHeaders DescribeDocumentVersions where
-        toHeaders DescribeDocumentVersions'{..}
-          = mconcat
-              ["Authentication" =# _ddvAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath DescribeDocumentVersions where
-        toPath DescribeDocumentVersions'{..}
-          = mconcat
-              ["/api/v1/documents/", toBS _ddvDocumentId,
-               "/versions"]
-
-instance ToQuery DescribeDocumentVersions where
-        toQuery DescribeDocumentVersions'{..}
-          = mconcat
-              ["include" =: _ddvInclude, "marker" =: _ddvMarker,
-               "limit" =: _ddvLimit, "fields" =: _ddvFields]
-
--- | /See:/ 'describeDocumentVersionsResponse' smart constructor.
-data DescribeDocumentVersionsResponse = DescribeDocumentVersionsResponse'
-  { _ddvrsDocumentVersions :: !(Maybe [DocumentVersionMetadata])
-  , _ddvrsMarker           :: !(Maybe Text)
-  , _ddvrsResponseStatus   :: !Int
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeDocumentVersionsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ddvrsDocumentVersions' - The document versions.
---
--- * 'ddvrsMarker' - The marker to use when requesting the next set of results. If there are no additional results, the string is empty.
---
--- * 'ddvrsResponseStatus' - -- | The response status code.
-describeDocumentVersionsResponse
-    :: Int -- ^ 'ddvrsResponseStatus'
-    -> DescribeDocumentVersionsResponse
-describeDocumentVersionsResponse pResponseStatus_ =
-  DescribeDocumentVersionsResponse'
-    { _ddvrsDocumentVersions = Nothing
-    , _ddvrsMarker = Nothing
-    , _ddvrsResponseStatus = pResponseStatus_
-    }
-
-
--- | The document versions.
-ddvrsDocumentVersions :: Lens' DescribeDocumentVersionsResponse [DocumentVersionMetadata]
-ddvrsDocumentVersions = lens _ddvrsDocumentVersions (\ s a -> s{_ddvrsDocumentVersions = a}) . _Default . _Coerce
-
--- | The marker to use when requesting the next set of results. If there are no additional results, the string is empty.
-ddvrsMarker :: Lens' DescribeDocumentVersionsResponse (Maybe Text)
-ddvrsMarker = lens _ddvrsMarker (\ s a -> s{_ddvrsMarker = a})
-
--- | -- | The response status code.
-ddvrsResponseStatus :: Lens' DescribeDocumentVersionsResponse Int
-ddvrsResponseStatus = lens _ddvrsResponseStatus (\ s a -> s{_ddvrsResponseStatus = a})
-
-instance NFData DescribeDocumentVersionsResponse
-         where
diff --git a/gen/Network/AWS/WorkDocs/DescribeFolderContents.hs b/gen/Network/AWS/WorkDocs/DescribeFolderContents.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/DescribeFolderContents.hs
+++ /dev/null
@@ -1,233 +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.WorkDocs.DescribeFolderContents
--- 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)
---
--- Describes the contents of the specified folder, including its documents and subfolders.
---
---
--- By default, Amazon WorkDocs returns the first 100 active document and folder metadata items. If there are more results, the response includes a marker that you can use to request the next set of results. You can also request initialized documents.
---
---
--- This operation returns paginated results.
-module Network.AWS.WorkDocs.DescribeFolderContents
-    (
-    -- * Creating a Request
-      describeFolderContents
-    , DescribeFolderContents
-    -- * Request Lenses
-    , dfcsInclude
-    , dfcsAuthenticationToken
-    , dfcsSort
-    , dfcsMarker
-    , dfcsLimit
-    , dfcsType
-    , dfcsOrder
-    , dfcsFolderId
-
-    -- * Destructuring the Response
-    , describeFolderContentsResponse
-    , DescribeFolderContentsResponse
-    -- * Response Lenses
-    , dfcrsFolders
-    , dfcrsDocuments
-    , dfcrsMarker
-    , dfcrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Pager
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'describeFolderContents' smart constructor.
-data DescribeFolderContents = DescribeFolderContents'
-  { _dfcsInclude             :: !(Maybe Text)
-  , _dfcsAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _dfcsSort                :: !(Maybe ResourceSortType)
-  , _dfcsMarker              :: !(Maybe Text)
-  , _dfcsLimit               :: !(Maybe Nat)
-  , _dfcsType                :: !(Maybe FolderContentType)
-  , _dfcsOrder               :: !(Maybe OrderType)
-  , _dfcsFolderId            :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeFolderContents' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dfcsInclude' - The contents to include. Specify "INITIALIZED" to include initialized documents.
---
--- * 'dfcsAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'dfcsSort' - The sorting criteria.
---
--- * 'dfcsMarker' - The marker for the next set of results. This marker was received from a previous call.
---
--- * 'dfcsLimit' - The maximum number of items to return with this call.
---
--- * 'dfcsType' - The type of items.
---
--- * 'dfcsOrder' - The order for the contents of the folder.
---
--- * 'dfcsFolderId' - The ID of the folder.
-describeFolderContents
-    :: Text -- ^ 'dfcsFolderId'
-    -> DescribeFolderContents
-describeFolderContents pFolderId_ =
-  DescribeFolderContents'
-    { _dfcsInclude = Nothing
-    , _dfcsAuthenticationToken = Nothing
-    , _dfcsSort = Nothing
-    , _dfcsMarker = Nothing
-    , _dfcsLimit = Nothing
-    , _dfcsType = Nothing
-    , _dfcsOrder = Nothing
-    , _dfcsFolderId = pFolderId_
-    }
-
-
--- | The contents to include. Specify "INITIALIZED" to include initialized documents.
-dfcsInclude :: Lens' DescribeFolderContents (Maybe Text)
-dfcsInclude = lens _dfcsInclude (\ s a -> s{_dfcsInclude = a})
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-dfcsAuthenticationToken :: Lens' DescribeFolderContents (Maybe Text)
-dfcsAuthenticationToken = lens _dfcsAuthenticationToken (\ s a -> s{_dfcsAuthenticationToken = a}) . mapping _Sensitive
-
--- | The sorting criteria.
-dfcsSort :: Lens' DescribeFolderContents (Maybe ResourceSortType)
-dfcsSort = lens _dfcsSort (\ s a -> s{_dfcsSort = a})
-
--- | The marker for the next set of results. This marker was received from a previous call.
-dfcsMarker :: Lens' DescribeFolderContents (Maybe Text)
-dfcsMarker = lens _dfcsMarker (\ s a -> s{_dfcsMarker = a})
-
--- | The maximum number of items to return with this call.
-dfcsLimit :: Lens' DescribeFolderContents (Maybe Natural)
-dfcsLimit = lens _dfcsLimit (\ s a -> s{_dfcsLimit = a}) . mapping _Nat
-
--- | The type of items.
-dfcsType :: Lens' DescribeFolderContents (Maybe FolderContentType)
-dfcsType = lens _dfcsType (\ s a -> s{_dfcsType = a})
-
--- | The order for the contents of the folder.
-dfcsOrder :: Lens' DescribeFolderContents (Maybe OrderType)
-dfcsOrder = lens _dfcsOrder (\ s a -> s{_dfcsOrder = a})
-
--- | The ID of the folder.
-dfcsFolderId :: Lens' DescribeFolderContents Text
-dfcsFolderId = lens _dfcsFolderId (\ s a -> s{_dfcsFolderId = a})
-
-instance AWSPager DescribeFolderContents where
-        page rq rs
-          | stop (rs ^. dfcrsMarker) = Nothing
-          | stop (rs ^. dfcrsFolders) = Nothing
-          | stop (rs ^. dfcrsDocuments) = Nothing
-          | otherwise =
-            Just $ rq & dfcsMarker .~ rs ^. dfcrsMarker
-
-instance AWSRequest DescribeFolderContents where
-        type Rs DescribeFolderContents =
-             DescribeFolderContentsResponse
-        request = get workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeFolderContentsResponse' <$>
-                   (x .?> "Folders" .!@ mempty) <*>
-                     (x .?> "Documents" .!@ mempty)
-                     <*> (x .?> "Marker")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable DescribeFolderContents where
-
-instance NFData DescribeFolderContents where
-
-instance ToHeaders DescribeFolderContents where
-        toHeaders DescribeFolderContents'{..}
-          = mconcat
-              ["Authentication" =# _dfcsAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath DescribeFolderContents where
-        toPath DescribeFolderContents'{..}
-          = mconcat
-              ["/api/v1/folders/", toBS _dfcsFolderId, "/contents"]
-
-instance ToQuery DescribeFolderContents where
-        toQuery DescribeFolderContents'{..}
-          = mconcat
-              ["include" =: _dfcsInclude, "sort" =: _dfcsSort,
-               "marker" =: _dfcsMarker, "limit" =: _dfcsLimit,
-               "type" =: _dfcsType, "order" =: _dfcsOrder]
-
--- | /See:/ 'describeFolderContentsResponse' smart constructor.
-data DescribeFolderContentsResponse = DescribeFolderContentsResponse'
-  { _dfcrsFolders        :: !(Maybe [FolderMetadata])
-  , _dfcrsDocuments      :: !(Maybe [DocumentMetadata])
-  , _dfcrsMarker         :: !(Maybe Text)
-  , _dfcrsResponseStatus :: !Int
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeFolderContentsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dfcrsFolders' - The subfolders in the specified folder.
---
--- * 'dfcrsDocuments' - The documents in the specified folder.
---
--- * 'dfcrsMarker' - The marker to use when requesting the next set of results. If there are no additional results, the string is empty.
---
--- * 'dfcrsResponseStatus' - -- | The response status code.
-describeFolderContentsResponse
-    :: Int -- ^ 'dfcrsResponseStatus'
-    -> DescribeFolderContentsResponse
-describeFolderContentsResponse pResponseStatus_ =
-  DescribeFolderContentsResponse'
-    { _dfcrsFolders = Nothing
-    , _dfcrsDocuments = Nothing
-    , _dfcrsMarker = Nothing
-    , _dfcrsResponseStatus = pResponseStatus_
-    }
-
-
--- | The subfolders in the specified folder.
-dfcrsFolders :: Lens' DescribeFolderContentsResponse [FolderMetadata]
-dfcrsFolders = lens _dfcrsFolders (\ s a -> s{_dfcrsFolders = a}) . _Default . _Coerce
-
--- | The documents in the specified folder.
-dfcrsDocuments :: Lens' DescribeFolderContentsResponse [DocumentMetadata]
-dfcrsDocuments = lens _dfcrsDocuments (\ s a -> s{_dfcrsDocuments = a}) . _Default . _Coerce
-
--- | The marker to use when requesting the next set of results. If there are no additional results, the string is empty.
-dfcrsMarker :: Lens' DescribeFolderContentsResponse (Maybe Text)
-dfcrsMarker = lens _dfcrsMarker (\ s a -> s{_dfcrsMarker = a})
-
--- | -- | The response status code.
-dfcrsResponseStatus :: Lens' DescribeFolderContentsResponse Int
-dfcrsResponseStatus = lens _dfcrsResponseStatus (\ s a -> s{_dfcrsResponseStatus = a})
-
-instance NFData DescribeFolderContentsResponse where
diff --git a/gen/Network/AWS/WorkDocs/DescribeGroups.hs b/gen/Network/AWS/WorkDocs/DescribeGroups.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/DescribeGroups.hs
+++ /dev/null
@@ -1,179 +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.WorkDocs.DescribeGroups
--- 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)
---
--- Describes the groups specified by query.
---
---
-module Network.AWS.WorkDocs.DescribeGroups
-    (
-    -- * Creating a Request
-      describeGroups
-    , DescribeGroups
-    -- * Request Lenses
-    , dgAuthenticationToken
-    , dgMarker
-    , dgLimit
-    , dgOrganizationId
-    , dgSearchQuery
-
-    -- * Destructuring the Response
-    , describeGroupsResponse
-    , DescribeGroupsResponse
-    -- * Response Lenses
-    , dgrsGroups
-    , dgrsMarker
-    , dgrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'describeGroups' smart constructor.
-data DescribeGroups = DescribeGroups'
-  { _dgAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _dgMarker              :: !(Maybe Text)
-  , _dgLimit               :: !(Maybe Nat)
-  , _dgOrganizationId      :: !(Maybe Text)
-  , _dgSearchQuery         :: !(Sensitive Text)
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeGroups' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dgAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'dgMarker' - The marker for the next set of results. (You received this marker from a previous call.)
---
--- * 'dgLimit' - The maximum number of items to return with this call.
---
--- * 'dgOrganizationId' - The ID of the organization.
---
--- * 'dgSearchQuery' - A query to describe groups by group name.
-describeGroups
-    :: Text -- ^ 'dgSearchQuery'
-    -> DescribeGroups
-describeGroups pSearchQuery_ =
-  DescribeGroups'
-    { _dgAuthenticationToken = Nothing
-    , _dgMarker = Nothing
-    , _dgLimit = Nothing
-    , _dgOrganizationId = Nothing
-    , _dgSearchQuery = _Sensitive # pSearchQuery_
-    }
-
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-dgAuthenticationToken :: Lens' DescribeGroups (Maybe Text)
-dgAuthenticationToken = lens _dgAuthenticationToken (\ s a -> s{_dgAuthenticationToken = a}) . mapping _Sensitive
-
--- | The marker for the next set of results. (You received this marker from a previous call.)
-dgMarker :: Lens' DescribeGroups (Maybe Text)
-dgMarker = lens _dgMarker (\ s a -> s{_dgMarker = a})
-
--- | The maximum number of items to return with this call.
-dgLimit :: Lens' DescribeGroups (Maybe Natural)
-dgLimit = lens _dgLimit (\ s a -> s{_dgLimit = a}) . mapping _Nat
-
--- | The ID of the organization.
-dgOrganizationId :: Lens' DescribeGroups (Maybe Text)
-dgOrganizationId = lens _dgOrganizationId (\ s a -> s{_dgOrganizationId = a})
-
--- | A query to describe groups by group name.
-dgSearchQuery :: Lens' DescribeGroups Text
-dgSearchQuery = lens _dgSearchQuery (\ s a -> s{_dgSearchQuery = a}) . _Sensitive
-
-instance AWSRequest DescribeGroups where
-        type Rs DescribeGroups = DescribeGroupsResponse
-        request = get workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeGroupsResponse' <$>
-                   (x .?> "Groups" .!@ mempty) <*> (x .?> "Marker") <*>
-                     (pure (fromEnum s)))
-
-instance Hashable DescribeGroups where
-
-instance NFData DescribeGroups where
-
-instance ToHeaders DescribeGroups where
-        toHeaders DescribeGroups'{..}
-          = mconcat
-              ["Authentication" =# _dgAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath DescribeGroups where
-        toPath = const "/api/v1/groups"
-
-instance ToQuery DescribeGroups where
-        toQuery DescribeGroups'{..}
-          = mconcat
-              ["marker" =: _dgMarker, "limit" =: _dgLimit,
-               "organizationId" =: _dgOrganizationId,
-               "searchQuery" =: _dgSearchQuery]
-
--- | /See:/ 'describeGroupsResponse' smart constructor.
-data DescribeGroupsResponse = DescribeGroupsResponse'
-  { _dgrsGroups         :: !(Maybe [GroupMetadata])
-  , _dgrsMarker         :: !(Maybe Text)
-  , _dgrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeGroupsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dgrsGroups' - The list of groups.
---
--- * 'dgrsMarker' - The marker to use when requesting the next set of results. If there are no additional results, the string is empty.
---
--- * 'dgrsResponseStatus' - -- | The response status code.
-describeGroupsResponse
-    :: Int -- ^ 'dgrsResponseStatus'
-    -> DescribeGroupsResponse
-describeGroupsResponse pResponseStatus_ =
-  DescribeGroupsResponse'
-    { _dgrsGroups = Nothing
-    , _dgrsMarker = Nothing
-    , _dgrsResponseStatus = pResponseStatus_
-    }
-
-
--- | The list of groups.
-dgrsGroups :: Lens' DescribeGroupsResponse [GroupMetadata]
-dgrsGroups = lens _dgrsGroups (\ s a -> s{_dgrsGroups = a}) . _Default . _Coerce
-
--- | The marker to use when requesting the next set of results. If there are no additional results, the string is empty.
-dgrsMarker :: Lens' DescribeGroupsResponse (Maybe Text)
-dgrsMarker = lens _dgrsMarker (\ s a -> s{_dgrsMarker = a})
-
--- | -- | The response status code.
-dgrsResponseStatus :: Lens' DescribeGroupsResponse Int
-dgrsResponseStatus = lens _dgrsResponseStatus (\ s a -> s{_dgrsResponseStatus = a})
-
-instance NFData DescribeGroupsResponse where
diff --git a/gen/Network/AWS/WorkDocs/DescribeNotificationSubscriptions.hs b/gen/Network/AWS/WorkDocs/DescribeNotificationSubscriptions.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/DescribeNotificationSubscriptions.hs
+++ /dev/null
@@ -1,168 +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.WorkDocs.DescribeNotificationSubscriptions
--- 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 the specified notification subscriptions.
---
---
-module Network.AWS.WorkDocs.DescribeNotificationSubscriptions
-    (
-    -- * Creating a Request
-      describeNotificationSubscriptions
-    , DescribeNotificationSubscriptions
-    -- * Request Lenses
-    , dMarker
-    , dLimit
-    , dOrganizationId
-
-    -- * Destructuring the Response
-    , describeNotificationSubscriptionsResponse
-    , DescribeNotificationSubscriptionsResponse
-    -- * Response Lenses
-    , dnsrsMarker
-    , dnsrsSubscriptions
-    , dnsrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'describeNotificationSubscriptions' smart constructor.
-data DescribeNotificationSubscriptions = DescribeNotificationSubscriptions'
-  { _dMarker         :: !(Maybe Text)
-  , _dLimit          :: !(Maybe Nat)
-  , _dOrganizationId :: !Text
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeNotificationSubscriptions' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dMarker' - The marker for the next set of results. (You received this marker from a previous call.)
---
--- * 'dLimit' - The maximum number of items to return with this call.
---
--- * 'dOrganizationId' - The ID of the organization.
-describeNotificationSubscriptions
-    :: Text -- ^ 'dOrganizationId'
-    -> DescribeNotificationSubscriptions
-describeNotificationSubscriptions pOrganizationId_ =
-  DescribeNotificationSubscriptions'
-    {_dMarker = Nothing, _dLimit = Nothing, _dOrganizationId = pOrganizationId_}
-
-
--- | The marker for the next set of results. (You received this marker from a previous call.)
-dMarker :: Lens' DescribeNotificationSubscriptions (Maybe Text)
-dMarker = lens _dMarker (\ s a -> s{_dMarker = a})
-
--- | The maximum number of items to return with this call.
-dLimit :: Lens' DescribeNotificationSubscriptions (Maybe Natural)
-dLimit = lens _dLimit (\ s a -> s{_dLimit = a}) . mapping _Nat
-
--- | The ID of the organization.
-dOrganizationId :: Lens' DescribeNotificationSubscriptions Text
-dOrganizationId = lens _dOrganizationId (\ s a -> s{_dOrganizationId = a})
-
-instance AWSRequest DescribeNotificationSubscriptions
-         where
-        type Rs DescribeNotificationSubscriptions =
-             DescribeNotificationSubscriptionsResponse
-        request = get workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeNotificationSubscriptionsResponse' <$>
-                   (x .?> "Marker") <*>
-                     (x .?> "Subscriptions" .!@ mempty)
-                     <*> (pure (fromEnum s)))
-
-instance Hashable DescribeNotificationSubscriptions
-         where
-
-instance NFData DescribeNotificationSubscriptions
-         where
-
-instance ToHeaders DescribeNotificationSubscriptions
-         where
-        toHeaders
-          = const
-              (mconcat
-                 ["Content-Type" =#
-                    ("application/x-amz-json-1.1" :: ByteString)])
-
-instance ToPath DescribeNotificationSubscriptions
-         where
-        toPath DescribeNotificationSubscriptions'{..}
-          = mconcat
-              ["/api/v1/organizations/", toBS _dOrganizationId,
-               "/subscriptions"]
-
-instance ToQuery DescribeNotificationSubscriptions
-         where
-        toQuery DescribeNotificationSubscriptions'{..}
-          = mconcat ["marker" =: _dMarker, "limit" =: _dLimit]
-
--- | /See:/ 'describeNotificationSubscriptionsResponse' smart constructor.
-data DescribeNotificationSubscriptionsResponse = DescribeNotificationSubscriptionsResponse'
-  { _dnsrsMarker         :: !(Maybe Text)
-  , _dnsrsSubscriptions  :: !(Maybe [Subscription])
-  , _dnsrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeNotificationSubscriptionsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dnsrsMarker' - The marker to use when requesting the next set of results. If there are no additional results, the string is empty.
---
--- * 'dnsrsSubscriptions' - The subscriptions.
---
--- * 'dnsrsResponseStatus' - -- | The response status code.
-describeNotificationSubscriptionsResponse
-    :: Int -- ^ 'dnsrsResponseStatus'
-    -> DescribeNotificationSubscriptionsResponse
-describeNotificationSubscriptionsResponse pResponseStatus_ =
-  DescribeNotificationSubscriptionsResponse'
-    { _dnsrsMarker = Nothing
-    , _dnsrsSubscriptions = Nothing
-    , _dnsrsResponseStatus = pResponseStatus_
-    }
-
-
--- | The marker to use when requesting the next set of results. If there are no additional results, the string is empty.
-dnsrsMarker :: Lens' DescribeNotificationSubscriptionsResponse (Maybe Text)
-dnsrsMarker = lens _dnsrsMarker (\ s a -> s{_dnsrsMarker = a})
-
--- | The subscriptions.
-dnsrsSubscriptions :: Lens' DescribeNotificationSubscriptionsResponse [Subscription]
-dnsrsSubscriptions = lens _dnsrsSubscriptions (\ s a -> s{_dnsrsSubscriptions = a}) . _Default . _Coerce
-
--- | -- | The response status code.
-dnsrsResponseStatus :: Lens' DescribeNotificationSubscriptionsResponse Int
-dnsrsResponseStatus = lens _dnsrsResponseStatus (\ s a -> s{_dnsrsResponseStatus = a})
-
-instance NFData
-           DescribeNotificationSubscriptionsResponse
-         where
diff --git a/gen/Network/AWS/WorkDocs/DescribeResourcePermissions.hs b/gen/Network/AWS/WorkDocs/DescribeResourcePermissions.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/DescribeResourcePermissions.hs
+++ /dev/null
@@ -1,183 +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.WorkDocs.DescribeResourcePermissions
--- 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)
---
--- Describes the permissions of a specified resource.
---
---
-module Network.AWS.WorkDocs.DescribeResourcePermissions
-    (
-    -- * Creating a Request
-      describeResourcePermissions
-    , DescribeResourcePermissions
-    -- * Request Lenses
-    , drpPrincipalId
-    , drpAuthenticationToken
-    , drpMarker
-    , drpLimit
-    , drpResourceId
-
-    -- * Destructuring the Response
-    , describeResourcePermissionsResponse
-    , DescribeResourcePermissionsResponse
-    -- * Response Lenses
-    , drprsPrincipals
-    , drprsMarker
-    , drprsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'describeResourcePermissions' smart constructor.
-data DescribeResourcePermissions = DescribeResourcePermissions'
-  { _drpPrincipalId         :: !(Maybe Text)
-  , _drpAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _drpMarker              :: !(Maybe Text)
-  , _drpLimit               :: !(Maybe Nat)
-  , _drpResourceId          :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeResourcePermissions' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'drpPrincipalId' - The ID of the principal to filter permissions by.
---
--- * 'drpAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'drpMarker' - The marker for the next set of results. (You received this marker from a previous call)
---
--- * 'drpLimit' - The maximum number of items to return with this call.
---
--- * 'drpResourceId' - The ID of the resource.
-describeResourcePermissions
-    :: Text -- ^ 'drpResourceId'
-    -> DescribeResourcePermissions
-describeResourcePermissions pResourceId_ =
-  DescribeResourcePermissions'
-    { _drpPrincipalId = Nothing
-    , _drpAuthenticationToken = Nothing
-    , _drpMarker = Nothing
-    , _drpLimit = Nothing
-    , _drpResourceId = pResourceId_
-    }
-
-
--- | The ID of the principal to filter permissions by.
-drpPrincipalId :: Lens' DescribeResourcePermissions (Maybe Text)
-drpPrincipalId = lens _drpPrincipalId (\ s a -> s{_drpPrincipalId = a})
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-drpAuthenticationToken :: Lens' DescribeResourcePermissions (Maybe Text)
-drpAuthenticationToken = lens _drpAuthenticationToken (\ s a -> s{_drpAuthenticationToken = a}) . mapping _Sensitive
-
--- | The marker for the next set of results. (You received this marker from a previous call)
-drpMarker :: Lens' DescribeResourcePermissions (Maybe Text)
-drpMarker = lens _drpMarker (\ s a -> s{_drpMarker = a})
-
--- | The maximum number of items to return with this call.
-drpLimit :: Lens' DescribeResourcePermissions (Maybe Natural)
-drpLimit = lens _drpLimit (\ s a -> s{_drpLimit = a}) . mapping _Nat
-
--- | The ID of the resource.
-drpResourceId :: Lens' DescribeResourcePermissions Text
-drpResourceId = lens _drpResourceId (\ s a -> s{_drpResourceId = a})
-
-instance AWSRequest DescribeResourcePermissions where
-        type Rs DescribeResourcePermissions =
-             DescribeResourcePermissionsResponse
-        request = get workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeResourcePermissionsResponse' <$>
-                   (x .?> "Principals" .!@ mempty) <*> (x .?> "Marker")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable DescribeResourcePermissions where
-
-instance NFData DescribeResourcePermissions where
-
-instance ToHeaders DescribeResourcePermissions where
-        toHeaders DescribeResourcePermissions'{..}
-          = mconcat
-              ["Authentication" =# _drpAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath DescribeResourcePermissions where
-        toPath DescribeResourcePermissions'{..}
-          = mconcat
-              ["/api/v1/resources/", toBS _drpResourceId,
-               "/permissions"]
-
-instance ToQuery DescribeResourcePermissions where
-        toQuery DescribeResourcePermissions'{..}
-          = mconcat
-              ["principalId" =: _drpPrincipalId,
-               "marker" =: _drpMarker, "limit" =: _drpLimit]
-
--- | /See:/ 'describeResourcePermissionsResponse' smart constructor.
-data DescribeResourcePermissionsResponse = DescribeResourcePermissionsResponse'
-  { _drprsPrincipals     :: !(Maybe [Principal])
-  , _drprsMarker         :: !(Maybe Text)
-  , _drprsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeResourcePermissionsResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'drprsPrincipals' - The principals.
---
--- * 'drprsMarker' - The marker to use when requesting the next set of results. If there are no additional results, the string is empty.
---
--- * 'drprsResponseStatus' - -- | The response status code.
-describeResourcePermissionsResponse
-    :: Int -- ^ 'drprsResponseStatus'
-    -> DescribeResourcePermissionsResponse
-describeResourcePermissionsResponse pResponseStatus_ =
-  DescribeResourcePermissionsResponse'
-    { _drprsPrincipals = Nothing
-    , _drprsMarker = Nothing
-    , _drprsResponseStatus = pResponseStatus_
-    }
-
-
--- | The principals.
-drprsPrincipals :: Lens' DescribeResourcePermissionsResponse [Principal]
-drprsPrincipals = lens _drprsPrincipals (\ s a -> s{_drprsPrincipals = a}) . _Default . _Coerce
-
--- | The marker to use when requesting the next set of results. If there are no additional results, the string is empty.
-drprsMarker :: Lens' DescribeResourcePermissionsResponse (Maybe Text)
-drprsMarker = lens _drprsMarker (\ s a -> s{_drprsMarker = a})
-
--- | -- | The response status code.
-drprsResponseStatus :: Lens' DescribeResourcePermissionsResponse Int
-drprsResponseStatus = lens _drprsResponseStatus (\ s a -> s{_drprsResponseStatus = a})
-
-instance NFData DescribeResourcePermissionsResponse
-         where
diff --git a/gen/Network/AWS/WorkDocs/DescribeRootFolders.hs b/gen/Network/AWS/WorkDocs/DescribeRootFolders.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/DescribeRootFolders.hs
+++ /dev/null
@@ -1,160 +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.WorkDocs.DescribeRootFolders
--- 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)
---
--- Describes the current user's special folders; the @RootFolder@ and the @RecycleBin@ . @RootFolder@ is the root of user's files and folders and @RecycleBin@ is the root of recycled items. This is not a valid action for SigV4 (administrative API) clients.
---
---
-module Network.AWS.WorkDocs.DescribeRootFolders
-    (
-    -- * Creating a Request
-      describeRootFolders
-    , DescribeRootFolders
-    -- * Request Lenses
-    , drfMarker
-    , drfLimit
-    , drfAuthenticationToken
-
-    -- * Destructuring the Response
-    , describeRootFoldersResponse
-    , DescribeRootFoldersResponse
-    -- * Response Lenses
-    , drfrsFolders
-    , drfrsMarker
-    , drfrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'describeRootFolders' smart constructor.
-data DescribeRootFolders = DescribeRootFolders'
-  { _drfMarker              :: !(Maybe Text)
-  , _drfLimit               :: !(Maybe Nat)
-  , _drfAuthenticationToken :: !(Sensitive Text)
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeRootFolders' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'drfMarker' - The marker for the next set of results. (You received this marker from a previous call.)
---
--- * 'drfLimit' - The maximum number of items to return.
---
--- * 'drfAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-describeRootFolders
-    :: Text -- ^ 'drfAuthenticationToken'
-    -> DescribeRootFolders
-describeRootFolders pAuthenticationToken_ =
-  DescribeRootFolders'
-    { _drfMarker = Nothing
-    , _drfLimit = Nothing
-    , _drfAuthenticationToken = _Sensitive # pAuthenticationToken_
-    }
-
-
--- | The marker for the next set of results. (You received this marker from a previous call.)
-drfMarker :: Lens' DescribeRootFolders (Maybe Text)
-drfMarker = lens _drfMarker (\ s a -> s{_drfMarker = a})
-
--- | The maximum number of items to return.
-drfLimit :: Lens' DescribeRootFolders (Maybe Natural)
-drfLimit = lens _drfLimit (\ s a -> s{_drfLimit = a}) . mapping _Nat
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-drfAuthenticationToken :: Lens' DescribeRootFolders Text
-drfAuthenticationToken = lens _drfAuthenticationToken (\ s a -> s{_drfAuthenticationToken = a}) . _Sensitive
-
-instance AWSRequest DescribeRootFolders where
-        type Rs DescribeRootFolders =
-             DescribeRootFoldersResponse
-        request = get workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeRootFoldersResponse' <$>
-                   (x .?> "Folders" .!@ mempty) <*> (x .?> "Marker") <*>
-                     (pure (fromEnum s)))
-
-instance Hashable DescribeRootFolders where
-
-instance NFData DescribeRootFolders where
-
-instance ToHeaders DescribeRootFolders where
-        toHeaders DescribeRootFolders'{..}
-          = mconcat
-              ["Authentication" =# _drfAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath DescribeRootFolders where
-        toPath = const "/api/v1/me/root"
-
-instance ToQuery DescribeRootFolders where
-        toQuery DescribeRootFolders'{..}
-          = mconcat
-              ["marker" =: _drfMarker, "limit" =: _drfLimit]
-
--- | /See:/ 'describeRootFoldersResponse' smart constructor.
-data DescribeRootFoldersResponse = DescribeRootFoldersResponse'
-  { _drfrsFolders        :: !(Maybe [FolderMetadata])
-  , _drfrsMarker         :: !(Maybe Text)
-  , _drfrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeRootFoldersResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'drfrsFolders' - The user's special folders.
---
--- * 'drfrsMarker' - The marker for the next set of results.
---
--- * 'drfrsResponseStatus' - -- | The response status code.
-describeRootFoldersResponse
-    :: Int -- ^ 'drfrsResponseStatus'
-    -> DescribeRootFoldersResponse
-describeRootFoldersResponse pResponseStatus_ =
-  DescribeRootFoldersResponse'
-    { _drfrsFolders = Nothing
-    , _drfrsMarker = Nothing
-    , _drfrsResponseStatus = pResponseStatus_
-    }
-
-
--- | The user's special folders.
-drfrsFolders :: Lens' DescribeRootFoldersResponse [FolderMetadata]
-drfrsFolders = lens _drfrsFolders (\ s a -> s{_drfrsFolders = a}) . _Default . _Coerce
-
--- | The marker for the next set of results.
-drfrsMarker :: Lens' DescribeRootFoldersResponse (Maybe Text)
-drfrsMarker = lens _drfrsMarker (\ s a -> s{_drfrsMarker = a})
-
--- | -- | The response status code.
-drfrsResponseStatus :: Lens' DescribeRootFoldersResponse Int
-drfrsResponseStatus = lens _drfrsResponseStatus (\ s a -> s{_drfrsResponseStatus = a})
-
-instance NFData DescribeRootFoldersResponse where
diff --git a/gen/Network/AWS/WorkDocs/DescribeUsers.hs b/gen/Network/AWS/WorkDocs/DescribeUsers.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/DescribeUsers.hs
+++ /dev/null
@@ -1,249 +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.WorkDocs.DescribeUsers
--- 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)
---
--- Describes the specified users. You can describe all users or filter the results (for example, by status or organization).
---
---
--- By default, Amazon WorkDocs returns the first 24 active or pending users. If there are more results, the response includes a marker that you can use to request the next set of results.
---
---
--- This operation returns paginated results.
-module Network.AWS.WorkDocs.DescribeUsers
-    (
-    -- * Creating a Request
-      describeUsers
-    , DescribeUsers
-    -- * Request Lenses
-    , duInclude
-    , duUserIds
-    , duAuthenticationToken
-    , duSort
-    , duMarker
-    , duQuery
-    , duLimit
-    , duOrder
-    , duOrganizationId
-    , duFields
-
-    -- * Destructuring the Response
-    , describeUsersResponse
-    , DescribeUsersResponse
-    -- * Response Lenses
-    , dursUsers
-    , dursTotalNumberOfUsers
-    , dursMarker
-    , dursResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Pager
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'describeUsers' smart constructor.
-data DescribeUsers = DescribeUsers'
-  { _duInclude             :: !(Maybe UserFilterType)
-  , _duUserIds             :: !(Maybe Text)
-  , _duAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _duSort                :: !(Maybe UserSortType)
-  , _duMarker              :: !(Maybe Text)
-  , _duQuery               :: !(Maybe (Sensitive Text))
-  , _duLimit               :: !(Maybe Nat)
-  , _duOrder               :: !(Maybe OrderType)
-  , _duOrganizationId      :: !(Maybe Text)
-  , _duFields              :: !(Maybe Text)
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeUsers' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'duInclude' - The state of the users. Specify "ALL" to include inactive users.
---
--- * 'duUserIds' - The IDs of the users.
---
--- * 'duAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'duSort' - The sorting criteria.
---
--- * 'duMarker' - The marker for the next set of results. (You received this marker from a previous call.)
---
--- * 'duQuery' - A query to filter users by user name.
---
--- * 'duLimit' - The maximum number of items to return.
---
--- * 'duOrder' - The order for the results.
---
--- * 'duOrganizationId' - The ID of the organization.
---
--- * 'duFields' - A comma-separated list of values. Specify "STORAGE_METADATA" to include the user storage quota and utilization information.
-describeUsers
-    :: DescribeUsers
-describeUsers =
-  DescribeUsers'
-    { _duInclude = Nothing
-    , _duUserIds = Nothing
-    , _duAuthenticationToken = Nothing
-    , _duSort = Nothing
-    , _duMarker = Nothing
-    , _duQuery = Nothing
-    , _duLimit = Nothing
-    , _duOrder = Nothing
-    , _duOrganizationId = Nothing
-    , _duFields = Nothing
-    }
-
-
--- | The state of the users. Specify "ALL" to include inactive users.
-duInclude :: Lens' DescribeUsers (Maybe UserFilterType)
-duInclude = lens _duInclude (\ s a -> s{_duInclude = a})
-
--- | The IDs of the users.
-duUserIds :: Lens' DescribeUsers (Maybe Text)
-duUserIds = lens _duUserIds (\ s a -> s{_duUserIds = a})
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-duAuthenticationToken :: Lens' DescribeUsers (Maybe Text)
-duAuthenticationToken = lens _duAuthenticationToken (\ s a -> s{_duAuthenticationToken = a}) . mapping _Sensitive
-
--- | The sorting criteria.
-duSort :: Lens' DescribeUsers (Maybe UserSortType)
-duSort = lens _duSort (\ s a -> s{_duSort = a})
-
--- | The marker for the next set of results. (You received this marker from a previous call.)
-duMarker :: Lens' DescribeUsers (Maybe Text)
-duMarker = lens _duMarker (\ s a -> s{_duMarker = a})
-
--- | A query to filter users by user name.
-duQuery :: Lens' DescribeUsers (Maybe Text)
-duQuery = lens _duQuery (\ s a -> s{_duQuery = a}) . mapping _Sensitive
-
--- | The maximum number of items to return.
-duLimit :: Lens' DescribeUsers (Maybe Natural)
-duLimit = lens _duLimit (\ s a -> s{_duLimit = a}) . mapping _Nat
-
--- | The order for the results.
-duOrder :: Lens' DescribeUsers (Maybe OrderType)
-duOrder = lens _duOrder (\ s a -> s{_duOrder = a})
-
--- | The ID of the organization.
-duOrganizationId :: Lens' DescribeUsers (Maybe Text)
-duOrganizationId = lens _duOrganizationId (\ s a -> s{_duOrganizationId = a})
-
--- | A comma-separated list of values. Specify "STORAGE_METADATA" to include the user storage quota and utilization information.
-duFields :: Lens' DescribeUsers (Maybe Text)
-duFields = lens _duFields (\ s a -> s{_duFields = a})
-
-instance AWSPager DescribeUsers where
-        page rq rs
-          | stop (rs ^. dursMarker) = Nothing
-          | stop (rs ^. dursUsers) = Nothing
-          | otherwise =
-            Just $ rq & duMarker .~ rs ^. dursMarker
-
-instance AWSRequest DescribeUsers where
-        type Rs DescribeUsers = DescribeUsersResponse
-        request = get workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 DescribeUsersResponse' <$>
-                   (x .?> "Users" .!@ mempty) <*>
-                     (x .?> "TotalNumberOfUsers")
-                     <*> (x .?> "Marker")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable DescribeUsers where
-
-instance NFData DescribeUsers where
-
-instance ToHeaders DescribeUsers where
-        toHeaders DescribeUsers'{..}
-          = mconcat
-              ["Authentication" =# _duAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath DescribeUsers where
-        toPath = const "/api/v1/users"
-
-instance ToQuery DescribeUsers where
-        toQuery DescribeUsers'{..}
-          = mconcat
-              ["include" =: _duInclude, "userIds" =: _duUserIds,
-               "sort" =: _duSort, "marker" =: _duMarker,
-               "query" =: _duQuery, "limit" =: _duLimit,
-               "order" =: _duOrder,
-               "organizationId" =: _duOrganizationId,
-               "fields" =: _duFields]
-
--- | /See:/ 'describeUsersResponse' smart constructor.
-data DescribeUsersResponse = DescribeUsersResponse'
-  { _dursUsers              :: !(Maybe [User])
-  , _dursTotalNumberOfUsers :: !(Maybe Integer)
-  , _dursMarker             :: !(Maybe Text)
-  , _dursResponseStatus     :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DescribeUsersResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dursUsers' - The users.
---
--- * 'dursTotalNumberOfUsers' - The total number of users included in the results.
---
--- * 'dursMarker' - The marker to use when requesting the next set of results. If there are no additional results, the string is empty.
---
--- * 'dursResponseStatus' - -- | The response status code.
-describeUsersResponse
-    :: Int -- ^ 'dursResponseStatus'
-    -> DescribeUsersResponse
-describeUsersResponse pResponseStatus_ =
-  DescribeUsersResponse'
-    { _dursUsers = Nothing
-    , _dursTotalNumberOfUsers = Nothing
-    , _dursMarker = Nothing
-    , _dursResponseStatus = pResponseStatus_
-    }
-
-
--- | The users.
-dursUsers :: Lens' DescribeUsersResponse [User]
-dursUsers = lens _dursUsers (\ s a -> s{_dursUsers = a}) . _Default . _Coerce
-
--- | The total number of users included in the results.
-dursTotalNumberOfUsers :: Lens' DescribeUsersResponse (Maybe Integer)
-dursTotalNumberOfUsers = lens _dursTotalNumberOfUsers (\ s a -> s{_dursTotalNumberOfUsers = a})
-
--- | The marker to use when requesting the next set of results. If there are no additional results, the string is empty.
-dursMarker :: Lens' DescribeUsersResponse (Maybe Text)
-dursMarker = lens _dursMarker (\ s a -> s{_dursMarker = a})
-
--- | -- | The response status code.
-dursResponseStatus :: Lens' DescribeUsersResponse Int
-dursResponseStatus = lens _dursResponseStatus (\ s a -> s{_dursResponseStatus = a})
-
-instance NFData DescribeUsersResponse where
diff --git a/gen/Network/AWS/WorkDocs/GetCurrentUser.hs b/gen/Network/AWS/WorkDocs/GetCurrentUser.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/GetCurrentUser.hs
+++ /dev/null
@@ -1,125 +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.WorkDocs.GetCurrentUser
--- 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)
---
--- Retrieves details of the current user for whom the authentication token was generated. This is not a valid action for SigV4 (administrative API) clients.
---
---
-module Network.AWS.WorkDocs.GetCurrentUser
-    (
-    -- * Creating a Request
-      getCurrentUser
-    , GetCurrentUser
-    -- * Request Lenses
-    , gcuAuthenticationToken
-
-    -- * Destructuring the Response
-    , getCurrentUserResponse
-    , GetCurrentUserResponse
-    -- * Response Lenses
-    , gcursUser
-    , gcursResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'getCurrentUser' smart constructor.
-newtype GetCurrentUser = GetCurrentUser'
-  { _gcuAuthenticationToken :: Sensitive Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetCurrentUser' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gcuAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-getCurrentUser
-    :: Text -- ^ 'gcuAuthenticationToken'
-    -> GetCurrentUser
-getCurrentUser pAuthenticationToken_ =
-  GetCurrentUser' {_gcuAuthenticationToken = _Sensitive # pAuthenticationToken_}
-
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-gcuAuthenticationToken :: Lens' GetCurrentUser Text
-gcuAuthenticationToken = lens _gcuAuthenticationToken (\ s a -> s{_gcuAuthenticationToken = a}) . _Sensitive
-
-instance AWSRequest GetCurrentUser where
-        type Rs GetCurrentUser = GetCurrentUserResponse
-        request = get workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 GetCurrentUserResponse' <$>
-                   (x .?> "User") <*> (pure (fromEnum s)))
-
-instance Hashable GetCurrentUser where
-
-instance NFData GetCurrentUser where
-
-instance ToHeaders GetCurrentUser where
-        toHeaders GetCurrentUser'{..}
-          = mconcat
-              ["Authentication" =# _gcuAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath GetCurrentUser where
-        toPath = const "/api/v1/me"
-
-instance ToQuery GetCurrentUser where
-        toQuery = const mempty
-
--- | /See:/ 'getCurrentUserResponse' smart constructor.
-data GetCurrentUserResponse = GetCurrentUserResponse'
-  { _gcursUser           :: !(Maybe User)
-  , _gcursResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetCurrentUserResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gcursUser' - Metadata of the user.
---
--- * 'gcursResponseStatus' - -- | The response status code.
-getCurrentUserResponse
-    :: Int -- ^ 'gcursResponseStatus'
-    -> GetCurrentUserResponse
-getCurrentUserResponse pResponseStatus_ =
-  GetCurrentUserResponse'
-    {_gcursUser = Nothing, _gcursResponseStatus = pResponseStatus_}
-
-
--- | Metadata of the user.
-gcursUser :: Lens' GetCurrentUserResponse (Maybe User)
-gcursUser = lens _gcursUser (\ s a -> s{_gcursUser = a})
-
--- | -- | The response status code.
-gcursResponseStatus :: Lens' GetCurrentUserResponse Int
-gcursResponseStatus = lens _gcursResponseStatus (\ s a -> s{_gcursResponseStatus = a})
-
-instance NFData GetCurrentUserResponse where
diff --git a/gen/Network/AWS/WorkDocs/GetDocument.hs b/gen/Network/AWS/WorkDocs/GetDocument.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/GetDocument.hs
+++ /dev/null
@@ -1,161 +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.WorkDocs.GetDocument
--- 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)
---
--- Retrieves details of a document.
---
---
-module Network.AWS.WorkDocs.GetDocument
-    (
-    -- * Creating a Request
-      getDocument
-    , GetDocument
-    -- * Request Lenses
-    , gdAuthenticationToken
-    , gdIncludeCustomMetadata
-    , gdDocumentId
-
-    -- * Destructuring the Response
-    , getDocumentResponse
-    , GetDocumentResponse
-    -- * Response Lenses
-    , gdrsCustomMetadata
-    , gdrsMetadata
-    , gdrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'getDocument' smart constructor.
-data GetDocument = GetDocument'
-  { _gdAuthenticationToken   :: !(Maybe (Sensitive Text))
-  , _gdIncludeCustomMetadata :: !(Maybe Bool)
-  , _gdDocumentId            :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetDocument' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gdAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'gdIncludeCustomMetadata' - Set this to @TRUE@ to include custom metadata in the response.
---
--- * 'gdDocumentId' - The ID of the document.
-getDocument
-    :: Text -- ^ 'gdDocumentId'
-    -> GetDocument
-getDocument pDocumentId_ =
-  GetDocument'
-    { _gdAuthenticationToken = Nothing
-    , _gdIncludeCustomMetadata = Nothing
-    , _gdDocumentId = pDocumentId_
-    }
-
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-gdAuthenticationToken :: Lens' GetDocument (Maybe Text)
-gdAuthenticationToken = lens _gdAuthenticationToken (\ s a -> s{_gdAuthenticationToken = a}) . mapping _Sensitive
-
--- | Set this to @TRUE@ to include custom metadata in the response.
-gdIncludeCustomMetadata :: Lens' GetDocument (Maybe Bool)
-gdIncludeCustomMetadata = lens _gdIncludeCustomMetadata (\ s a -> s{_gdIncludeCustomMetadata = a})
-
--- | The ID of the document.
-gdDocumentId :: Lens' GetDocument Text
-gdDocumentId = lens _gdDocumentId (\ s a -> s{_gdDocumentId = a})
-
-instance AWSRequest GetDocument where
-        type Rs GetDocument = GetDocumentResponse
-        request = get workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 GetDocumentResponse' <$>
-                   (x .?> "CustomMetadata" .!@ mempty) <*>
-                     (x .?> "Metadata")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable GetDocument where
-
-instance NFData GetDocument where
-
-instance ToHeaders GetDocument where
-        toHeaders GetDocument'{..}
-          = mconcat
-              ["Authentication" =# _gdAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath GetDocument where
-        toPath GetDocument'{..}
-          = mconcat ["/api/v1/documents/", toBS _gdDocumentId]
-
-instance ToQuery GetDocument where
-        toQuery GetDocument'{..}
-          = mconcat
-              ["includeCustomMetadata" =: _gdIncludeCustomMetadata]
-
--- | /See:/ 'getDocumentResponse' smart constructor.
-data GetDocumentResponse = GetDocumentResponse'
-  { _gdrsCustomMetadata :: !(Maybe (Map Text Text))
-  , _gdrsMetadata       :: !(Maybe DocumentMetadata)
-  , _gdrsResponseStatus :: !Int
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetDocumentResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gdrsCustomMetadata' - The custom metadata on the document.
---
--- * 'gdrsMetadata' - The metadata details of the document.
---
--- * 'gdrsResponseStatus' - -- | The response status code.
-getDocumentResponse
-    :: Int -- ^ 'gdrsResponseStatus'
-    -> GetDocumentResponse
-getDocumentResponse pResponseStatus_ =
-  GetDocumentResponse'
-    { _gdrsCustomMetadata = Nothing
-    , _gdrsMetadata = Nothing
-    , _gdrsResponseStatus = pResponseStatus_
-    }
-
-
--- | The custom metadata on the document.
-gdrsCustomMetadata :: Lens' GetDocumentResponse (HashMap Text Text)
-gdrsCustomMetadata = lens _gdrsCustomMetadata (\ s a -> s{_gdrsCustomMetadata = a}) . _Default . _Map
-
--- | The metadata details of the document.
-gdrsMetadata :: Lens' GetDocumentResponse (Maybe DocumentMetadata)
-gdrsMetadata = lens _gdrsMetadata (\ s a -> s{_gdrsMetadata = a})
-
--- | -- | The response status code.
-gdrsResponseStatus :: Lens' GetDocumentResponse Int
-gdrsResponseStatus = lens _gdrsResponseStatus (\ s a -> s{_gdrsResponseStatus = a})
-
-instance NFData GetDocumentResponse where
diff --git a/gen/Network/AWS/WorkDocs/GetDocumentPath.hs b/gen/Network/AWS/WorkDocs/GetDocumentPath.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/GetDocumentPath.hs
+++ /dev/null
@@ -1,170 +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.WorkDocs.GetDocumentPath
--- 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)
---
--- Retrieves the path information (the hierarchy from the root folder) for the requested document.
---
---
--- By default, Amazon WorkDocs returns a maximum of 100 levels upwards from the requested document and only includes the IDs of the parent folders in the path. You can limit the maximum number of levels. You can also request the names of the parent folders.
---
-module Network.AWS.WorkDocs.GetDocumentPath
-    (
-    -- * Creating a Request
-      getDocumentPath
-    , GetDocumentPath
-    -- * Request Lenses
-    , gdpAuthenticationToken
-    , gdpMarker
-    , gdpLimit
-    , gdpFields
-    , gdpDocumentId
-
-    -- * Destructuring the Response
-    , getDocumentPathResponse
-    , GetDocumentPathResponse
-    -- * Response Lenses
-    , gdprsPath
-    , gdprsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'getDocumentPath' smart constructor.
-data GetDocumentPath = GetDocumentPath'
-  { _gdpAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _gdpMarker              :: !(Maybe Text)
-  , _gdpLimit               :: !(Maybe Nat)
-  , _gdpFields              :: !(Maybe Text)
-  , _gdpDocumentId          :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetDocumentPath' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gdpAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'gdpMarker' - This value is not supported.
---
--- * 'gdpLimit' - The maximum number of levels in the hierarchy to return.
---
--- * 'gdpFields' - A comma-separated list of values. Specify @NAME@ to include the names of the parent folders.
---
--- * 'gdpDocumentId' - The ID of the document.
-getDocumentPath
-    :: Text -- ^ 'gdpDocumentId'
-    -> GetDocumentPath
-getDocumentPath pDocumentId_ =
-  GetDocumentPath'
-    { _gdpAuthenticationToken = Nothing
-    , _gdpMarker = Nothing
-    , _gdpLimit = Nothing
-    , _gdpFields = Nothing
-    , _gdpDocumentId = pDocumentId_
-    }
-
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-gdpAuthenticationToken :: Lens' GetDocumentPath (Maybe Text)
-gdpAuthenticationToken = lens _gdpAuthenticationToken (\ s a -> s{_gdpAuthenticationToken = a}) . mapping _Sensitive
-
--- | This value is not supported.
-gdpMarker :: Lens' GetDocumentPath (Maybe Text)
-gdpMarker = lens _gdpMarker (\ s a -> s{_gdpMarker = a})
-
--- | The maximum number of levels in the hierarchy to return.
-gdpLimit :: Lens' GetDocumentPath (Maybe Natural)
-gdpLimit = lens _gdpLimit (\ s a -> s{_gdpLimit = a}) . mapping _Nat
-
--- | A comma-separated list of values. Specify @NAME@ to include the names of the parent folders.
-gdpFields :: Lens' GetDocumentPath (Maybe Text)
-gdpFields = lens _gdpFields (\ s a -> s{_gdpFields = a})
-
--- | The ID of the document.
-gdpDocumentId :: Lens' GetDocumentPath Text
-gdpDocumentId = lens _gdpDocumentId (\ s a -> s{_gdpDocumentId = a})
-
-instance AWSRequest GetDocumentPath where
-        type Rs GetDocumentPath = GetDocumentPathResponse
-        request = get workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 GetDocumentPathResponse' <$>
-                   (x .?> "Path") <*> (pure (fromEnum s)))
-
-instance Hashable GetDocumentPath where
-
-instance NFData GetDocumentPath where
-
-instance ToHeaders GetDocumentPath where
-        toHeaders GetDocumentPath'{..}
-          = mconcat
-              ["Authentication" =# _gdpAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath GetDocumentPath where
-        toPath GetDocumentPath'{..}
-          = mconcat
-              ["/api/v1/documents/", toBS _gdpDocumentId, "/path"]
-
-instance ToQuery GetDocumentPath where
-        toQuery GetDocumentPath'{..}
-          = mconcat
-              ["marker" =: _gdpMarker, "limit" =: _gdpLimit,
-               "fields" =: _gdpFields]
-
--- | /See:/ 'getDocumentPathResponse' smart constructor.
-data GetDocumentPathResponse = GetDocumentPathResponse'
-  { _gdprsPath           :: !(Maybe ResourcePath)
-  , _gdprsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetDocumentPathResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gdprsPath' - The path information.
---
--- * 'gdprsResponseStatus' - -- | The response status code.
-getDocumentPathResponse
-    :: Int -- ^ 'gdprsResponseStatus'
-    -> GetDocumentPathResponse
-getDocumentPathResponse pResponseStatus_ =
-  GetDocumentPathResponse'
-    {_gdprsPath = Nothing, _gdprsResponseStatus = pResponseStatus_}
-
-
--- | The path information.
-gdprsPath :: Lens' GetDocumentPathResponse (Maybe ResourcePath)
-gdprsPath = lens _gdprsPath (\ s a -> s{_gdprsPath = a})
-
--- | -- | The response status code.
-gdprsResponseStatus :: Lens' GetDocumentPathResponse Int
-gdprsResponseStatus = lens _gdprsResponseStatus (\ s a -> s{_gdprsResponseStatus = a})
-
-instance NFData GetDocumentPathResponse where
diff --git a/gen/Network/AWS/WorkDocs/GetDocumentVersion.hs b/gen/Network/AWS/WorkDocs/GetDocumentVersion.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/GetDocumentVersion.hs
+++ /dev/null
@@ -1,185 +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.WorkDocs.GetDocumentVersion
--- 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)
---
--- Retrieves version metadata for the specified document.
---
---
-module Network.AWS.WorkDocs.GetDocumentVersion
-    (
-    -- * Creating a Request
-      getDocumentVersion
-    , GetDocumentVersion
-    -- * Request Lenses
-    , gdvAuthenticationToken
-    , gdvIncludeCustomMetadata
-    , gdvFields
-    , gdvDocumentId
-    , gdvVersionId
-
-    -- * Destructuring the Response
-    , getDocumentVersionResponse
-    , GetDocumentVersionResponse
-    -- * Response Lenses
-    , gdvrsCustomMetadata
-    , gdvrsMetadata
-    , gdvrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'getDocumentVersion' smart constructor.
-data GetDocumentVersion = GetDocumentVersion'
-  { _gdvAuthenticationToken   :: !(Maybe (Sensitive Text))
-  , _gdvIncludeCustomMetadata :: !(Maybe Bool)
-  , _gdvFields                :: !(Maybe Text)
-  , _gdvDocumentId            :: !Text
-  , _gdvVersionId             :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetDocumentVersion' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gdvAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'gdvIncludeCustomMetadata' - Set this to TRUE to include custom metadata in the response.
---
--- * 'gdvFields' - A comma-separated list of values. Specify "SOURCE" to include a URL for the source document.
---
--- * 'gdvDocumentId' - The ID of the document.
---
--- * 'gdvVersionId' - The version ID of the document.
-getDocumentVersion
-    :: Text -- ^ 'gdvDocumentId'
-    -> Text -- ^ 'gdvVersionId'
-    -> GetDocumentVersion
-getDocumentVersion pDocumentId_ pVersionId_ =
-  GetDocumentVersion'
-    { _gdvAuthenticationToken = Nothing
-    , _gdvIncludeCustomMetadata = Nothing
-    , _gdvFields = Nothing
-    , _gdvDocumentId = pDocumentId_
-    , _gdvVersionId = pVersionId_
-    }
-
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-gdvAuthenticationToken :: Lens' GetDocumentVersion (Maybe Text)
-gdvAuthenticationToken = lens _gdvAuthenticationToken (\ s a -> s{_gdvAuthenticationToken = a}) . mapping _Sensitive
-
--- | Set this to TRUE to include custom metadata in the response.
-gdvIncludeCustomMetadata :: Lens' GetDocumentVersion (Maybe Bool)
-gdvIncludeCustomMetadata = lens _gdvIncludeCustomMetadata (\ s a -> s{_gdvIncludeCustomMetadata = a})
-
--- | A comma-separated list of values. Specify "SOURCE" to include a URL for the source document.
-gdvFields :: Lens' GetDocumentVersion (Maybe Text)
-gdvFields = lens _gdvFields (\ s a -> s{_gdvFields = a})
-
--- | The ID of the document.
-gdvDocumentId :: Lens' GetDocumentVersion Text
-gdvDocumentId = lens _gdvDocumentId (\ s a -> s{_gdvDocumentId = a})
-
--- | The version ID of the document.
-gdvVersionId :: Lens' GetDocumentVersion Text
-gdvVersionId = lens _gdvVersionId (\ s a -> s{_gdvVersionId = a})
-
-instance AWSRequest GetDocumentVersion where
-        type Rs GetDocumentVersion =
-             GetDocumentVersionResponse
-        request = get workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 GetDocumentVersionResponse' <$>
-                   (x .?> "CustomMetadata" .!@ mempty) <*>
-                     (x .?> "Metadata")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable GetDocumentVersion where
-
-instance NFData GetDocumentVersion where
-
-instance ToHeaders GetDocumentVersion where
-        toHeaders GetDocumentVersion'{..}
-          = mconcat
-              ["Authentication" =# _gdvAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath GetDocumentVersion where
-        toPath GetDocumentVersion'{..}
-          = mconcat
-              ["/api/v1/documents/", toBS _gdvDocumentId,
-               "/versions/", toBS _gdvVersionId]
-
-instance ToQuery GetDocumentVersion where
-        toQuery GetDocumentVersion'{..}
-          = mconcat
-              ["includeCustomMetadata" =:
-                 _gdvIncludeCustomMetadata,
-               "fields" =: _gdvFields]
-
--- | /See:/ 'getDocumentVersionResponse' smart constructor.
-data GetDocumentVersionResponse = GetDocumentVersionResponse'
-  { _gdvrsCustomMetadata :: !(Maybe (Map Text Text))
-  , _gdvrsMetadata       :: !(Maybe DocumentVersionMetadata)
-  , _gdvrsResponseStatus :: !Int
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetDocumentVersionResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gdvrsCustomMetadata' - The custom metadata on the document version.
---
--- * 'gdvrsMetadata' - The version metadata.
---
--- * 'gdvrsResponseStatus' - -- | The response status code.
-getDocumentVersionResponse
-    :: Int -- ^ 'gdvrsResponseStatus'
-    -> GetDocumentVersionResponse
-getDocumentVersionResponse pResponseStatus_ =
-  GetDocumentVersionResponse'
-    { _gdvrsCustomMetadata = Nothing
-    , _gdvrsMetadata = Nothing
-    , _gdvrsResponseStatus = pResponseStatus_
-    }
-
-
--- | The custom metadata on the document version.
-gdvrsCustomMetadata :: Lens' GetDocumentVersionResponse (HashMap Text Text)
-gdvrsCustomMetadata = lens _gdvrsCustomMetadata (\ s a -> s{_gdvrsCustomMetadata = a}) . _Default . _Map
-
--- | The version metadata.
-gdvrsMetadata :: Lens' GetDocumentVersionResponse (Maybe DocumentVersionMetadata)
-gdvrsMetadata = lens _gdvrsMetadata (\ s a -> s{_gdvrsMetadata = a})
-
--- | -- | The response status code.
-gdvrsResponseStatus :: Lens' GetDocumentVersionResponse Int
-gdvrsResponseStatus = lens _gdvrsResponseStatus (\ s a -> s{_gdvrsResponseStatus = a})
-
-instance NFData GetDocumentVersionResponse where
diff --git a/gen/Network/AWS/WorkDocs/GetFolder.hs b/gen/Network/AWS/WorkDocs/GetFolder.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/GetFolder.hs
+++ /dev/null
@@ -1,161 +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.WorkDocs.GetFolder
--- 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)
---
--- Retrieves the metadata of the specified folder.
---
---
-module Network.AWS.WorkDocs.GetFolder
-    (
-    -- * Creating a Request
-      getFolder
-    , GetFolder
-    -- * Request Lenses
-    , gfAuthenticationToken
-    , gfIncludeCustomMetadata
-    , gfFolderId
-
-    -- * Destructuring the Response
-    , getFolderResponse
-    , GetFolderResponse
-    -- * Response Lenses
-    , gfrsCustomMetadata
-    , gfrsMetadata
-    , gfrsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'getFolder' smart constructor.
-data GetFolder = GetFolder'
-  { _gfAuthenticationToken   :: !(Maybe (Sensitive Text))
-  , _gfIncludeCustomMetadata :: !(Maybe Bool)
-  , _gfFolderId              :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetFolder' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gfAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'gfIncludeCustomMetadata' - Set to TRUE to include custom metadata in the response.
---
--- * 'gfFolderId' - The ID of the folder.
-getFolder
-    :: Text -- ^ 'gfFolderId'
-    -> GetFolder
-getFolder pFolderId_ =
-  GetFolder'
-    { _gfAuthenticationToken = Nothing
-    , _gfIncludeCustomMetadata = Nothing
-    , _gfFolderId = pFolderId_
-    }
-
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-gfAuthenticationToken :: Lens' GetFolder (Maybe Text)
-gfAuthenticationToken = lens _gfAuthenticationToken (\ s a -> s{_gfAuthenticationToken = a}) . mapping _Sensitive
-
--- | Set to TRUE to include custom metadata in the response.
-gfIncludeCustomMetadata :: Lens' GetFolder (Maybe Bool)
-gfIncludeCustomMetadata = lens _gfIncludeCustomMetadata (\ s a -> s{_gfIncludeCustomMetadata = a})
-
--- | The ID of the folder.
-gfFolderId :: Lens' GetFolder Text
-gfFolderId = lens _gfFolderId (\ s a -> s{_gfFolderId = a})
-
-instance AWSRequest GetFolder where
-        type Rs GetFolder = GetFolderResponse
-        request = get workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 GetFolderResponse' <$>
-                   (x .?> "CustomMetadata" .!@ mempty) <*>
-                     (x .?> "Metadata")
-                     <*> (pure (fromEnum s)))
-
-instance Hashable GetFolder where
-
-instance NFData GetFolder where
-
-instance ToHeaders GetFolder where
-        toHeaders GetFolder'{..}
-          = mconcat
-              ["Authentication" =# _gfAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath GetFolder where
-        toPath GetFolder'{..}
-          = mconcat ["/api/v1/folders/", toBS _gfFolderId]
-
-instance ToQuery GetFolder where
-        toQuery GetFolder'{..}
-          = mconcat
-              ["includeCustomMetadata" =: _gfIncludeCustomMetadata]
-
--- | /See:/ 'getFolderResponse' smart constructor.
-data GetFolderResponse = GetFolderResponse'
-  { _gfrsCustomMetadata :: !(Maybe (Map Text Text))
-  , _gfrsMetadata       :: !(Maybe FolderMetadata)
-  , _gfrsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetFolderResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gfrsCustomMetadata' - The custom metadata on the folder.
---
--- * 'gfrsMetadata' - The metadata of the folder.
---
--- * 'gfrsResponseStatus' - -- | The response status code.
-getFolderResponse
-    :: Int -- ^ 'gfrsResponseStatus'
-    -> GetFolderResponse
-getFolderResponse pResponseStatus_ =
-  GetFolderResponse'
-    { _gfrsCustomMetadata = Nothing
-    , _gfrsMetadata = Nothing
-    , _gfrsResponseStatus = pResponseStatus_
-    }
-
-
--- | The custom metadata on the folder.
-gfrsCustomMetadata :: Lens' GetFolderResponse (HashMap Text Text)
-gfrsCustomMetadata = lens _gfrsCustomMetadata (\ s a -> s{_gfrsCustomMetadata = a}) . _Default . _Map
-
--- | The metadata of the folder.
-gfrsMetadata :: Lens' GetFolderResponse (Maybe FolderMetadata)
-gfrsMetadata = lens _gfrsMetadata (\ s a -> s{_gfrsMetadata = a})
-
--- | -- | The response status code.
-gfrsResponseStatus :: Lens' GetFolderResponse Int
-gfrsResponseStatus = lens _gfrsResponseStatus (\ s a -> s{_gfrsResponseStatus = a})
-
-instance NFData GetFolderResponse where
diff --git a/gen/Network/AWS/WorkDocs/GetFolderPath.hs b/gen/Network/AWS/WorkDocs/GetFolderPath.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/GetFolderPath.hs
+++ /dev/null
@@ -1,170 +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.WorkDocs.GetFolderPath
--- 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)
---
--- Retrieves the path information (the hierarchy from the root folder) for the specified folder.
---
---
--- By default, Amazon WorkDocs returns a maximum of 100 levels upwards from the requested folder and only includes the IDs of the parent folders in the path. You can limit the maximum number of levels. You can also request the parent folder names.
---
-module Network.AWS.WorkDocs.GetFolderPath
-    (
-    -- * Creating a Request
-      getFolderPath
-    , GetFolderPath
-    -- * Request Lenses
-    , gfpAuthenticationToken
-    , gfpMarker
-    , gfpLimit
-    , gfpFields
-    , gfpFolderId
-
-    -- * Destructuring the Response
-    , getFolderPathResponse
-    , GetFolderPathResponse
-    -- * Response Lenses
-    , gfprsPath
-    , gfprsResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'getFolderPath' smart constructor.
-data GetFolderPath = GetFolderPath'
-  { _gfpAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _gfpMarker              :: !(Maybe Text)
-  , _gfpLimit               :: !(Maybe Nat)
-  , _gfpFields              :: !(Maybe Text)
-  , _gfpFolderId            :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetFolderPath' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gfpAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'gfpMarker' - This value is not supported.
---
--- * 'gfpLimit' - The maximum number of levels in the hierarchy to return.
---
--- * 'gfpFields' - A comma-separated list of values. Specify "NAME" to include the names of the parent folders.
---
--- * 'gfpFolderId' - The ID of the folder.
-getFolderPath
-    :: Text -- ^ 'gfpFolderId'
-    -> GetFolderPath
-getFolderPath pFolderId_ =
-  GetFolderPath'
-    { _gfpAuthenticationToken = Nothing
-    , _gfpMarker = Nothing
-    , _gfpLimit = Nothing
-    , _gfpFields = Nothing
-    , _gfpFolderId = pFolderId_
-    }
-
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-gfpAuthenticationToken :: Lens' GetFolderPath (Maybe Text)
-gfpAuthenticationToken = lens _gfpAuthenticationToken (\ s a -> s{_gfpAuthenticationToken = a}) . mapping _Sensitive
-
--- | This value is not supported.
-gfpMarker :: Lens' GetFolderPath (Maybe Text)
-gfpMarker = lens _gfpMarker (\ s a -> s{_gfpMarker = a})
-
--- | The maximum number of levels in the hierarchy to return.
-gfpLimit :: Lens' GetFolderPath (Maybe Natural)
-gfpLimit = lens _gfpLimit (\ s a -> s{_gfpLimit = a}) . mapping _Nat
-
--- | A comma-separated list of values. Specify "NAME" to include the names of the parent folders.
-gfpFields :: Lens' GetFolderPath (Maybe Text)
-gfpFields = lens _gfpFields (\ s a -> s{_gfpFields = a})
-
--- | The ID of the folder.
-gfpFolderId :: Lens' GetFolderPath Text
-gfpFolderId = lens _gfpFolderId (\ s a -> s{_gfpFolderId = a})
-
-instance AWSRequest GetFolderPath where
-        type Rs GetFolderPath = GetFolderPathResponse
-        request = get workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 GetFolderPathResponse' <$>
-                   (x .?> "Path") <*> (pure (fromEnum s)))
-
-instance Hashable GetFolderPath where
-
-instance NFData GetFolderPath where
-
-instance ToHeaders GetFolderPath where
-        toHeaders GetFolderPath'{..}
-          = mconcat
-              ["Authentication" =# _gfpAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath GetFolderPath where
-        toPath GetFolderPath'{..}
-          = mconcat
-              ["/api/v1/folders/", toBS _gfpFolderId, "/path"]
-
-instance ToQuery GetFolderPath where
-        toQuery GetFolderPath'{..}
-          = mconcat
-              ["marker" =: _gfpMarker, "limit" =: _gfpLimit,
-               "fields" =: _gfpFields]
-
--- | /See:/ 'getFolderPathResponse' smart constructor.
-data GetFolderPathResponse = GetFolderPathResponse'
-  { _gfprsPath           :: !(Maybe ResourcePath)
-  , _gfprsResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GetFolderPathResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gfprsPath' - The path information.
---
--- * 'gfprsResponseStatus' - -- | The response status code.
-getFolderPathResponse
-    :: Int -- ^ 'gfprsResponseStatus'
-    -> GetFolderPathResponse
-getFolderPathResponse pResponseStatus_ =
-  GetFolderPathResponse'
-    {_gfprsPath = Nothing, _gfprsResponseStatus = pResponseStatus_}
-
-
--- | The path information.
-gfprsPath :: Lens' GetFolderPathResponse (Maybe ResourcePath)
-gfprsPath = lens _gfprsPath (\ s a -> s{_gfprsPath = a})
-
--- | -- | The response status code.
-gfprsResponseStatus :: Lens' GetFolderPathResponse Int
-gfprsResponseStatus = lens _gfprsResponseStatus (\ s a -> s{_gfprsResponseStatus = a})
-
-instance NFData GetFolderPathResponse where
diff --git a/gen/Network/AWS/WorkDocs/InitiateDocumentVersionUpload.hs b/gen/Network/AWS/WorkDocs/InitiateDocumentVersionUpload.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/InitiateDocumentVersionUpload.hs
+++ /dev/null
@@ -1,224 +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.WorkDocs.InitiateDocumentVersionUpload
--- 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)
---
--- Creates a new document object and version object.
---
---
--- The client specifies the parent folder ID and name of the document to upload. The ID is optionally specified when creating a new version of an existing document. This is the first step to upload a document. Next, upload the document to the URL returned from the call, and then call 'UpdateDocumentVersion' .
---
--- To cancel the document upload, call 'AbortDocumentVersionUpload' .
---
-module Network.AWS.WorkDocs.InitiateDocumentVersionUpload
-    (
-    -- * Creating a Request
-      initiateDocumentVersionUpload
-    , InitiateDocumentVersionUpload
-    -- * Request Lenses
-    , idvuDocumentSizeInBytes
-    , idvuContentCreatedTimestamp
-    , idvuAuthenticationToken
-    , idvuName
-    , idvuId
-    , idvuContentModifiedTimestamp
-    , idvuContentType
-    , idvuParentFolderId
-
-    -- * Destructuring the Response
-    , initiateDocumentVersionUploadResponse
-    , InitiateDocumentVersionUploadResponse
-    -- * Response Lenses
-    , idvursMetadata
-    , idvursUploadMetadata
-    , idvursResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'initiateDocumentVersionUpload' smart constructor.
-data InitiateDocumentVersionUpload = InitiateDocumentVersionUpload'
-  { _idvuDocumentSizeInBytes      :: !(Maybe Integer)
-  , _idvuContentCreatedTimestamp  :: !(Maybe POSIX)
-  , _idvuAuthenticationToken      :: !(Maybe (Sensitive Text))
-  , _idvuName                     :: !(Maybe Text)
-  , _idvuId                       :: !(Maybe Text)
-  , _idvuContentModifiedTimestamp :: !(Maybe POSIX)
-  , _idvuContentType              :: !(Maybe Text)
-  , _idvuParentFolderId           :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InitiateDocumentVersionUpload' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'idvuDocumentSizeInBytes' - The size of the document, in bytes.
---
--- * 'idvuContentCreatedTimestamp' - The timestamp when the content of the document was originally created.
---
--- * 'idvuAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'idvuName' - The name of the document.
---
--- * 'idvuId' - The ID of the document.
---
--- * 'idvuContentModifiedTimestamp' - The timestamp when the content of the document was modified.
---
--- * 'idvuContentType' - The content type of the document.
---
--- * 'idvuParentFolderId' - The ID of the parent folder.
-initiateDocumentVersionUpload
-    :: Text -- ^ 'idvuParentFolderId'
-    -> InitiateDocumentVersionUpload
-initiateDocumentVersionUpload pParentFolderId_ =
-  InitiateDocumentVersionUpload'
-    { _idvuDocumentSizeInBytes = Nothing
-    , _idvuContentCreatedTimestamp = Nothing
-    , _idvuAuthenticationToken = Nothing
-    , _idvuName = Nothing
-    , _idvuId = Nothing
-    , _idvuContentModifiedTimestamp = Nothing
-    , _idvuContentType = Nothing
-    , _idvuParentFolderId = pParentFolderId_
-    }
-
-
--- | The size of the document, in bytes.
-idvuDocumentSizeInBytes :: Lens' InitiateDocumentVersionUpload (Maybe Integer)
-idvuDocumentSizeInBytes = lens _idvuDocumentSizeInBytes (\ s a -> s{_idvuDocumentSizeInBytes = a})
-
--- | The timestamp when the content of the document was originally created.
-idvuContentCreatedTimestamp :: Lens' InitiateDocumentVersionUpload (Maybe UTCTime)
-idvuContentCreatedTimestamp = lens _idvuContentCreatedTimestamp (\ s a -> s{_idvuContentCreatedTimestamp = a}) . mapping _Time
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-idvuAuthenticationToken :: Lens' InitiateDocumentVersionUpload (Maybe Text)
-idvuAuthenticationToken = lens _idvuAuthenticationToken (\ s a -> s{_idvuAuthenticationToken = a}) . mapping _Sensitive
-
--- | The name of the document.
-idvuName :: Lens' InitiateDocumentVersionUpload (Maybe Text)
-idvuName = lens _idvuName (\ s a -> s{_idvuName = a})
-
--- | The ID of the document.
-idvuId :: Lens' InitiateDocumentVersionUpload (Maybe Text)
-idvuId = lens _idvuId (\ s a -> s{_idvuId = a})
-
--- | The timestamp when the content of the document was modified.
-idvuContentModifiedTimestamp :: Lens' InitiateDocumentVersionUpload (Maybe UTCTime)
-idvuContentModifiedTimestamp = lens _idvuContentModifiedTimestamp (\ s a -> s{_idvuContentModifiedTimestamp = a}) . mapping _Time
-
--- | The content type of the document.
-idvuContentType :: Lens' InitiateDocumentVersionUpload (Maybe Text)
-idvuContentType = lens _idvuContentType (\ s a -> s{_idvuContentType = a})
-
--- | The ID of the parent folder.
-idvuParentFolderId :: Lens' InitiateDocumentVersionUpload Text
-idvuParentFolderId = lens _idvuParentFolderId (\ s a -> s{_idvuParentFolderId = a})
-
-instance AWSRequest InitiateDocumentVersionUpload
-         where
-        type Rs InitiateDocumentVersionUpload =
-             InitiateDocumentVersionUploadResponse
-        request = postJSON workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 InitiateDocumentVersionUploadResponse' <$>
-                   (x .?> "Metadata") <*> (x .?> "UploadMetadata") <*>
-                     (pure (fromEnum s)))
-
-instance Hashable InitiateDocumentVersionUpload where
-
-instance NFData InitiateDocumentVersionUpload where
-
-instance ToHeaders InitiateDocumentVersionUpload
-         where
-        toHeaders InitiateDocumentVersionUpload'{..}
-          = mconcat
-              ["Authentication" =# _idvuAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToJSON InitiateDocumentVersionUpload where
-        toJSON InitiateDocumentVersionUpload'{..}
-          = object
-              (catMaybes
-                 [("DocumentSizeInBytes" .=) <$>
-                    _idvuDocumentSizeInBytes,
-                  ("ContentCreatedTimestamp" .=) <$>
-                    _idvuContentCreatedTimestamp,
-                  ("Name" .=) <$> _idvuName, ("Id" .=) <$> _idvuId,
-                  ("ContentModifiedTimestamp" .=) <$>
-                    _idvuContentModifiedTimestamp,
-                  ("ContentType" .=) <$> _idvuContentType,
-                  Just ("ParentFolderId" .= _idvuParentFolderId)])
-
-instance ToPath InitiateDocumentVersionUpload where
-        toPath = const "/api/v1/documents"
-
-instance ToQuery InitiateDocumentVersionUpload where
-        toQuery = const mempty
-
--- | /See:/ 'initiateDocumentVersionUploadResponse' smart constructor.
-data InitiateDocumentVersionUploadResponse = InitiateDocumentVersionUploadResponse'
-  { _idvursMetadata       :: !(Maybe DocumentMetadata)
-  , _idvursUploadMetadata :: !(Maybe UploadMetadata)
-  , _idvursResponseStatus :: !Int
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'InitiateDocumentVersionUploadResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'idvursMetadata' - The document metadata.
---
--- * 'idvursUploadMetadata' - The upload metadata.
---
--- * 'idvursResponseStatus' - -- | The response status code.
-initiateDocumentVersionUploadResponse
-    :: Int -- ^ 'idvursResponseStatus'
-    -> InitiateDocumentVersionUploadResponse
-initiateDocumentVersionUploadResponse pResponseStatus_ =
-  InitiateDocumentVersionUploadResponse'
-    { _idvursMetadata = Nothing
-    , _idvursUploadMetadata = Nothing
-    , _idvursResponseStatus = pResponseStatus_
-    }
-
-
--- | The document metadata.
-idvursMetadata :: Lens' InitiateDocumentVersionUploadResponse (Maybe DocumentMetadata)
-idvursMetadata = lens _idvursMetadata (\ s a -> s{_idvursMetadata = a})
-
--- | The upload metadata.
-idvursUploadMetadata :: Lens' InitiateDocumentVersionUploadResponse (Maybe UploadMetadata)
-idvursUploadMetadata = lens _idvursUploadMetadata (\ s a -> s{_idvursUploadMetadata = a})
-
--- | -- | The response status code.
-idvursResponseStatus :: Lens' InitiateDocumentVersionUploadResponse Int
-idvursResponseStatus = lens _idvursResponseStatus (\ s a -> s{_idvursResponseStatus = a})
-
-instance NFData InitiateDocumentVersionUploadResponse
-         where
diff --git a/gen/Network/AWS/WorkDocs/RemoveAllResourcePermissions.hs b/gen/Network/AWS/WorkDocs/RemoveAllResourcePermissions.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/RemoveAllResourcePermissions.hs
+++ /dev/null
@@ -1,117 +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.WorkDocs.RemoveAllResourcePermissions
--- 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)
---
--- Removes all the permissions from the specified resource.
---
---
-module Network.AWS.WorkDocs.RemoveAllResourcePermissions
-    (
-    -- * Creating a Request
-      removeAllResourcePermissions
-    , RemoveAllResourcePermissions
-    -- * Request Lenses
-    , rarpAuthenticationToken
-    , rarpResourceId
-
-    -- * Destructuring the Response
-    , removeAllResourcePermissionsResponse
-    , RemoveAllResourcePermissionsResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'removeAllResourcePermissions' smart constructor.
-data RemoveAllResourcePermissions = RemoveAllResourcePermissions'
-  { _rarpAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _rarpResourceId          :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'RemoveAllResourcePermissions' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rarpAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'rarpResourceId' - The ID of the resource.
-removeAllResourcePermissions
-    :: Text -- ^ 'rarpResourceId'
-    -> RemoveAllResourcePermissions
-removeAllResourcePermissions pResourceId_ =
-  RemoveAllResourcePermissions'
-    {_rarpAuthenticationToken = Nothing, _rarpResourceId = pResourceId_}
-
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-rarpAuthenticationToken :: Lens' RemoveAllResourcePermissions (Maybe Text)
-rarpAuthenticationToken = lens _rarpAuthenticationToken (\ s a -> s{_rarpAuthenticationToken = a}) . mapping _Sensitive
-
--- | The ID of the resource.
-rarpResourceId :: Lens' RemoveAllResourcePermissions Text
-rarpResourceId = lens _rarpResourceId (\ s a -> s{_rarpResourceId = a})
-
-instance AWSRequest RemoveAllResourcePermissions
-         where
-        type Rs RemoveAllResourcePermissions =
-             RemoveAllResourcePermissionsResponse
-        request = delete workDocs
-        response
-          = receiveNull RemoveAllResourcePermissionsResponse'
-
-instance Hashable RemoveAllResourcePermissions where
-
-instance NFData RemoveAllResourcePermissions where
-
-instance ToHeaders RemoveAllResourcePermissions where
-        toHeaders RemoveAllResourcePermissions'{..}
-          = mconcat
-              ["Authentication" =# _rarpAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath RemoveAllResourcePermissions where
-        toPath RemoveAllResourcePermissions'{..}
-          = mconcat
-              ["/api/v1/resources/", toBS _rarpResourceId,
-               "/permissions"]
-
-instance ToQuery RemoveAllResourcePermissions where
-        toQuery = const mempty
-
--- | /See:/ 'removeAllResourcePermissionsResponse' smart constructor.
-data RemoveAllResourcePermissionsResponse =
-  RemoveAllResourcePermissionsResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'RemoveAllResourcePermissionsResponse' with the minimum fields required to make a request.
---
-removeAllResourcePermissionsResponse
-    :: RemoveAllResourcePermissionsResponse
-removeAllResourcePermissionsResponse = RemoveAllResourcePermissionsResponse'
-
-
-instance NFData RemoveAllResourcePermissionsResponse
-         where
diff --git a/gen/Network/AWS/WorkDocs/RemoveResourcePermission.hs b/gen/Network/AWS/WorkDocs/RemoveResourcePermission.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/RemoveResourcePermission.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.WorkDocs.RemoveResourcePermission
--- 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)
---
--- Removes the permission for the specified principal from the specified resource.
---
---
-module Network.AWS.WorkDocs.RemoveResourcePermission
-    (
-    -- * Creating a Request
-      removeResourcePermission
-    , RemoveResourcePermission
-    -- * Request Lenses
-    , rrpPrincipalType
-    , rrpAuthenticationToken
-    , rrpResourceId
-    , rrpPrincipalId
-
-    -- * Destructuring the Response
-    , removeResourcePermissionResponse
-    , RemoveResourcePermissionResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'removeResourcePermission' smart constructor.
-data RemoveResourcePermission = RemoveResourcePermission'
-  { _rrpPrincipalType       :: !(Maybe PrincipalType)
-  , _rrpAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _rrpResourceId          :: !Text
-  , _rrpPrincipalId         :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'RemoveResourcePermission' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rrpPrincipalType' - The principal type of the resource.
---
--- * 'rrpAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'rrpResourceId' - The ID of the resource.
---
--- * 'rrpPrincipalId' - The principal ID of the resource.
-removeResourcePermission
-    :: Text -- ^ 'rrpResourceId'
-    -> Text -- ^ 'rrpPrincipalId'
-    -> RemoveResourcePermission
-removeResourcePermission pResourceId_ pPrincipalId_ =
-  RemoveResourcePermission'
-    { _rrpPrincipalType = Nothing
-    , _rrpAuthenticationToken = Nothing
-    , _rrpResourceId = pResourceId_
-    , _rrpPrincipalId = pPrincipalId_
-    }
-
-
--- | The principal type of the resource.
-rrpPrincipalType :: Lens' RemoveResourcePermission (Maybe PrincipalType)
-rrpPrincipalType = lens _rrpPrincipalType (\ s a -> s{_rrpPrincipalType = a})
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-rrpAuthenticationToken :: Lens' RemoveResourcePermission (Maybe Text)
-rrpAuthenticationToken = lens _rrpAuthenticationToken (\ s a -> s{_rrpAuthenticationToken = a}) . mapping _Sensitive
-
--- | The ID of the resource.
-rrpResourceId :: Lens' RemoveResourcePermission Text
-rrpResourceId = lens _rrpResourceId (\ s a -> s{_rrpResourceId = a})
-
--- | The principal ID of the resource.
-rrpPrincipalId :: Lens' RemoveResourcePermission Text
-rrpPrincipalId = lens _rrpPrincipalId (\ s a -> s{_rrpPrincipalId = a})
-
-instance AWSRequest RemoveResourcePermission where
-        type Rs RemoveResourcePermission =
-             RemoveResourcePermissionResponse
-        request = delete workDocs
-        response
-          = receiveNull RemoveResourcePermissionResponse'
-
-instance Hashable RemoveResourcePermission where
-
-instance NFData RemoveResourcePermission where
-
-instance ToHeaders RemoveResourcePermission where
-        toHeaders RemoveResourcePermission'{..}
-          = mconcat
-              ["Authentication" =# _rrpAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToPath RemoveResourcePermission where
-        toPath RemoveResourcePermission'{..}
-          = mconcat
-              ["/api/v1/resources/", toBS _rrpResourceId,
-               "/permissions/", toBS _rrpPrincipalId]
-
-instance ToQuery RemoveResourcePermission where
-        toQuery RemoveResourcePermission'{..}
-          = mconcat ["type" =: _rrpPrincipalType]
-
--- | /See:/ 'removeResourcePermissionResponse' smart constructor.
-data RemoveResourcePermissionResponse =
-  RemoveResourcePermissionResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'RemoveResourcePermissionResponse' with the minimum fields required to make a request.
---
-removeResourcePermissionResponse
-    :: RemoveResourcePermissionResponse
-removeResourcePermissionResponse = RemoveResourcePermissionResponse'
-
-
-instance NFData RemoveResourcePermissionResponse
-         where
diff --git a/gen/Network/AWS/WorkDocs/Types.hs b/gen/Network/AWS/WorkDocs/Types.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/Types.hs
+++ /dev/null
@@ -1,542 +0,0 @@
-{-# LANGUAGE OverloadedStrings #-}
-
--- Derived from AWS service descriptions, licensed under Apache 2.0.
-
--- |
--- Module      : Network.AWS.WorkDocs.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.WorkDocs.Types
-    (
-    -- * Service Configuration
-      workDocs
-
-    -- * Errors
-    , _CustomMetadataLimitExceededException
-    , _EntityAlreadyExistsException
-    , _ResourceAlreadyCheckedOutException
-    , _ProhibitedStateException
-    , _TooManyLabelsException
-    , _InvalidArgumentException
-    , _UnauthorizedResourceAccessException
-    , _TooManySubscriptionsException
-    , _FailedDependencyException
-    , _DocumentLockedForCommentsException
-    , _EntityNotExistsException
-    , _DeactivatingLastSystemUserException
-    , _IllegalUserStateException
-    , _StorageLimitWillExceedException
-    , _ConcurrentModificationException
-    , _StorageLimitExceededException
-    , _ServiceUnavailableException
-    , _InvalidOperationException
-    , _UnauthorizedOperationException
-    , _DraftUploadOutOfSyncException
-    , _LimitExceededException
-    , _InvalidPasswordException
-
-    -- * ActivityType
-    , ActivityType (..)
-
-    -- * BooleanEnumType
-    , BooleanEnumType (..)
-
-    -- * CommentStatusType
-    , CommentStatusType (..)
-
-    -- * CommentVisibilityType
-    , CommentVisibilityType (..)
-
-    -- * DocumentSourceType
-    , DocumentSourceType (..)
-
-    -- * DocumentStatusType
-    , DocumentStatusType (..)
-
-    -- * DocumentThumbnailType
-    , DocumentThumbnailType (..)
-
-    -- * DocumentVersionStatus
-    , DocumentVersionStatus (..)
-
-    -- * FolderContentType
-    , FolderContentType (..)
-
-    -- * LocaleType
-    , LocaleType (..)
-
-    -- * OrderType
-    , OrderType (..)
-
-    -- * PrincipalType
-    , PrincipalType (..)
-
-    -- * ResourceSortType
-    , ResourceSortType (..)
-
-    -- * ResourceStateType
-    , ResourceStateType (..)
-
-    -- * ResourceType
-    , ResourceType (..)
-
-    -- * RolePermissionType
-    , RolePermissionType (..)
-
-    -- * RoleType
-    , RoleType (..)
-
-    -- * ShareStatusType
-    , ShareStatusType (..)
-
-    -- * StorageType
-    , StorageType (..)
-
-    -- * SubscriptionProtocolType
-    , SubscriptionProtocolType (..)
-
-    -- * SubscriptionType
-    , SubscriptionType (..)
-
-    -- * UserFilterType
-    , UserFilterType (..)
-
-    -- * UserSortType
-    , UserSortType (..)
-
-    -- * UserStatusType
-    , UserStatusType (..)
-
-    -- * UserType
-    , UserType (..)
-
-    -- * Activity
-    , Activity
-    , activity
-    , aResourceMetadata
-    , aInitiator
-    , aParticipants
-    , aOriginalParent
-    , aType
-    , aCommentMetadata
-    , aTimeStamp
-    , aOrganizationId
-
-    -- * Comment
-    , Comment
-    , comment
-    , cStatus
-    , cText
-    , cVisibility
-    , cThreadId
-    , cContributor
-    , cCreatedTimestamp
-    , cRecipientId
-    , cParentId
-    , cCommentId
-
-    -- * CommentMetadata
-    , CommentMetadata
-    , commentMetadata
-    , cmCommentStatus
-    , cmContributor
-    , cmCommentId
-    , cmCreatedTimestamp
-    , cmRecipientId
-
-    -- * DocumentMetadata
-    , DocumentMetadata
-    , documentMetadata
-    , dmLatestVersionMetadata
-    , dmParentFolderId
-    , dmModifiedTimestamp
-    , dmId
-    , dmLabels
-    , dmResourceState
-    , dmCreatedTimestamp
-    , dmCreatorId
-
-    -- * DocumentVersionMetadata
-    , DocumentVersionMetadata
-    , documentVersionMetadata
-    , dvmThumbnail
-    , dvmStatus
-    , dvmSignature
-    , dvmContentCreatedTimestamp
-    , dvmSize
-    , dvmName
-    , dvmModifiedTimestamp
-    , dvmSource
-    , dvmId
-    , dvmCreatedTimestamp
-    , dvmContentModifiedTimestamp
-    , dvmCreatorId
-    , dvmContentType
-
-    -- * FolderMetadata
-    , FolderMetadata
-    , folderMetadata
-    , fmSignature
-    , fmParentFolderId
-    , fmSize
-    , fmLatestVersionSize
-    , fmName
-    , fmModifiedTimestamp
-    , fmId
-    , fmLabels
-    , fmResourceState
-    , fmCreatedTimestamp
-    , fmCreatorId
-
-    -- * GroupMetadata
-    , GroupMetadata
-    , groupMetadata
-    , gmName
-    , gmId
-
-    -- * NotificationOptions
-    , NotificationOptions
-    , notificationOptions
-    , noEmailMessage
-    , noSendEmail
-
-    -- * Participants
-    , Participants
-    , participants
-    , pGroups
-    , pUsers
-
-    -- * PermissionInfo
-    , PermissionInfo
-    , permissionInfo
-    , piRole
-    , piType
-
-    -- * Principal
-    , Principal
-    , principal
-    , pRoles
-    , pId
-    , pType
-
-    -- * ResourceMetadata
-    , ResourceMetadata
-    , resourceMetadata
-    , rmVersionId
-    , rmOwner
-    , rmName
-    , rmId
-    , rmType
-    , rmOriginalName
-    , rmParentId
-
-    -- * ResourcePath
-    , ResourcePath
-    , resourcePath
-    , rpComponents
-
-    -- * ResourcePathComponent
-    , ResourcePathComponent
-    , resourcePathComponent
-    , rpcName
-    , rpcId
-
-    -- * SharePrincipal
-    , SharePrincipal
-    , sharePrincipal
-    , spId
-    , spType
-    , spRole
-
-    -- * ShareResult
-    , ShareResult
-    , shareResult
-    , srStatus
-    , srPrincipalId
-    , srRole
-    , srStatusMessage
-    , srShareId
-
-    -- * StorageRuleType
-    , StorageRuleType
-    , storageRuleType
-    , srtStorageAllocatedInBytes
-    , srtStorageType
-
-    -- * Subscription
-    , Subscription
-    , subscription
-    , sProtocol
-    , sEndPoint
-    , sSubscriptionId
-
-    -- * UploadMetadata
-    , UploadMetadata
-    , uploadMetadata
-    , umUploadURL
-    , umSignedHeaders
-
-    -- * User
-    , User
-    , user
-    , uGivenName
-    , uStatus
-    , uLocale
-    , uUsername
-    , uStorage
-    , uModifiedTimestamp
-    , uEmailAddress
-    , uId
-    , uRootFolderId
-    , uType
-    , uSurname
-    , uTimeZoneId
-    , uCreatedTimestamp
-    , uOrganizationId
-    , uRecycleBinFolderId
-
-    -- * UserMetadata
-    , UserMetadata
-    , userMetadata
-    , umGivenName
-    , umUsername
-    , umEmailAddress
-    , umId
-    , umSurname
-
-    -- * UserStorageMetadata
-    , UserStorageMetadata
-    , userStorageMetadata
-    , usmStorageUtilizedInBytes
-    , usmStorageRule
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Sign.V4
-import Network.AWS.WorkDocs.Types.Product
-import Network.AWS.WorkDocs.Types.Sum
-
--- | API version @2016-05-01@ of the Amazon WorkDocs SDK configuration.
-workDocs :: Service
-workDocs =
-  Service
-    { _svcAbbrev = "WorkDocs"
-    , _svcSigner = v4
-    , _svcPrefix = "workdocs"
-    , _svcVersion = "2016-05-01"
-    , _svcEndpoint = defaultEndpoint workDocs
-    , _svcTimeout = Just 70
-    , _svcCheck = statusSuccess
-    , _svcError = parseJSONError "WorkDocs"
-    , _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
-
-
--- | The limit has been reached on the number of custom properties for the specified resource.
---
---
-_CustomMetadataLimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
-_CustomMetadataLimitExceededException =
-  _MatchServiceError workDocs "CustomMetadataLimitExceededException" .
-  hasStatus 429
-
-
--- | The resource already exists.
---
---
-_EntityAlreadyExistsException :: AsError a => Getting (First ServiceError) a ServiceError
-_EntityAlreadyExistsException =
-  _MatchServiceError workDocs "EntityAlreadyExistsException" . hasStatus 409
-
-
--- | The resource is already checked out.
---
---
-_ResourceAlreadyCheckedOutException :: AsError a => Getting (First ServiceError) a ServiceError
-_ResourceAlreadyCheckedOutException =
-  _MatchServiceError workDocs "ResourceAlreadyCheckedOutException" .
-  hasStatus 409
-
-
--- | The specified document version is not in the INITIALIZED state.
---
---
-_ProhibitedStateException :: AsError a => Getting (First ServiceError) a ServiceError
-_ProhibitedStateException =
-  _MatchServiceError workDocs "ProhibitedStateException" . hasStatus 409
-
-
--- | The limit has been reached on the number of labels for the specified resource.
---
---
-_TooManyLabelsException :: AsError a => Getting (First ServiceError) a ServiceError
-_TooManyLabelsException =
-  _MatchServiceError workDocs "TooManyLabelsException" . hasStatus 429
-
-
--- | The pagination marker or limit fields are not valid.
---
---
-_InvalidArgumentException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidArgumentException =
-  _MatchServiceError workDocs "InvalidArgumentException" . hasStatus 400
-
-
--- | The caller does not have access to perform the action on the resource.
---
---
-_UnauthorizedResourceAccessException :: AsError a => Getting (First ServiceError) a ServiceError
-_UnauthorizedResourceAccessException =
-  _MatchServiceError workDocs "UnauthorizedResourceAccessException" .
-  hasStatus 404
-
-
--- | You've reached the limit on the number of subscriptions for the WorkDocs instance.
---
---
-_TooManySubscriptionsException :: AsError a => Getting (First ServiceError) a ServiceError
-_TooManySubscriptionsException =
-  _MatchServiceError workDocs "TooManySubscriptionsException" . hasStatus 429
-
-
--- | The AWS Directory Service cannot reach an on-premises instance. Or a dependency under the control of the organization is failing, such as a connected Active Directory.
---
---
-_FailedDependencyException :: AsError a => Getting (First ServiceError) a ServiceError
-_FailedDependencyException =
-  _MatchServiceError workDocs "FailedDependencyException" . hasStatus 424
-
-
--- | This exception is thrown when the document is locked for comments and user tries to create or delete a comment on that document.
---
---
-_DocumentLockedForCommentsException :: AsError a => Getting (First ServiceError) a ServiceError
-_DocumentLockedForCommentsException =
-  _MatchServiceError workDocs "DocumentLockedForCommentsException" .
-  hasStatus 409
-
-
--- | The resource does not exist.
---
---
-_EntityNotExistsException :: AsError a => Getting (First ServiceError) a ServiceError
-_EntityNotExistsException =
-  _MatchServiceError workDocs "EntityNotExistsException" . hasStatus 404
-
-
--- | The last user in the organization is being deactivated.
---
---
-_DeactivatingLastSystemUserException :: AsError a => Getting (First ServiceError) a ServiceError
-_DeactivatingLastSystemUserException =
-  _MatchServiceError workDocs "DeactivatingLastSystemUserException" .
-  hasStatus 409
-
-
--- | The user is undergoing transfer of ownership.
---
---
-_IllegalUserStateException :: AsError a => Getting (First ServiceError) a ServiceError
-_IllegalUserStateException =
-  _MatchServiceError workDocs "IllegalUserStateException" . hasStatus 409
-
-
--- | The storage limit will be exceeded.
---
---
-_StorageLimitWillExceedException :: AsError a => Getting (First ServiceError) a ServiceError
-_StorageLimitWillExceedException =
-  _MatchServiceError workDocs "StorageLimitWillExceedException" . hasStatus 413
-
-
--- | The resource hierarchy is changing.
---
---
-_ConcurrentModificationException :: AsError a => Getting (First ServiceError) a ServiceError
-_ConcurrentModificationException =
-  _MatchServiceError workDocs "ConcurrentModificationException" . hasStatus 409
-
-
--- | The storage limit has been exceeded.
---
---
-_StorageLimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
-_StorageLimitExceededException =
-  _MatchServiceError workDocs "StorageLimitExceededException" . hasStatus 409
-
-
--- | One or more of the dependencies is unavailable.
---
---
-_ServiceUnavailableException :: AsError a => Getting (First ServiceError) a ServiceError
-_ServiceUnavailableException =
-  _MatchServiceError workDocs "ServiceUnavailableException" . hasStatus 503
-
-
--- | The operation is invalid.
---
---
-_InvalidOperationException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidOperationException =
-  _MatchServiceError workDocs "InvalidOperationException" . hasStatus 405
-
-
--- | The operation is not permitted.
---
---
-_UnauthorizedOperationException :: AsError a => Getting (First ServiceError) a ServiceError
-_UnauthorizedOperationException =
-  _MatchServiceError workDocs "UnauthorizedOperationException" . hasStatus 403
-
-
--- | This exception is thrown when a valid checkout ID is not presented on document version upload calls for a document that has been checked out from Web client.
---
---
-_DraftUploadOutOfSyncException :: AsError a => Getting (First ServiceError) a ServiceError
-_DraftUploadOutOfSyncException =
-  _MatchServiceError workDocs "DraftUploadOutOfSyncException" . hasStatus 409
-
-
--- | The maximum of 100,000 folders under the parent folder has been exceeded.
---
---
-_LimitExceededException :: AsError a => Getting (First ServiceError) a ServiceError
-_LimitExceededException =
-  _MatchServiceError workDocs "LimitExceededException" . hasStatus 409
-
-
--- | The password is invalid.
---
---
-_InvalidPasswordException :: AsError a => Getting (First ServiceError) a ServiceError
-_InvalidPasswordException =
-  _MatchServiceError workDocs "InvalidPasswordException" . hasStatus 401
-
diff --git a/gen/Network/AWS/WorkDocs/Types/Product.hs b/gen/Network/AWS/WorkDocs/Types/Product.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/Types/Product.hs
+++ /dev/null
@@ -1,1621 +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.WorkDocs.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.WorkDocs.Types.Product where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.WorkDocs.Types.Sum
-
--- | Describes the activity information.
---
---
---
--- /See:/ 'activity' smart constructor.
-data Activity = Activity'
-  { _aResourceMetadata :: !(Maybe ResourceMetadata)
-  , _aInitiator        :: !(Maybe UserMetadata)
-  , _aParticipants     :: !(Maybe Participants)
-  , _aOriginalParent   :: !(Maybe ResourceMetadata)
-  , _aType             :: !(Maybe ActivityType)
-  , _aCommentMetadata  :: !(Maybe CommentMetadata)
-  , _aTimeStamp        :: !(Maybe POSIX)
-  , _aOrganizationId   :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Activity' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aResourceMetadata' - The metadata of the resource involved in the user action.
---
--- * 'aInitiator' - The user who performed the action.
---
--- * 'aParticipants' - The list of users or groups impacted by this action. This is an optional field and is filled for the following sharing activities: DOCUMENT_SHARED, DOCUMENT_SHARED, DOCUMENT_UNSHARED, FOLDER_SHARED, FOLDER_UNSHARED.
---
--- * 'aOriginalParent' - The original parent of the resource. This is an optional field and is filled for move activities.
---
--- * 'aType' - The activity type.
---
--- * 'aCommentMetadata' - Metadata of the commenting activity. This is an optional field and is filled for commenting activities.
---
--- * 'aTimeStamp' - The timestamp when the action was performed.
---
--- * 'aOrganizationId' - The ID of the organization.
-activity
-    :: Activity
-activity =
-  Activity'
-    { _aResourceMetadata = Nothing
-    , _aInitiator = Nothing
-    , _aParticipants = Nothing
-    , _aOriginalParent = Nothing
-    , _aType = Nothing
-    , _aCommentMetadata = Nothing
-    , _aTimeStamp = Nothing
-    , _aOrganizationId = Nothing
-    }
-
-
--- | The metadata of the resource involved in the user action.
-aResourceMetadata :: Lens' Activity (Maybe ResourceMetadata)
-aResourceMetadata = lens _aResourceMetadata (\ s a -> s{_aResourceMetadata = a})
-
--- | The user who performed the action.
-aInitiator :: Lens' Activity (Maybe UserMetadata)
-aInitiator = lens _aInitiator (\ s a -> s{_aInitiator = a})
-
--- | The list of users or groups impacted by this action. This is an optional field and is filled for the following sharing activities: DOCUMENT_SHARED, DOCUMENT_SHARED, DOCUMENT_UNSHARED, FOLDER_SHARED, FOLDER_UNSHARED.
-aParticipants :: Lens' Activity (Maybe Participants)
-aParticipants = lens _aParticipants (\ s a -> s{_aParticipants = a})
-
--- | The original parent of the resource. This is an optional field and is filled for move activities.
-aOriginalParent :: Lens' Activity (Maybe ResourceMetadata)
-aOriginalParent = lens _aOriginalParent (\ s a -> s{_aOriginalParent = a})
-
--- | The activity type.
-aType :: Lens' Activity (Maybe ActivityType)
-aType = lens _aType (\ s a -> s{_aType = a})
-
--- | Metadata of the commenting activity. This is an optional field and is filled for commenting activities.
-aCommentMetadata :: Lens' Activity (Maybe CommentMetadata)
-aCommentMetadata = lens _aCommentMetadata (\ s a -> s{_aCommentMetadata = a})
-
--- | The timestamp when the action was performed.
-aTimeStamp :: Lens' Activity (Maybe UTCTime)
-aTimeStamp = lens _aTimeStamp (\ s a -> s{_aTimeStamp = a}) . mapping _Time
-
--- | The ID of the organization.
-aOrganizationId :: Lens' Activity (Maybe Text)
-aOrganizationId = lens _aOrganizationId (\ s a -> s{_aOrganizationId = a})
-
-instance FromJSON Activity where
-        parseJSON
-          = withObject "Activity"
-              (\ x ->
-                 Activity' <$>
-                   (x .:? "ResourceMetadata") <*> (x .:? "Initiator")
-                     <*> (x .:? "Participants")
-                     <*> (x .:? "OriginalParent")
-                     <*> (x .:? "Type")
-                     <*> (x .:? "CommentMetadata")
-                     <*> (x .:? "TimeStamp")
-                     <*> (x .:? "OrganizationId"))
-
-instance Hashable Activity where
-
-instance NFData Activity where
-
--- | Describes a comment.
---
---
---
--- /See:/ 'comment' smart constructor.
-data Comment = Comment'
-  { _cStatus           :: !(Maybe CommentStatusType)
-  , _cText             :: !(Maybe (Sensitive Text))
-  , _cVisibility       :: !(Maybe CommentVisibilityType)
-  , _cThreadId         :: !(Maybe Text)
-  , _cContributor      :: !(Maybe User)
-  , _cCreatedTimestamp :: !(Maybe POSIX)
-  , _cRecipientId      :: !(Maybe Text)
-  , _cParentId         :: !(Maybe Text)
-  , _cCommentId        :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Comment' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cStatus' - The status of the comment.
---
--- * 'cText' - The text of the comment.
---
--- * 'cVisibility' - The visibility of the comment. Options are either PRIVATE, where the comment is visible only to the comment author and document owner and co-owners, or PUBLIC, where the comment is visible to document owners, co-owners, and contributors.
---
--- * 'cThreadId' - The ID of the root comment in the thread.
---
--- * 'cContributor' - The details of the user who made the comment.
---
--- * 'cCreatedTimestamp' - The time that the comment was created.
---
--- * 'cRecipientId' - If the comment is a reply to another user's comment, this field contains the user ID of the user being replied to.
---
--- * 'cParentId' - The ID of the parent comment.
---
--- * 'cCommentId' - The ID of the comment.
-comment
-    :: Text -- ^ 'cCommentId'
-    -> Comment
-comment pCommentId_ =
-  Comment'
-    { _cStatus = Nothing
-    , _cText = Nothing
-    , _cVisibility = Nothing
-    , _cThreadId = Nothing
-    , _cContributor = Nothing
-    , _cCreatedTimestamp = Nothing
-    , _cRecipientId = Nothing
-    , _cParentId = Nothing
-    , _cCommentId = pCommentId_
-    }
-
-
--- | The status of the comment.
-cStatus :: Lens' Comment (Maybe CommentStatusType)
-cStatus = lens _cStatus (\ s a -> s{_cStatus = a})
-
--- | The text of the comment.
-cText :: Lens' Comment (Maybe Text)
-cText = lens _cText (\ s a -> s{_cText = a}) . mapping _Sensitive
-
--- | The visibility of the comment. Options are either PRIVATE, where the comment is visible only to the comment author and document owner and co-owners, or PUBLIC, where the comment is visible to document owners, co-owners, and contributors.
-cVisibility :: Lens' Comment (Maybe CommentVisibilityType)
-cVisibility = lens _cVisibility (\ s a -> s{_cVisibility = a})
-
--- | The ID of the root comment in the thread.
-cThreadId :: Lens' Comment (Maybe Text)
-cThreadId = lens _cThreadId (\ s a -> s{_cThreadId = a})
-
--- | The details of the user who made the comment.
-cContributor :: Lens' Comment (Maybe User)
-cContributor = lens _cContributor (\ s a -> s{_cContributor = a})
-
--- | The time that the comment was created.
-cCreatedTimestamp :: Lens' Comment (Maybe UTCTime)
-cCreatedTimestamp = lens _cCreatedTimestamp (\ s a -> s{_cCreatedTimestamp = a}) . mapping _Time
-
--- | If the comment is a reply to another user's comment, this field contains the user ID of the user being replied to.
-cRecipientId :: Lens' Comment (Maybe Text)
-cRecipientId = lens _cRecipientId (\ s a -> s{_cRecipientId = a})
-
--- | The ID of the parent comment.
-cParentId :: Lens' Comment (Maybe Text)
-cParentId = lens _cParentId (\ s a -> s{_cParentId = a})
-
--- | The ID of the comment.
-cCommentId :: Lens' Comment Text
-cCommentId = lens _cCommentId (\ s a -> s{_cCommentId = a})
-
-instance FromJSON Comment where
-        parseJSON
-          = withObject "Comment"
-              (\ x ->
-                 Comment' <$>
-                   (x .:? "Status") <*> (x .:? "Text") <*>
-                     (x .:? "Visibility")
-                     <*> (x .:? "ThreadId")
-                     <*> (x .:? "Contributor")
-                     <*> (x .:? "CreatedTimestamp")
-                     <*> (x .:? "RecipientId")
-                     <*> (x .:? "ParentId")
-                     <*> (x .: "CommentId"))
-
-instance Hashable Comment where
-
-instance NFData Comment where
-
--- | Describes the metadata of a comment.
---
---
---
--- /See:/ 'commentMetadata' smart constructor.
-data CommentMetadata = CommentMetadata'
-  { _cmCommentStatus    :: !(Maybe CommentStatusType)
-  , _cmContributor      :: !(Maybe User)
-  , _cmCommentId        :: !(Maybe Text)
-  , _cmCreatedTimestamp :: !(Maybe POSIX)
-  , _cmRecipientId      :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'CommentMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cmCommentStatus' - The status of the comment.
---
--- * 'cmContributor' - The user who made the comment.
---
--- * 'cmCommentId' - The ID of the comment.
---
--- * 'cmCreatedTimestamp' - The timestamp that the comment was created.
---
--- * 'cmRecipientId' - The ID of the user being replied to.
-commentMetadata
-    :: CommentMetadata
-commentMetadata =
-  CommentMetadata'
-    { _cmCommentStatus = Nothing
-    , _cmContributor = Nothing
-    , _cmCommentId = Nothing
-    , _cmCreatedTimestamp = Nothing
-    , _cmRecipientId = Nothing
-    }
-
-
--- | The status of the comment.
-cmCommentStatus :: Lens' CommentMetadata (Maybe CommentStatusType)
-cmCommentStatus = lens _cmCommentStatus (\ s a -> s{_cmCommentStatus = a})
-
--- | The user who made the comment.
-cmContributor :: Lens' CommentMetadata (Maybe User)
-cmContributor = lens _cmContributor (\ s a -> s{_cmContributor = a})
-
--- | The ID of the comment.
-cmCommentId :: Lens' CommentMetadata (Maybe Text)
-cmCommentId = lens _cmCommentId (\ s a -> s{_cmCommentId = a})
-
--- | The timestamp that the comment was created.
-cmCreatedTimestamp :: Lens' CommentMetadata (Maybe UTCTime)
-cmCreatedTimestamp = lens _cmCreatedTimestamp (\ s a -> s{_cmCreatedTimestamp = a}) . mapping _Time
-
--- | The ID of the user being replied to.
-cmRecipientId :: Lens' CommentMetadata (Maybe Text)
-cmRecipientId = lens _cmRecipientId (\ s a -> s{_cmRecipientId = a})
-
-instance FromJSON CommentMetadata where
-        parseJSON
-          = withObject "CommentMetadata"
-              (\ x ->
-                 CommentMetadata' <$>
-                   (x .:? "CommentStatus") <*> (x .:? "Contributor") <*>
-                     (x .:? "CommentId")
-                     <*> (x .:? "CreatedTimestamp")
-                     <*> (x .:? "RecipientId"))
-
-instance Hashable CommentMetadata where
-
-instance NFData CommentMetadata where
-
--- | Describes the document.
---
---
---
--- /See:/ 'documentMetadata' smart constructor.
-data DocumentMetadata = DocumentMetadata'
-  { _dmLatestVersionMetadata :: !(Maybe DocumentVersionMetadata)
-  , _dmParentFolderId        :: !(Maybe Text)
-  , _dmModifiedTimestamp     :: !(Maybe POSIX)
-  , _dmId                    :: !(Maybe Text)
-  , _dmLabels                :: !(Maybe [Text])
-  , _dmResourceState         :: !(Maybe ResourceStateType)
-  , _dmCreatedTimestamp      :: !(Maybe POSIX)
-  , _dmCreatorId             :: !(Maybe Text)
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DocumentMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dmLatestVersionMetadata' - The latest version of the document.
---
--- * 'dmParentFolderId' - The ID of the parent folder.
---
--- * 'dmModifiedTimestamp' - The time when the document was updated.
---
--- * 'dmId' - The ID of the document.
---
--- * 'dmLabels' - List of labels on the document.
---
--- * 'dmResourceState' - The resource state.
---
--- * 'dmCreatedTimestamp' - The time when the document was created.
---
--- * 'dmCreatorId' - The ID of the creator.
-documentMetadata
-    :: DocumentMetadata
-documentMetadata =
-  DocumentMetadata'
-    { _dmLatestVersionMetadata = Nothing
-    , _dmParentFolderId = Nothing
-    , _dmModifiedTimestamp = Nothing
-    , _dmId = Nothing
-    , _dmLabels = Nothing
-    , _dmResourceState = Nothing
-    , _dmCreatedTimestamp = Nothing
-    , _dmCreatorId = Nothing
-    }
-
-
--- | The latest version of the document.
-dmLatestVersionMetadata :: Lens' DocumentMetadata (Maybe DocumentVersionMetadata)
-dmLatestVersionMetadata = lens _dmLatestVersionMetadata (\ s a -> s{_dmLatestVersionMetadata = a})
-
--- | The ID of the parent folder.
-dmParentFolderId :: Lens' DocumentMetadata (Maybe Text)
-dmParentFolderId = lens _dmParentFolderId (\ s a -> s{_dmParentFolderId = a})
-
--- | The time when the document was updated.
-dmModifiedTimestamp :: Lens' DocumentMetadata (Maybe UTCTime)
-dmModifiedTimestamp = lens _dmModifiedTimestamp (\ s a -> s{_dmModifiedTimestamp = a}) . mapping _Time
-
--- | The ID of the document.
-dmId :: Lens' DocumentMetadata (Maybe Text)
-dmId = lens _dmId (\ s a -> s{_dmId = a})
-
--- | List of labels on the document.
-dmLabels :: Lens' DocumentMetadata [Text]
-dmLabels = lens _dmLabels (\ s a -> s{_dmLabels = a}) . _Default . _Coerce
-
--- | The resource state.
-dmResourceState :: Lens' DocumentMetadata (Maybe ResourceStateType)
-dmResourceState = lens _dmResourceState (\ s a -> s{_dmResourceState = a})
-
--- | The time when the document was created.
-dmCreatedTimestamp :: Lens' DocumentMetadata (Maybe UTCTime)
-dmCreatedTimestamp = lens _dmCreatedTimestamp (\ s a -> s{_dmCreatedTimestamp = a}) . mapping _Time
-
--- | The ID of the creator.
-dmCreatorId :: Lens' DocumentMetadata (Maybe Text)
-dmCreatorId = lens _dmCreatorId (\ s a -> s{_dmCreatorId = a})
-
-instance FromJSON DocumentMetadata where
-        parseJSON
-          = withObject "DocumentMetadata"
-              (\ x ->
-                 DocumentMetadata' <$>
-                   (x .:? "LatestVersionMetadata") <*>
-                     (x .:? "ParentFolderId")
-                     <*> (x .:? "ModifiedTimestamp")
-                     <*> (x .:? "Id")
-                     <*> (x .:? "Labels" .!= mempty)
-                     <*> (x .:? "ResourceState")
-                     <*> (x .:? "CreatedTimestamp")
-                     <*> (x .:? "CreatorId"))
-
-instance Hashable DocumentMetadata where
-
-instance NFData DocumentMetadata where
-
--- | Describes a version of a document.
---
---
---
--- /See:/ 'documentVersionMetadata' smart constructor.
-data DocumentVersionMetadata = DocumentVersionMetadata'
-  { _dvmThumbnail :: !(Maybe (Map DocumentThumbnailType (Sensitive Text)))
-  , _dvmStatus :: !(Maybe DocumentStatusType)
-  , _dvmSignature :: !(Maybe Text)
-  , _dvmContentCreatedTimestamp :: !(Maybe POSIX)
-  , _dvmSize :: !(Maybe Integer)
-  , _dvmName :: !(Maybe Text)
-  , _dvmModifiedTimestamp :: !(Maybe POSIX)
-  , _dvmSource :: !(Maybe (Map DocumentSourceType (Sensitive Text)))
-  , _dvmId :: !(Maybe Text)
-  , _dvmCreatedTimestamp :: !(Maybe POSIX)
-  , _dvmContentModifiedTimestamp :: !(Maybe POSIX)
-  , _dvmCreatorId :: !(Maybe Text)
-  , _dvmContentType :: !(Maybe Text)
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'DocumentVersionMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'dvmThumbnail' - The thumbnail of the document.
---
--- * 'dvmStatus' - The status of the document.
---
--- * 'dvmSignature' - The signature of the document.
---
--- * 'dvmContentCreatedTimestamp' - The timestamp when the content of the document was originally created.
---
--- * 'dvmSize' - The size of the document, in bytes.
---
--- * 'dvmName' - The name of the version.
---
--- * 'dvmModifiedTimestamp' - The timestamp when the document was last uploaded.
---
--- * 'dvmSource' - The source of the document.
---
--- * 'dvmId' - The ID of the version.
---
--- * 'dvmCreatedTimestamp' - The timestamp when the document was first uploaded.
---
--- * 'dvmContentModifiedTimestamp' - The timestamp when the content of the document was modified.
---
--- * 'dvmCreatorId' - The ID of the creator.
---
--- * 'dvmContentType' - The content type of the document.
-documentVersionMetadata
-    :: DocumentVersionMetadata
-documentVersionMetadata =
-  DocumentVersionMetadata'
-    { _dvmThumbnail = Nothing
-    , _dvmStatus = Nothing
-    , _dvmSignature = Nothing
-    , _dvmContentCreatedTimestamp = Nothing
-    , _dvmSize = Nothing
-    , _dvmName = Nothing
-    , _dvmModifiedTimestamp = Nothing
-    , _dvmSource = Nothing
-    , _dvmId = Nothing
-    , _dvmCreatedTimestamp = Nothing
-    , _dvmContentModifiedTimestamp = Nothing
-    , _dvmCreatorId = Nothing
-    , _dvmContentType = Nothing
-    }
-
-
--- | The thumbnail of the document.
-dvmThumbnail :: Lens' DocumentVersionMetadata (HashMap DocumentThumbnailType Text)
-dvmThumbnail = lens _dvmThumbnail (\ s a -> s{_dvmThumbnail = a}) . _Default . _Map
-
--- | The status of the document.
-dvmStatus :: Lens' DocumentVersionMetadata (Maybe DocumentStatusType)
-dvmStatus = lens _dvmStatus (\ s a -> s{_dvmStatus = a})
-
--- | The signature of the document.
-dvmSignature :: Lens' DocumentVersionMetadata (Maybe Text)
-dvmSignature = lens _dvmSignature (\ s a -> s{_dvmSignature = a})
-
--- | The timestamp when the content of the document was originally created.
-dvmContentCreatedTimestamp :: Lens' DocumentVersionMetadata (Maybe UTCTime)
-dvmContentCreatedTimestamp = lens _dvmContentCreatedTimestamp (\ s a -> s{_dvmContentCreatedTimestamp = a}) . mapping _Time
-
--- | The size of the document, in bytes.
-dvmSize :: Lens' DocumentVersionMetadata (Maybe Integer)
-dvmSize = lens _dvmSize (\ s a -> s{_dvmSize = a})
-
--- | The name of the version.
-dvmName :: Lens' DocumentVersionMetadata (Maybe Text)
-dvmName = lens _dvmName (\ s a -> s{_dvmName = a})
-
--- | The timestamp when the document was last uploaded.
-dvmModifiedTimestamp :: Lens' DocumentVersionMetadata (Maybe UTCTime)
-dvmModifiedTimestamp = lens _dvmModifiedTimestamp (\ s a -> s{_dvmModifiedTimestamp = a}) . mapping _Time
-
--- | The source of the document.
-dvmSource :: Lens' DocumentVersionMetadata (HashMap DocumentSourceType Text)
-dvmSource = lens _dvmSource (\ s a -> s{_dvmSource = a}) . _Default . _Map
-
--- | The ID of the version.
-dvmId :: Lens' DocumentVersionMetadata (Maybe Text)
-dvmId = lens _dvmId (\ s a -> s{_dvmId = a})
-
--- | The timestamp when the document was first uploaded.
-dvmCreatedTimestamp :: Lens' DocumentVersionMetadata (Maybe UTCTime)
-dvmCreatedTimestamp = lens _dvmCreatedTimestamp (\ s a -> s{_dvmCreatedTimestamp = a}) . mapping _Time
-
--- | The timestamp when the content of the document was modified.
-dvmContentModifiedTimestamp :: Lens' DocumentVersionMetadata (Maybe UTCTime)
-dvmContentModifiedTimestamp = lens _dvmContentModifiedTimestamp (\ s a -> s{_dvmContentModifiedTimestamp = a}) . mapping _Time
-
--- | The ID of the creator.
-dvmCreatorId :: Lens' DocumentVersionMetadata (Maybe Text)
-dvmCreatorId = lens _dvmCreatorId (\ s a -> s{_dvmCreatorId = a})
-
--- | The content type of the document.
-dvmContentType :: Lens' DocumentVersionMetadata (Maybe Text)
-dvmContentType = lens _dvmContentType (\ s a -> s{_dvmContentType = a})
-
-instance FromJSON DocumentVersionMetadata where
-        parseJSON
-          = withObject "DocumentVersionMetadata"
-              (\ x ->
-                 DocumentVersionMetadata' <$>
-                   (x .:? "Thumbnail" .!= mempty) <*> (x .:? "Status")
-                     <*> (x .:? "Signature")
-                     <*> (x .:? "ContentCreatedTimestamp")
-                     <*> (x .:? "Size")
-                     <*> (x .:? "Name")
-                     <*> (x .:? "ModifiedTimestamp")
-                     <*> (x .:? "Source" .!= mempty)
-                     <*> (x .:? "Id")
-                     <*> (x .:? "CreatedTimestamp")
-                     <*> (x .:? "ContentModifiedTimestamp")
-                     <*> (x .:? "CreatorId")
-                     <*> (x .:? "ContentType"))
-
-instance Hashable DocumentVersionMetadata where
-
-instance NFData DocumentVersionMetadata where
-
--- | Describes a folder.
---
---
---
--- /See:/ 'folderMetadata' smart constructor.
-data FolderMetadata = FolderMetadata'
-  { _fmSignature         :: !(Maybe Text)
-  , _fmParentFolderId    :: !(Maybe Text)
-  , _fmSize              :: !(Maybe Integer)
-  , _fmLatestVersionSize :: !(Maybe Integer)
-  , _fmName              :: !(Maybe Text)
-  , _fmModifiedTimestamp :: !(Maybe POSIX)
-  , _fmId                :: !(Maybe Text)
-  , _fmLabels            :: !(Maybe [Text])
-  , _fmResourceState     :: !(Maybe ResourceStateType)
-  , _fmCreatedTimestamp  :: !(Maybe POSIX)
-  , _fmCreatorId         :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'FolderMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fmSignature' - The unique identifier created from the subfolders and documents of the folder.
---
--- * 'fmParentFolderId' - The ID of the parent folder.
---
--- * 'fmSize' - The size of the folder metadata.
---
--- * 'fmLatestVersionSize' - The size of the latest version of the folder metadata.
---
--- * 'fmName' - The name of the folder.
---
--- * 'fmModifiedTimestamp' - The time when the folder was updated.
---
--- * 'fmId' - The ID of the folder.
---
--- * 'fmLabels' - List of labels on the folder.
---
--- * 'fmResourceState' - The resource state of the folder.
---
--- * 'fmCreatedTimestamp' - The time when the folder was created.
---
--- * 'fmCreatorId' - The ID of the creator.
-folderMetadata
-    :: FolderMetadata
-folderMetadata =
-  FolderMetadata'
-    { _fmSignature = Nothing
-    , _fmParentFolderId = Nothing
-    , _fmSize = Nothing
-    , _fmLatestVersionSize = Nothing
-    , _fmName = Nothing
-    , _fmModifiedTimestamp = Nothing
-    , _fmId = Nothing
-    , _fmLabels = Nothing
-    , _fmResourceState = Nothing
-    , _fmCreatedTimestamp = Nothing
-    , _fmCreatorId = Nothing
-    }
-
-
--- | The unique identifier created from the subfolders and documents of the folder.
-fmSignature :: Lens' FolderMetadata (Maybe Text)
-fmSignature = lens _fmSignature (\ s a -> s{_fmSignature = a})
-
--- | The ID of the parent folder.
-fmParentFolderId :: Lens' FolderMetadata (Maybe Text)
-fmParentFolderId = lens _fmParentFolderId (\ s a -> s{_fmParentFolderId = a})
-
--- | The size of the folder metadata.
-fmSize :: Lens' FolderMetadata (Maybe Integer)
-fmSize = lens _fmSize (\ s a -> s{_fmSize = a})
-
--- | The size of the latest version of the folder metadata.
-fmLatestVersionSize :: Lens' FolderMetadata (Maybe Integer)
-fmLatestVersionSize = lens _fmLatestVersionSize (\ s a -> s{_fmLatestVersionSize = a})
-
--- | The name of the folder.
-fmName :: Lens' FolderMetadata (Maybe Text)
-fmName = lens _fmName (\ s a -> s{_fmName = a})
-
--- | The time when the folder was updated.
-fmModifiedTimestamp :: Lens' FolderMetadata (Maybe UTCTime)
-fmModifiedTimestamp = lens _fmModifiedTimestamp (\ s a -> s{_fmModifiedTimestamp = a}) . mapping _Time
-
--- | The ID of the folder.
-fmId :: Lens' FolderMetadata (Maybe Text)
-fmId = lens _fmId (\ s a -> s{_fmId = a})
-
--- | List of labels on the folder.
-fmLabels :: Lens' FolderMetadata [Text]
-fmLabels = lens _fmLabels (\ s a -> s{_fmLabels = a}) . _Default . _Coerce
-
--- | The resource state of the folder.
-fmResourceState :: Lens' FolderMetadata (Maybe ResourceStateType)
-fmResourceState = lens _fmResourceState (\ s a -> s{_fmResourceState = a})
-
--- | The time when the folder was created.
-fmCreatedTimestamp :: Lens' FolderMetadata (Maybe UTCTime)
-fmCreatedTimestamp = lens _fmCreatedTimestamp (\ s a -> s{_fmCreatedTimestamp = a}) . mapping _Time
-
--- | The ID of the creator.
-fmCreatorId :: Lens' FolderMetadata (Maybe Text)
-fmCreatorId = lens _fmCreatorId (\ s a -> s{_fmCreatorId = a})
-
-instance FromJSON FolderMetadata where
-        parseJSON
-          = withObject "FolderMetadata"
-              (\ x ->
-                 FolderMetadata' <$>
-                   (x .:? "Signature") <*> (x .:? "ParentFolderId") <*>
-                     (x .:? "Size")
-                     <*> (x .:? "LatestVersionSize")
-                     <*> (x .:? "Name")
-                     <*> (x .:? "ModifiedTimestamp")
-                     <*> (x .:? "Id")
-                     <*> (x .:? "Labels" .!= mempty)
-                     <*> (x .:? "ResourceState")
-                     <*> (x .:? "CreatedTimestamp")
-                     <*> (x .:? "CreatorId"))
-
-instance Hashable FolderMetadata where
-
-instance NFData FolderMetadata where
-
--- | Describes the metadata of a user group.
---
---
---
--- /See:/ 'groupMetadata' smart constructor.
-data GroupMetadata = GroupMetadata'
-  { _gmName :: !(Maybe Text)
-  , _gmId   :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'GroupMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'gmName' - The name of the group.
---
--- * 'gmId' - The ID of the user group.
-groupMetadata
-    :: GroupMetadata
-groupMetadata = GroupMetadata' {_gmName = Nothing, _gmId = Nothing}
-
-
--- | The name of the group.
-gmName :: Lens' GroupMetadata (Maybe Text)
-gmName = lens _gmName (\ s a -> s{_gmName = a})
-
--- | The ID of the user group.
-gmId :: Lens' GroupMetadata (Maybe Text)
-gmId = lens _gmId (\ s a -> s{_gmId = a})
-
-instance FromJSON GroupMetadata where
-        parseJSON
-          = withObject "GroupMetadata"
-              (\ x ->
-                 GroupMetadata' <$> (x .:? "Name") <*> (x .:? "Id"))
-
-instance Hashable GroupMetadata where
-
-instance NFData GroupMetadata where
-
--- | Set of options which defines notification preferences of given action.
---
---
---
--- /See:/ 'notificationOptions' smart constructor.
-data NotificationOptions = NotificationOptions'
-  { _noEmailMessage :: !(Maybe (Sensitive Text))
-  , _noSendEmail    :: !(Maybe Bool)
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'NotificationOptions' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'noEmailMessage' - Text value to be included in the email body.
---
--- * 'noSendEmail' - Boolean value to indicate an email notification should be sent to the receipients.
-notificationOptions
-    :: NotificationOptions
-notificationOptions =
-  NotificationOptions' {_noEmailMessage = Nothing, _noSendEmail = Nothing}
-
-
--- | Text value to be included in the email body.
-noEmailMessage :: Lens' NotificationOptions (Maybe Text)
-noEmailMessage = lens _noEmailMessage (\ s a -> s{_noEmailMessage = a}) . mapping _Sensitive
-
--- | Boolean value to indicate an email notification should be sent to the receipients.
-noSendEmail :: Lens' NotificationOptions (Maybe Bool)
-noSendEmail = lens _noSendEmail (\ s a -> s{_noSendEmail = a})
-
-instance Hashable NotificationOptions where
-
-instance NFData NotificationOptions where
-
-instance ToJSON NotificationOptions where
-        toJSON NotificationOptions'{..}
-          = object
-              (catMaybes
-                 [("EmailMessage" .=) <$> _noEmailMessage,
-                  ("SendEmail" .=) <$> _noSendEmail])
-
--- | Describes the users or user groups.
---
---
---
--- /See:/ 'participants' smart constructor.
-data Participants = Participants'
-  { _pGroups :: !(Maybe [GroupMetadata])
-  , _pUsers  :: !(Maybe [UserMetadata])
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Participants' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pGroups' - The list of user groups.
---
--- * 'pUsers' - The list of users.
-participants
-    :: Participants
-participants = Participants' {_pGroups = Nothing, _pUsers = Nothing}
-
-
--- | The list of user groups.
-pGroups :: Lens' Participants [GroupMetadata]
-pGroups = lens _pGroups (\ s a -> s{_pGroups = a}) . _Default . _Coerce
-
--- | The list of users.
-pUsers :: Lens' Participants [UserMetadata]
-pUsers = lens _pUsers (\ s a -> s{_pUsers = a}) . _Default . _Coerce
-
-instance FromJSON Participants where
-        parseJSON
-          = withObject "Participants"
-              (\ x ->
-                 Participants' <$>
-                   (x .:? "Groups" .!= mempty) <*>
-                     (x .:? "Users" .!= mempty))
-
-instance Hashable Participants where
-
-instance NFData Participants where
-
--- | Describes the permissions.
---
---
---
--- /See:/ 'permissionInfo' smart constructor.
-data PermissionInfo = PermissionInfo'
-  { _piRole :: !(Maybe RoleType)
-  , _piType :: !(Maybe RolePermissionType)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'PermissionInfo' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'piRole' - The role of the user.
---
--- * 'piType' - The type of permissions.
-permissionInfo
-    :: PermissionInfo
-permissionInfo = PermissionInfo' {_piRole = Nothing, _piType = Nothing}
-
-
--- | The role of the user.
-piRole :: Lens' PermissionInfo (Maybe RoleType)
-piRole = lens _piRole (\ s a -> s{_piRole = a})
-
--- | The type of permissions.
-piType :: Lens' PermissionInfo (Maybe RolePermissionType)
-piType = lens _piType (\ s a -> s{_piType = a})
-
-instance FromJSON PermissionInfo where
-        parseJSON
-          = withObject "PermissionInfo"
-              (\ x ->
-                 PermissionInfo' <$>
-                   (x .:? "Role") <*> (x .:? "Type"))
-
-instance Hashable PermissionInfo where
-
-instance NFData PermissionInfo where
-
--- | Describes a resource.
---
---
---
--- /See:/ 'principal' smart constructor.
-data Principal = Principal'
-  { _pRoles :: !(Maybe [PermissionInfo])
-  , _pId    :: !(Maybe Text)
-  , _pType  :: !(Maybe PrincipalType)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Principal' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pRoles' - The permission information for the resource.
---
--- * 'pId' - The ID of the resource.
---
--- * 'pType' - The type of resource.
-principal
-    :: Principal
-principal = Principal' {_pRoles = Nothing, _pId = Nothing, _pType = Nothing}
-
-
--- | The permission information for the resource.
-pRoles :: Lens' Principal [PermissionInfo]
-pRoles = lens _pRoles (\ s a -> s{_pRoles = a}) . _Default . _Coerce
-
--- | The ID of the resource.
-pId :: Lens' Principal (Maybe Text)
-pId = lens _pId (\ s a -> s{_pId = a})
-
--- | The type of resource.
-pType :: Lens' Principal (Maybe PrincipalType)
-pType = lens _pType (\ s a -> s{_pType = a})
-
-instance FromJSON Principal where
-        parseJSON
-          = withObject "Principal"
-              (\ x ->
-                 Principal' <$>
-                   (x .:? "Roles" .!= mempty) <*> (x .:? "Id") <*>
-                     (x .:? "Type"))
-
-instance Hashable Principal where
-
-instance NFData Principal where
-
--- | Describes the metadata of a resource.
---
---
---
--- /See:/ 'resourceMetadata' smart constructor.
-data ResourceMetadata = ResourceMetadata'
-  { _rmVersionId    :: !(Maybe Text)
-  , _rmOwner        :: !(Maybe UserMetadata)
-  , _rmName         :: !(Maybe Text)
-  , _rmId           :: !(Maybe Text)
-  , _rmType         :: !(Maybe ResourceType)
-  , _rmOriginalName :: !(Maybe Text)
-  , _rmParentId     :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ResourceMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rmVersionId' - The version ID of the resource. This is an optional field and is filled for action on document version.
---
--- * 'rmOwner' - The owner of the resource.
---
--- * 'rmName' - The name of the resource.
---
--- * 'rmId' - The ID of the resource.
---
--- * 'rmType' - The type of resource.
---
--- * 'rmOriginalName' - The original name of the resource before a rename operation.
---
--- * 'rmParentId' - The parent ID of the resource before a rename operation.
-resourceMetadata
-    :: ResourceMetadata
-resourceMetadata =
-  ResourceMetadata'
-    { _rmVersionId = Nothing
-    , _rmOwner = Nothing
-    , _rmName = Nothing
-    , _rmId = Nothing
-    , _rmType = Nothing
-    , _rmOriginalName = Nothing
-    , _rmParentId = Nothing
-    }
-
-
--- | The version ID of the resource. This is an optional field and is filled for action on document version.
-rmVersionId :: Lens' ResourceMetadata (Maybe Text)
-rmVersionId = lens _rmVersionId (\ s a -> s{_rmVersionId = a})
-
--- | The owner of the resource.
-rmOwner :: Lens' ResourceMetadata (Maybe UserMetadata)
-rmOwner = lens _rmOwner (\ s a -> s{_rmOwner = a})
-
--- | The name of the resource.
-rmName :: Lens' ResourceMetadata (Maybe Text)
-rmName = lens _rmName (\ s a -> s{_rmName = a})
-
--- | The ID of the resource.
-rmId :: Lens' ResourceMetadata (Maybe Text)
-rmId = lens _rmId (\ s a -> s{_rmId = a})
-
--- | The type of resource.
-rmType :: Lens' ResourceMetadata (Maybe ResourceType)
-rmType = lens _rmType (\ s a -> s{_rmType = a})
-
--- | The original name of the resource before a rename operation.
-rmOriginalName :: Lens' ResourceMetadata (Maybe Text)
-rmOriginalName = lens _rmOriginalName (\ s a -> s{_rmOriginalName = a})
-
--- | The parent ID of the resource before a rename operation.
-rmParentId :: Lens' ResourceMetadata (Maybe Text)
-rmParentId = lens _rmParentId (\ s a -> s{_rmParentId = a})
-
-instance FromJSON ResourceMetadata where
-        parseJSON
-          = withObject "ResourceMetadata"
-              (\ x ->
-                 ResourceMetadata' <$>
-                   (x .:? "VersionId") <*> (x .:? "Owner") <*>
-                     (x .:? "Name")
-                     <*> (x .:? "Id")
-                     <*> (x .:? "Type")
-                     <*> (x .:? "OriginalName")
-                     <*> (x .:? "ParentId"))
-
-instance Hashable ResourceMetadata where
-
-instance NFData ResourceMetadata where
-
--- | Describes the path information of a resource.
---
---
---
--- /See:/ 'resourcePath' smart constructor.
-newtype ResourcePath = ResourcePath'
-  { _rpComponents :: Maybe [ResourcePathComponent]
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ResourcePath' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rpComponents' - The components of the resource path.
-resourcePath
-    :: ResourcePath
-resourcePath = ResourcePath' {_rpComponents = Nothing}
-
-
--- | The components of the resource path.
-rpComponents :: Lens' ResourcePath [ResourcePathComponent]
-rpComponents = lens _rpComponents (\ s a -> s{_rpComponents = a}) . _Default . _Coerce
-
-instance FromJSON ResourcePath where
-        parseJSON
-          = withObject "ResourcePath"
-              (\ x ->
-                 ResourcePath' <$> (x .:? "Components" .!= mempty))
-
-instance Hashable ResourcePath where
-
-instance NFData ResourcePath where
-
--- | Describes the resource path.
---
---
---
--- /See:/ 'resourcePathComponent' smart constructor.
-data ResourcePathComponent = ResourcePathComponent'
-  { _rpcName :: !(Maybe Text)
-  , _rpcId   :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ResourcePathComponent' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rpcName' - The name of the resource path.
---
--- * 'rpcId' - The ID of the resource path.
-resourcePathComponent
-    :: ResourcePathComponent
-resourcePathComponent =
-  ResourcePathComponent' {_rpcName = Nothing, _rpcId = Nothing}
-
-
--- | The name of the resource path.
-rpcName :: Lens' ResourcePathComponent (Maybe Text)
-rpcName = lens _rpcName (\ s a -> s{_rpcName = a})
-
--- | The ID of the resource path.
-rpcId :: Lens' ResourcePathComponent (Maybe Text)
-rpcId = lens _rpcId (\ s a -> s{_rpcId = a})
-
-instance FromJSON ResourcePathComponent where
-        parseJSON
-          = withObject "ResourcePathComponent"
-              (\ x ->
-                 ResourcePathComponent' <$>
-                   (x .:? "Name") <*> (x .:? "Id"))
-
-instance Hashable ResourcePathComponent where
-
-instance NFData ResourcePathComponent where
-
--- | Describes the recipient type and ID, if available.
---
---
---
--- /See:/ 'sharePrincipal' smart constructor.
-data SharePrincipal = SharePrincipal'
-  { _spId   :: !Text
-  , _spType :: !PrincipalType
-  , _spRole :: !RoleType
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'SharePrincipal' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'spId' - The ID of the recipient.
---
--- * 'spType' - The type of the recipient.
---
--- * 'spRole' - The role of the recipient.
-sharePrincipal
-    :: Text -- ^ 'spId'
-    -> PrincipalType -- ^ 'spType'
-    -> RoleType -- ^ 'spRole'
-    -> SharePrincipal
-sharePrincipal pId_ pType_ pRole_ =
-  SharePrincipal' {_spId = pId_, _spType = pType_, _spRole = pRole_}
-
-
--- | The ID of the recipient.
-spId :: Lens' SharePrincipal Text
-spId = lens _spId (\ s a -> s{_spId = a})
-
--- | The type of the recipient.
-spType :: Lens' SharePrincipal PrincipalType
-spType = lens _spType (\ s a -> s{_spType = a})
-
--- | The role of the recipient.
-spRole :: Lens' SharePrincipal RoleType
-spRole = lens _spRole (\ s a -> s{_spRole = a})
-
-instance Hashable SharePrincipal where
-
-instance NFData SharePrincipal where
-
-instance ToJSON SharePrincipal where
-        toJSON SharePrincipal'{..}
-          = object
-              (catMaybes
-                 [Just ("Id" .= _spId), Just ("Type" .= _spType),
-                  Just ("Role" .= _spRole)])
-
--- | Describes the share results of a resource.
---
---
---
--- /See:/ 'shareResult' smart constructor.
-data ShareResult = ShareResult'
-  { _srStatus        :: !(Maybe ShareStatusType)
-  , _srPrincipalId   :: !(Maybe Text)
-  , _srRole          :: !(Maybe RoleType)
-  , _srStatusMessage :: !(Maybe (Sensitive Text))
-  , _srShareId       :: !(Maybe Text)
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'ShareResult' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'srStatus' - The status.
---
--- * 'srPrincipalId' - The ID of the principal.
---
--- * 'srRole' - The role.
---
--- * 'srStatusMessage' - The status message.
---
--- * 'srShareId' - The ID of the resource that was shared.
-shareResult
-    :: ShareResult
-shareResult =
-  ShareResult'
-    { _srStatus = Nothing
-    , _srPrincipalId = Nothing
-    , _srRole = Nothing
-    , _srStatusMessage = Nothing
-    , _srShareId = Nothing
-    }
-
-
--- | The status.
-srStatus :: Lens' ShareResult (Maybe ShareStatusType)
-srStatus = lens _srStatus (\ s a -> s{_srStatus = a})
-
--- | The ID of the principal.
-srPrincipalId :: Lens' ShareResult (Maybe Text)
-srPrincipalId = lens _srPrincipalId (\ s a -> s{_srPrincipalId = a})
-
--- | The role.
-srRole :: Lens' ShareResult (Maybe RoleType)
-srRole = lens _srRole (\ s a -> s{_srRole = a})
-
--- | The status message.
-srStatusMessage :: Lens' ShareResult (Maybe Text)
-srStatusMessage = lens _srStatusMessage (\ s a -> s{_srStatusMessage = a}) . mapping _Sensitive
-
--- | The ID of the resource that was shared.
-srShareId :: Lens' ShareResult (Maybe Text)
-srShareId = lens _srShareId (\ s a -> s{_srShareId = a})
-
-instance FromJSON ShareResult where
-        parseJSON
-          = withObject "ShareResult"
-              (\ x ->
-                 ShareResult' <$>
-                   (x .:? "Status") <*> (x .:? "PrincipalId") <*>
-                     (x .:? "Role")
-                     <*> (x .:? "StatusMessage")
-                     <*> (x .:? "ShareId"))
-
-instance Hashable ShareResult where
-
-instance NFData ShareResult where
-
--- | Describes the storage for a user.
---
---
---
--- /See:/ 'storageRuleType' smart constructor.
-data StorageRuleType = StorageRuleType'
-  { _srtStorageAllocatedInBytes :: !(Maybe Nat)
-  , _srtStorageType             :: !(Maybe StorageType)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'StorageRuleType' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'srtStorageAllocatedInBytes' - The amount of storage allocated, in bytes.
---
--- * 'srtStorageType' - The type of storage.
-storageRuleType
-    :: StorageRuleType
-storageRuleType =
-  StorageRuleType'
-    {_srtStorageAllocatedInBytes = Nothing, _srtStorageType = Nothing}
-
-
--- | The amount of storage allocated, in bytes.
-srtStorageAllocatedInBytes :: Lens' StorageRuleType (Maybe Natural)
-srtStorageAllocatedInBytes = lens _srtStorageAllocatedInBytes (\ s a -> s{_srtStorageAllocatedInBytes = a}) . mapping _Nat
-
--- | The type of storage.
-srtStorageType :: Lens' StorageRuleType (Maybe StorageType)
-srtStorageType = lens _srtStorageType (\ s a -> s{_srtStorageType = a})
-
-instance FromJSON StorageRuleType where
-        parseJSON
-          = withObject "StorageRuleType"
-              (\ x ->
-                 StorageRuleType' <$>
-                   (x .:? "StorageAllocatedInBytes") <*>
-                     (x .:? "StorageType"))
-
-instance Hashable StorageRuleType where
-
-instance NFData StorageRuleType where
-
-instance ToJSON StorageRuleType where
-        toJSON StorageRuleType'{..}
-          = object
-              (catMaybes
-                 [("StorageAllocatedInBytes" .=) <$>
-                    _srtStorageAllocatedInBytes,
-                  ("StorageType" .=) <$> _srtStorageType])
-
--- | Describes a subscription.
---
---
---
--- /See:/ 'subscription' smart constructor.
-data Subscription = Subscription'
-  { _sProtocol       :: !(Maybe SubscriptionProtocolType)
-  , _sEndPoint       :: !(Maybe Text)
-  , _sSubscriptionId :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'Subscription' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sProtocol' - The protocol of the subscription.
---
--- * 'sEndPoint' - The endpoint of the subscription.
---
--- * 'sSubscriptionId' - The ID of the subscription.
-subscription
-    :: Subscription
-subscription =
-  Subscription'
-    {_sProtocol = Nothing, _sEndPoint = Nothing, _sSubscriptionId = Nothing}
-
-
--- | The protocol of the subscription.
-sProtocol :: Lens' Subscription (Maybe SubscriptionProtocolType)
-sProtocol = lens _sProtocol (\ s a -> s{_sProtocol = a})
-
--- | The endpoint of the subscription.
-sEndPoint :: Lens' Subscription (Maybe Text)
-sEndPoint = lens _sEndPoint (\ s a -> s{_sEndPoint = a})
-
--- | The ID of the subscription.
-sSubscriptionId :: Lens' Subscription (Maybe Text)
-sSubscriptionId = lens _sSubscriptionId (\ s a -> s{_sSubscriptionId = a})
-
-instance FromJSON Subscription where
-        parseJSON
-          = withObject "Subscription"
-              (\ x ->
-                 Subscription' <$>
-                   (x .:? "Protocol") <*> (x .:? "EndPoint") <*>
-                     (x .:? "SubscriptionId"))
-
-instance Hashable Subscription where
-
-instance NFData Subscription where
-
--- | Describes the upload.
---
---
---
--- /See:/ 'uploadMetadata' smart constructor.
-data UploadMetadata = UploadMetadata'
-  { _umUploadURL     :: !(Maybe (Sensitive Text))
-  , _umSignedHeaders :: !(Maybe (Map Text Text))
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UploadMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'umUploadURL' - The URL of the upload.
---
--- * 'umSignedHeaders' - The signed headers.
-uploadMetadata
-    :: UploadMetadata
-uploadMetadata =
-  UploadMetadata' {_umUploadURL = Nothing, _umSignedHeaders = Nothing}
-
-
--- | The URL of the upload.
-umUploadURL :: Lens' UploadMetadata (Maybe Text)
-umUploadURL = lens _umUploadURL (\ s a -> s{_umUploadURL = a}) . mapping _Sensitive
-
--- | The signed headers.
-umSignedHeaders :: Lens' UploadMetadata (HashMap Text Text)
-umSignedHeaders = lens _umSignedHeaders (\ s a -> s{_umSignedHeaders = a}) . _Default . _Map
-
-instance FromJSON UploadMetadata where
-        parseJSON
-          = withObject "UploadMetadata"
-              (\ x ->
-                 UploadMetadata' <$>
-                   (x .:? "UploadUrl") <*>
-                     (x .:? "SignedHeaders" .!= mempty))
-
-instance Hashable UploadMetadata where
-
-instance NFData UploadMetadata where
-
--- | Describes a user.
---
---
---
--- /See:/ 'user' smart constructor.
-data User = User'
-  { _uGivenName          :: !(Maybe Text)
-  , _uStatus             :: !(Maybe UserStatusType)
-  , _uLocale             :: !(Maybe LocaleType)
-  , _uUsername           :: !(Maybe Text)
-  , _uStorage            :: !(Maybe UserStorageMetadata)
-  , _uModifiedTimestamp  :: !(Maybe POSIX)
-  , _uEmailAddress       :: !(Maybe Text)
-  , _uId                 :: !(Maybe Text)
-  , _uRootFolderId       :: !(Maybe Text)
-  , _uType               :: !(Maybe UserType)
-  , _uSurname            :: !(Maybe Text)
-  , _uTimeZoneId         :: !(Maybe Text)
-  , _uCreatedTimestamp   :: !(Maybe POSIX)
-  , _uOrganizationId     :: !(Maybe Text)
-  , _uRecycleBinFolderId :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'User' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uGivenName' - The given name of the user.
---
--- * 'uStatus' - The status of the user.
---
--- * 'uLocale' - The locale of the user.
---
--- * 'uUsername' - The login name of the user.
---
--- * 'uStorage' - The storage for the user.
---
--- * 'uModifiedTimestamp' - The time when the user was modified.
---
--- * 'uEmailAddress' - The email address of the user.
---
--- * 'uId' - The ID of the user.
---
--- * 'uRootFolderId' - The ID of the root folder.
---
--- * 'uType' - The type of user.
---
--- * 'uSurname' - The surname of the user.
---
--- * 'uTimeZoneId' - The time zone ID of the user.
---
--- * 'uCreatedTimestamp' - The time when the user was created.
---
--- * 'uOrganizationId' - The ID of the organization.
---
--- * 'uRecycleBinFolderId' - The ID of the recycle bin folder.
-user
-    :: User
-user =
-  User'
-    { _uGivenName = Nothing
-    , _uStatus = Nothing
-    , _uLocale = Nothing
-    , _uUsername = Nothing
-    , _uStorage = Nothing
-    , _uModifiedTimestamp = Nothing
-    , _uEmailAddress = Nothing
-    , _uId = Nothing
-    , _uRootFolderId = Nothing
-    , _uType = Nothing
-    , _uSurname = Nothing
-    , _uTimeZoneId = Nothing
-    , _uCreatedTimestamp = Nothing
-    , _uOrganizationId = Nothing
-    , _uRecycleBinFolderId = Nothing
-    }
-
-
--- | The given name of the user.
-uGivenName :: Lens' User (Maybe Text)
-uGivenName = lens _uGivenName (\ s a -> s{_uGivenName = a})
-
--- | The status of the user.
-uStatus :: Lens' User (Maybe UserStatusType)
-uStatus = lens _uStatus (\ s a -> s{_uStatus = a})
-
--- | The locale of the user.
-uLocale :: Lens' User (Maybe LocaleType)
-uLocale = lens _uLocale (\ s a -> s{_uLocale = a})
-
--- | The login name of the user.
-uUsername :: Lens' User (Maybe Text)
-uUsername = lens _uUsername (\ s a -> s{_uUsername = a})
-
--- | The storage for the user.
-uStorage :: Lens' User (Maybe UserStorageMetadata)
-uStorage = lens _uStorage (\ s a -> s{_uStorage = a})
-
--- | The time when the user was modified.
-uModifiedTimestamp :: Lens' User (Maybe UTCTime)
-uModifiedTimestamp = lens _uModifiedTimestamp (\ s a -> s{_uModifiedTimestamp = a}) . mapping _Time
-
--- | The email address of the user.
-uEmailAddress :: Lens' User (Maybe Text)
-uEmailAddress = lens _uEmailAddress (\ s a -> s{_uEmailAddress = a})
-
--- | The ID of the user.
-uId :: Lens' User (Maybe Text)
-uId = lens _uId (\ s a -> s{_uId = a})
-
--- | The ID of the root folder.
-uRootFolderId :: Lens' User (Maybe Text)
-uRootFolderId = lens _uRootFolderId (\ s a -> s{_uRootFolderId = a})
-
--- | The type of user.
-uType :: Lens' User (Maybe UserType)
-uType = lens _uType (\ s a -> s{_uType = a})
-
--- | The surname of the user.
-uSurname :: Lens' User (Maybe Text)
-uSurname = lens _uSurname (\ s a -> s{_uSurname = a})
-
--- | The time zone ID of the user.
-uTimeZoneId :: Lens' User (Maybe Text)
-uTimeZoneId = lens _uTimeZoneId (\ s a -> s{_uTimeZoneId = a})
-
--- | The time when the user was created.
-uCreatedTimestamp :: Lens' User (Maybe UTCTime)
-uCreatedTimestamp = lens _uCreatedTimestamp (\ s a -> s{_uCreatedTimestamp = a}) . mapping _Time
-
--- | The ID of the organization.
-uOrganizationId :: Lens' User (Maybe Text)
-uOrganizationId = lens _uOrganizationId (\ s a -> s{_uOrganizationId = a})
-
--- | The ID of the recycle bin folder.
-uRecycleBinFolderId :: Lens' User (Maybe Text)
-uRecycleBinFolderId = lens _uRecycleBinFolderId (\ s a -> s{_uRecycleBinFolderId = a})
-
-instance FromJSON User where
-        parseJSON
-          = withObject "User"
-              (\ x ->
-                 User' <$>
-                   (x .:? "GivenName") <*> (x .:? "Status") <*>
-                     (x .:? "Locale")
-                     <*> (x .:? "Username")
-                     <*> (x .:? "Storage")
-                     <*> (x .:? "ModifiedTimestamp")
-                     <*> (x .:? "EmailAddress")
-                     <*> (x .:? "Id")
-                     <*> (x .:? "RootFolderId")
-                     <*> (x .:? "Type")
-                     <*> (x .:? "Surname")
-                     <*> (x .:? "TimeZoneId")
-                     <*> (x .:? "CreatedTimestamp")
-                     <*> (x .:? "OrganizationId")
-                     <*> (x .:? "RecycleBinFolderId"))
-
-instance Hashable User where
-
-instance NFData User where
-
--- | Describes the metadata of the user.
---
---
---
--- /See:/ 'userMetadata' smart constructor.
-data UserMetadata = UserMetadata'
-  { _umGivenName    :: !(Maybe Text)
-  , _umUsername     :: !(Maybe Text)
-  , _umEmailAddress :: !(Maybe Text)
-  , _umId           :: !(Maybe Text)
-  , _umSurname      :: !(Maybe Text)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UserMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'umGivenName' - The given name of the user before a rename operation.
---
--- * 'umUsername' - The name of the user.
---
--- * 'umEmailAddress' - The email address of the user.
---
--- * 'umId' - The ID of the user.
---
--- * 'umSurname' - The surname of the user.
-userMetadata
-    :: UserMetadata
-userMetadata =
-  UserMetadata'
-    { _umGivenName = Nothing
-    , _umUsername = Nothing
-    , _umEmailAddress = Nothing
-    , _umId = Nothing
-    , _umSurname = Nothing
-    }
-
-
--- | The given name of the user before a rename operation.
-umGivenName :: Lens' UserMetadata (Maybe Text)
-umGivenName = lens _umGivenName (\ s a -> s{_umGivenName = a})
-
--- | The name of the user.
-umUsername :: Lens' UserMetadata (Maybe Text)
-umUsername = lens _umUsername (\ s a -> s{_umUsername = a})
-
--- | The email address of the user.
-umEmailAddress :: Lens' UserMetadata (Maybe Text)
-umEmailAddress = lens _umEmailAddress (\ s a -> s{_umEmailAddress = a})
-
--- | The ID of the user.
-umId :: Lens' UserMetadata (Maybe Text)
-umId = lens _umId (\ s a -> s{_umId = a})
-
--- | The surname of the user.
-umSurname :: Lens' UserMetadata (Maybe Text)
-umSurname = lens _umSurname (\ s a -> s{_umSurname = a})
-
-instance FromJSON UserMetadata where
-        parseJSON
-          = withObject "UserMetadata"
-              (\ x ->
-                 UserMetadata' <$>
-                   (x .:? "GivenName") <*> (x .:? "Username") <*>
-                     (x .:? "EmailAddress")
-                     <*> (x .:? "Id")
-                     <*> (x .:? "Surname"))
-
-instance Hashable UserMetadata where
-
-instance NFData UserMetadata where
-
--- | Describes the storage for a user.
---
---
---
--- /See:/ 'userStorageMetadata' smart constructor.
-data UserStorageMetadata = UserStorageMetadata'
-  { _usmStorageUtilizedInBytes :: !(Maybe Integer)
-  , _usmStorageRule            :: !(Maybe StorageRuleType)
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UserStorageMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'usmStorageUtilizedInBytes' - The amount of storage used, in bytes.
---
--- * 'usmStorageRule' - The storage for a user.
-userStorageMetadata
-    :: UserStorageMetadata
-userStorageMetadata =
-  UserStorageMetadata'
-    {_usmStorageUtilizedInBytes = Nothing, _usmStorageRule = Nothing}
-
-
--- | The amount of storage used, in bytes.
-usmStorageUtilizedInBytes :: Lens' UserStorageMetadata (Maybe Integer)
-usmStorageUtilizedInBytes = lens _usmStorageUtilizedInBytes (\ s a -> s{_usmStorageUtilizedInBytes = a})
-
--- | The storage for a user.
-usmStorageRule :: Lens' UserStorageMetadata (Maybe StorageRuleType)
-usmStorageRule = lens _usmStorageRule (\ s a -> s{_usmStorageRule = a})
-
-instance FromJSON UserStorageMetadata where
-        parseJSON
-          = withObject "UserStorageMetadata"
-              (\ x ->
-                 UserStorageMetadata' <$>
-                   (x .:? "StorageUtilizedInBytes") <*>
-                     (x .:? "StorageRule"))
-
-instance Hashable UserStorageMetadata where
-
-instance NFData UserStorageMetadata where
diff --git a/gen/Network/AWS/WorkDocs/Types/Sum.hs b/gen/Network/AWS/WorkDocs/Types/Sum.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/Types/Sum.hs
+++ /dev/null
@@ -1,875 +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.WorkDocs.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.WorkDocs.Types.Sum where
-
-import Network.AWS.Prelude
-
-data ActivityType
-  = DocumentAnnotationAdded
-  | DocumentAnnotationDeleted
-  | DocumentCheckedIn
-  | DocumentCheckedOut
-  | DocumentCommentAdded
-  | DocumentCommentDeleted
-  | DocumentMoved
-  | DocumentRecycled
-  | DocumentRenamed
-  | DocumentRestored
-  | DocumentReverted
-  | DocumentSharePermissionChanged
-  | DocumentShareableLinkCreated
-  | DocumentShareableLinkPermissionChanged
-  | DocumentShareableLinkRemoved
-  | DocumentShared
-  | DocumentUnshared
-  | DocumentVersionDeleted
-  | DocumentVersionUploaded
-  | FolderCreated
-  | FolderDeleted
-  | FolderMoved
-  | FolderRecycled
-  | FolderRenamed
-  | FolderRestored
-  | FolderSharePermissionChanged
-  | FolderShareableLinkCreated
-  | FolderShareableLinkPermissionChanged
-  | FolderShareableLinkRemoved
-  | FolderShared
-  | FolderUnshared
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ActivityType where
-    parser = takeLowerText >>= \case
-        "document_annotation_added" -> pure DocumentAnnotationAdded
-        "document_annotation_deleted" -> pure DocumentAnnotationDeleted
-        "document_checked_in" -> pure DocumentCheckedIn
-        "document_checked_out" -> pure DocumentCheckedOut
-        "document_comment_added" -> pure DocumentCommentAdded
-        "document_comment_deleted" -> pure DocumentCommentDeleted
-        "document_moved" -> pure DocumentMoved
-        "document_recycled" -> pure DocumentRecycled
-        "document_renamed" -> pure DocumentRenamed
-        "document_restored" -> pure DocumentRestored
-        "document_reverted" -> pure DocumentReverted
-        "document_share_permission_changed" -> pure DocumentSharePermissionChanged
-        "document_shareable_link_created" -> pure DocumentShareableLinkCreated
-        "document_shareable_link_permission_changed" -> pure DocumentShareableLinkPermissionChanged
-        "document_shareable_link_removed" -> pure DocumentShareableLinkRemoved
-        "document_shared" -> pure DocumentShared
-        "document_unshared" -> pure DocumentUnshared
-        "document_version_deleted" -> pure DocumentVersionDeleted
-        "document_version_uploaded" -> pure DocumentVersionUploaded
-        "folder_created" -> pure FolderCreated
-        "folder_deleted" -> pure FolderDeleted
-        "folder_moved" -> pure FolderMoved
-        "folder_recycled" -> pure FolderRecycled
-        "folder_renamed" -> pure FolderRenamed
-        "folder_restored" -> pure FolderRestored
-        "folder_share_permission_changed" -> pure FolderSharePermissionChanged
-        "folder_shareable_link_created" -> pure FolderShareableLinkCreated
-        "folder_shareable_link_permission_changed" -> pure FolderShareableLinkPermissionChanged
-        "folder_shareable_link_removed" -> pure FolderShareableLinkRemoved
-        "folder_shared" -> pure FolderShared
-        "folder_unshared" -> pure FolderUnshared
-        e -> fromTextError $ "Failure parsing ActivityType from value: '" <> e
-           <> "'. Accepted values: document_annotation_added, document_annotation_deleted, document_checked_in, document_checked_out, document_comment_added, document_comment_deleted, document_moved, document_recycled, document_renamed, document_restored, document_reverted, document_share_permission_changed, document_shareable_link_created, document_shareable_link_permission_changed, document_shareable_link_removed, document_shared, document_unshared, document_version_deleted, document_version_uploaded, folder_created, folder_deleted, folder_moved, folder_recycled, folder_renamed, folder_restored, folder_share_permission_changed, folder_shareable_link_created, folder_shareable_link_permission_changed, folder_shareable_link_removed, folder_shared, folder_unshared"
-
-instance ToText ActivityType where
-    toText = \case
-        DocumentAnnotationAdded -> "DOCUMENT_ANNOTATION_ADDED"
-        DocumentAnnotationDeleted -> "DOCUMENT_ANNOTATION_DELETED"
-        DocumentCheckedIn -> "DOCUMENT_CHECKED_IN"
-        DocumentCheckedOut -> "DOCUMENT_CHECKED_OUT"
-        DocumentCommentAdded -> "DOCUMENT_COMMENT_ADDED"
-        DocumentCommentDeleted -> "DOCUMENT_COMMENT_DELETED"
-        DocumentMoved -> "DOCUMENT_MOVED"
-        DocumentRecycled -> "DOCUMENT_RECYCLED"
-        DocumentRenamed -> "DOCUMENT_RENAMED"
-        DocumentRestored -> "DOCUMENT_RESTORED"
-        DocumentReverted -> "DOCUMENT_REVERTED"
-        DocumentSharePermissionChanged -> "DOCUMENT_SHARE_PERMISSION_CHANGED"
-        DocumentShareableLinkCreated -> "DOCUMENT_SHAREABLE_LINK_CREATED"
-        DocumentShareableLinkPermissionChanged -> "DOCUMENT_SHAREABLE_LINK_PERMISSION_CHANGED"
-        DocumentShareableLinkRemoved -> "DOCUMENT_SHAREABLE_LINK_REMOVED"
-        DocumentShared -> "DOCUMENT_SHARED"
-        DocumentUnshared -> "DOCUMENT_UNSHARED"
-        DocumentVersionDeleted -> "DOCUMENT_VERSION_DELETED"
-        DocumentVersionUploaded -> "DOCUMENT_VERSION_UPLOADED"
-        FolderCreated -> "FOLDER_CREATED"
-        FolderDeleted -> "FOLDER_DELETED"
-        FolderMoved -> "FOLDER_MOVED"
-        FolderRecycled -> "FOLDER_RECYCLED"
-        FolderRenamed -> "FOLDER_RENAMED"
-        FolderRestored -> "FOLDER_RESTORED"
-        FolderSharePermissionChanged -> "FOLDER_SHARE_PERMISSION_CHANGED"
-        FolderShareableLinkCreated -> "FOLDER_SHAREABLE_LINK_CREATED"
-        FolderShareableLinkPermissionChanged -> "FOLDER_SHAREABLE_LINK_PERMISSION_CHANGED"
-        FolderShareableLinkRemoved -> "FOLDER_SHAREABLE_LINK_REMOVED"
-        FolderShared -> "FOLDER_SHARED"
-        FolderUnshared -> "FOLDER_UNSHARED"
-
-instance Hashable     ActivityType
-instance NFData       ActivityType
-instance ToByteString ActivityType
-instance ToQuery      ActivityType
-instance ToHeader     ActivityType
-
-instance FromJSON ActivityType where
-    parseJSON = parseJSONText "ActivityType"
-
-data BooleanEnumType
-  = False'
-  | True'
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText BooleanEnumType where
-    parser = takeLowerText >>= \case
-        "false" -> pure False'
-        "true" -> pure True'
-        e -> fromTextError $ "Failure parsing BooleanEnumType from value: '" <> e
-           <> "'. Accepted values: false, true"
-
-instance ToText BooleanEnumType where
-    toText = \case
-        False' -> "FALSE"
-        True' -> "TRUE"
-
-instance Hashable     BooleanEnumType
-instance NFData       BooleanEnumType
-instance ToByteString BooleanEnumType
-instance ToQuery      BooleanEnumType
-instance ToHeader     BooleanEnumType
-
-instance ToJSON BooleanEnumType where
-    toJSON = toJSONText
-
-data CommentStatusType
-  = Deleted
-  | Draft
-  | Published
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText CommentStatusType where
-    parser = takeLowerText >>= \case
-        "deleted" -> pure Deleted
-        "draft" -> pure Draft
-        "published" -> pure Published
-        e -> fromTextError $ "Failure parsing CommentStatusType from value: '" <> e
-           <> "'. Accepted values: deleted, draft, published"
-
-instance ToText CommentStatusType where
-    toText = \case
-        Deleted -> "DELETED"
-        Draft -> "DRAFT"
-        Published -> "PUBLISHED"
-
-instance Hashable     CommentStatusType
-instance NFData       CommentStatusType
-instance ToByteString CommentStatusType
-instance ToQuery      CommentStatusType
-instance ToHeader     CommentStatusType
-
-instance FromJSON CommentStatusType where
-    parseJSON = parseJSONText "CommentStatusType"
-
-data CommentVisibilityType
-  = Private
-  | Public
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText CommentVisibilityType where
-    parser = takeLowerText >>= \case
-        "private" -> pure Private
-        "public" -> pure Public
-        e -> fromTextError $ "Failure parsing CommentVisibilityType from value: '" <> e
-           <> "'. Accepted values: private, public"
-
-instance ToText CommentVisibilityType where
-    toText = \case
-        Private -> "PRIVATE"
-        Public -> "PUBLIC"
-
-instance Hashable     CommentVisibilityType
-instance NFData       CommentVisibilityType
-instance ToByteString CommentVisibilityType
-instance ToQuery      CommentVisibilityType
-instance ToHeader     CommentVisibilityType
-
-instance ToJSON CommentVisibilityType where
-    toJSON = toJSONText
-
-instance FromJSON CommentVisibilityType where
-    parseJSON = parseJSONText "CommentVisibilityType"
-
-data DocumentSourceType
-  = Original
-  | WithComments
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText DocumentSourceType where
-    parser = takeLowerText >>= \case
-        "original" -> pure Original
-        "with_comments" -> pure WithComments
-        e -> fromTextError $ "Failure parsing DocumentSourceType from value: '" <> e
-           <> "'. Accepted values: original, with_comments"
-
-instance ToText DocumentSourceType where
-    toText = \case
-        Original -> "ORIGINAL"
-        WithComments -> "WITH_COMMENTS"
-
-instance Hashable     DocumentSourceType
-instance NFData       DocumentSourceType
-instance ToByteString DocumentSourceType
-instance ToQuery      DocumentSourceType
-instance ToHeader     DocumentSourceType
-
-instance FromJSON DocumentSourceType where
-    parseJSON = parseJSONText "DocumentSourceType"
-
-data DocumentStatusType
-  = DSTActive
-  | DSTInitialized
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText DocumentStatusType where
-    parser = takeLowerText >>= \case
-        "active" -> pure DSTActive
-        "initialized" -> pure DSTInitialized
-        e -> fromTextError $ "Failure parsing DocumentStatusType from value: '" <> e
-           <> "'. Accepted values: active, initialized"
-
-instance ToText DocumentStatusType where
-    toText = \case
-        DSTActive -> "ACTIVE"
-        DSTInitialized -> "INITIALIZED"
-
-instance Hashable     DocumentStatusType
-instance NFData       DocumentStatusType
-instance ToByteString DocumentStatusType
-instance ToQuery      DocumentStatusType
-instance ToHeader     DocumentStatusType
-
-instance FromJSON DocumentStatusType where
-    parseJSON = parseJSONText "DocumentStatusType"
-
-data DocumentThumbnailType
-  = Large
-  | Small
-  | SmallHq
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText DocumentThumbnailType where
-    parser = takeLowerText >>= \case
-        "large" -> pure Large
-        "small" -> pure Small
-        "small_hq" -> pure SmallHq
-        e -> fromTextError $ "Failure parsing DocumentThumbnailType from value: '" <> e
-           <> "'. Accepted values: large, small, small_hq"
-
-instance ToText DocumentThumbnailType where
-    toText = \case
-        Large -> "LARGE"
-        Small -> "SMALL"
-        SmallHq -> "SMALL_HQ"
-
-instance Hashable     DocumentThumbnailType
-instance NFData       DocumentThumbnailType
-instance ToByteString DocumentThumbnailType
-instance ToQuery      DocumentThumbnailType
-instance ToHeader     DocumentThumbnailType
-
-instance FromJSON DocumentThumbnailType where
-    parseJSON = parseJSONText "DocumentThumbnailType"
-
-data DocumentVersionStatus =
-  DVSActive
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText DocumentVersionStatus where
-    parser = takeLowerText >>= \case
-        "active" -> pure DVSActive
-        e -> fromTextError $ "Failure parsing DocumentVersionStatus from value: '" <> e
-           <> "'. Accepted values: active"
-
-instance ToText DocumentVersionStatus where
-    toText = \case
-        DVSActive -> "ACTIVE"
-
-instance Hashable     DocumentVersionStatus
-instance NFData       DocumentVersionStatus
-instance ToByteString DocumentVersionStatus
-instance ToQuery      DocumentVersionStatus
-instance ToHeader     DocumentVersionStatus
-
-instance ToJSON DocumentVersionStatus where
-    toJSON = toJSONText
-
-data FolderContentType
-  = FCTAll
-  | FCTDocument
-  | FCTFolder
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText FolderContentType where
-    parser = takeLowerText >>= \case
-        "all" -> pure FCTAll
-        "document" -> pure FCTDocument
-        "folder" -> pure FCTFolder
-        e -> fromTextError $ "Failure parsing FolderContentType from value: '" <> e
-           <> "'. Accepted values: all, document, folder"
-
-instance ToText FolderContentType where
-    toText = \case
-        FCTAll -> "ALL"
-        FCTDocument -> "DOCUMENT"
-        FCTFolder -> "FOLDER"
-
-instance Hashable     FolderContentType
-instance NFData       FolderContentType
-instance ToByteString FolderContentType
-instance ToQuery      FolderContentType
-instance ToHeader     FolderContentType
-
-instance ToJSON FolderContentType where
-    toJSON = toJSONText
-
-data LocaleType
-  = DE
-  | Default
-  | EN
-  | ES
-  | FR
-  | JA
-  | KO
-  | PtBr
-  | RU
-  | ZhCn
-  | ZhTw
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText LocaleType where
-    parser = takeLowerText >>= \case
-        "de" -> pure DE
-        "default" -> pure Default
-        "en" -> pure EN
-        "es" -> pure ES
-        "fr" -> pure FR
-        "ja" -> pure JA
-        "ko" -> pure KO
-        "pt_br" -> pure PtBr
-        "ru" -> pure RU
-        "zh_cn" -> pure ZhCn
-        "zh_tw" -> pure ZhTw
-        e -> fromTextError $ "Failure parsing LocaleType from value: '" <> e
-           <> "'. Accepted values: de, default, en, es, fr, ja, ko, pt_br, ru, zh_cn, zh_tw"
-
-instance ToText LocaleType where
-    toText = \case
-        DE -> "de"
-        Default -> "default"
-        EN -> "en"
-        ES -> "es"
-        FR -> "fr"
-        JA -> "ja"
-        KO -> "ko"
-        PtBr -> "pt_BR"
-        RU -> "ru"
-        ZhCn -> "zh_CN"
-        ZhTw -> "zh_TW"
-
-instance Hashable     LocaleType
-instance NFData       LocaleType
-instance ToByteString LocaleType
-instance ToQuery      LocaleType
-instance ToHeader     LocaleType
-
-instance ToJSON LocaleType where
-    toJSON = toJSONText
-
-instance FromJSON LocaleType where
-    parseJSON = parseJSONText "LocaleType"
-
-data OrderType
-  = Ascending
-  | Descending
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText OrderType where
-    parser = takeLowerText >>= \case
-        "ascending" -> pure Ascending
-        "descending" -> pure Descending
-        e -> fromTextError $ "Failure parsing OrderType from value: '" <> e
-           <> "'. Accepted values: ascending, descending"
-
-instance ToText OrderType where
-    toText = \case
-        Ascending -> "ASCENDING"
-        Descending -> "DESCENDING"
-
-instance Hashable     OrderType
-instance NFData       OrderType
-instance ToByteString OrderType
-instance ToQuery      OrderType
-instance ToHeader     OrderType
-
-instance ToJSON OrderType where
-    toJSON = toJSONText
-
-data PrincipalType
-  = Anonymous
-  | Group
-  | Invite
-  | Organization
-  | User
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText PrincipalType where
-    parser = takeLowerText >>= \case
-        "anonymous" -> pure Anonymous
-        "group" -> pure Group
-        "invite" -> pure Invite
-        "organization" -> pure Organization
-        "user" -> pure User
-        e -> fromTextError $ "Failure parsing PrincipalType from value: '" <> e
-           <> "'. Accepted values: anonymous, group, invite, organization, user"
-
-instance ToText PrincipalType where
-    toText = \case
-        Anonymous -> "ANONYMOUS"
-        Group -> "GROUP"
-        Invite -> "INVITE"
-        Organization -> "ORGANIZATION"
-        User -> "USER"
-
-instance Hashable     PrincipalType
-instance NFData       PrincipalType
-instance ToByteString PrincipalType
-instance ToQuery      PrincipalType
-instance ToHeader     PrincipalType
-
-instance ToJSON PrincipalType where
-    toJSON = toJSONText
-
-instance FromJSON PrincipalType where
-    parseJSON = parseJSONText "PrincipalType"
-
-data ResourceSortType
-  = Date
-  | Name
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ResourceSortType where
-    parser = takeLowerText >>= \case
-        "date" -> pure Date
-        "name" -> pure Name
-        e -> fromTextError $ "Failure parsing ResourceSortType from value: '" <> e
-           <> "'. Accepted values: date, name"
-
-instance ToText ResourceSortType where
-    toText = \case
-        Date -> "DATE"
-        Name -> "NAME"
-
-instance Hashable     ResourceSortType
-instance NFData       ResourceSortType
-instance ToByteString ResourceSortType
-instance ToQuery      ResourceSortType
-instance ToHeader     ResourceSortType
-
-instance ToJSON ResourceSortType where
-    toJSON = toJSONText
-
-data ResourceStateType
-  = RSTActive
-  | RSTRecycled
-  | RSTRecycling
-  | RSTRestoring
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ResourceStateType where
-    parser = takeLowerText >>= \case
-        "active" -> pure RSTActive
-        "recycled" -> pure RSTRecycled
-        "recycling" -> pure RSTRecycling
-        "restoring" -> pure RSTRestoring
-        e -> fromTextError $ "Failure parsing ResourceStateType from value: '" <> e
-           <> "'. Accepted values: active, recycled, recycling, restoring"
-
-instance ToText ResourceStateType where
-    toText = \case
-        RSTActive -> "ACTIVE"
-        RSTRecycled -> "RECYCLED"
-        RSTRecycling -> "RECYCLING"
-        RSTRestoring -> "RESTORING"
-
-instance Hashable     ResourceStateType
-instance NFData       ResourceStateType
-instance ToByteString ResourceStateType
-instance ToQuery      ResourceStateType
-instance ToHeader     ResourceStateType
-
-instance ToJSON ResourceStateType where
-    toJSON = toJSONText
-
-instance FromJSON ResourceStateType where
-    parseJSON = parseJSONText "ResourceStateType"
-
-data ResourceType
-  = Document
-  | Folder
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ResourceType where
-    parser = takeLowerText >>= \case
-        "document" -> pure Document
-        "folder" -> pure Folder
-        e -> fromTextError $ "Failure parsing ResourceType from value: '" <> e
-           <> "'. Accepted values: document, folder"
-
-instance ToText ResourceType where
-    toText = \case
-        Document -> "DOCUMENT"
-        Folder -> "FOLDER"
-
-instance Hashable     ResourceType
-instance NFData       ResourceType
-instance ToByteString ResourceType
-instance ToQuery      ResourceType
-instance ToHeader     ResourceType
-
-instance FromJSON ResourceType where
-    parseJSON = parseJSONText "ResourceType"
-
-data RolePermissionType
-  = Direct
-  | Inherited
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText RolePermissionType where
-    parser = takeLowerText >>= \case
-        "direct" -> pure Direct
-        "inherited" -> pure Inherited
-        e -> fromTextError $ "Failure parsing RolePermissionType from value: '" <> e
-           <> "'. Accepted values: direct, inherited"
-
-instance ToText RolePermissionType where
-    toText = \case
-        Direct -> "DIRECT"
-        Inherited -> "INHERITED"
-
-instance Hashable     RolePermissionType
-instance NFData       RolePermissionType
-instance ToByteString RolePermissionType
-instance ToQuery      RolePermissionType
-instance ToHeader     RolePermissionType
-
-instance FromJSON RolePermissionType where
-    parseJSON = parseJSONText "RolePermissionType"
-
-data RoleType
-  = Contributor
-  | Coowner
-  | Owner
-  | Viewer
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText RoleType where
-    parser = takeLowerText >>= \case
-        "contributor" -> pure Contributor
-        "coowner" -> pure Coowner
-        "owner" -> pure Owner
-        "viewer" -> pure Viewer
-        e -> fromTextError $ "Failure parsing RoleType from value: '" <> e
-           <> "'. Accepted values: contributor, coowner, owner, viewer"
-
-instance ToText RoleType where
-    toText = \case
-        Contributor -> "CONTRIBUTOR"
-        Coowner -> "COOWNER"
-        Owner -> "OWNER"
-        Viewer -> "VIEWER"
-
-instance Hashable     RoleType
-instance NFData       RoleType
-instance ToByteString RoleType
-instance ToQuery      RoleType
-instance ToHeader     RoleType
-
-instance ToJSON RoleType where
-    toJSON = toJSONText
-
-instance FromJSON RoleType where
-    parseJSON = parseJSONText "RoleType"
-
-data ShareStatusType
-  = Failure
-  | Success
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText ShareStatusType where
-    parser = takeLowerText >>= \case
-        "failure" -> pure Failure
-        "success" -> pure Success
-        e -> fromTextError $ "Failure parsing ShareStatusType from value: '" <> e
-           <> "'. Accepted values: failure, success"
-
-instance ToText ShareStatusType where
-    toText = \case
-        Failure -> "FAILURE"
-        Success -> "SUCCESS"
-
-instance Hashable     ShareStatusType
-instance NFData       ShareStatusType
-instance ToByteString ShareStatusType
-instance ToQuery      ShareStatusType
-instance ToHeader     ShareStatusType
-
-instance FromJSON ShareStatusType where
-    parseJSON = parseJSONText "ShareStatusType"
-
-data StorageType
-  = Quota
-  | Unlimited
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText StorageType where
-    parser = takeLowerText >>= \case
-        "quota" -> pure Quota
-        "unlimited" -> pure Unlimited
-        e -> fromTextError $ "Failure parsing StorageType from value: '" <> e
-           <> "'. Accepted values: quota, unlimited"
-
-instance ToText StorageType where
-    toText = \case
-        Quota -> "QUOTA"
-        Unlimited -> "UNLIMITED"
-
-instance Hashable     StorageType
-instance NFData       StorageType
-instance ToByteString StorageType
-instance ToQuery      StorageType
-instance ToHeader     StorageType
-
-instance ToJSON StorageType where
-    toJSON = toJSONText
-
-instance FromJSON StorageType where
-    parseJSON = parseJSONText "StorageType"
-
-data SubscriptionProtocolType =
-  HTTPS
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText SubscriptionProtocolType where
-    parser = takeLowerText >>= \case
-        "https" -> pure HTTPS
-        e -> fromTextError $ "Failure parsing SubscriptionProtocolType from value: '" <> e
-           <> "'. Accepted values: https"
-
-instance ToText SubscriptionProtocolType where
-    toText = \case
-        HTTPS -> "HTTPS"
-
-instance Hashable     SubscriptionProtocolType
-instance NFData       SubscriptionProtocolType
-instance ToByteString SubscriptionProtocolType
-instance ToQuery      SubscriptionProtocolType
-instance ToHeader     SubscriptionProtocolType
-
-instance ToJSON SubscriptionProtocolType where
-    toJSON = toJSONText
-
-instance FromJSON SubscriptionProtocolType where
-    parseJSON = parseJSONText "SubscriptionProtocolType"
-
-data SubscriptionType =
-  STAll
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText SubscriptionType where
-    parser = takeLowerText >>= \case
-        "all" -> pure STAll
-        e -> fromTextError $ "Failure parsing SubscriptionType from value: '" <> e
-           <> "'. Accepted values: all"
-
-instance ToText SubscriptionType where
-    toText = \case
-        STAll -> "ALL"
-
-instance Hashable     SubscriptionType
-instance NFData       SubscriptionType
-instance ToByteString SubscriptionType
-instance ToQuery      SubscriptionType
-instance ToHeader     SubscriptionType
-
-instance ToJSON SubscriptionType where
-    toJSON = toJSONText
-
-data UserFilterType
-  = ActivePending
-  | All
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText UserFilterType where
-    parser = takeLowerText >>= \case
-        "active_pending" -> pure ActivePending
-        "all" -> pure All
-        e -> fromTextError $ "Failure parsing UserFilterType from value: '" <> e
-           <> "'. Accepted values: active_pending, all"
-
-instance ToText UserFilterType where
-    toText = \case
-        ActivePending -> "ACTIVE_PENDING"
-        All -> "ALL"
-
-instance Hashable     UserFilterType
-instance NFData       UserFilterType
-instance ToByteString UserFilterType
-instance ToQuery      UserFilterType
-instance ToHeader     UserFilterType
-
-instance ToJSON UserFilterType where
-    toJSON = toJSONText
-
-data UserSortType
-  = FullName
-  | StorageLimit
-  | StorageUsed
-  | UserName
-  | UserStatus
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText UserSortType where
-    parser = takeLowerText >>= \case
-        "full_name" -> pure FullName
-        "storage_limit" -> pure StorageLimit
-        "storage_used" -> pure StorageUsed
-        "user_name" -> pure UserName
-        "user_status" -> pure UserStatus
-        e -> fromTextError $ "Failure parsing UserSortType from value: '" <> e
-           <> "'. Accepted values: full_name, storage_limit, storage_used, user_name, user_status"
-
-instance ToText UserSortType where
-    toText = \case
-        FullName -> "FULL_NAME"
-        StorageLimit -> "STORAGE_LIMIT"
-        StorageUsed -> "STORAGE_USED"
-        UserName -> "USER_NAME"
-        UserStatus -> "USER_STATUS"
-
-instance Hashable     UserSortType
-instance NFData       UserSortType
-instance ToByteString UserSortType
-instance ToQuery      UserSortType
-instance ToHeader     UserSortType
-
-instance ToJSON UserSortType where
-    toJSON = toJSONText
-
-data UserStatusType
-  = Active
-  | Inactive
-  | Pending
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText UserStatusType where
-    parser = takeLowerText >>= \case
-        "active" -> pure Active
-        "inactive" -> pure Inactive
-        "pending" -> pure Pending
-        e -> fromTextError $ "Failure parsing UserStatusType from value: '" <> e
-           <> "'. Accepted values: active, inactive, pending"
-
-instance ToText UserStatusType where
-    toText = \case
-        Active -> "ACTIVE"
-        Inactive -> "INACTIVE"
-        Pending -> "PENDING"
-
-instance Hashable     UserStatusType
-instance NFData       UserStatusType
-instance ToByteString UserStatusType
-instance ToQuery      UserStatusType
-instance ToHeader     UserStatusType
-
-instance FromJSON UserStatusType where
-    parseJSON = parseJSONText "UserStatusType"
-
-data UserType
-  = UTAdmin
-  | UTMinimaluser
-  | UTPoweruser
-  | UTUser
-  | UTWorkspacesuser
-  deriving (Eq, Ord, Read, Show, Enum, Bounded, Data, Typeable, Generic)
-
-
-instance FromText UserType where
-    parser = takeLowerText >>= \case
-        "admin" -> pure UTAdmin
-        "minimaluser" -> pure UTMinimaluser
-        "poweruser" -> pure UTPoweruser
-        "user" -> pure UTUser
-        "workspacesuser" -> pure UTWorkspacesuser
-        e -> fromTextError $ "Failure parsing UserType from value: '" <> e
-           <> "'. Accepted values: admin, minimaluser, poweruser, user, workspacesuser"
-
-instance ToText UserType where
-    toText = \case
-        UTAdmin -> "ADMIN"
-        UTMinimaluser -> "MINIMALUSER"
-        UTPoweruser -> "POWERUSER"
-        UTUser -> "USER"
-        UTWorkspacesuser -> "WORKSPACESUSER"
-
-instance Hashable     UserType
-instance NFData       UserType
-instance ToByteString UserType
-instance ToQuery      UserType
-instance ToHeader     UserType
-
-instance ToJSON UserType where
-    toJSON = toJSONText
-
-instance FromJSON UserType where
-    parseJSON = parseJSONText "UserType"
diff --git a/gen/Network/AWS/WorkDocs/UpdateDocument.hs b/gen/Network/AWS/WorkDocs/UpdateDocument.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/UpdateDocument.hs
+++ /dev/null
@@ -1,148 +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.WorkDocs.UpdateDocument
--- 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)
---
--- Updates the specified attributes of a document. The user must have access to both the document and its parent folder, if applicable.
---
---
-module Network.AWS.WorkDocs.UpdateDocument
-    (
-    -- * Creating a Request
-      updateDocument
-    , UpdateDocument
-    -- * Request Lenses
-    , udParentFolderId
-    , udAuthenticationToken
-    , udName
-    , udResourceState
-    , udDocumentId
-
-    -- * Destructuring the Response
-    , updateDocumentResponse
-    , UpdateDocumentResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'updateDocument' smart constructor.
-data UpdateDocument = UpdateDocument'
-  { _udParentFolderId      :: !(Maybe Text)
-  , _udAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _udName                :: !(Maybe Text)
-  , _udResourceState       :: !(Maybe ResourceStateType)
-  , _udDocumentId          :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateDocument' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'udParentFolderId' - The ID of the parent folder.
---
--- * 'udAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'udName' - The name of the document.
---
--- * 'udResourceState' - The resource state of the document. Only ACTIVE and RECYCLED are supported.
---
--- * 'udDocumentId' - The ID of the document.
-updateDocument
-    :: Text -- ^ 'udDocumentId'
-    -> UpdateDocument
-updateDocument pDocumentId_ =
-  UpdateDocument'
-    { _udParentFolderId = Nothing
-    , _udAuthenticationToken = Nothing
-    , _udName = Nothing
-    , _udResourceState = Nothing
-    , _udDocumentId = pDocumentId_
-    }
-
-
--- | The ID of the parent folder.
-udParentFolderId :: Lens' UpdateDocument (Maybe Text)
-udParentFolderId = lens _udParentFolderId (\ s a -> s{_udParentFolderId = a})
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-udAuthenticationToken :: Lens' UpdateDocument (Maybe Text)
-udAuthenticationToken = lens _udAuthenticationToken (\ s a -> s{_udAuthenticationToken = a}) . mapping _Sensitive
-
--- | The name of the document.
-udName :: Lens' UpdateDocument (Maybe Text)
-udName = lens _udName (\ s a -> s{_udName = a})
-
--- | The resource state of the document. Only ACTIVE and RECYCLED are supported.
-udResourceState :: Lens' UpdateDocument (Maybe ResourceStateType)
-udResourceState = lens _udResourceState (\ s a -> s{_udResourceState = a})
-
--- | The ID of the document.
-udDocumentId :: Lens' UpdateDocument Text
-udDocumentId = lens _udDocumentId (\ s a -> s{_udDocumentId = a})
-
-instance AWSRequest UpdateDocument where
-        type Rs UpdateDocument = UpdateDocumentResponse
-        request = patchJSON workDocs
-        response = receiveNull UpdateDocumentResponse'
-
-instance Hashable UpdateDocument where
-
-instance NFData UpdateDocument where
-
-instance ToHeaders UpdateDocument where
-        toHeaders UpdateDocument'{..}
-          = mconcat
-              ["Authentication" =# _udAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToJSON UpdateDocument where
-        toJSON UpdateDocument'{..}
-          = object
-              (catMaybes
-                 [("ParentFolderId" .=) <$> _udParentFolderId,
-                  ("Name" .=) <$> _udName,
-                  ("ResourceState" .=) <$> _udResourceState])
-
-instance ToPath UpdateDocument where
-        toPath UpdateDocument'{..}
-          = mconcat ["/api/v1/documents/", toBS _udDocumentId]
-
-instance ToQuery UpdateDocument where
-        toQuery = const mempty
-
--- | /See:/ 'updateDocumentResponse' smart constructor.
-data UpdateDocumentResponse =
-  UpdateDocumentResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateDocumentResponse' with the minimum fields required to make a request.
---
-updateDocumentResponse
-    :: UpdateDocumentResponse
-updateDocumentResponse = UpdateDocumentResponse'
-
-
-instance NFData UpdateDocumentResponse where
diff --git a/gen/Network/AWS/WorkDocs/UpdateDocumentVersion.hs b/gen/Network/AWS/WorkDocs/UpdateDocumentVersion.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/UpdateDocumentVersion.hs
+++ /dev/null
@@ -1,143 +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.WorkDocs.UpdateDocumentVersion
--- 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)
---
--- Changes the status of the document version to ACTIVE.
---
---
--- Amazon WorkDocs also sets its document container to ACTIVE. This is the last step in a document upload, after the client uploads the document to an S3-presigned URL returned by 'InitiateDocumentVersionUpload' .
---
-module Network.AWS.WorkDocs.UpdateDocumentVersion
-    (
-    -- * Creating a Request
-      updateDocumentVersion
-    , UpdateDocumentVersion
-    -- * Request Lenses
-    , udvAuthenticationToken
-    , udvVersionStatus
-    , udvDocumentId
-    , udvVersionId
-
-    -- * Destructuring the Response
-    , updateDocumentVersionResponse
-    , UpdateDocumentVersionResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'updateDocumentVersion' smart constructor.
-data UpdateDocumentVersion = UpdateDocumentVersion'
-  { _udvAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _udvVersionStatus       :: !(Maybe DocumentVersionStatus)
-  , _udvDocumentId          :: !Text
-  , _udvVersionId           :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateDocumentVersion' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'udvAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'udvVersionStatus' - The status of the version.
---
--- * 'udvDocumentId' - The ID of the document.
---
--- * 'udvVersionId' - The version ID of the document.
-updateDocumentVersion
-    :: Text -- ^ 'udvDocumentId'
-    -> Text -- ^ 'udvVersionId'
-    -> UpdateDocumentVersion
-updateDocumentVersion pDocumentId_ pVersionId_ =
-  UpdateDocumentVersion'
-    { _udvAuthenticationToken = Nothing
-    , _udvVersionStatus = Nothing
-    , _udvDocumentId = pDocumentId_
-    , _udvVersionId = pVersionId_
-    }
-
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-udvAuthenticationToken :: Lens' UpdateDocumentVersion (Maybe Text)
-udvAuthenticationToken = lens _udvAuthenticationToken (\ s a -> s{_udvAuthenticationToken = a}) . mapping _Sensitive
-
--- | The status of the version.
-udvVersionStatus :: Lens' UpdateDocumentVersion (Maybe DocumentVersionStatus)
-udvVersionStatus = lens _udvVersionStatus (\ s a -> s{_udvVersionStatus = a})
-
--- | The ID of the document.
-udvDocumentId :: Lens' UpdateDocumentVersion Text
-udvDocumentId = lens _udvDocumentId (\ s a -> s{_udvDocumentId = a})
-
--- | The version ID of the document.
-udvVersionId :: Lens' UpdateDocumentVersion Text
-udvVersionId = lens _udvVersionId (\ s a -> s{_udvVersionId = a})
-
-instance AWSRequest UpdateDocumentVersion where
-        type Rs UpdateDocumentVersion =
-             UpdateDocumentVersionResponse
-        request = patchJSON workDocs
-        response = receiveNull UpdateDocumentVersionResponse'
-
-instance Hashable UpdateDocumentVersion where
-
-instance NFData UpdateDocumentVersion where
-
-instance ToHeaders UpdateDocumentVersion where
-        toHeaders UpdateDocumentVersion'{..}
-          = mconcat
-              ["Authentication" =# _udvAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToJSON UpdateDocumentVersion where
-        toJSON UpdateDocumentVersion'{..}
-          = object
-              (catMaybes
-                 [("VersionStatus" .=) <$> _udvVersionStatus])
-
-instance ToPath UpdateDocumentVersion where
-        toPath UpdateDocumentVersion'{..}
-          = mconcat
-              ["/api/v1/documents/", toBS _udvDocumentId,
-               "/versions/", toBS _udvVersionId]
-
-instance ToQuery UpdateDocumentVersion where
-        toQuery = const mempty
-
--- | /See:/ 'updateDocumentVersionResponse' smart constructor.
-data UpdateDocumentVersionResponse =
-  UpdateDocumentVersionResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateDocumentVersionResponse' with the minimum fields required to make a request.
---
-updateDocumentVersionResponse
-    :: UpdateDocumentVersionResponse
-updateDocumentVersionResponse = UpdateDocumentVersionResponse'
-
-
-instance NFData UpdateDocumentVersionResponse where
diff --git a/gen/Network/AWS/WorkDocs/UpdateFolder.hs b/gen/Network/AWS/WorkDocs/UpdateFolder.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/UpdateFolder.hs
+++ /dev/null
@@ -1,148 +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.WorkDocs.UpdateFolder
--- 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)
---
--- Updates the specified attributes of the specified folder. The user must have access to both the folder and its parent folder, if applicable.
---
---
-module Network.AWS.WorkDocs.UpdateFolder
-    (
-    -- * Creating a Request
-      updateFolder
-    , UpdateFolder
-    -- * Request Lenses
-    , ufParentFolderId
-    , ufAuthenticationToken
-    , ufName
-    , ufResourceState
-    , ufFolderId
-
-    -- * Destructuring the Response
-    , updateFolderResponse
-    , UpdateFolderResponse
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'updateFolder' smart constructor.
-data UpdateFolder = UpdateFolder'
-  { _ufParentFolderId      :: !(Maybe Text)
-  , _ufAuthenticationToken :: !(Maybe (Sensitive Text))
-  , _ufName                :: !(Maybe Text)
-  , _ufResourceState       :: !(Maybe ResourceStateType)
-  , _ufFolderId            :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateFolder' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ufParentFolderId' - The ID of the parent folder.
---
--- * 'ufAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'ufName' - The name of the folder.
---
--- * 'ufResourceState' - The resource state of the folder. Only ACTIVE and RECYCLED are accepted values from the API.
---
--- * 'ufFolderId' - The ID of the folder.
-updateFolder
-    :: Text -- ^ 'ufFolderId'
-    -> UpdateFolder
-updateFolder pFolderId_ =
-  UpdateFolder'
-    { _ufParentFolderId = Nothing
-    , _ufAuthenticationToken = Nothing
-    , _ufName = Nothing
-    , _ufResourceState = Nothing
-    , _ufFolderId = pFolderId_
-    }
-
-
--- | The ID of the parent folder.
-ufParentFolderId :: Lens' UpdateFolder (Maybe Text)
-ufParentFolderId = lens _ufParentFolderId (\ s a -> s{_ufParentFolderId = a})
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-ufAuthenticationToken :: Lens' UpdateFolder (Maybe Text)
-ufAuthenticationToken = lens _ufAuthenticationToken (\ s a -> s{_ufAuthenticationToken = a}) . mapping _Sensitive
-
--- | The name of the folder.
-ufName :: Lens' UpdateFolder (Maybe Text)
-ufName = lens _ufName (\ s a -> s{_ufName = a})
-
--- | The resource state of the folder. Only ACTIVE and RECYCLED are accepted values from the API.
-ufResourceState :: Lens' UpdateFolder (Maybe ResourceStateType)
-ufResourceState = lens _ufResourceState (\ s a -> s{_ufResourceState = a})
-
--- | The ID of the folder.
-ufFolderId :: Lens' UpdateFolder Text
-ufFolderId = lens _ufFolderId (\ s a -> s{_ufFolderId = a})
-
-instance AWSRequest UpdateFolder where
-        type Rs UpdateFolder = UpdateFolderResponse
-        request = patchJSON workDocs
-        response = receiveNull UpdateFolderResponse'
-
-instance Hashable UpdateFolder where
-
-instance NFData UpdateFolder where
-
-instance ToHeaders UpdateFolder where
-        toHeaders UpdateFolder'{..}
-          = mconcat
-              ["Authentication" =# _ufAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToJSON UpdateFolder where
-        toJSON UpdateFolder'{..}
-          = object
-              (catMaybes
-                 [("ParentFolderId" .=) <$> _ufParentFolderId,
-                  ("Name" .=) <$> _ufName,
-                  ("ResourceState" .=) <$> _ufResourceState])
-
-instance ToPath UpdateFolder where
-        toPath UpdateFolder'{..}
-          = mconcat ["/api/v1/folders/", toBS _ufFolderId]
-
-instance ToQuery UpdateFolder where
-        toQuery = const mempty
-
--- | /See:/ 'updateFolderResponse' smart constructor.
-data UpdateFolderResponse =
-  UpdateFolderResponse'
-  deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateFolderResponse' with the minimum fields required to make a request.
---
-updateFolderResponse
-    :: UpdateFolderResponse
-updateFolderResponse = UpdateFolderResponse'
-
-
-instance NFData UpdateFolderResponse where
diff --git a/gen/Network/AWS/WorkDocs/UpdateUser.hs b/gen/Network/AWS/WorkDocs/UpdateUser.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/UpdateUser.hs
+++ /dev/null
@@ -1,213 +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.WorkDocs.UpdateUser
--- 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)
---
--- Updates the specified attributes of the specified user, and grants or revokes administrative privileges to the Amazon WorkDocs site.
---
---
-module Network.AWS.WorkDocs.UpdateUser
-    (
-    -- * Creating a Request
-      updateUser
-    , UpdateUser
-    -- * Request Lenses
-    , uuGivenName
-    , uuGrantPoweruserPrivileges
-    , uuLocale
-    , uuAuthenticationToken
-    , uuStorageRule
-    , uuType
-    , uuSurname
-    , uuTimeZoneId
-    , uuUserId
-
-    -- * Destructuring the Response
-    , updateUserResponse
-    , UpdateUserResponse
-    -- * Response Lenses
-    , uursUser
-    , uursResponseStatus
-    ) where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Request
-import Network.AWS.Response
-import Network.AWS.WorkDocs.Types
-import Network.AWS.WorkDocs.Types.Product
-
--- | /See:/ 'updateUser' smart constructor.
-data UpdateUser = UpdateUser'
-  { _uuGivenName                :: !(Maybe Text)
-  , _uuGrantPoweruserPrivileges :: !(Maybe BooleanEnumType)
-  , _uuLocale                   :: !(Maybe LocaleType)
-  , _uuAuthenticationToken      :: !(Maybe (Sensitive Text))
-  , _uuStorageRule              :: !(Maybe StorageRuleType)
-  , _uuType                     :: !(Maybe UserType)
-  , _uuSurname                  :: !(Maybe Text)
-  , _uuTimeZoneId               :: !(Maybe Text)
-  , _uuUserId                   :: !Text
-  } deriving (Eq, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateUser' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uuGivenName' - The given name of the user.
---
--- * 'uuGrantPoweruserPrivileges' - Boolean value to determine whether the user is granted Poweruser privileges.
---
--- * 'uuLocale' - The locale of the user.
---
--- * 'uuAuthenticationToken' - Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
---
--- * 'uuStorageRule' - The amount of storage for the user.
---
--- * 'uuType' - The type of the user.
---
--- * 'uuSurname' - The surname of the user.
---
--- * 'uuTimeZoneId' - The time zone ID of the user.
---
--- * 'uuUserId' - The ID of the user.
-updateUser
-    :: Text -- ^ 'uuUserId'
-    -> UpdateUser
-updateUser pUserId_ =
-  UpdateUser'
-    { _uuGivenName = Nothing
-    , _uuGrantPoweruserPrivileges = Nothing
-    , _uuLocale = Nothing
-    , _uuAuthenticationToken = Nothing
-    , _uuStorageRule = Nothing
-    , _uuType = Nothing
-    , _uuSurname = Nothing
-    , _uuTimeZoneId = Nothing
-    , _uuUserId = pUserId_
-    }
-
-
--- | The given name of the user.
-uuGivenName :: Lens' UpdateUser (Maybe Text)
-uuGivenName = lens _uuGivenName (\ s a -> s{_uuGivenName = a})
-
--- | Boolean value to determine whether the user is granted Poweruser privileges.
-uuGrantPoweruserPrivileges :: Lens' UpdateUser (Maybe BooleanEnumType)
-uuGrantPoweruserPrivileges = lens _uuGrantPoweruserPrivileges (\ s a -> s{_uuGrantPoweruserPrivileges = a})
-
--- | The locale of the user.
-uuLocale :: Lens' UpdateUser (Maybe LocaleType)
-uuLocale = lens _uuLocale (\ s a -> s{_uuLocale = a})
-
--- | Amazon WorkDocs authentication token. Do not set this field when using administrative API actions, as in accessing the API using AWS credentials.
-uuAuthenticationToken :: Lens' UpdateUser (Maybe Text)
-uuAuthenticationToken = lens _uuAuthenticationToken (\ s a -> s{_uuAuthenticationToken = a}) . mapping _Sensitive
-
--- | The amount of storage for the user.
-uuStorageRule :: Lens' UpdateUser (Maybe StorageRuleType)
-uuStorageRule = lens _uuStorageRule (\ s a -> s{_uuStorageRule = a})
-
--- | The type of the user.
-uuType :: Lens' UpdateUser (Maybe UserType)
-uuType = lens _uuType (\ s a -> s{_uuType = a})
-
--- | The surname of the user.
-uuSurname :: Lens' UpdateUser (Maybe Text)
-uuSurname = lens _uuSurname (\ s a -> s{_uuSurname = a})
-
--- | The time zone ID of the user.
-uuTimeZoneId :: Lens' UpdateUser (Maybe Text)
-uuTimeZoneId = lens _uuTimeZoneId (\ s a -> s{_uuTimeZoneId = a})
-
--- | The ID of the user.
-uuUserId :: Lens' UpdateUser Text
-uuUserId = lens _uuUserId (\ s a -> s{_uuUserId = a})
-
-instance AWSRequest UpdateUser where
-        type Rs UpdateUser = UpdateUserResponse
-        request = patchJSON workDocs
-        response
-          = receiveJSON
-              (\ s h x ->
-                 UpdateUserResponse' <$>
-                   (x .?> "User") <*> (pure (fromEnum s)))
-
-instance Hashable UpdateUser where
-
-instance NFData UpdateUser where
-
-instance ToHeaders UpdateUser where
-        toHeaders UpdateUser'{..}
-          = mconcat
-              ["Authentication" =# _uuAuthenticationToken,
-               "Content-Type" =#
-                 ("application/x-amz-json-1.1" :: ByteString)]
-
-instance ToJSON UpdateUser where
-        toJSON UpdateUser'{..}
-          = object
-              (catMaybes
-                 [("GivenName" .=) <$> _uuGivenName,
-                  ("GrantPoweruserPrivileges" .=) <$>
-                    _uuGrantPoweruserPrivileges,
-                  ("Locale" .=) <$> _uuLocale,
-                  ("StorageRule" .=) <$> _uuStorageRule,
-                  ("Type" .=) <$> _uuType,
-                  ("Surname" .=) <$> _uuSurname,
-                  ("TimeZoneId" .=) <$> _uuTimeZoneId])
-
-instance ToPath UpdateUser where
-        toPath UpdateUser'{..}
-          = mconcat ["/api/v1/users/", toBS _uuUserId]
-
-instance ToQuery UpdateUser where
-        toQuery = const mempty
-
--- | /See:/ 'updateUserResponse' smart constructor.
-data UpdateUserResponse = UpdateUserResponse'
-  { _uursUser           :: !(Maybe User)
-  , _uursResponseStatus :: !Int
-  } deriving (Eq, Read, Show, Data, Typeable, Generic)
-
-
--- | Creates a value of 'UpdateUserResponse' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'uursUser' - The user information.
---
--- * 'uursResponseStatus' - -- | The response status code.
-updateUserResponse
-    :: Int -- ^ 'uursResponseStatus'
-    -> UpdateUserResponse
-updateUserResponse pResponseStatus_ =
-  UpdateUserResponse'
-    {_uursUser = Nothing, _uursResponseStatus = pResponseStatus_}
-
-
--- | The user information.
-uursUser :: Lens' UpdateUserResponse (Maybe User)
-uursUser = lens _uursUser (\ s a -> s{_uursUser = a})
-
--- | -- | The response status code.
-uursResponseStatus :: Lens' UpdateUserResponse Int
-uursResponseStatus = lens _uursResponseStatus (\ s a -> s{_uursResponseStatus = a})
-
-instance NFData UpdateUserResponse where
diff --git a/gen/Network/AWS/WorkDocs/Waiters.hs b/gen/Network/AWS/WorkDocs/Waiters.hs
deleted file mode 100644
--- a/gen/Network/AWS/WorkDocs/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.WorkDocs.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.WorkDocs.Waiters where
-
-import Network.AWS.Lens
-import Network.AWS.Prelude
-import Network.AWS.Waiter
-import Network.AWS.WorkDocs.Types
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.WorkDocs
+import Test.Amazonka.WorkDocs.Internal
 import Test.Tasty
-import Test.AWS.WorkDocs
-import Test.AWS.WorkDocs.Internal
 
 main :: IO ()
-main = defaultMain $ testGroup "WorkDocs"
-    [ testGroup "tests"    tests
-    , testGroup "fixtures" fixtures
-    ]
+main =
+  defaultMain $
+    testGroup
+      "WorkDocs"
+      [ testGroup "tests" tests,
+        testGroup "fixtures" fixtures
+      ]
diff --git a/test/Test/AWS/Gen/WorkDocs.hs b/test/Test/AWS/Gen/WorkDocs.hs
deleted file mode 100644
--- a/test/Test/AWS/Gen/WorkDocs.hs
+++ /dev/null
@@ -1,759 +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.WorkDocs
--- 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.WorkDocs where
-
-import Data.Proxy
-import Network.AWS.WorkDocs
-import Test.AWS.Fixture
-import Test.AWS.Prelude
-import Test.AWS.WorkDocs.Internal
-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"
---         [ requestDeleteLabels $
---             deleteLabels
---
---         , requestAbortDocumentVersionUpload $
---             abortDocumentVersionUpload
---
---         , requestGetDocumentPath $
---             getDocumentPath
---
---         , requestCreateComment $
---             createComment
---
---         , requestDescribeUsers $
---             describeUsers
---
---         , requestDeleteFolder $
---             deleteFolder
---
---         , requestUpdateFolder $
---             updateFolder
---
---         , requestDeleteCustomMetadata $
---             deleteCustomMetadata
---
---         , requestDescribeResourcePermissions $
---             describeResourcePermissions
---
---         , requestDeleteNotificationSubscription $
---             deleteNotificationSubscription
---
---         , requestCreateFolder $
---             createFolder
---
---         , requestCreateNotificationSubscription $
---             createNotificationSubscription
---
---         , requestCreateCustomMetadata $
---             createCustomMetadata
---
---         , requestGetFolderPath $
---             getFolderPath
---
---         , requestDescribeComments $
---             describeComments
---
---         , requestDeleteFolderContents $
---             deleteFolderContents
---
---         , requestRemoveAllResourcePermissions $
---             removeAllResourcePermissions
---
---         , requestGetFolder $
---             getFolder
---
---         , requestDescribeNotificationSubscriptions $
---             describeNotificationSubscriptions
---
---         , requestActivateUser $
---             activateUser
---
---         , requestDescribeDocumentVersions $
---             describeDocumentVersions
---
---         , requestGetDocumentVersion $
---             getDocumentVersion
---
---         , requestDescribeActivities $
---             describeActivities
---
---         , requestDescribeRootFolders $
---             describeRootFolders
---
---         , requestGetCurrentUser $
---             getCurrentUser
---
---         , requestDeactivateUser $
---             deactivateUser
---
---         , requestGetDocument $
---             getDocument
---
---         , requestDescribeFolderContents $
---             describeFolderContents
---
---         , requestCreateLabels $
---             createLabels
---
---         , requestUpdateDocumentVersion $
---             updateDocumentVersion
---
---         , requestRemoveResourcePermission $
---             removeResourcePermission
---
---         , requestDeleteComment $
---             deleteComment
---
---         , requestInitiateDocumentVersionUpload $
---             initiateDocumentVersionUpload
---
---         , requestCreateUser $
---             createUser
---
---         , requestUpdateUser $
---             updateUser
---
---         , requestDeleteUser $
---             deleteUser
---
---         , requestAddResourcePermissions $
---             addResourcePermissions
---
---         , requestUpdateDocument $
---             updateDocument
---
---         , requestDeleteDocument $
---             deleteDocument
---
---         , requestDescribeGroups $
---             describeGroups
---
---           ]
-
---     , testGroup "response"
---         [ responseDeleteLabels $
---             deleteLabelsResponse
---
---         , responseAbortDocumentVersionUpload $
---             abortDocumentVersionUploadResponse
---
---         , responseGetDocumentPath $
---             getDocumentPathResponse
---
---         , responseCreateComment $
---             createCommentResponse
---
---         , responseDescribeUsers $
---             describeUsersResponse
---
---         , responseDeleteFolder $
---             deleteFolderResponse
---
---         , responseUpdateFolder $
---             updateFolderResponse
---
---         , responseDeleteCustomMetadata $
---             deleteCustomMetadataResponse
---
---         , responseDescribeResourcePermissions $
---             describeResourcePermissionsResponse
---
---         , responseDeleteNotificationSubscription $
---             deleteNotificationSubscriptionResponse
---
---         , responseCreateFolder $
---             createFolderResponse
---
---         , responseCreateNotificationSubscription $
---             createNotificationSubscriptionResponse
---
---         , responseCreateCustomMetadata $
---             createCustomMetadataResponse
---
---         , responseGetFolderPath $
---             getFolderPathResponse
---
---         , responseDescribeComments $
---             describeCommentsResponse
---
---         , responseDeleteFolderContents $
---             deleteFolderContentsResponse
---
---         , responseRemoveAllResourcePermissions $
---             removeAllResourcePermissionsResponse
---
---         , responseGetFolder $
---             getFolderResponse
---
---         , responseDescribeNotificationSubscriptions $
---             describeNotificationSubscriptionsResponse
---
---         , responseActivateUser $
---             activateUserResponse
---
---         , responseDescribeDocumentVersions $
---             describeDocumentVersionsResponse
---
---         , responseGetDocumentVersion $
---             getDocumentVersionResponse
---
---         , responseDescribeActivities $
---             describeActivitiesResponse
---
---         , responseDescribeRootFolders $
---             describeRootFoldersResponse
---
---         , responseGetCurrentUser $
---             getCurrentUserResponse
---
---         , responseDeactivateUser $
---             deactivateUserResponse
---
---         , responseGetDocument $
---             getDocumentResponse
---
---         , responseDescribeFolderContents $
---             describeFolderContentsResponse
---
---         , responseCreateLabels $
---             createLabelsResponse
---
---         , responseUpdateDocumentVersion $
---             updateDocumentVersionResponse
---
---         , responseRemoveResourcePermission $
---             removeResourcePermissionResponse
---
---         , responseDeleteComment $
---             deleteCommentResponse
---
---         , responseInitiateDocumentVersionUpload $
---             initiateDocumentVersionUploadResponse
---
---         , responseCreateUser $
---             createUserResponse
---
---         , responseUpdateUser $
---             updateUserResponse
---
---         , responseDeleteUser $
---             deleteUserResponse
---
---         , responseAddResourcePermissions $
---             addResourcePermissionsResponse
---
---         , responseUpdateDocument $
---             updateDocumentResponse
---
---         , responseDeleteDocument $
---             deleteDocumentResponse
---
---         , responseDescribeGroups $
---             describeGroupsResponse
---
---           ]
---     ]
-
--- Requests
-
-requestDeleteLabels :: DeleteLabels -> TestTree
-requestDeleteLabels = req
-    "DeleteLabels"
-    "fixture/DeleteLabels.yaml"
-
-requestAbortDocumentVersionUpload :: AbortDocumentVersionUpload -> TestTree
-requestAbortDocumentVersionUpload = req
-    "AbortDocumentVersionUpload"
-    "fixture/AbortDocumentVersionUpload.yaml"
-
-requestGetDocumentPath :: GetDocumentPath -> TestTree
-requestGetDocumentPath = req
-    "GetDocumentPath"
-    "fixture/GetDocumentPath.yaml"
-
-requestCreateComment :: CreateComment -> TestTree
-requestCreateComment = req
-    "CreateComment"
-    "fixture/CreateComment.yaml"
-
-requestDescribeUsers :: DescribeUsers -> TestTree
-requestDescribeUsers = req
-    "DescribeUsers"
-    "fixture/DescribeUsers.yaml"
-
-requestDeleteFolder :: DeleteFolder -> TestTree
-requestDeleteFolder = req
-    "DeleteFolder"
-    "fixture/DeleteFolder.yaml"
-
-requestUpdateFolder :: UpdateFolder -> TestTree
-requestUpdateFolder = req
-    "UpdateFolder"
-    "fixture/UpdateFolder.yaml"
-
-requestDeleteCustomMetadata :: DeleteCustomMetadata -> TestTree
-requestDeleteCustomMetadata = req
-    "DeleteCustomMetadata"
-    "fixture/DeleteCustomMetadata.yaml"
-
-requestDescribeResourcePermissions :: DescribeResourcePermissions -> TestTree
-requestDescribeResourcePermissions = req
-    "DescribeResourcePermissions"
-    "fixture/DescribeResourcePermissions.yaml"
-
-requestDeleteNotificationSubscription :: DeleteNotificationSubscription -> TestTree
-requestDeleteNotificationSubscription = req
-    "DeleteNotificationSubscription"
-    "fixture/DeleteNotificationSubscription.yaml"
-
-requestCreateFolder :: CreateFolder -> TestTree
-requestCreateFolder = req
-    "CreateFolder"
-    "fixture/CreateFolder.yaml"
-
-requestCreateNotificationSubscription :: CreateNotificationSubscription -> TestTree
-requestCreateNotificationSubscription = req
-    "CreateNotificationSubscription"
-    "fixture/CreateNotificationSubscription.yaml"
-
-requestCreateCustomMetadata :: CreateCustomMetadata -> TestTree
-requestCreateCustomMetadata = req
-    "CreateCustomMetadata"
-    "fixture/CreateCustomMetadata.yaml"
-
-requestGetFolderPath :: GetFolderPath -> TestTree
-requestGetFolderPath = req
-    "GetFolderPath"
-    "fixture/GetFolderPath.yaml"
-
-requestDescribeComments :: DescribeComments -> TestTree
-requestDescribeComments = req
-    "DescribeComments"
-    "fixture/DescribeComments.yaml"
-
-requestDeleteFolderContents :: DeleteFolderContents -> TestTree
-requestDeleteFolderContents = req
-    "DeleteFolderContents"
-    "fixture/DeleteFolderContents.yaml"
-
-requestRemoveAllResourcePermissions :: RemoveAllResourcePermissions -> TestTree
-requestRemoveAllResourcePermissions = req
-    "RemoveAllResourcePermissions"
-    "fixture/RemoveAllResourcePermissions.yaml"
-
-requestGetFolder :: GetFolder -> TestTree
-requestGetFolder = req
-    "GetFolder"
-    "fixture/GetFolder.yaml"
-
-requestDescribeNotificationSubscriptions :: DescribeNotificationSubscriptions -> TestTree
-requestDescribeNotificationSubscriptions = req
-    "DescribeNotificationSubscriptions"
-    "fixture/DescribeNotificationSubscriptions.yaml"
-
-requestActivateUser :: ActivateUser -> TestTree
-requestActivateUser = req
-    "ActivateUser"
-    "fixture/ActivateUser.yaml"
-
-requestDescribeDocumentVersions :: DescribeDocumentVersions -> TestTree
-requestDescribeDocumentVersions = req
-    "DescribeDocumentVersions"
-    "fixture/DescribeDocumentVersions.yaml"
-
-requestGetDocumentVersion :: GetDocumentVersion -> TestTree
-requestGetDocumentVersion = req
-    "GetDocumentVersion"
-    "fixture/GetDocumentVersion.yaml"
-
-requestDescribeActivities :: DescribeActivities -> TestTree
-requestDescribeActivities = req
-    "DescribeActivities"
-    "fixture/DescribeActivities.yaml"
-
-requestDescribeRootFolders :: DescribeRootFolders -> TestTree
-requestDescribeRootFolders = req
-    "DescribeRootFolders"
-    "fixture/DescribeRootFolders.yaml"
-
-requestGetCurrentUser :: GetCurrentUser -> TestTree
-requestGetCurrentUser = req
-    "GetCurrentUser"
-    "fixture/GetCurrentUser.yaml"
-
-requestDeactivateUser :: DeactivateUser -> TestTree
-requestDeactivateUser = req
-    "DeactivateUser"
-    "fixture/DeactivateUser.yaml"
-
-requestGetDocument :: GetDocument -> TestTree
-requestGetDocument = req
-    "GetDocument"
-    "fixture/GetDocument.yaml"
-
-requestDescribeFolderContents :: DescribeFolderContents -> TestTree
-requestDescribeFolderContents = req
-    "DescribeFolderContents"
-    "fixture/DescribeFolderContents.yaml"
-
-requestCreateLabels :: CreateLabels -> TestTree
-requestCreateLabels = req
-    "CreateLabels"
-    "fixture/CreateLabels.yaml"
-
-requestUpdateDocumentVersion :: UpdateDocumentVersion -> TestTree
-requestUpdateDocumentVersion = req
-    "UpdateDocumentVersion"
-    "fixture/UpdateDocumentVersion.yaml"
-
-requestRemoveResourcePermission :: RemoveResourcePermission -> TestTree
-requestRemoveResourcePermission = req
-    "RemoveResourcePermission"
-    "fixture/RemoveResourcePermission.yaml"
-
-requestDeleteComment :: DeleteComment -> TestTree
-requestDeleteComment = req
-    "DeleteComment"
-    "fixture/DeleteComment.yaml"
-
-requestInitiateDocumentVersionUpload :: InitiateDocumentVersionUpload -> TestTree
-requestInitiateDocumentVersionUpload = req
-    "InitiateDocumentVersionUpload"
-    "fixture/InitiateDocumentVersionUpload.yaml"
-
-requestCreateUser :: CreateUser -> TestTree
-requestCreateUser = req
-    "CreateUser"
-    "fixture/CreateUser.yaml"
-
-requestUpdateUser :: UpdateUser -> TestTree
-requestUpdateUser = req
-    "UpdateUser"
-    "fixture/UpdateUser.yaml"
-
-requestDeleteUser :: DeleteUser -> TestTree
-requestDeleteUser = req
-    "DeleteUser"
-    "fixture/DeleteUser.yaml"
-
-requestAddResourcePermissions :: AddResourcePermissions -> TestTree
-requestAddResourcePermissions = req
-    "AddResourcePermissions"
-    "fixture/AddResourcePermissions.yaml"
-
-requestUpdateDocument :: UpdateDocument -> TestTree
-requestUpdateDocument = req
-    "UpdateDocument"
-    "fixture/UpdateDocument.yaml"
-
-requestDeleteDocument :: DeleteDocument -> TestTree
-requestDeleteDocument = req
-    "DeleteDocument"
-    "fixture/DeleteDocument.yaml"
-
-requestDescribeGroups :: DescribeGroups -> TestTree
-requestDescribeGroups = req
-    "DescribeGroups"
-    "fixture/DescribeGroups.yaml"
-
--- Responses
-
-responseDeleteLabels :: DeleteLabelsResponse -> TestTree
-responseDeleteLabels = res
-    "DeleteLabelsResponse"
-    "fixture/DeleteLabelsResponse.proto"
-    workDocs
-    (Proxy :: Proxy DeleteLabels)
-
-responseAbortDocumentVersionUpload :: AbortDocumentVersionUploadResponse -> TestTree
-responseAbortDocumentVersionUpload = res
-    "AbortDocumentVersionUploadResponse"
-    "fixture/AbortDocumentVersionUploadResponse.proto"
-    workDocs
-    (Proxy :: Proxy AbortDocumentVersionUpload)
-
-responseGetDocumentPath :: GetDocumentPathResponse -> TestTree
-responseGetDocumentPath = res
-    "GetDocumentPathResponse"
-    "fixture/GetDocumentPathResponse.proto"
-    workDocs
-    (Proxy :: Proxy GetDocumentPath)
-
-responseCreateComment :: CreateCommentResponse -> TestTree
-responseCreateComment = res
-    "CreateCommentResponse"
-    "fixture/CreateCommentResponse.proto"
-    workDocs
-    (Proxy :: Proxy CreateComment)
-
-responseDescribeUsers :: DescribeUsersResponse -> TestTree
-responseDescribeUsers = res
-    "DescribeUsersResponse"
-    "fixture/DescribeUsersResponse.proto"
-    workDocs
-    (Proxy :: Proxy DescribeUsers)
-
-responseDeleteFolder :: DeleteFolderResponse -> TestTree
-responseDeleteFolder = res
-    "DeleteFolderResponse"
-    "fixture/DeleteFolderResponse.proto"
-    workDocs
-    (Proxy :: Proxy DeleteFolder)
-
-responseUpdateFolder :: UpdateFolderResponse -> TestTree
-responseUpdateFolder = res
-    "UpdateFolderResponse"
-    "fixture/UpdateFolderResponse.proto"
-    workDocs
-    (Proxy :: Proxy UpdateFolder)
-
-responseDeleteCustomMetadata :: DeleteCustomMetadataResponse -> TestTree
-responseDeleteCustomMetadata = res
-    "DeleteCustomMetadataResponse"
-    "fixture/DeleteCustomMetadataResponse.proto"
-    workDocs
-    (Proxy :: Proxy DeleteCustomMetadata)
-
-responseDescribeResourcePermissions :: DescribeResourcePermissionsResponse -> TestTree
-responseDescribeResourcePermissions = res
-    "DescribeResourcePermissionsResponse"
-    "fixture/DescribeResourcePermissionsResponse.proto"
-    workDocs
-    (Proxy :: Proxy DescribeResourcePermissions)
-
-responseDeleteNotificationSubscription :: DeleteNotificationSubscriptionResponse -> TestTree
-responseDeleteNotificationSubscription = res
-    "DeleteNotificationSubscriptionResponse"
-    "fixture/DeleteNotificationSubscriptionResponse.proto"
-    workDocs
-    (Proxy :: Proxy DeleteNotificationSubscription)
-
-responseCreateFolder :: CreateFolderResponse -> TestTree
-responseCreateFolder = res
-    "CreateFolderResponse"
-    "fixture/CreateFolderResponse.proto"
-    workDocs
-    (Proxy :: Proxy CreateFolder)
-
-responseCreateNotificationSubscription :: CreateNotificationSubscriptionResponse -> TestTree
-responseCreateNotificationSubscription = res
-    "CreateNotificationSubscriptionResponse"
-    "fixture/CreateNotificationSubscriptionResponse.proto"
-    workDocs
-    (Proxy :: Proxy CreateNotificationSubscription)
-
-responseCreateCustomMetadata :: CreateCustomMetadataResponse -> TestTree
-responseCreateCustomMetadata = res
-    "CreateCustomMetadataResponse"
-    "fixture/CreateCustomMetadataResponse.proto"
-    workDocs
-    (Proxy :: Proxy CreateCustomMetadata)
-
-responseGetFolderPath :: GetFolderPathResponse -> TestTree
-responseGetFolderPath = res
-    "GetFolderPathResponse"
-    "fixture/GetFolderPathResponse.proto"
-    workDocs
-    (Proxy :: Proxy GetFolderPath)
-
-responseDescribeComments :: DescribeCommentsResponse -> TestTree
-responseDescribeComments = res
-    "DescribeCommentsResponse"
-    "fixture/DescribeCommentsResponse.proto"
-    workDocs
-    (Proxy :: Proxy DescribeComments)
-
-responseDeleteFolderContents :: DeleteFolderContentsResponse -> TestTree
-responseDeleteFolderContents = res
-    "DeleteFolderContentsResponse"
-    "fixture/DeleteFolderContentsResponse.proto"
-    workDocs
-    (Proxy :: Proxy DeleteFolderContents)
-
-responseRemoveAllResourcePermissions :: RemoveAllResourcePermissionsResponse -> TestTree
-responseRemoveAllResourcePermissions = res
-    "RemoveAllResourcePermissionsResponse"
-    "fixture/RemoveAllResourcePermissionsResponse.proto"
-    workDocs
-    (Proxy :: Proxy RemoveAllResourcePermissions)
-
-responseGetFolder :: GetFolderResponse -> TestTree
-responseGetFolder = res
-    "GetFolderResponse"
-    "fixture/GetFolderResponse.proto"
-    workDocs
-    (Proxy :: Proxy GetFolder)
-
-responseDescribeNotificationSubscriptions :: DescribeNotificationSubscriptionsResponse -> TestTree
-responseDescribeNotificationSubscriptions = res
-    "DescribeNotificationSubscriptionsResponse"
-    "fixture/DescribeNotificationSubscriptionsResponse.proto"
-    workDocs
-    (Proxy :: Proxy DescribeNotificationSubscriptions)
-
-responseActivateUser :: ActivateUserResponse -> TestTree
-responseActivateUser = res
-    "ActivateUserResponse"
-    "fixture/ActivateUserResponse.proto"
-    workDocs
-    (Proxy :: Proxy ActivateUser)
-
-responseDescribeDocumentVersions :: DescribeDocumentVersionsResponse -> TestTree
-responseDescribeDocumentVersions = res
-    "DescribeDocumentVersionsResponse"
-    "fixture/DescribeDocumentVersionsResponse.proto"
-    workDocs
-    (Proxy :: Proxy DescribeDocumentVersions)
-
-responseGetDocumentVersion :: GetDocumentVersionResponse -> TestTree
-responseGetDocumentVersion = res
-    "GetDocumentVersionResponse"
-    "fixture/GetDocumentVersionResponse.proto"
-    workDocs
-    (Proxy :: Proxy GetDocumentVersion)
-
-responseDescribeActivities :: DescribeActivitiesResponse -> TestTree
-responseDescribeActivities = res
-    "DescribeActivitiesResponse"
-    "fixture/DescribeActivitiesResponse.proto"
-    workDocs
-    (Proxy :: Proxy DescribeActivities)
-
-responseDescribeRootFolders :: DescribeRootFoldersResponse -> TestTree
-responseDescribeRootFolders = res
-    "DescribeRootFoldersResponse"
-    "fixture/DescribeRootFoldersResponse.proto"
-    workDocs
-    (Proxy :: Proxy DescribeRootFolders)
-
-responseGetCurrentUser :: GetCurrentUserResponse -> TestTree
-responseGetCurrentUser = res
-    "GetCurrentUserResponse"
-    "fixture/GetCurrentUserResponse.proto"
-    workDocs
-    (Proxy :: Proxy GetCurrentUser)
-
-responseDeactivateUser :: DeactivateUserResponse -> TestTree
-responseDeactivateUser = res
-    "DeactivateUserResponse"
-    "fixture/DeactivateUserResponse.proto"
-    workDocs
-    (Proxy :: Proxy DeactivateUser)
-
-responseGetDocument :: GetDocumentResponse -> TestTree
-responseGetDocument = res
-    "GetDocumentResponse"
-    "fixture/GetDocumentResponse.proto"
-    workDocs
-    (Proxy :: Proxy GetDocument)
-
-responseDescribeFolderContents :: DescribeFolderContentsResponse -> TestTree
-responseDescribeFolderContents = res
-    "DescribeFolderContentsResponse"
-    "fixture/DescribeFolderContentsResponse.proto"
-    workDocs
-    (Proxy :: Proxy DescribeFolderContents)
-
-responseCreateLabels :: CreateLabelsResponse -> TestTree
-responseCreateLabels = res
-    "CreateLabelsResponse"
-    "fixture/CreateLabelsResponse.proto"
-    workDocs
-    (Proxy :: Proxy CreateLabels)
-
-responseUpdateDocumentVersion :: UpdateDocumentVersionResponse -> TestTree
-responseUpdateDocumentVersion = res
-    "UpdateDocumentVersionResponse"
-    "fixture/UpdateDocumentVersionResponse.proto"
-    workDocs
-    (Proxy :: Proxy UpdateDocumentVersion)
-
-responseRemoveResourcePermission :: RemoveResourcePermissionResponse -> TestTree
-responseRemoveResourcePermission = res
-    "RemoveResourcePermissionResponse"
-    "fixture/RemoveResourcePermissionResponse.proto"
-    workDocs
-    (Proxy :: Proxy RemoveResourcePermission)
-
-responseDeleteComment :: DeleteCommentResponse -> TestTree
-responseDeleteComment = res
-    "DeleteCommentResponse"
-    "fixture/DeleteCommentResponse.proto"
-    workDocs
-    (Proxy :: Proxy DeleteComment)
-
-responseInitiateDocumentVersionUpload :: InitiateDocumentVersionUploadResponse -> TestTree
-responseInitiateDocumentVersionUpload = res
-    "InitiateDocumentVersionUploadResponse"
-    "fixture/InitiateDocumentVersionUploadResponse.proto"
-    workDocs
-    (Proxy :: Proxy InitiateDocumentVersionUpload)
-
-responseCreateUser :: CreateUserResponse -> TestTree
-responseCreateUser = res
-    "CreateUserResponse"
-    "fixture/CreateUserResponse.proto"
-    workDocs
-    (Proxy :: Proxy CreateUser)
-
-responseUpdateUser :: UpdateUserResponse -> TestTree
-responseUpdateUser = res
-    "UpdateUserResponse"
-    "fixture/UpdateUserResponse.proto"
-    workDocs
-    (Proxy :: Proxy UpdateUser)
-
-responseDeleteUser :: DeleteUserResponse -> TestTree
-responseDeleteUser = res
-    "DeleteUserResponse"
-    "fixture/DeleteUserResponse.proto"
-    workDocs
-    (Proxy :: Proxy DeleteUser)
-
-responseAddResourcePermissions :: AddResourcePermissionsResponse -> TestTree
-responseAddResourcePermissions = res
-    "AddResourcePermissionsResponse"
-    "fixture/AddResourcePermissionsResponse.proto"
-    workDocs
-    (Proxy :: Proxy AddResourcePermissions)
-
-responseUpdateDocument :: UpdateDocumentResponse -> TestTree
-responseUpdateDocument = res
-    "UpdateDocumentResponse"
-    "fixture/UpdateDocumentResponse.proto"
-    workDocs
-    (Proxy :: Proxy UpdateDocument)
-
-responseDeleteDocument :: DeleteDocumentResponse -> TestTree
-responseDeleteDocument = res
-    "DeleteDocumentResponse"
-    "fixture/DeleteDocumentResponse.proto"
-    workDocs
-    (Proxy :: Proxy DeleteDocument)
-
-responseDescribeGroups :: DescribeGroupsResponse -> TestTree
-responseDescribeGroups = res
-    "DescribeGroupsResponse"
-    "fixture/DescribeGroupsResponse.proto"
-    workDocs
-    (Proxy :: Proxy DescribeGroups)
diff --git a/test/Test/AWS/WorkDocs.hs b/test/Test/AWS/WorkDocs.hs
deleted file mode 100644
--- a/test/Test/AWS/WorkDocs.hs
+++ /dev/null
@@ -1,20 +0,0 @@
--- |
--- Module      : Test.AWS.WorkDocs
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Test.AWS.WorkDocs
-    ( tests
-    , fixtures
-    ) where
-
-import Test.Tasty (TestTree)
-
-tests :: [TestTree]
-tests = []
-
-fixtures :: [TestTree]
-fixtures = []
diff --git a/test/Test/AWS/WorkDocs/Internal.hs b/test/Test/AWS/WorkDocs/Internal.hs
deleted file mode 100644
--- a/test/Test/AWS/WorkDocs/Internal.hs
+++ /dev/null
@@ -1,9 +0,0 @@
--- |
--- Module      : Test.AWS.WorkDocs.Internal
--- Copyright   : (c) 2013-2018 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Test.AWS.WorkDocs.Internal where
diff --git a/test/Test/Amazonka/Gen/WorkDocs.hs b/test/Test/Amazonka/Gen/WorkDocs.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/Gen/WorkDocs.hs
@@ -0,0 +1,898 @@
+{-# 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.WorkDocs
+-- 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.WorkDocs where
+
+import Amazonka.WorkDocs
+import qualified Data.Proxy as Proxy
+import Test.Amazonka.Fixture
+import Test.Amazonka.Prelude
+import Test.Amazonka.WorkDocs.Internal
+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"
+--         [ requestAbortDocumentVersionUpload $
+--             newAbortDocumentVersionUpload
+--
+--         , requestActivateUser $
+--             newActivateUser
+--
+--         , requestAddResourcePermissions $
+--             newAddResourcePermissions
+--
+--         , requestCreateComment $
+--             newCreateComment
+--
+--         , requestCreateCustomMetadata $
+--             newCreateCustomMetadata
+--
+--         , requestCreateFolder $
+--             newCreateFolder
+--
+--         , requestCreateLabels $
+--             newCreateLabels
+--
+--         , requestCreateNotificationSubscription $
+--             newCreateNotificationSubscription
+--
+--         , requestCreateUser $
+--             newCreateUser
+--
+--         , requestDeactivateUser $
+--             newDeactivateUser
+--
+--         , requestDeleteComment $
+--             newDeleteComment
+--
+--         , requestDeleteCustomMetadata $
+--             newDeleteCustomMetadata
+--
+--         , requestDeleteDocument $
+--             newDeleteDocument
+--
+--         , requestDeleteDocumentVersion $
+--             newDeleteDocumentVersion
+--
+--         , requestDeleteFolder $
+--             newDeleteFolder
+--
+--         , requestDeleteFolderContents $
+--             newDeleteFolderContents
+--
+--         , requestDeleteLabels $
+--             newDeleteLabels
+--
+--         , requestDeleteNotificationSubscription $
+--             newDeleteNotificationSubscription
+--
+--         , requestDeleteUser $
+--             newDeleteUser
+--
+--         , requestDescribeActivities $
+--             newDescribeActivities
+--
+--         , requestDescribeComments $
+--             newDescribeComments
+--
+--         , requestDescribeDocumentVersions $
+--             newDescribeDocumentVersions
+--
+--         , requestDescribeFolderContents $
+--             newDescribeFolderContents
+--
+--         , requestDescribeGroups $
+--             newDescribeGroups
+--
+--         , requestDescribeNotificationSubscriptions $
+--             newDescribeNotificationSubscriptions
+--
+--         , requestDescribeResourcePermissions $
+--             newDescribeResourcePermissions
+--
+--         , requestDescribeRootFolders $
+--             newDescribeRootFolders
+--
+--         , requestDescribeUsers $
+--             newDescribeUsers
+--
+--         , requestGetCurrentUser $
+--             newGetCurrentUser
+--
+--         , requestGetDocument $
+--             newGetDocument
+--
+--         , requestGetDocumentPath $
+--             newGetDocumentPath
+--
+--         , requestGetDocumentVersion $
+--             newGetDocumentVersion
+--
+--         , requestGetFolder $
+--             newGetFolder
+--
+--         , requestGetFolderPath $
+--             newGetFolderPath
+--
+--         , requestGetResources $
+--             newGetResources
+--
+--         , requestInitiateDocumentVersionUpload $
+--             newInitiateDocumentVersionUpload
+--
+--         , requestRemoveAllResourcePermissions $
+--             newRemoveAllResourcePermissions
+--
+--         , requestRemoveResourcePermission $
+--             newRemoveResourcePermission
+--
+--         , requestRestoreDocumentVersions $
+--             newRestoreDocumentVersions
+--
+--         , requestUpdateDocument $
+--             newUpdateDocument
+--
+--         , requestUpdateDocumentVersion $
+--             newUpdateDocumentVersion
+--
+--         , requestUpdateFolder $
+--             newUpdateFolder
+--
+--         , requestUpdateUser $
+--             newUpdateUser
+--
+--           ]
+
+--     , testGroup "response"
+--         [ responseAbortDocumentVersionUpload $
+--             newAbortDocumentVersionUploadResponse
+--
+--         , responseActivateUser $
+--             newActivateUserResponse
+--
+--         , responseAddResourcePermissions $
+--             newAddResourcePermissionsResponse
+--
+--         , responseCreateComment $
+--             newCreateCommentResponse
+--
+--         , responseCreateCustomMetadata $
+--             newCreateCustomMetadataResponse
+--
+--         , responseCreateFolder $
+--             newCreateFolderResponse
+--
+--         , responseCreateLabels $
+--             newCreateLabelsResponse
+--
+--         , responseCreateNotificationSubscription $
+--             newCreateNotificationSubscriptionResponse
+--
+--         , responseCreateUser $
+--             newCreateUserResponse
+--
+--         , responseDeactivateUser $
+--             newDeactivateUserResponse
+--
+--         , responseDeleteComment $
+--             newDeleteCommentResponse
+--
+--         , responseDeleteCustomMetadata $
+--             newDeleteCustomMetadataResponse
+--
+--         , responseDeleteDocument $
+--             newDeleteDocumentResponse
+--
+--         , responseDeleteDocumentVersion $
+--             newDeleteDocumentVersionResponse
+--
+--         , responseDeleteFolder $
+--             newDeleteFolderResponse
+--
+--         , responseDeleteFolderContents $
+--             newDeleteFolderContentsResponse
+--
+--         , responseDeleteLabels $
+--             newDeleteLabelsResponse
+--
+--         , responseDeleteNotificationSubscription $
+--             newDeleteNotificationSubscriptionResponse
+--
+--         , responseDeleteUser $
+--             newDeleteUserResponse
+--
+--         , responseDescribeActivities $
+--             newDescribeActivitiesResponse
+--
+--         , responseDescribeComments $
+--             newDescribeCommentsResponse
+--
+--         , responseDescribeDocumentVersions $
+--             newDescribeDocumentVersionsResponse
+--
+--         , responseDescribeFolderContents $
+--             newDescribeFolderContentsResponse
+--
+--         , responseDescribeGroups $
+--             newDescribeGroupsResponse
+--
+--         , responseDescribeNotificationSubscriptions $
+--             newDescribeNotificationSubscriptionsResponse
+--
+--         , responseDescribeResourcePermissions $
+--             newDescribeResourcePermissionsResponse
+--
+--         , responseDescribeRootFolders $
+--             newDescribeRootFoldersResponse
+--
+--         , responseDescribeUsers $
+--             newDescribeUsersResponse
+--
+--         , responseGetCurrentUser $
+--             newGetCurrentUserResponse
+--
+--         , responseGetDocument $
+--             newGetDocumentResponse
+--
+--         , responseGetDocumentPath $
+--             newGetDocumentPathResponse
+--
+--         , responseGetDocumentVersion $
+--             newGetDocumentVersionResponse
+--
+--         , responseGetFolder $
+--             newGetFolderResponse
+--
+--         , responseGetFolderPath $
+--             newGetFolderPathResponse
+--
+--         , responseGetResources $
+--             newGetResourcesResponse
+--
+--         , responseInitiateDocumentVersionUpload $
+--             newInitiateDocumentVersionUploadResponse
+--
+--         , responseRemoveAllResourcePermissions $
+--             newRemoveAllResourcePermissionsResponse
+--
+--         , responseRemoveResourcePermission $
+--             newRemoveResourcePermissionResponse
+--
+--         , responseRestoreDocumentVersions $
+--             newRestoreDocumentVersionsResponse
+--
+--         , responseUpdateDocument $
+--             newUpdateDocumentResponse
+--
+--         , responseUpdateDocumentVersion $
+--             newUpdateDocumentVersionResponse
+--
+--         , responseUpdateFolder $
+--             newUpdateFolderResponse
+--
+--         , responseUpdateUser $
+--             newUpdateUserResponse
+--
+--           ]
+--     ]
+
+-- Requests
+
+requestAbortDocumentVersionUpload :: AbortDocumentVersionUpload -> TestTree
+requestAbortDocumentVersionUpload =
+  req
+    "AbortDocumentVersionUpload"
+    "fixture/AbortDocumentVersionUpload.yaml"
+
+requestActivateUser :: ActivateUser -> TestTree
+requestActivateUser =
+  req
+    "ActivateUser"
+    "fixture/ActivateUser.yaml"
+
+requestAddResourcePermissions :: AddResourcePermissions -> TestTree
+requestAddResourcePermissions =
+  req
+    "AddResourcePermissions"
+    "fixture/AddResourcePermissions.yaml"
+
+requestCreateComment :: CreateComment -> TestTree
+requestCreateComment =
+  req
+    "CreateComment"
+    "fixture/CreateComment.yaml"
+
+requestCreateCustomMetadata :: CreateCustomMetadata -> TestTree
+requestCreateCustomMetadata =
+  req
+    "CreateCustomMetadata"
+    "fixture/CreateCustomMetadata.yaml"
+
+requestCreateFolder :: CreateFolder -> TestTree
+requestCreateFolder =
+  req
+    "CreateFolder"
+    "fixture/CreateFolder.yaml"
+
+requestCreateLabels :: CreateLabels -> TestTree
+requestCreateLabels =
+  req
+    "CreateLabels"
+    "fixture/CreateLabels.yaml"
+
+requestCreateNotificationSubscription :: CreateNotificationSubscription -> TestTree
+requestCreateNotificationSubscription =
+  req
+    "CreateNotificationSubscription"
+    "fixture/CreateNotificationSubscription.yaml"
+
+requestCreateUser :: CreateUser -> TestTree
+requestCreateUser =
+  req
+    "CreateUser"
+    "fixture/CreateUser.yaml"
+
+requestDeactivateUser :: DeactivateUser -> TestTree
+requestDeactivateUser =
+  req
+    "DeactivateUser"
+    "fixture/DeactivateUser.yaml"
+
+requestDeleteComment :: DeleteComment -> TestTree
+requestDeleteComment =
+  req
+    "DeleteComment"
+    "fixture/DeleteComment.yaml"
+
+requestDeleteCustomMetadata :: DeleteCustomMetadata -> TestTree
+requestDeleteCustomMetadata =
+  req
+    "DeleteCustomMetadata"
+    "fixture/DeleteCustomMetadata.yaml"
+
+requestDeleteDocument :: DeleteDocument -> TestTree
+requestDeleteDocument =
+  req
+    "DeleteDocument"
+    "fixture/DeleteDocument.yaml"
+
+requestDeleteDocumentVersion :: DeleteDocumentVersion -> TestTree
+requestDeleteDocumentVersion =
+  req
+    "DeleteDocumentVersion"
+    "fixture/DeleteDocumentVersion.yaml"
+
+requestDeleteFolder :: DeleteFolder -> TestTree
+requestDeleteFolder =
+  req
+    "DeleteFolder"
+    "fixture/DeleteFolder.yaml"
+
+requestDeleteFolderContents :: DeleteFolderContents -> TestTree
+requestDeleteFolderContents =
+  req
+    "DeleteFolderContents"
+    "fixture/DeleteFolderContents.yaml"
+
+requestDeleteLabels :: DeleteLabels -> TestTree
+requestDeleteLabels =
+  req
+    "DeleteLabels"
+    "fixture/DeleteLabels.yaml"
+
+requestDeleteNotificationSubscription :: DeleteNotificationSubscription -> TestTree
+requestDeleteNotificationSubscription =
+  req
+    "DeleteNotificationSubscription"
+    "fixture/DeleteNotificationSubscription.yaml"
+
+requestDeleteUser :: DeleteUser -> TestTree
+requestDeleteUser =
+  req
+    "DeleteUser"
+    "fixture/DeleteUser.yaml"
+
+requestDescribeActivities :: DescribeActivities -> TestTree
+requestDescribeActivities =
+  req
+    "DescribeActivities"
+    "fixture/DescribeActivities.yaml"
+
+requestDescribeComments :: DescribeComments -> TestTree
+requestDescribeComments =
+  req
+    "DescribeComments"
+    "fixture/DescribeComments.yaml"
+
+requestDescribeDocumentVersions :: DescribeDocumentVersions -> TestTree
+requestDescribeDocumentVersions =
+  req
+    "DescribeDocumentVersions"
+    "fixture/DescribeDocumentVersions.yaml"
+
+requestDescribeFolderContents :: DescribeFolderContents -> TestTree
+requestDescribeFolderContents =
+  req
+    "DescribeFolderContents"
+    "fixture/DescribeFolderContents.yaml"
+
+requestDescribeGroups :: DescribeGroups -> TestTree
+requestDescribeGroups =
+  req
+    "DescribeGroups"
+    "fixture/DescribeGroups.yaml"
+
+requestDescribeNotificationSubscriptions :: DescribeNotificationSubscriptions -> TestTree
+requestDescribeNotificationSubscriptions =
+  req
+    "DescribeNotificationSubscriptions"
+    "fixture/DescribeNotificationSubscriptions.yaml"
+
+requestDescribeResourcePermissions :: DescribeResourcePermissions -> TestTree
+requestDescribeResourcePermissions =
+  req
+    "DescribeResourcePermissions"
+    "fixture/DescribeResourcePermissions.yaml"
+
+requestDescribeRootFolders :: DescribeRootFolders -> TestTree
+requestDescribeRootFolders =
+  req
+    "DescribeRootFolders"
+    "fixture/DescribeRootFolders.yaml"
+
+requestDescribeUsers :: DescribeUsers -> TestTree
+requestDescribeUsers =
+  req
+    "DescribeUsers"
+    "fixture/DescribeUsers.yaml"
+
+requestGetCurrentUser :: GetCurrentUser -> TestTree
+requestGetCurrentUser =
+  req
+    "GetCurrentUser"
+    "fixture/GetCurrentUser.yaml"
+
+requestGetDocument :: GetDocument -> TestTree
+requestGetDocument =
+  req
+    "GetDocument"
+    "fixture/GetDocument.yaml"
+
+requestGetDocumentPath :: GetDocumentPath -> TestTree
+requestGetDocumentPath =
+  req
+    "GetDocumentPath"
+    "fixture/GetDocumentPath.yaml"
+
+requestGetDocumentVersion :: GetDocumentVersion -> TestTree
+requestGetDocumentVersion =
+  req
+    "GetDocumentVersion"
+    "fixture/GetDocumentVersion.yaml"
+
+requestGetFolder :: GetFolder -> TestTree
+requestGetFolder =
+  req
+    "GetFolder"
+    "fixture/GetFolder.yaml"
+
+requestGetFolderPath :: GetFolderPath -> TestTree
+requestGetFolderPath =
+  req
+    "GetFolderPath"
+    "fixture/GetFolderPath.yaml"
+
+requestGetResources :: GetResources -> TestTree
+requestGetResources =
+  req
+    "GetResources"
+    "fixture/GetResources.yaml"
+
+requestInitiateDocumentVersionUpload :: InitiateDocumentVersionUpload -> TestTree
+requestInitiateDocumentVersionUpload =
+  req
+    "InitiateDocumentVersionUpload"
+    "fixture/InitiateDocumentVersionUpload.yaml"
+
+requestRemoveAllResourcePermissions :: RemoveAllResourcePermissions -> TestTree
+requestRemoveAllResourcePermissions =
+  req
+    "RemoveAllResourcePermissions"
+    "fixture/RemoveAllResourcePermissions.yaml"
+
+requestRemoveResourcePermission :: RemoveResourcePermission -> TestTree
+requestRemoveResourcePermission =
+  req
+    "RemoveResourcePermission"
+    "fixture/RemoveResourcePermission.yaml"
+
+requestRestoreDocumentVersions :: RestoreDocumentVersions -> TestTree
+requestRestoreDocumentVersions =
+  req
+    "RestoreDocumentVersions"
+    "fixture/RestoreDocumentVersions.yaml"
+
+requestUpdateDocument :: UpdateDocument -> TestTree
+requestUpdateDocument =
+  req
+    "UpdateDocument"
+    "fixture/UpdateDocument.yaml"
+
+requestUpdateDocumentVersion :: UpdateDocumentVersion -> TestTree
+requestUpdateDocumentVersion =
+  req
+    "UpdateDocumentVersion"
+    "fixture/UpdateDocumentVersion.yaml"
+
+requestUpdateFolder :: UpdateFolder -> TestTree
+requestUpdateFolder =
+  req
+    "UpdateFolder"
+    "fixture/UpdateFolder.yaml"
+
+requestUpdateUser :: UpdateUser -> TestTree
+requestUpdateUser =
+  req
+    "UpdateUser"
+    "fixture/UpdateUser.yaml"
+
+-- Responses
+
+responseAbortDocumentVersionUpload :: AbortDocumentVersionUploadResponse -> TestTree
+responseAbortDocumentVersionUpload =
+  res
+    "AbortDocumentVersionUploadResponse"
+    "fixture/AbortDocumentVersionUploadResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AbortDocumentVersionUpload)
+
+responseActivateUser :: ActivateUserResponse -> TestTree
+responseActivateUser =
+  res
+    "ActivateUserResponse"
+    "fixture/ActivateUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy ActivateUser)
+
+responseAddResourcePermissions :: AddResourcePermissionsResponse -> TestTree
+responseAddResourcePermissions =
+  res
+    "AddResourcePermissionsResponse"
+    "fixture/AddResourcePermissionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy AddResourcePermissions)
+
+responseCreateComment :: CreateCommentResponse -> TestTree
+responseCreateComment =
+  res
+    "CreateCommentResponse"
+    "fixture/CreateCommentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateComment)
+
+responseCreateCustomMetadata :: CreateCustomMetadataResponse -> TestTree
+responseCreateCustomMetadata =
+  res
+    "CreateCustomMetadataResponse"
+    "fixture/CreateCustomMetadataResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateCustomMetadata)
+
+responseCreateFolder :: CreateFolderResponse -> TestTree
+responseCreateFolder =
+  res
+    "CreateFolderResponse"
+    "fixture/CreateFolderResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateFolder)
+
+responseCreateLabels :: CreateLabelsResponse -> TestTree
+responseCreateLabels =
+  res
+    "CreateLabelsResponse"
+    "fixture/CreateLabelsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateLabels)
+
+responseCreateNotificationSubscription :: CreateNotificationSubscriptionResponse -> TestTree
+responseCreateNotificationSubscription =
+  res
+    "CreateNotificationSubscriptionResponse"
+    "fixture/CreateNotificationSubscriptionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateNotificationSubscription)
+
+responseCreateUser :: CreateUserResponse -> TestTree
+responseCreateUser =
+  res
+    "CreateUserResponse"
+    "fixture/CreateUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy CreateUser)
+
+responseDeactivateUser :: DeactivateUserResponse -> TestTree
+responseDeactivateUser =
+  res
+    "DeactivateUserResponse"
+    "fixture/DeactivateUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeactivateUser)
+
+responseDeleteComment :: DeleteCommentResponse -> TestTree
+responseDeleteComment =
+  res
+    "DeleteCommentResponse"
+    "fixture/DeleteCommentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteComment)
+
+responseDeleteCustomMetadata :: DeleteCustomMetadataResponse -> TestTree
+responseDeleteCustomMetadata =
+  res
+    "DeleteCustomMetadataResponse"
+    "fixture/DeleteCustomMetadataResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteCustomMetadata)
+
+responseDeleteDocument :: DeleteDocumentResponse -> TestTree
+responseDeleteDocument =
+  res
+    "DeleteDocumentResponse"
+    "fixture/DeleteDocumentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteDocument)
+
+responseDeleteDocumentVersion :: DeleteDocumentVersionResponse -> TestTree
+responseDeleteDocumentVersion =
+  res
+    "DeleteDocumentVersionResponse"
+    "fixture/DeleteDocumentVersionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteDocumentVersion)
+
+responseDeleteFolder :: DeleteFolderResponse -> TestTree
+responseDeleteFolder =
+  res
+    "DeleteFolderResponse"
+    "fixture/DeleteFolderResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteFolder)
+
+responseDeleteFolderContents :: DeleteFolderContentsResponse -> TestTree
+responseDeleteFolderContents =
+  res
+    "DeleteFolderContentsResponse"
+    "fixture/DeleteFolderContentsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteFolderContents)
+
+responseDeleteLabels :: DeleteLabelsResponse -> TestTree
+responseDeleteLabels =
+  res
+    "DeleteLabelsResponse"
+    "fixture/DeleteLabelsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteLabels)
+
+responseDeleteNotificationSubscription :: DeleteNotificationSubscriptionResponse -> TestTree
+responseDeleteNotificationSubscription =
+  res
+    "DeleteNotificationSubscriptionResponse"
+    "fixture/DeleteNotificationSubscriptionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteNotificationSubscription)
+
+responseDeleteUser :: DeleteUserResponse -> TestTree
+responseDeleteUser =
+  res
+    "DeleteUserResponse"
+    "fixture/DeleteUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DeleteUser)
+
+responseDescribeActivities :: DescribeActivitiesResponse -> TestTree
+responseDescribeActivities =
+  res
+    "DescribeActivitiesResponse"
+    "fixture/DescribeActivitiesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeActivities)
+
+responseDescribeComments :: DescribeCommentsResponse -> TestTree
+responseDescribeComments =
+  res
+    "DescribeCommentsResponse"
+    "fixture/DescribeCommentsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeComments)
+
+responseDescribeDocumentVersions :: DescribeDocumentVersionsResponse -> TestTree
+responseDescribeDocumentVersions =
+  res
+    "DescribeDocumentVersionsResponse"
+    "fixture/DescribeDocumentVersionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeDocumentVersions)
+
+responseDescribeFolderContents :: DescribeFolderContentsResponse -> TestTree
+responseDescribeFolderContents =
+  res
+    "DescribeFolderContentsResponse"
+    "fixture/DescribeFolderContentsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeFolderContents)
+
+responseDescribeGroups :: DescribeGroupsResponse -> TestTree
+responseDescribeGroups =
+  res
+    "DescribeGroupsResponse"
+    "fixture/DescribeGroupsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeGroups)
+
+responseDescribeNotificationSubscriptions :: DescribeNotificationSubscriptionsResponse -> TestTree
+responseDescribeNotificationSubscriptions =
+  res
+    "DescribeNotificationSubscriptionsResponse"
+    "fixture/DescribeNotificationSubscriptionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeNotificationSubscriptions)
+
+responseDescribeResourcePermissions :: DescribeResourcePermissionsResponse -> TestTree
+responseDescribeResourcePermissions =
+  res
+    "DescribeResourcePermissionsResponse"
+    "fixture/DescribeResourcePermissionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeResourcePermissions)
+
+responseDescribeRootFolders :: DescribeRootFoldersResponse -> TestTree
+responseDescribeRootFolders =
+  res
+    "DescribeRootFoldersResponse"
+    "fixture/DescribeRootFoldersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeRootFolders)
+
+responseDescribeUsers :: DescribeUsersResponse -> TestTree
+responseDescribeUsers =
+  res
+    "DescribeUsersResponse"
+    "fixture/DescribeUsersResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy DescribeUsers)
+
+responseGetCurrentUser :: GetCurrentUserResponse -> TestTree
+responseGetCurrentUser =
+  res
+    "GetCurrentUserResponse"
+    "fixture/GetCurrentUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetCurrentUser)
+
+responseGetDocument :: GetDocumentResponse -> TestTree
+responseGetDocument =
+  res
+    "GetDocumentResponse"
+    "fixture/GetDocumentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetDocument)
+
+responseGetDocumentPath :: GetDocumentPathResponse -> TestTree
+responseGetDocumentPath =
+  res
+    "GetDocumentPathResponse"
+    "fixture/GetDocumentPathResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetDocumentPath)
+
+responseGetDocumentVersion :: GetDocumentVersionResponse -> TestTree
+responseGetDocumentVersion =
+  res
+    "GetDocumentVersionResponse"
+    "fixture/GetDocumentVersionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetDocumentVersion)
+
+responseGetFolder :: GetFolderResponse -> TestTree
+responseGetFolder =
+  res
+    "GetFolderResponse"
+    "fixture/GetFolderResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetFolder)
+
+responseGetFolderPath :: GetFolderPathResponse -> TestTree
+responseGetFolderPath =
+  res
+    "GetFolderPathResponse"
+    "fixture/GetFolderPathResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetFolderPath)
+
+responseGetResources :: GetResourcesResponse -> TestTree
+responseGetResources =
+  res
+    "GetResourcesResponse"
+    "fixture/GetResourcesResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy GetResources)
+
+responseInitiateDocumentVersionUpload :: InitiateDocumentVersionUploadResponse -> TestTree
+responseInitiateDocumentVersionUpload =
+  res
+    "InitiateDocumentVersionUploadResponse"
+    "fixture/InitiateDocumentVersionUploadResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy InitiateDocumentVersionUpload)
+
+responseRemoveAllResourcePermissions :: RemoveAllResourcePermissionsResponse -> TestTree
+responseRemoveAllResourcePermissions =
+  res
+    "RemoveAllResourcePermissionsResponse"
+    "fixture/RemoveAllResourcePermissionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RemoveAllResourcePermissions)
+
+responseRemoveResourcePermission :: RemoveResourcePermissionResponse -> TestTree
+responseRemoveResourcePermission =
+  res
+    "RemoveResourcePermissionResponse"
+    "fixture/RemoveResourcePermissionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RemoveResourcePermission)
+
+responseRestoreDocumentVersions :: RestoreDocumentVersionsResponse -> TestTree
+responseRestoreDocumentVersions =
+  res
+    "RestoreDocumentVersionsResponse"
+    "fixture/RestoreDocumentVersionsResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy RestoreDocumentVersions)
+
+responseUpdateDocument :: UpdateDocumentResponse -> TestTree
+responseUpdateDocument =
+  res
+    "UpdateDocumentResponse"
+    "fixture/UpdateDocumentResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateDocument)
+
+responseUpdateDocumentVersion :: UpdateDocumentVersionResponse -> TestTree
+responseUpdateDocumentVersion =
+  res
+    "UpdateDocumentVersionResponse"
+    "fixture/UpdateDocumentVersionResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateDocumentVersion)
+
+responseUpdateFolder :: UpdateFolderResponse -> TestTree
+responseUpdateFolder =
+  res
+    "UpdateFolderResponse"
+    "fixture/UpdateFolderResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateFolder)
+
+responseUpdateUser :: UpdateUserResponse -> TestTree
+responseUpdateUser =
+  res
+    "UpdateUserResponse"
+    "fixture/UpdateUserResponse.proto"
+    defaultService
+    (Proxy.Proxy :: Proxy.Proxy UpdateUser)
diff --git a/test/Test/Amazonka/WorkDocs.hs b/test/Test/Amazonka/WorkDocs.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/WorkDocs.hs
@@ -0,0 +1,20 @@
+-- |
+-- Module      : Test.Amazonka.WorkDocs
+-- 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.WorkDocs
+  ( tests,
+    fixtures,
+  )
+where
+
+import Test.Tasty (TestTree)
+
+tests :: [TestTree]
+tests = []
+
+fixtures :: [TestTree]
+fixtures = []
diff --git a/test/Test/Amazonka/WorkDocs/Internal.hs b/test/Test/Amazonka/WorkDocs/Internal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Amazonka/WorkDocs/Internal.hs
@@ -0,0 +1,8 @@
+-- |
+-- Module      : Test.Amazonka.WorkDocs.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.WorkDocs.Internal where
