diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`0.3.0`
+`0.5.0`
 
 
 ## Description
diff --git a/gen/Network/Google/Drive.hs b/gen/Network/Google/Drive.hs
--- a/gen/Network/Google/Drive.hs
+++ b/gen/Network/Google/Drive.hs
@@ -67,6 +67,27 @@
     -- ** drive.comments.update
     , module Network.Google.Resource.Drive.Comments.Update
 
+    -- ** drive.drives.create
+    , module Network.Google.Resource.Drive.Drives.Create
+
+    -- ** drive.drives.delete
+    , module Network.Google.Resource.Drive.Drives.Delete
+
+    -- ** drive.drives.get
+    , module Network.Google.Resource.Drive.Drives.Get
+
+    -- ** drive.drives.hide
+    , module Network.Google.Resource.Drive.Drives.Hide
+
+    -- ** drive.drives.list
+    , module Network.Google.Resource.Drive.Drives.List
+
+    -- ** drive.drives.unhide
+    , module Network.Google.Resource.Drive.Drives.Unhide
+
+    -- ** drive.drives.update
+    , module Network.Google.Resource.Drive.Drives.Update
+
     -- ** drive.files.copy
     , module Network.Google.Resource.Drive.Files.Copy
 
@@ -164,6 +185,21 @@
     , flKind
     , flFiles
 
+    -- ** Drive
+    , Drive
+    , drive
+    , dThemeId
+    , dBackgRoundImageFile
+    , dColorRgb
+    , dCreatedTime
+    , dKind
+    , dBackgRoundImageLink
+    , dName
+    , dRestrictions
+    , dHidden
+    , dId
+    , dCapabilities
+
     -- ** TeamDriveCapabilities
     , TeamDriveCapabilities
     , teamDriveCapabilities
@@ -187,6 +223,14 @@
     , tdcCanCopy
     , tdcCanShare
 
+    -- ** PermissionPermissionDetailsItem
+    , PermissionPermissionDetailsItem
+    , permissionPermissionDetailsItem
+    , ppdiInherited
+    , ppdiPermissionType
+    , ppdiRole
+    , ppdiInheritedFrom
+
     -- ** FilesListCorpus
     , FilesListCorpus (..)
 
@@ -196,6 +240,28 @@
     , cqfcValue
     , cqfcMimeType
 
+    -- ** DriveCapabilities
+    , DriveCapabilities
+    , driveCapabilities
+    , dcCanRename
+    , dcCanComment
+    , dcCanChangeDriveBackgRound
+    , dcCanRenameDrive
+    , dcCanDownload
+    , dcCanChangeDomainUsersOnlyRestriction
+    , dcCanTrashChildren
+    , dcCanAddChildren
+    , dcCanChangeCopyRequiresWriterPermissionRestriction
+    , dcCanChangeDriveMembersOnlyRestriction
+    , dcCanListChildren
+    , dcCanEdit
+    , dcCanManageMembers
+    , dcCanReadRevisions
+    , dcCanDeleteChildren
+    , dcCanCopy
+    , dcCanDeleteDrive
+    , dcCanShare
+
     -- ** AboutStorageQuota
     , AboutStorageQuota
     , aboutStorageQuota
@@ -227,6 +293,7 @@
     , fileCapabilities
     , fcCanRename
     , fcCanComment
+    , fcCanMoveChildrenWithinDrive
     , fcCanMoveChildrenWithinTeamDrive
     , fcCanDelete
     , fcCanMoveItemIntoTeamDrive
@@ -234,12 +301,15 @@
     , fcCanTrash
     , fcCanUntrash
     , fcCanTrashChildren
+    , fcCanMoveItemOutOfDrive
     , fcCanAddChildren
     , fcCanRemoveChildren
     , fcCanMoveTeamDriveItem
     , fcCanMoveItemWithinTeamDrive
     , fcCanReadTeamDrive
+    , fcCanReadDrive
     , fcCanChangeCopyRequiresWriterPermission
+    , fcCanMoveChildrenOutOfDrive
     , fcCanListChildren
     , fcCanMoveChildrenOutOfTeamDrive
     , fcCanEdit
@@ -248,6 +318,7 @@
     , fcCanDeleteChildren
     , fcCanMoveItemOutOfTeamDrive
     , fcCanCopy
+    , fcCanMoveItemWithinDrive
     , fcCanShare
 
     -- ** ReplyList
@@ -257,6 +328,14 @@
     , rlKind
     , rlReplies
 
+    -- ** DriveBackgRoundImageFile
+    , DriveBackgRoundImageFile
+    , driveBackgRoundImageFile
+    , dbrifXCoordinate
+    , dbrifYCoordinate
+    , dbrifWidth
+    , dbrifId
+
     -- ** FileContentHintsThumbnail
     , FileContentHintsThumbnail
     , fileContentHintsThumbnail
@@ -322,6 +401,7 @@
     -- ** Change
     , Change
     , change
+    , chaDrive
     , chaRemoved
     , chaTime
     , chaKind
@@ -330,6 +410,8 @@
     , chaType
     , chaFileId
     , chaFile
+    , chaChangeType
+    , chaDriveId
 
     -- ** TeamDrive
     , TeamDrive
@@ -402,9 +484,11 @@
     , aCanCreateTeamDrives
     , aImportFormats
     , aKind
+    , aDriveThemes
     , aAppInstalled
     , aUser
     , aStorageQuota
+    , aCanCreateDrives
     , aMaxUploadSize
     , aTeamDriveThemes
     , aFolderColorPalette
@@ -495,7 +579,16 @@
     , pDeleted
     , pType
     , pExpirationTime
+    , pPermissionDetails
 
+    -- ** DriveRestrictions
+    , DriveRestrictions
+    , driveRestrictions
+    , drAdminManagedRestrictions
+    , drDriveMembersOnly
+    , drCopyRequiresWriterPermission
+    , drDomainUsersOnly
+
     -- ** File
     , File
     , file
@@ -549,11 +642,19 @@
     , fCapabilities
     , fDescription
     , fViewersCanCopyContent
+    , fDriveId
     , fSharingUser
     , fWebContentLink
     , fContentHints
     , fProperties
 
+    -- ** AboutDriveThemesItem
+    , AboutDriveThemesItem
+    , aboutDriveThemesItem
+    , adtiColorRgb
+    , adtiBackgRoundImageLink
+    , adtiId
+
     -- ** PermissionTeamDrivePermissionDetailsItem
     , PermissionTeamDrivePermissionDetailsItem
     , permissionTeamDrivePermissionDetailsItem
@@ -562,6 +663,13 @@
     , ptdpdiRole
     , ptdpdiInheritedFrom
 
+    -- ** DriveList
+    , DriveList
+    , driveList
+    , dlNextPageToken
+    , dlKind
+    , dlDrives
+
     -- ** GeneratedIds
     , GeneratedIds
     , generatedIds
@@ -608,6 +716,13 @@
 import           Network.Google.Resource.Drive.Comments.Get
 import           Network.Google.Resource.Drive.Comments.List
 import           Network.Google.Resource.Drive.Comments.Update
+import           Network.Google.Resource.Drive.Drives.Create
+import           Network.Google.Resource.Drive.Drives.Delete
+import           Network.Google.Resource.Drive.Drives.Get
+import           Network.Google.Resource.Drive.Drives.Hide
+import           Network.Google.Resource.Drive.Drives.List
+import           Network.Google.Resource.Drive.Drives.Unhide
+import           Network.Google.Resource.Drive.Drives.Update
 import           Network.Google.Resource.Drive.Files.Copy
 import           Network.Google.Resource.Drive.Files.Create
 import           Network.Google.Resource.Drive.Files.Delete
@@ -657,6 +772,13 @@
        :<|> RepliesCreateResource
        :<|> RepliesDeleteResource
        :<|> RepliesUpdateResource
+       :<|> DrivesListResource
+       :<|> DrivesHideResource
+       :<|> DrivesGetResource
+       :<|> DrivesCreateResource
+       :<|> DrivesUnhideResource
+       :<|> DrivesDeleteResource
+       :<|> DrivesUpdateResource
        :<|> AboutGetResource
        :<|> FilesExportResource
        :<|> FilesListResource
diff --git a/gen/Network/Google/Drive/Types.hs b/gen/Network/Google/Drive/Types.hs
--- a/gen/Network/Google/Drive/Types.hs
+++ b/gen/Network/Google/Drive/Types.hs
@@ -37,6 +37,21 @@
     , flKind
     , flFiles
 
+    -- * Drive
+    , Drive
+    , drive
+    , dThemeId
+    , dBackgRoundImageFile
+    , dColorRgb
+    , dCreatedTime
+    , dKind
+    , dBackgRoundImageLink
+    , dName
+    , dRestrictions
+    , dHidden
+    , dId
+    , dCapabilities
+
     -- * TeamDriveCapabilities
     , TeamDriveCapabilities
     , teamDriveCapabilities
@@ -60,6 +75,14 @@
     , tdcCanCopy
     , tdcCanShare
 
+    -- * PermissionPermissionDetailsItem
+    , PermissionPermissionDetailsItem
+    , permissionPermissionDetailsItem
+    , ppdiInherited
+    , ppdiPermissionType
+    , ppdiRole
+    , ppdiInheritedFrom
+
     -- * FilesListCorpus
     , FilesListCorpus (..)
 
@@ -69,6 +92,28 @@
     , cqfcValue
     , cqfcMimeType
 
+    -- * DriveCapabilities
+    , DriveCapabilities
+    , driveCapabilities
+    , dcCanRename
+    , dcCanComment
+    , dcCanChangeDriveBackgRound
+    , dcCanRenameDrive
+    , dcCanDownload
+    , dcCanChangeDomainUsersOnlyRestriction
+    , dcCanTrashChildren
+    , dcCanAddChildren
+    , dcCanChangeCopyRequiresWriterPermissionRestriction
+    , dcCanChangeDriveMembersOnlyRestriction
+    , dcCanListChildren
+    , dcCanEdit
+    , dcCanManageMembers
+    , dcCanReadRevisions
+    , dcCanDeleteChildren
+    , dcCanCopy
+    , dcCanDeleteDrive
+    , dcCanShare
+
     -- * AboutStorageQuota
     , AboutStorageQuota
     , aboutStorageQuota
@@ -100,6 +145,7 @@
     , fileCapabilities
     , fcCanRename
     , fcCanComment
+    , fcCanMoveChildrenWithinDrive
     , fcCanMoveChildrenWithinTeamDrive
     , fcCanDelete
     , fcCanMoveItemIntoTeamDrive
@@ -107,12 +153,15 @@
     , fcCanTrash
     , fcCanUntrash
     , fcCanTrashChildren
+    , fcCanMoveItemOutOfDrive
     , fcCanAddChildren
     , fcCanRemoveChildren
     , fcCanMoveTeamDriveItem
     , fcCanMoveItemWithinTeamDrive
     , fcCanReadTeamDrive
+    , fcCanReadDrive
     , fcCanChangeCopyRequiresWriterPermission
+    , fcCanMoveChildrenOutOfDrive
     , fcCanListChildren
     , fcCanMoveChildrenOutOfTeamDrive
     , fcCanEdit
@@ -121,6 +170,7 @@
     , fcCanDeleteChildren
     , fcCanMoveItemOutOfTeamDrive
     , fcCanCopy
+    , fcCanMoveItemWithinDrive
     , fcCanShare
 
     -- * ReplyList
@@ -130,6 +180,14 @@
     , rlKind
     , rlReplies
 
+    -- * DriveBackgRoundImageFile
+    , DriveBackgRoundImageFile
+    , driveBackgRoundImageFile
+    , dbrifXCoordinate
+    , dbrifYCoordinate
+    , dbrifWidth
+    , dbrifId
+
     -- * FileContentHintsThumbnail
     , FileContentHintsThumbnail
     , fileContentHintsThumbnail
@@ -195,6 +253,7 @@
     -- * Change
     , Change
     , change
+    , chaDrive
     , chaRemoved
     , chaTime
     , chaKind
@@ -203,6 +262,8 @@
     , chaType
     , chaFileId
     , chaFile
+    , chaChangeType
+    , chaDriveId
 
     -- * TeamDrive
     , TeamDrive
@@ -275,9 +336,11 @@
     , aCanCreateTeamDrives
     , aImportFormats
     , aKind
+    , aDriveThemes
     , aAppInstalled
     , aUser
     , aStorageQuota
+    , aCanCreateDrives
     , aMaxUploadSize
     , aTeamDriveThemes
     , aFolderColorPalette
@@ -368,7 +431,16 @@
     , pDeleted
     , pType
     , pExpirationTime
+    , pPermissionDetails
 
+    -- * DriveRestrictions
+    , DriveRestrictions
+    , driveRestrictions
+    , drAdminManagedRestrictions
+    , drDriveMembersOnly
+    , drCopyRequiresWriterPermission
+    , drDomainUsersOnly
+
     -- * File
     , File
     , file
@@ -422,11 +494,19 @@
     , fCapabilities
     , fDescription
     , fViewersCanCopyContent
+    , fDriveId
     , fSharingUser
     , fWebContentLink
     , fContentHints
     , fProperties
 
+    -- * AboutDriveThemesItem
+    , AboutDriveThemesItem
+    , aboutDriveThemesItem
+    , adtiColorRgb
+    , adtiBackgRoundImageLink
+    , adtiId
+
     -- * PermissionTeamDrivePermissionDetailsItem
     , PermissionTeamDrivePermissionDetailsItem
     , permissionTeamDrivePermissionDetailsItem
@@ -435,6 +515,13 @@
     , ptdpdiRole
     , ptdpdiInheritedFrom
 
+    -- * DriveList
+    , DriveList
+    , driveList
+    , dlNextPageToken
+    , dlKind
+    , dlDrives
+
     -- * GeneratedIds
     , GeneratedIds
     , generatedIds
@@ -481,33 +568,33 @@
 
 -- | View metadata for files in your Google Drive
 driveMetadataReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/drive.metadata.readonly"]
-driveMetadataReadOnlyScope = Proxy;
+driveMetadataReadOnlyScope = Proxy
 
 -- | View the photos, videos and albums in your Google Photos
 drivePhotosReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/drive.photos.readonly"]
-drivePhotosReadOnlyScope = Proxy;
+drivePhotosReadOnlyScope = Proxy
 
 -- | View and manage its own configuration data in your Google Drive
 driveAppDataScope :: Proxy '["https://www.googleapis.com/auth/drive.appdata"]
-driveAppDataScope = Proxy;
+driveAppDataScope = Proxy
 
 -- | See and download all your Google Drive files
 driveReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/drive.readonly"]
-driveReadOnlyScope = Proxy;
+driveReadOnlyScope = Proxy
 
 -- | See, edit, create, and delete all of your Google Drive files
 driveScope :: Proxy '["https://www.googleapis.com/auth/drive"]
-driveScope = Proxy;
+driveScope = Proxy
 
 -- | View and manage Google Drive files and folders that you have opened or
 -- created with this app
 driveFileScope :: Proxy '["https://www.googleapis.com/auth/drive.file"]
-driveFileScope = Proxy;
+driveFileScope = Proxy
 
 -- | View and manage metadata of files in your Google Drive
 driveMetadataScope :: Proxy '["https://www.googleapis.com/auth/drive.metadata"]
-driveMetadataScope = Proxy;
+driveMetadataScope = Proxy
 
 -- | Modify your Google Apps Script scripts\' behavior
 driveScriptsScope :: Proxy '["https://www.googleapis.com/auth/drive.scripts"]
-driveScriptsScope = Proxy;
+driveScriptsScope = Proxy
diff --git a/gen/Network/Google/Drive/Types/Product.hs b/gen/Network/Google/Drive/Types/Product.hs
--- a/gen/Network/Google/Drive/Types/Product.hs
+++ b/gen/Network/Google/Drive/Types/Product.hs
@@ -23,4414 +23,5510 @@
 -- | A list of files.
 --
 -- /See:/ 'fileList' smart constructor.
-data FileList = FileList'
-    { _flNextPageToken    :: !(Maybe Text)
-    , _flIncompleteSearch :: !(Maybe Bool)
-    , _flKind             :: !Text
-    , _flFiles            :: !(Maybe [File])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FileList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'flNextPageToken'
---
--- * 'flIncompleteSearch'
---
--- * 'flKind'
---
--- * 'flFiles'
-fileList
-    :: FileList
-fileList =
-    FileList'
-    { _flNextPageToken = Nothing
-    , _flIncompleteSearch = Nothing
-    , _flKind = "drive#fileList"
-    , _flFiles = Nothing
-    }
-
--- | The page token for the next page of files. This will be absent if the
--- end of the files list has been reached. If the token is rejected for any
--- reason, it should be discarded, and pagination should be restarted from
--- the first page of results.
-flNextPageToken :: Lens' FileList (Maybe Text)
-flNextPageToken
-  = lens _flNextPageToken
-      (\ s a -> s{_flNextPageToken = a})
-
--- | Whether the search process was incomplete. If true, then some search
--- results may be missing, since all documents were not searched. This may
--- occur when searching multiple Team Drives with the
--- \"user,allTeamDrives\" corpora, but all corpora could not be searched.
--- When this happens, it is suggested that clients narrow their query by
--- choosing a different corpus such as \"user\" or \"teamDrive\".
-flIncompleteSearch :: Lens' FileList (Maybe Bool)
-flIncompleteSearch
-  = lens _flIncompleteSearch
-      (\ s a -> s{_flIncompleteSearch = a})
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"drive#fileList\".
-flKind :: Lens' FileList Text
-flKind = lens _flKind (\ s a -> s{_flKind = a})
-
--- | The list of files. If nextPageToken is populated, then this list may be
--- incomplete and an additional page of results should be fetched.
-flFiles :: Lens' FileList [File]
-flFiles
-  = lens _flFiles (\ s a -> s{_flFiles = a}) . _Default
-      . _Coerce
-
-instance FromJSON FileList where
-        parseJSON
-          = withObject "FileList"
-              (\ o ->
-                 FileList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "incompleteSearch")
-                     <*> (o .:? "kind" .!= "drive#fileList")
-                     <*> (o .:? "files" .!= mempty))
-
-instance ToJSON FileList where
-        toJSON FileList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _flNextPageToken,
-                  ("incompleteSearch" .=) <$> _flIncompleteSearch,
-                  Just ("kind" .= _flKind), ("files" .=) <$> _flFiles])
-
--- | Capabilities the current user has on this Team Drive.
---
--- /See:/ 'teamDriveCapabilities' smart constructor.
-data TeamDriveCapabilities = TeamDriveCapabilities'
-    { _tdcCanRename                                        :: !(Maybe Bool)
-    , _tdcCanChangeTeamMembersOnlyRestriction              :: !(Maybe Bool)
-    , _tdcCanComment                                       :: !(Maybe Bool)
-    , _tdcCanRenameTeamDrive                               :: !(Maybe Bool)
-    , _tdcCanChangeTeamDriveBackgRound                     :: !(Maybe Bool)
-    , _tdcCanDownload                                      :: !(Maybe Bool)
-    , _tdcCanChangeDomainUsersOnlyRestriction              :: !(Maybe Bool)
-    , _tdcCanTrashChildren                                 :: !(Maybe Bool)
-    , _tdcCanAddChildren                                   :: !(Maybe Bool)
-    , _tdcCanRemoveChildren                                :: !(Maybe Bool)
-    , _tdcCanChangeCopyRequiresWriterPermissionRestriction :: !(Maybe Bool)
-    , _tdcCanDeleteTeamDrive                               :: !(Maybe Bool)
-    , _tdcCanListChildren                                  :: !(Maybe Bool)
-    , _tdcCanEdit                                          :: !(Maybe Bool)
-    , _tdcCanManageMembers                                 :: !(Maybe Bool)
-    , _tdcCanReadRevisions                                 :: !(Maybe Bool)
-    , _tdcCanDeleteChildren                                :: !(Maybe Bool)
-    , _tdcCanCopy                                          :: !(Maybe Bool)
-    , _tdcCanShare                                         :: !(Maybe Bool)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TeamDriveCapabilities' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tdcCanRename'
---
--- * 'tdcCanChangeTeamMembersOnlyRestriction'
---
--- * 'tdcCanComment'
---
--- * 'tdcCanRenameTeamDrive'
---
--- * 'tdcCanChangeTeamDriveBackgRound'
---
--- * 'tdcCanDownload'
---
--- * 'tdcCanChangeDomainUsersOnlyRestriction'
---
--- * 'tdcCanTrashChildren'
---
--- * 'tdcCanAddChildren'
---
--- * 'tdcCanRemoveChildren'
---
--- * 'tdcCanChangeCopyRequiresWriterPermissionRestriction'
---
--- * 'tdcCanDeleteTeamDrive'
---
--- * 'tdcCanListChildren'
---
--- * 'tdcCanEdit'
---
--- * 'tdcCanManageMembers'
---
--- * 'tdcCanReadRevisions'
---
--- * 'tdcCanDeleteChildren'
---
--- * 'tdcCanCopy'
---
--- * 'tdcCanShare'
-teamDriveCapabilities
-    :: TeamDriveCapabilities
-teamDriveCapabilities =
-    TeamDriveCapabilities'
-    { _tdcCanRename = Nothing
-    , _tdcCanChangeTeamMembersOnlyRestriction = Nothing
-    , _tdcCanComment = Nothing
-    , _tdcCanRenameTeamDrive = Nothing
-    , _tdcCanChangeTeamDriveBackgRound = Nothing
-    , _tdcCanDownload = Nothing
-    , _tdcCanChangeDomainUsersOnlyRestriction = Nothing
-    , _tdcCanTrashChildren = Nothing
-    , _tdcCanAddChildren = Nothing
-    , _tdcCanRemoveChildren = Nothing
-    , _tdcCanChangeCopyRequiresWriterPermissionRestriction = Nothing
-    , _tdcCanDeleteTeamDrive = Nothing
-    , _tdcCanListChildren = Nothing
-    , _tdcCanEdit = Nothing
-    , _tdcCanManageMembers = Nothing
-    , _tdcCanReadRevisions = Nothing
-    , _tdcCanDeleteChildren = Nothing
-    , _tdcCanCopy = Nothing
-    , _tdcCanShare = Nothing
-    }
-
--- | Whether the current user can rename files or folders in this Team Drive.
-tdcCanRename :: Lens' TeamDriveCapabilities (Maybe Bool)
-tdcCanRename
-  = lens _tdcCanRename (\ s a -> s{_tdcCanRename = a})
-
--- | Whether the current user can change the teamMembersOnly restriction of
--- this Team Drive.
-tdcCanChangeTeamMembersOnlyRestriction :: Lens' TeamDriveCapabilities (Maybe Bool)
-tdcCanChangeTeamMembersOnlyRestriction
-  = lens _tdcCanChangeTeamMembersOnlyRestriction
-      (\ s a ->
-         s{_tdcCanChangeTeamMembersOnlyRestriction = a})
-
--- | Whether the current user can comment on files in this Team Drive.
-tdcCanComment :: Lens' TeamDriveCapabilities (Maybe Bool)
-tdcCanComment
-  = lens _tdcCanComment
-      (\ s a -> s{_tdcCanComment = a})
-
--- | Whether the current user can rename this Team Drive.
-tdcCanRenameTeamDrive :: Lens' TeamDriveCapabilities (Maybe Bool)
-tdcCanRenameTeamDrive
-  = lens _tdcCanRenameTeamDrive
-      (\ s a -> s{_tdcCanRenameTeamDrive = a})
-
--- | Whether the current user can change the background of this Team Drive.
-tdcCanChangeTeamDriveBackgRound :: Lens' TeamDriveCapabilities (Maybe Bool)
-tdcCanChangeTeamDriveBackgRound
-  = lens _tdcCanChangeTeamDriveBackgRound
-      (\ s a -> s{_tdcCanChangeTeamDriveBackgRound = a})
-
--- | Whether the current user can download files in this Team Drive.
-tdcCanDownload :: Lens' TeamDriveCapabilities (Maybe Bool)
-tdcCanDownload
-  = lens _tdcCanDownload
-      (\ s a -> s{_tdcCanDownload = a})
-
--- | Whether the current user can change the domainUsersOnly restriction of
--- this Team Drive.
-tdcCanChangeDomainUsersOnlyRestriction :: Lens' TeamDriveCapabilities (Maybe Bool)
-tdcCanChangeDomainUsersOnlyRestriction
-  = lens _tdcCanChangeDomainUsersOnlyRestriction
-      (\ s a ->
-         s{_tdcCanChangeDomainUsersOnlyRestriction = a})
-
--- | Whether the current user can trash children from folders in this Team
--- Drive.
-tdcCanTrashChildren :: Lens' TeamDriveCapabilities (Maybe Bool)
-tdcCanTrashChildren
-  = lens _tdcCanTrashChildren
-      (\ s a -> s{_tdcCanTrashChildren = a})
-
--- | Whether the current user can add children to folders in this Team Drive.
-tdcCanAddChildren :: Lens' TeamDriveCapabilities (Maybe Bool)
-tdcCanAddChildren
-  = lens _tdcCanAddChildren
-      (\ s a -> s{_tdcCanAddChildren = a})
-
--- | Deprecated - use canDeleteChildren or canTrashChildren instead.
-tdcCanRemoveChildren :: Lens' TeamDriveCapabilities (Maybe Bool)
-tdcCanRemoveChildren
-  = lens _tdcCanRemoveChildren
-      (\ s a -> s{_tdcCanRemoveChildren = a})
-
--- | Whether the current user can change the copyRequiresWriterPermission
--- restriction of this Team Drive.
-tdcCanChangeCopyRequiresWriterPermissionRestriction :: Lens' TeamDriveCapabilities (Maybe Bool)
-tdcCanChangeCopyRequiresWriterPermissionRestriction
-  = lens
-      _tdcCanChangeCopyRequiresWriterPermissionRestriction
-      (\ s a ->
-         s{_tdcCanChangeCopyRequiresWriterPermissionRestriction
-             = a})
-
--- | Whether the current user can delete this Team Drive. Attempting to
--- delete the Team Drive may still fail if there are untrashed items inside
--- the Team Drive.
-tdcCanDeleteTeamDrive :: Lens' TeamDriveCapabilities (Maybe Bool)
-tdcCanDeleteTeamDrive
-  = lens _tdcCanDeleteTeamDrive
-      (\ s a -> s{_tdcCanDeleteTeamDrive = a})
-
--- | Whether the current user can list the children of folders in this Team
--- Drive.
-tdcCanListChildren :: Lens' TeamDriveCapabilities (Maybe Bool)
-tdcCanListChildren
-  = lens _tdcCanListChildren
-      (\ s a -> s{_tdcCanListChildren = a})
-
--- | Whether the current user can edit files in this Team Drive
-tdcCanEdit :: Lens' TeamDriveCapabilities (Maybe Bool)
-tdcCanEdit
-  = lens _tdcCanEdit (\ s a -> s{_tdcCanEdit = a})
-
--- | Whether the current user can add members to this Team Drive or remove
--- them or change their role.
-tdcCanManageMembers :: Lens' TeamDriveCapabilities (Maybe Bool)
-tdcCanManageMembers
-  = lens _tdcCanManageMembers
-      (\ s a -> s{_tdcCanManageMembers = a})
-
--- | Whether the current user can read the revisions resource of files in
--- this Team Drive.
-tdcCanReadRevisions :: Lens' TeamDriveCapabilities (Maybe Bool)
-tdcCanReadRevisions
-  = lens _tdcCanReadRevisions
-      (\ s a -> s{_tdcCanReadRevisions = a})
-
--- | Whether the current user can delete children from folders in this Team
--- Drive.
-tdcCanDeleteChildren :: Lens' TeamDriveCapabilities (Maybe Bool)
-tdcCanDeleteChildren
-  = lens _tdcCanDeleteChildren
-      (\ s a -> s{_tdcCanDeleteChildren = a})
-
--- | Whether the current user can copy files in this Team Drive.
-tdcCanCopy :: Lens' TeamDriveCapabilities (Maybe Bool)
-tdcCanCopy
-  = lens _tdcCanCopy (\ s a -> s{_tdcCanCopy = a})
-
--- | Whether the current user can share files or folders in this Team Drive.
-tdcCanShare :: Lens' TeamDriveCapabilities (Maybe Bool)
-tdcCanShare
-  = lens _tdcCanShare (\ s a -> s{_tdcCanShare = a})
-
-instance FromJSON TeamDriveCapabilities where
-        parseJSON
-          = withObject "TeamDriveCapabilities"
-              (\ o ->
-                 TeamDriveCapabilities' <$>
-                   (o .:? "canRename") <*>
-                     (o .:? "canChangeTeamMembersOnlyRestriction")
-                     <*> (o .:? "canComment")
-                     <*> (o .:? "canRenameTeamDrive")
-                     <*> (o .:? "canChangeTeamDriveBackground")
-                     <*> (o .:? "canDownload")
-                     <*> (o .:? "canChangeDomainUsersOnlyRestriction")
-                     <*> (o .:? "canTrashChildren")
-                     <*> (o .:? "canAddChildren")
-                     <*> (o .:? "canRemoveChildren")
-                     <*>
-                     (o .:?
-                        "canChangeCopyRequiresWriterPermissionRestriction")
-                     <*> (o .:? "canDeleteTeamDrive")
-                     <*> (o .:? "canListChildren")
-                     <*> (o .:? "canEdit")
-                     <*> (o .:? "canManageMembers")
-                     <*> (o .:? "canReadRevisions")
-                     <*> (o .:? "canDeleteChildren")
-                     <*> (o .:? "canCopy")
-                     <*> (o .:? "canShare"))
-
-instance ToJSON TeamDriveCapabilities where
-        toJSON TeamDriveCapabilities'{..}
-          = object
-              (catMaybes
-                 [("canRename" .=) <$> _tdcCanRename,
-                  ("canChangeTeamMembersOnlyRestriction" .=) <$>
-                    _tdcCanChangeTeamMembersOnlyRestriction,
-                  ("canComment" .=) <$> _tdcCanComment,
-                  ("canRenameTeamDrive" .=) <$> _tdcCanRenameTeamDrive,
-                  ("canChangeTeamDriveBackground" .=) <$>
-                    _tdcCanChangeTeamDriveBackgRound,
-                  ("canDownload" .=) <$> _tdcCanDownload,
-                  ("canChangeDomainUsersOnlyRestriction" .=) <$>
-                    _tdcCanChangeDomainUsersOnlyRestriction,
-                  ("canTrashChildren" .=) <$> _tdcCanTrashChildren,
-                  ("canAddChildren" .=) <$> _tdcCanAddChildren,
-                  ("canRemoveChildren" .=) <$> _tdcCanRemoveChildren,
-                  ("canChangeCopyRequiresWriterPermissionRestriction"
-                     .=)
-                    <$>
-                    _tdcCanChangeCopyRequiresWriterPermissionRestriction,
-                  ("canDeleteTeamDrive" .=) <$> _tdcCanDeleteTeamDrive,
-                  ("canListChildren" .=) <$> _tdcCanListChildren,
-                  ("canEdit" .=) <$> _tdcCanEdit,
-                  ("canManageMembers" .=) <$> _tdcCanManageMembers,
-                  ("canReadRevisions" .=) <$> _tdcCanReadRevisions,
-                  ("canDeleteChildren" .=) <$> _tdcCanDeleteChildren,
-                  ("canCopy" .=) <$> _tdcCanCopy,
-                  ("canShare" .=) <$> _tdcCanShare])
-
--- | The file content to which the comment refers, typically within the
--- anchor region. For a text file, for example, this would be the text at
--- the location of the comment.
---
--- /See:/ 'commentQuotedFileContent' smart constructor.
-data CommentQuotedFileContent = CommentQuotedFileContent'
-    { _cqfcValue    :: !(Maybe Text)
-    , _cqfcMimeType :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CommentQuotedFileContent' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cqfcValue'
---
--- * 'cqfcMimeType'
-commentQuotedFileContent
-    :: CommentQuotedFileContent
-commentQuotedFileContent =
-    CommentQuotedFileContent'
-    { _cqfcValue = Nothing
-    , _cqfcMimeType = Nothing
-    }
-
--- | The quoted content itself. This is interpreted as plain text if set
--- through the API.
-cqfcValue :: Lens' CommentQuotedFileContent (Maybe Text)
-cqfcValue
-  = lens _cqfcValue (\ s a -> s{_cqfcValue = a})
-
--- | The MIME type of the quoted content.
-cqfcMimeType :: Lens' CommentQuotedFileContent (Maybe Text)
-cqfcMimeType
-  = lens _cqfcMimeType (\ s a -> s{_cqfcMimeType = a})
-
-instance FromJSON CommentQuotedFileContent where
-        parseJSON
-          = withObject "CommentQuotedFileContent"
-              (\ o ->
-                 CommentQuotedFileContent' <$>
-                   (o .:? "value") <*> (o .:? "mimeType"))
-
-instance ToJSON CommentQuotedFileContent where
-        toJSON CommentQuotedFileContent'{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _cqfcValue,
-                  ("mimeType" .=) <$> _cqfcMimeType])
-
--- | The user\'s storage quota limits and usage. All fields are measured in
--- bytes.
---
--- /See:/ 'aboutStorageQuota' smart constructor.
-data AboutStorageQuota = AboutStorageQuota'
-    { _asqUsageInDriveTrash :: !(Maybe (Textual Int64))
-    , _asqLimit             :: !(Maybe (Textual Int64))
-    , _asqUsage             :: !(Maybe (Textual Int64))
-    , _asqUsageInDrive      :: !(Maybe (Textual Int64))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AboutStorageQuota' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'asqUsageInDriveTrash'
---
--- * 'asqLimit'
---
--- * 'asqUsage'
---
--- * 'asqUsageInDrive'
-aboutStorageQuota
-    :: AboutStorageQuota
-aboutStorageQuota =
-    AboutStorageQuota'
-    { _asqUsageInDriveTrash = Nothing
-    , _asqLimit = Nothing
-    , _asqUsage = Nothing
-    , _asqUsageInDrive = Nothing
-    }
-
--- | The usage by trashed files in Google Drive.
-asqUsageInDriveTrash :: Lens' AboutStorageQuota (Maybe Int64)
-asqUsageInDriveTrash
-  = lens _asqUsageInDriveTrash
-      (\ s a -> s{_asqUsageInDriveTrash = a})
-      . mapping _Coerce
-
--- | The usage limit, if applicable. This will not be present if the user has
--- unlimited storage.
-asqLimit :: Lens' AboutStorageQuota (Maybe Int64)
-asqLimit
-  = lens _asqLimit (\ s a -> s{_asqLimit = a}) .
-      mapping _Coerce
-
--- | The total usage across all services.
-asqUsage :: Lens' AboutStorageQuota (Maybe Int64)
-asqUsage
-  = lens _asqUsage (\ s a -> s{_asqUsage = a}) .
-      mapping _Coerce
-
--- | The usage by all files in Google Drive.
-asqUsageInDrive :: Lens' AboutStorageQuota (Maybe Int64)
-asqUsageInDrive
-  = lens _asqUsageInDrive
-      (\ s a -> s{_asqUsageInDrive = a})
-      . mapping _Coerce
-
-instance FromJSON AboutStorageQuota where
-        parseJSON
-          = withObject "AboutStorageQuota"
-              (\ o ->
-                 AboutStorageQuota' <$>
-                   (o .:? "usageInDriveTrash") <*> (o .:? "limit") <*>
-                     (o .:? "usage")
-                     <*> (o .:? "usageInDrive"))
-
-instance ToJSON AboutStorageQuota where
-        toJSON AboutStorageQuota'{..}
-          = object
-              (catMaybes
-                 [("usageInDriveTrash" .=) <$> _asqUsageInDriveTrash,
-                  ("limit" .=) <$> _asqLimit,
-                  ("usage" .=) <$> _asqUsage,
-                  ("usageInDrive" .=) <$> _asqUsageInDrive])
-
--- | A reply to a comment on a file.
---
--- /See:/ 'reply' smart constructor.
-data Reply = Reply'
-    { _rHTMLContent  :: !(Maybe Text)
-    , _rModifiedTime :: !(Maybe DateTime')
-    , _rCreatedTime  :: !(Maybe DateTime')
-    , _rKind         :: !Text
-    , _rAction       :: !(Maybe Text)
-    , _rContent      :: !(Maybe Text)
-    , _rAuthor       :: !(Maybe User)
-    , _rId           :: !(Maybe Text)
-    , _rDeleted      :: !(Maybe Bool)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Reply' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rHTMLContent'
---
--- * 'rModifiedTime'
---
--- * 'rCreatedTime'
---
--- * 'rKind'
---
--- * 'rAction'
---
--- * 'rContent'
---
--- * 'rAuthor'
---
--- * 'rId'
---
--- * 'rDeleted'
-reply
-    :: Reply
-reply =
-    Reply'
-    { _rHTMLContent = Nothing
-    , _rModifiedTime = Nothing
-    , _rCreatedTime = Nothing
-    , _rKind = "drive#reply"
-    , _rAction = Nothing
-    , _rContent = Nothing
-    , _rAuthor = Nothing
-    , _rId = Nothing
-    , _rDeleted = Nothing
-    }
-
--- | The content of the reply with HTML formatting.
-rHTMLContent :: Lens' Reply (Maybe Text)
-rHTMLContent
-  = lens _rHTMLContent (\ s a -> s{_rHTMLContent = a})
-
--- | The last time the reply was modified (RFC 3339 date-time).
-rModifiedTime :: Lens' Reply (Maybe UTCTime)
-rModifiedTime
-  = lens _rModifiedTime
-      (\ s a -> s{_rModifiedTime = a})
-      . mapping _DateTime
-
--- | The time at which the reply was created (RFC 3339 date-time).
-rCreatedTime :: Lens' Reply (Maybe UTCTime)
-rCreatedTime
-  = lens _rCreatedTime (\ s a -> s{_rCreatedTime = a})
-      . mapping _DateTime
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"drive#reply\".
-rKind :: Lens' Reply Text
-rKind = lens _rKind (\ s a -> s{_rKind = a})
-
--- | The action the reply performed to the parent comment. Valid values are:
--- - resolve - reopen
-rAction :: Lens' Reply (Maybe Text)
-rAction = lens _rAction (\ s a -> s{_rAction = a})
-
--- | The plain text content of the reply. This field is used for setting the
--- content, while htmlContent should be displayed. This is required on
--- creates if no action is specified.
-rContent :: Lens' Reply (Maybe Text)
-rContent = lens _rContent (\ s a -> s{_rContent = a})
-
--- | The user who created the reply.
-rAuthor :: Lens' Reply (Maybe User)
-rAuthor = lens _rAuthor (\ s a -> s{_rAuthor = a})
-
--- | The ID of the reply.
-rId :: Lens' Reply (Maybe Text)
-rId = lens _rId (\ s a -> s{_rId = a})
-
--- | Whether the reply has been deleted. A deleted reply has no content.
-rDeleted :: Lens' Reply (Maybe Bool)
-rDeleted = lens _rDeleted (\ s a -> s{_rDeleted = a})
-
-instance FromJSON Reply where
-        parseJSON
-          = withObject "Reply"
-              (\ o ->
-                 Reply' <$>
-                   (o .:? "htmlContent") <*> (o .:? "modifiedTime") <*>
-                     (o .:? "createdTime")
-                     <*> (o .:? "kind" .!= "drive#reply")
-                     <*> (o .:? "action")
-                     <*> (o .:? "content")
-                     <*> (o .:? "author")
-                     <*> (o .:? "id")
-                     <*> (o .:? "deleted"))
-
-instance ToJSON Reply where
-        toJSON Reply'{..}
-          = object
-              (catMaybes
-                 [("htmlContent" .=) <$> _rHTMLContent,
-                  ("modifiedTime" .=) <$> _rModifiedTime,
-                  ("createdTime" .=) <$> _rCreatedTime,
-                  Just ("kind" .= _rKind), ("action" .=) <$> _rAction,
-                  ("content" .=) <$> _rContent,
-                  ("author" .=) <$> _rAuthor, ("id" .=) <$> _rId,
-                  ("deleted" .=) <$> _rDeleted])
-
--- | A map of source MIME type to possible targets for all supported imports.
---
--- /See:/ 'aboutImportFormats' smart constructor.
-newtype AboutImportFormats = AboutImportFormats'
-    { _aifAddtional :: HashMap Text [Text]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AboutImportFormats' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aifAddtional'
-aboutImportFormats
-    :: HashMap Text [Text] -- ^ 'aifAddtional'
-    -> AboutImportFormats
-aboutImportFormats pAifAddtional_ =
-    AboutImportFormats'
-    { _aifAddtional = _Coerce # pAifAddtional_
-    }
-
-aifAddtional :: Lens' AboutImportFormats (HashMap Text [Text])
-aifAddtional
-  = lens _aifAddtional (\ s a -> s{_aifAddtional = a})
-      . _Coerce
-
-instance FromJSON AboutImportFormats where
-        parseJSON
-          = withObject "AboutImportFormats"
-              (\ o -> AboutImportFormats' <$> (parseJSONObject o))
-
-instance ToJSON AboutImportFormats where
-        toJSON = toJSON . _aifAddtional
-
--- | Capabilities the current user has on this file. Each capability
--- corresponds to a fine-grained action that a user may take.
---
--- /See:/ 'fileCapabilities' smart constructor.
-data FileCapabilities = FileCapabilities'
-    { _fcCanRename                             :: !(Maybe Bool)
-    , _fcCanComment                            :: !(Maybe Bool)
-    , _fcCanMoveChildrenWithinTeamDrive        :: !(Maybe Bool)
-    , _fcCanDelete                             :: !(Maybe Bool)
-    , _fcCanMoveItemIntoTeamDrive              :: !(Maybe Bool)
-    , _fcCanDownload                           :: !(Maybe Bool)
-    , _fcCanTrash                              :: !(Maybe Bool)
-    , _fcCanUntrash                            :: !(Maybe Bool)
-    , _fcCanTrashChildren                      :: !(Maybe Bool)
-    , _fcCanAddChildren                        :: !(Maybe Bool)
-    , _fcCanRemoveChildren                     :: !(Maybe Bool)
-    , _fcCanMoveTeamDriveItem                  :: !(Maybe Bool)
-    , _fcCanMoveItemWithinTeamDrive            :: !(Maybe Bool)
-    , _fcCanReadTeamDrive                      :: !(Maybe Bool)
-    , _fcCanChangeCopyRequiresWriterPermission :: !(Maybe Bool)
-    , _fcCanListChildren                       :: !(Maybe Bool)
-    , _fcCanMoveChildrenOutOfTeamDrive         :: !(Maybe Bool)
-    , _fcCanEdit                               :: !(Maybe Bool)
-    , _fcCanChangeViewersCanCopyContent        :: !(Maybe Bool)
-    , _fcCanReadRevisions                      :: !(Maybe Bool)
-    , _fcCanDeleteChildren                     :: !(Maybe Bool)
-    , _fcCanMoveItemOutOfTeamDrive             :: !(Maybe Bool)
-    , _fcCanCopy                               :: !(Maybe Bool)
-    , _fcCanShare                              :: !(Maybe Bool)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FileCapabilities' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fcCanRename'
---
--- * 'fcCanComment'
---
--- * 'fcCanMoveChildrenWithinTeamDrive'
---
--- * 'fcCanDelete'
---
--- * 'fcCanMoveItemIntoTeamDrive'
---
--- * 'fcCanDownload'
---
--- * 'fcCanTrash'
---
--- * 'fcCanUntrash'
---
--- * 'fcCanTrashChildren'
---
--- * 'fcCanAddChildren'
---
--- * 'fcCanRemoveChildren'
---
--- * 'fcCanMoveTeamDriveItem'
---
--- * 'fcCanMoveItemWithinTeamDrive'
---
--- * 'fcCanReadTeamDrive'
---
--- * 'fcCanChangeCopyRequiresWriterPermission'
---
--- * 'fcCanListChildren'
---
--- * 'fcCanMoveChildrenOutOfTeamDrive'
---
--- * 'fcCanEdit'
---
--- * 'fcCanChangeViewersCanCopyContent'
---
--- * 'fcCanReadRevisions'
---
--- * 'fcCanDeleteChildren'
---
--- * 'fcCanMoveItemOutOfTeamDrive'
---
--- * 'fcCanCopy'
---
--- * 'fcCanShare'
-fileCapabilities
-    :: FileCapabilities
-fileCapabilities =
-    FileCapabilities'
-    { _fcCanRename = Nothing
-    , _fcCanComment = Nothing
-    , _fcCanMoveChildrenWithinTeamDrive = Nothing
-    , _fcCanDelete = Nothing
-    , _fcCanMoveItemIntoTeamDrive = Nothing
-    , _fcCanDownload = Nothing
-    , _fcCanTrash = Nothing
-    , _fcCanUntrash = Nothing
-    , _fcCanTrashChildren = Nothing
-    , _fcCanAddChildren = Nothing
-    , _fcCanRemoveChildren = Nothing
-    , _fcCanMoveTeamDriveItem = Nothing
-    , _fcCanMoveItemWithinTeamDrive = Nothing
-    , _fcCanReadTeamDrive = Nothing
-    , _fcCanChangeCopyRequiresWriterPermission = Nothing
-    , _fcCanListChildren = Nothing
-    , _fcCanMoveChildrenOutOfTeamDrive = Nothing
-    , _fcCanEdit = Nothing
-    , _fcCanChangeViewersCanCopyContent = Nothing
-    , _fcCanReadRevisions = Nothing
-    , _fcCanDeleteChildren = Nothing
-    , _fcCanMoveItemOutOfTeamDrive = Nothing
-    , _fcCanCopy = Nothing
-    , _fcCanShare = Nothing
-    }
-
--- | Whether the current user can rename this file.
-fcCanRename :: Lens' FileCapabilities (Maybe Bool)
-fcCanRename
-  = lens _fcCanRename (\ s a -> s{_fcCanRename = a})
-
--- | Whether the current user can comment on this file.
-fcCanComment :: Lens' FileCapabilities (Maybe Bool)
-fcCanComment
-  = lens _fcCanComment (\ s a -> s{_fcCanComment = a})
-
--- | Whether the current user can move children of this folder within the
--- Team Drive. This is false when the item is not a folder. Only populated
--- for Team Drive items.
-fcCanMoveChildrenWithinTeamDrive :: Lens' FileCapabilities (Maybe Bool)
-fcCanMoveChildrenWithinTeamDrive
-  = lens _fcCanMoveChildrenWithinTeamDrive
-      (\ s a -> s{_fcCanMoveChildrenWithinTeamDrive = a})
-
--- | Whether the current user can delete this file.
-fcCanDelete :: Lens' FileCapabilities (Maybe Bool)
-fcCanDelete
-  = lens _fcCanDelete (\ s a -> s{_fcCanDelete = a})
-
--- | Whether the current user can move this item into a Team Drive. If the
--- item is in a Team Drive, this field is equivalent to
--- canMoveTeamDriveItem.
-fcCanMoveItemIntoTeamDrive :: Lens' FileCapabilities (Maybe Bool)
-fcCanMoveItemIntoTeamDrive
-  = lens _fcCanMoveItemIntoTeamDrive
-      (\ s a -> s{_fcCanMoveItemIntoTeamDrive = a})
-
--- | Whether the current user can download this file.
-fcCanDownload :: Lens' FileCapabilities (Maybe Bool)
-fcCanDownload
-  = lens _fcCanDownload
-      (\ s a -> s{_fcCanDownload = a})
-
--- | Whether the current user can move this file to trash.
-fcCanTrash :: Lens' FileCapabilities (Maybe Bool)
-fcCanTrash
-  = lens _fcCanTrash (\ s a -> s{_fcCanTrash = a})
-
--- | Whether the current user can restore this file from trash.
-fcCanUntrash :: Lens' FileCapabilities (Maybe Bool)
-fcCanUntrash
-  = lens _fcCanUntrash (\ s a -> s{_fcCanUntrash = a})
-
--- | Whether the current user can trash children of this folder. This is
--- false when the item is not a folder. Only populated for Team Drive
--- items.
-fcCanTrashChildren :: Lens' FileCapabilities (Maybe Bool)
-fcCanTrashChildren
-  = lens _fcCanTrashChildren
-      (\ s a -> s{_fcCanTrashChildren = a})
-
--- | Whether the current user can add children to this folder. This is always
--- false when the item is not a folder.
-fcCanAddChildren :: Lens' FileCapabilities (Maybe Bool)
-fcCanAddChildren
-  = lens _fcCanAddChildren
-      (\ s a -> s{_fcCanAddChildren = a})
-
--- | Whether the current user can remove children from this folder. This is
--- always false when the item is not a folder. For Team Drive items, use
--- canDeleteChildren or canTrashChildren instead.
-fcCanRemoveChildren :: Lens' FileCapabilities (Maybe Bool)
-fcCanRemoveChildren
-  = lens _fcCanRemoveChildren
-      (\ s a -> s{_fcCanRemoveChildren = a})
-
--- | Deprecated - use canMoveItemWithinTeamDrive or canMoveItemOutOfTeamDrive
--- instead.
-fcCanMoveTeamDriveItem :: Lens' FileCapabilities (Maybe Bool)
-fcCanMoveTeamDriveItem
-  = lens _fcCanMoveTeamDriveItem
-      (\ s a -> s{_fcCanMoveTeamDriveItem = a})
-
--- | Whether the current user can move this Team Drive item within this Team
--- Drive. Note that a request to change the parent of the item may still
--- fail depending on the new parent that is being added. Only populated for
--- Team Drive items.
-fcCanMoveItemWithinTeamDrive :: Lens' FileCapabilities (Maybe Bool)
-fcCanMoveItemWithinTeamDrive
-  = lens _fcCanMoveItemWithinTeamDrive
-      (\ s a -> s{_fcCanMoveItemWithinTeamDrive = a})
-
--- | Whether the current user can read the Team Drive to which this file
--- belongs. Only populated for Team Drive files.
-fcCanReadTeamDrive :: Lens' FileCapabilities (Maybe Bool)
-fcCanReadTeamDrive
-  = lens _fcCanReadTeamDrive
-      (\ s a -> s{_fcCanReadTeamDrive = a})
-
--- | Whether the current user can change the copyRequiresWriterPermission
--- restriction of this file.
-fcCanChangeCopyRequiresWriterPermission :: Lens' FileCapabilities (Maybe Bool)
-fcCanChangeCopyRequiresWriterPermission
-  = lens _fcCanChangeCopyRequiresWriterPermission
-      (\ s a ->
-         s{_fcCanChangeCopyRequiresWriterPermission = a})
-
--- | Whether the current user can list the children of this folder. This is
--- always false when the item is not a folder.
-fcCanListChildren :: Lens' FileCapabilities (Maybe Bool)
-fcCanListChildren
-  = lens _fcCanListChildren
-      (\ s a -> s{_fcCanListChildren = a})
-
--- | Whether the current user can move children of this folder outside of the
--- Team Drive. This is false when the item is not a folder. Only populated
--- for Team Drive items.
-fcCanMoveChildrenOutOfTeamDrive :: Lens' FileCapabilities (Maybe Bool)
-fcCanMoveChildrenOutOfTeamDrive
-  = lens _fcCanMoveChildrenOutOfTeamDrive
-      (\ s a -> s{_fcCanMoveChildrenOutOfTeamDrive = a})
-
--- | Whether the current user can edit this file.
-fcCanEdit :: Lens' FileCapabilities (Maybe Bool)
-fcCanEdit
-  = lens _fcCanEdit (\ s a -> s{_fcCanEdit = a})
-
--- | Deprecated
-fcCanChangeViewersCanCopyContent :: Lens' FileCapabilities (Maybe Bool)
-fcCanChangeViewersCanCopyContent
-  = lens _fcCanChangeViewersCanCopyContent
-      (\ s a -> s{_fcCanChangeViewersCanCopyContent = a})
-
--- | Whether the current user can read the revisions resource of this file.
--- For a Team Drive item, whether revisions of non-folder descendants of
--- this item, or this item itself if it is not a folder, can be read.
-fcCanReadRevisions :: Lens' FileCapabilities (Maybe Bool)
-fcCanReadRevisions
-  = lens _fcCanReadRevisions
-      (\ s a -> s{_fcCanReadRevisions = a})
-
--- | Whether the current user can delete children of this folder. This is
--- false when the item is not a folder. Only populated for Team Drive
--- items.
-fcCanDeleteChildren :: Lens' FileCapabilities (Maybe Bool)
-fcCanDeleteChildren
-  = lens _fcCanDeleteChildren
-      (\ s a -> s{_fcCanDeleteChildren = a})
-
--- | Whether the current user can move this Team Drive item outside of this
--- Team Drive by changing its parent. Note that a request to change the
--- parent of the item may still fail depending on the new parent that is
--- being added. Only populated for Team Drive items.
-fcCanMoveItemOutOfTeamDrive :: Lens' FileCapabilities (Maybe Bool)
-fcCanMoveItemOutOfTeamDrive
-  = lens _fcCanMoveItemOutOfTeamDrive
-      (\ s a -> s{_fcCanMoveItemOutOfTeamDrive = a})
-
--- | Whether the current user can copy this file. For a Team Drive item,
--- whether the current user can copy non-folder descendants of this item,
--- or this item itself if it is not a folder.
-fcCanCopy :: Lens' FileCapabilities (Maybe Bool)
-fcCanCopy
-  = lens _fcCanCopy (\ s a -> s{_fcCanCopy = a})
-
--- | Whether the current user can modify the sharing settings for this file.
-fcCanShare :: Lens' FileCapabilities (Maybe Bool)
-fcCanShare
-  = lens _fcCanShare (\ s a -> s{_fcCanShare = a})
-
-instance FromJSON FileCapabilities where
-        parseJSON
-          = withObject "FileCapabilities"
-              (\ o ->
-                 FileCapabilities' <$>
-                   (o .:? "canRename") <*> (o .:? "canComment") <*>
-                     (o .:? "canMoveChildrenWithinTeamDrive")
-                     <*> (o .:? "canDelete")
-                     <*> (o .:? "canMoveItemIntoTeamDrive")
-                     <*> (o .:? "canDownload")
-                     <*> (o .:? "canTrash")
-                     <*> (o .:? "canUntrash")
-                     <*> (o .:? "canTrashChildren")
-                     <*> (o .:? "canAddChildren")
-                     <*> (o .:? "canRemoveChildren")
-                     <*> (o .:? "canMoveTeamDriveItem")
-                     <*> (o .:? "canMoveItemWithinTeamDrive")
-                     <*> (o .:? "canReadTeamDrive")
-                     <*> (o .:? "canChangeCopyRequiresWriterPermission")
-                     <*> (o .:? "canListChildren")
-                     <*> (o .:? "canMoveChildrenOutOfTeamDrive")
-                     <*> (o .:? "canEdit")
-                     <*> (o .:? "canChangeViewersCanCopyContent")
-                     <*> (o .:? "canReadRevisions")
-                     <*> (o .:? "canDeleteChildren")
-                     <*> (o .:? "canMoveItemOutOfTeamDrive")
-                     <*> (o .:? "canCopy")
-                     <*> (o .:? "canShare"))
-
-instance ToJSON FileCapabilities where
-        toJSON FileCapabilities'{..}
-          = object
-              (catMaybes
-                 [("canRename" .=) <$> _fcCanRename,
-                  ("canComment" .=) <$> _fcCanComment,
-                  ("canMoveChildrenWithinTeamDrive" .=) <$>
-                    _fcCanMoveChildrenWithinTeamDrive,
-                  ("canDelete" .=) <$> _fcCanDelete,
-                  ("canMoveItemIntoTeamDrive" .=) <$>
-                    _fcCanMoveItemIntoTeamDrive,
-                  ("canDownload" .=) <$> _fcCanDownload,
-                  ("canTrash" .=) <$> _fcCanTrash,
-                  ("canUntrash" .=) <$> _fcCanUntrash,
-                  ("canTrashChildren" .=) <$> _fcCanTrashChildren,
-                  ("canAddChildren" .=) <$> _fcCanAddChildren,
-                  ("canRemoveChildren" .=) <$> _fcCanRemoveChildren,
-                  ("canMoveTeamDriveItem" .=) <$>
-                    _fcCanMoveTeamDriveItem,
-                  ("canMoveItemWithinTeamDrive" .=) <$>
-                    _fcCanMoveItemWithinTeamDrive,
-                  ("canReadTeamDrive" .=) <$> _fcCanReadTeamDrive,
-                  ("canChangeCopyRequiresWriterPermission" .=) <$>
-                    _fcCanChangeCopyRequiresWriterPermission,
-                  ("canListChildren" .=) <$> _fcCanListChildren,
-                  ("canMoveChildrenOutOfTeamDrive" .=) <$>
-                    _fcCanMoveChildrenOutOfTeamDrive,
-                  ("canEdit" .=) <$> _fcCanEdit,
-                  ("canChangeViewersCanCopyContent" .=) <$>
-                    _fcCanChangeViewersCanCopyContent,
-                  ("canReadRevisions" .=) <$> _fcCanReadRevisions,
-                  ("canDeleteChildren" .=) <$> _fcCanDeleteChildren,
-                  ("canMoveItemOutOfTeamDrive" .=) <$>
-                    _fcCanMoveItemOutOfTeamDrive,
-                  ("canCopy" .=) <$> _fcCanCopy,
-                  ("canShare" .=) <$> _fcCanShare])
-
--- | A list of replies to a comment on a file.
---
--- /See:/ 'replyList' smart constructor.
-data ReplyList = ReplyList'
-    { _rlNextPageToken :: !(Maybe Text)
-    , _rlKind          :: !Text
-    , _rlReplies       :: !(Maybe [Reply])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ReplyList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rlNextPageToken'
---
--- * 'rlKind'
---
--- * 'rlReplies'
-replyList
-    :: ReplyList
-replyList =
-    ReplyList'
-    { _rlNextPageToken = Nothing
-    , _rlKind = "drive#replyList"
-    , _rlReplies = Nothing
-    }
-
--- | The page token for the next page of replies. This will be absent if the
--- end of the replies list has been reached. If the token is rejected for
--- any reason, it should be discarded, and pagination should be restarted
--- from the first page of results.
-rlNextPageToken :: Lens' ReplyList (Maybe Text)
-rlNextPageToken
-  = lens _rlNextPageToken
-      (\ s a -> s{_rlNextPageToken = a})
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"drive#replyList\".
-rlKind :: Lens' ReplyList Text
-rlKind = lens _rlKind (\ s a -> s{_rlKind = a})
-
--- | The list of replies. If nextPageToken is populated, then this list may
--- be incomplete and an additional page of results should be fetched.
-rlReplies :: Lens' ReplyList [Reply]
-rlReplies
-  = lens _rlReplies (\ s a -> s{_rlReplies = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON ReplyList where
-        parseJSON
-          = withObject "ReplyList"
-              (\ o ->
-                 ReplyList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "drive#replyList")
-                     <*> (o .:? "replies" .!= mempty))
-
-instance ToJSON ReplyList where
-        toJSON ReplyList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _rlNextPageToken,
-                  Just ("kind" .= _rlKind),
-                  ("replies" .=) <$> _rlReplies])
-
--- | A thumbnail for the file. This will only be used if Drive cannot
--- generate a standard thumbnail.
---
--- /See:/ 'fileContentHintsThumbnail' smart constructor.
-data FileContentHintsThumbnail = FileContentHintsThumbnail'
-    { _fchtImage    :: !(Maybe Bytes)
-    , _fchtMimeType :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FileContentHintsThumbnail' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fchtImage'
---
--- * 'fchtMimeType'
-fileContentHintsThumbnail
-    :: FileContentHintsThumbnail
-fileContentHintsThumbnail =
-    FileContentHintsThumbnail'
-    { _fchtImage = Nothing
-    , _fchtMimeType = Nothing
-    }
-
--- | The thumbnail data encoded with URL-safe Base64 (RFC 4648 section 5).
-fchtImage :: Lens' FileContentHintsThumbnail (Maybe ByteString)
-fchtImage
-  = lens _fchtImage (\ s a -> s{_fchtImage = a}) .
-      mapping _Bytes
-
--- | The MIME type of the thumbnail.
-fchtMimeType :: Lens' FileContentHintsThumbnail (Maybe Text)
-fchtMimeType
-  = lens _fchtMimeType (\ s a -> s{_fchtMimeType = a})
-
-instance FromJSON FileContentHintsThumbnail where
-        parseJSON
-          = withObject "FileContentHintsThumbnail"
-              (\ o ->
-                 FileContentHintsThumbnail' <$>
-                   (o .:? "image") <*> (o .:? "mimeType"))
-
-instance ToJSON FileContentHintsThumbnail where
-        toJSON FileContentHintsThumbnail'{..}
-          = object
-              (catMaybes
-                 [("image" .=) <$> _fchtImage,
-                  ("mimeType" .=) <$> _fchtMimeType])
-
--- | A list of Team Drives.
---
--- /See:/ 'teamDriveList' smart constructor.
-data TeamDriveList = TeamDriveList'
-    { _tdlNextPageToken :: !(Maybe Text)
-    , _tdlTeamDrives    :: !(Maybe [TeamDrive])
-    , _tdlKind          :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TeamDriveList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tdlNextPageToken'
---
--- * 'tdlTeamDrives'
---
--- * 'tdlKind'
-teamDriveList
-    :: TeamDriveList
-teamDriveList =
-    TeamDriveList'
-    { _tdlNextPageToken = Nothing
-    , _tdlTeamDrives = Nothing
-    , _tdlKind = "drive#teamDriveList"
-    }
-
--- | The page token for the next page of Team Drives. This will be absent if
--- the end of the Team Drives list has been reached. If the token is
--- rejected for any reason, it should be discarded, and pagination should
--- be restarted from the first page of results.
-tdlNextPageToken :: Lens' TeamDriveList (Maybe Text)
-tdlNextPageToken
-  = lens _tdlNextPageToken
-      (\ s a -> s{_tdlNextPageToken = a})
-
--- | The list of Team Drives. If nextPageToken is populated, then this list
--- may be incomplete and an additional page of results should be fetched.
-tdlTeamDrives :: Lens' TeamDriveList [TeamDrive]
-tdlTeamDrives
-  = lens _tdlTeamDrives
-      (\ s a -> s{_tdlTeamDrives = a})
-      . _Default
-      . _Coerce
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"drive#teamDriveList\".
-tdlKind :: Lens' TeamDriveList Text
-tdlKind = lens _tdlKind (\ s a -> s{_tdlKind = a})
-
-instance FromJSON TeamDriveList where
-        parseJSON
-          = withObject "TeamDriveList"
-              (\ o ->
-                 TeamDriveList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "teamDrives" .!= mempty)
-                     <*> (o .:? "kind" .!= "drive#teamDriveList"))
-
-instance ToJSON TeamDriveList where
-        toJSON TeamDriveList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _tdlNextPageToken,
-                  ("teamDrives" .=) <$> _tdlTeamDrives,
-                  Just ("kind" .= _tdlKind)])
-
--- | An notification channel used to watch for resource changes.
---
--- /See:/ 'channel' smart constructor.
-data Channel = Channel'
-    { _cResourceURI :: !(Maybe Text)
-    , _cResourceId  :: !(Maybe Text)
-    , _cKind        :: !Text
-    , _cExpiration  :: !(Maybe (Textual Int64))
-    , _cToken       :: !(Maybe Text)
-    , _cAddress     :: !(Maybe Text)
-    , _cPayload     :: !(Maybe Bool)
-    , _cParams      :: !(Maybe ChannelParams)
-    , _cId          :: !(Maybe Text)
-    , _cType        :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Channel' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cResourceURI'
---
--- * 'cResourceId'
---
--- * 'cKind'
---
--- * 'cExpiration'
---
--- * 'cToken'
---
--- * 'cAddress'
---
--- * 'cPayload'
---
--- * 'cParams'
---
--- * 'cId'
---
--- * 'cType'
-channel
-    :: Channel
-channel =
-    Channel'
-    { _cResourceURI = Nothing
-    , _cResourceId = Nothing
-    , _cKind = "api#channel"
-    , _cExpiration = Nothing
-    , _cToken = Nothing
-    , _cAddress = Nothing
-    , _cPayload = Nothing
-    , _cParams = Nothing
-    , _cId = Nothing
-    , _cType = Nothing
-    }
-
--- | A version-specific identifier for the watched resource.
-cResourceURI :: Lens' Channel (Maybe Text)
-cResourceURI
-  = lens _cResourceURI (\ s a -> s{_cResourceURI = a})
-
--- | An opaque ID that identifies the resource being watched on this channel.
--- Stable across different API versions.
-cResourceId :: Lens' Channel (Maybe Text)
-cResourceId
-  = lens _cResourceId (\ s a -> s{_cResourceId = a})
-
--- | Identifies this as a notification channel used to watch for changes to a
--- resource. Value: the fixed string \"api#channel\".
-cKind :: Lens' Channel Text
-cKind = lens _cKind (\ s a -> s{_cKind = a})
-
--- | Date and time of notification channel expiration, expressed as a Unix
--- timestamp, in milliseconds. Optional.
-cExpiration :: Lens' Channel (Maybe Int64)
-cExpiration
-  = lens _cExpiration (\ s a -> s{_cExpiration = a}) .
-      mapping _Coerce
-
--- | An arbitrary string delivered to the target address with each
--- notification delivered over this channel. Optional.
-cToken :: Lens' Channel (Maybe Text)
-cToken = lens _cToken (\ s a -> s{_cToken = a})
-
--- | The address where notifications are delivered for this channel.
-cAddress :: Lens' Channel (Maybe Text)
-cAddress = lens _cAddress (\ s a -> s{_cAddress = a})
-
--- | A Boolean value to indicate whether payload is wanted. Optional.
-cPayload :: Lens' Channel (Maybe Bool)
-cPayload = lens _cPayload (\ s a -> s{_cPayload = a})
-
--- | Additional parameters controlling delivery channel behavior. Optional.
-cParams :: Lens' Channel (Maybe ChannelParams)
-cParams = lens _cParams (\ s a -> s{_cParams = a})
-
--- | A UUID or similar unique string that identifies this channel.
-cId :: Lens' Channel (Maybe Text)
-cId = lens _cId (\ s a -> s{_cId = a})
-
--- | The type of delivery mechanism used for this channel.
-cType :: Lens' Channel (Maybe Text)
-cType = lens _cType (\ s a -> s{_cType = a})
-
-instance FromJSON Channel where
-        parseJSON
-          = withObject "Channel"
-              (\ o ->
-                 Channel' <$>
-                   (o .:? "resourceUri") <*> (o .:? "resourceId") <*>
-                     (o .:? "kind" .!= "api#channel")
-                     <*> (o .:? "expiration")
-                     <*> (o .:? "token")
-                     <*> (o .:? "address")
-                     <*> (o .:? "payload")
-                     <*> (o .:? "params")
-                     <*> (o .:? "id")
-                     <*> (o .:? "type"))
-
-instance ToJSON Channel where
-        toJSON Channel'{..}
-          = object
-              (catMaybes
-                 [("resourceUri" .=) <$> _cResourceURI,
-                  ("resourceId" .=) <$> _cResourceId,
-                  Just ("kind" .= _cKind),
-                  ("expiration" .=) <$> _cExpiration,
-                  ("token" .=) <$> _cToken,
-                  ("address" .=) <$> _cAddress,
-                  ("payload" .=) <$> _cPayload,
-                  ("params" .=) <$> _cParams, ("id" .=) <$> _cId,
-                  ("type" .=) <$> _cType])
-
---
--- /See:/ 'aboutTeamDriveThemesItem' smart constructor.
-data AboutTeamDriveThemesItem = AboutTeamDriveThemesItem'
-    { _atdtiColorRgb            :: !(Maybe Text)
-    , _atdtiBackgRoundImageLink :: !(Maybe Text)
-    , _atdtiId                  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AboutTeamDriveThemesItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'atdtiColorRgb'
---
--- * 'atdtiBackgRoundImageLink'
---
--- * 'atdtiId'
-aboutTeamDriveThemesItem
-    :: AboutTeamDriveThemesItem
-aboutTeamDriveThemesItem =
-    AboutTeamDriveThemesItem'
-    { _atdtiColorRgb = Nothing
-    , _atdtiBackgRoundImageLink = Nothing
-    , _atdtiId = Nothing
-    }
-
--- | The color of this Team Drive theme as an RGB hex string.
-atdtiColorRgb :: Lens' AboutTeamDriveThemesItem (Maybe Text)
-atdtiColorRgb
-  = lens _atdtiColorRgb
-      (\ s a -> s{_atdtiColorRgb = a})
-
--- | A link to this Team Drive theme\'s background image.
-atdtiBackgRoundImageLink :: Lens' AboutTeamDriveThemesItem (Maybe Text)
-atdtiBackgRoundImageLink
-  = lens _atdtiBackgRoundImageLink
-      (\ s a -> s{_atdtiBackgRoundImageLink = a})
-
--- | The ID of the theme.
-atdtiId :: Lens' AboutTeamDriveThemesItem (Maybe Text)
-atdtiId = lens _atdtiId (\ s a -> s{_atdtiId = a})
-
-instance FromJSON AboutTeamDriveThemesItem where
-        parseJSON
-          = withObject "AboutTeamDriveThemesItem"
-              (\ o ->
-                 AboutTeamDriveThemesItem' <$>
-                   (o .:? "colorRgb") <*> (o .:? "backgroundImageLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON AboutTeamDriveThemesItem where
-        toJSON AboutTeamDriveThemesItem'{..}
-          = object
-              (catMaybes
-                 [("colorRgb" .=) <$> _atdtiColorRgb,
-                  ("backgroundImageLink" .=) <$>
-                    _atdtiBackgRoundImageLink,
-                  ("id" .=) <$> _atdtiId])
-
--- | A set of restrictions that apply to this Team Drive or items inside this
--- Team Drive.
---
--- /See:/ 'teamDriveRestrictions' smart constructor.
-data TeamDriveRestrictions = TeamDriveRestrictions'
-    { _tdrTeamMembersOnly              :: !(Maybe Bool)
-    , _tdrAdminManagedRestrictions     :: !(Maybe Bool)
-    , _tdrCopyRequiresWriterPermission :: !(Maybe Bool)
-    , _tdrDomainUsersOnly              :: !(Maybe Bool)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TeamDriveRestrictions' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tdrTeamMembersOnly'
---
--- * 'tdrAdminManagedRestrictions'
---
--- * 'tdrCopyRequiresWriterPermission'
---
--- * 'tdrDomainUsersOnly'
-teamDriveRestrictions
-    :: TeamDriveRestrictions
-teamDriveRestrictions =
-    TeamDriveRestrictions'
-    { _tdrTeamMembersOnly = Nothing
-    , _tdrAdminManagedRestrictions = Nothing
-    , _tdrCopyRequiresWriterPermission = Nothing
-    , _tdrDomainUsersOnly = Nothing
-    }
-
--- | Whether access to items inside this Team Drive is restricted to members
--- of this Team Drive.
-tdrTeamMembersOnly :: Lens' TeamDriveRestrictions (Maybe Bool)
-tdrTeamMembersOnly
-  = lens _tdrTeamMembersOnly
-      (\ s a -> s{_tdrTeamMembersOnly = a})
-
--- | Whether administrative privileges on this Team Drive are required to
--- modify restrictions.
-tdrAdminManagedRestrictions :: Lens' TeamDriveRestrictions (Maybe Bool)
-tdrAdminManagedRestrictions
-  = lens _tdrAdminManagedRestrictions
-      (\ s a -> s{_tdrAdminManagedRestrictions = a})
-
--- | Whether the options to copy, print, or download files inside this Team
--- Drive, should be disabled for readers and commenters. When this
--- restriction is set to true, it will override the similarly named field
--- to true for any file inside this Team Drive.
-tdrCopyRequiresWriterPermission :: Lens' TeamDriveRestrictions (Maybe Bool)
-tdrCopyRequiresWriterPermission
-  = lens _tdrCopyRequiresWriterPermission
-      (\ s a -> s{_tdrCopyRequiresWriterPermission = a})
-
--- | Whether access to this Team Drive and items inside this Team Drive is
--- restricted to users of the domain to which this Team Drive belongs. This
--- restriction may be overridden by other sharing policies controlled
--- outside of this Team Drive.
-tdrDomainUsersOnly :: Lens' TeamDriveRestrictions (Maybe Bool)
-tdrDomainUsersOnly
-  = lens _tdrDomainUsersOnly
-      (\ s a -> s{_tdrDomainUsersOnly = a})
-
-instance FromJSON TeamDriveRestrictions where
-        parseJSON
-          = withObject "TeamDriveRestrictions"
-              (\ o ->
-                 TeamDriveRestrictions' <$>
-                   (o .:? "teamMembersOnly") <*>
-                     (o .:? "adminManagedRestrictions")
-                     <*> (o .:? "copyRequiresWriterPermission")
-                     <*> (o .:? "domainUsersOnly"))
-
-instance ToJSON TeamDriveRestrictions where
-        toJSON TeamDriveRestrictions'{..}
-          = object
-              (catMaybes
-                 [("teamMembersOnly" .=) <$> _tdrTeamMembersOnly,
-                  ("adminManagedRestrictions" .=) <$>
-                    _tdrAdminManagedRestrictions,
-                  ("copyRequiresWriterPermission" .=) <$>
-                    _tdrCopyRequiresWriterPermission,
-                  ("domainUsersOnly" .=) <$> _tdrDomainUsersOnly])
-
--- | An image file and cropping parameters from which a background image for
--- this Team Drive is set. This is a write only field; it can only be set
--- on drive.teamdrives.update requests that don\'t set themeId. When
--- specified, all fields of the backgroundImageFile must be set.
---
--- /See:/ 'teamDriveBackgRoundImageFile' smart constructor.
-data TeamDriveBackgRoundImageFile = TeamDriveBackgRoundImageFile'
-    { _tdbrifXCoordinate :: !(Maybe (Textual Double))
-    , _tdbrifYCoordinate :: !(Maybe (Textual Double))
-    , _tdbrifWidth       :: !(Maybe (Textual Double))
-    , _tdbrifId          :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TeamDriveBackgRoundImageFile' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tdbrifXCoordinate'
---
--- * 'tdbrifYCoordinate'
---
--- * 'tdbrifWidth'
---
--- * 'tdbrifId'
-teamDriveBackgRoundImageFile
-    :: TeamDriveBackgRoundImageFile
-teamDriveBackgRoundImageFile =
-    TeamDriveBackgRoundImageFile'
-    { _tdbrifXCoordinate = Nothing
-    , _tdbrifYCoordinate = Nothing
-    , _tdbrifWidth = Nothing
-    , _tdbrifId = Nothing
-    }
-
--- | The X coordinate of the upper left corner of the cropping area in the
--- background image. This is a value in the closed range of 0 to 1. This
--- value represents the horizontal distance from the left side of the
--- entire image to the left side of the cropping area divided by the width
--- of the entire image.
-tdbrifXCoordinate :: Lens' TeamDriveBackgRoundImageFile (Maybe Double)
-tdbrifXCoordinate
-  = lens _tdbrifXCoordinate
-      (\ s a -> s{_tdbrifXCoordinate = a})
-      . mapping _Coerce
-
--- | The Y coordinate of the upper left corner of the cropping area in the
--- background image. This is a value in the closed range of 0 to 1. This
--- value represents the vertical distance from the top side of the entire
--- image to the top side of the cropping area divided by the height of the
--- entire image.
-tdbrifYCoordinate :: Lens' TeamDriveBackgRoundImageFile (Maybe Double)
-tdbrifYCoordinate
-  = lens _tdbrifYCoordinate
-      (\ s a -> s{_tdbrifYCoordinate = a})
-      . mapping _Coerce
-
--- | The width of the cropped image in the closed range of 0 to 1. This value
--- represents the width of the cropped image divided by the width of the
--- entire image. The height is computed by applying a width to height
--- aspect ratio of 80 to 9. The resulting image must be at least 1280
--- pixels wide and 144 pixels high.
-tdbrifWidth :: Lens' TeamDriveBackgRoundImageFile (Maybe Double)
-tdbrifWidth
-  = lens _tdbrifWidth (\ s a -> s{_tdbrifWidth = a}) .
-      mapping _Coerce
-
--- | The ID of an image file in Drive to use for the background image.
-tdbrifId :: Lens' TeamDriveBackgRoundImageFile (Maybe Text)
-tdbrifId = lens _tdbrifId (\ s a -> s{_tdbrifId = a})
-
-instance FromJSON TeamDriveBackgRoundImageFile where
-        parseJSON
-          = withObject "TeamDriveBackgRoundImageFile"
-              (\ o ->
-                 TeamDriveBackgRoundImageFile' <$>
-                   (o .:? "xCoordinate") <*> (o .:? "yCoordinate") <*>
-                     (o .:? "width")
-                     <*> (o .:? "id"))
-
-instance ToJSON TeamDriveBackgRoundImageFile where
-        toJSON TeamDriveBackgRoundImageFile'{..}
-          = object
-              (catMaybes
-                 [("xCoordinate" .=) <$> _tdbrifXCoordinate,
-                  ("yCoordinate" .=) <$> _tdbrifYCoordinate,
-                  ("width" .=) <$> _tdbrifWidth,
-                  ("id" .=) <$> _tdbrifId])
-
--- | Additional metadata about video media. This may not be available
--- immediately upon upload.
---
--- /See:/ 'fileVideoMediaMetadata' smart constructor.
-data FileVideoMediaMetadata = FileVideoMediaMetadata'
-    { _fvmmHeight         :: !(Maybe (Textual Int32))
-    , _fvmmWidth          :: !(Maybe (Textual Int32))
-    , _fvmmDurationMillis :: !(Maybe (Textual Int64))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FileVideoMediaMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fvmmHeight'
---
--- * 'fvmmWidth'
---
--- * 'fvmmDurationMillis'
-fileVideoMediaMetadata
-    :: FileVideoMediaMetadata
-fileVideoMediaMetadata =
-    FileVideoMediaMetadata'
-    { _fvmmHeight = Nothing
-    , _fvmmWidth = Nothing
-    , _fvmmDurationMillis = Nothing
-    }
-
--- | The height of the video in pixels.
-fvmmHeight :: Lens' FileVideoMediaMetadata (Maybe Int32)
-fvmmHeight
-  = lens _fvmmHeight (\ s a -> s{_fvmmHeight = a}) .
-      mapping _Coerce
-
--- | The width of the video in pixels.
-fvmmWidth :: Lens' FileVideoMediaMetadata (Maybe Int32)
-fvmmWidth
-  = lens _fvmmWidth (\ s a -> s{_fvmmWidth = a}) .
-      mapping _Coerce
-
--- | The duration of the video in milliseconds.
-fvmmDurationMillis :: Lens' FileVideoMediaMetadata (Maybe Int64)
-fvmmDurationMillis
-  = lens _fvmmDurationMillis
-      (\ s a -> s{_fvmmDurationMillis = a})
-      . mapping _Coerce
-
-instance FromJSON FileVideoMediaMetadata where
-        parseJSON
-          = withObject "FileVideoMediaMetadata"
-              (\ o ->
-                 FileVideoMediaMetadata' <$>
-                   (o .:? "height") <*> (o .:? "width") <*>
-                     (o .:? "durationMillis"))
-
-instance ToJSON FileVideoMediaMetadata where
-        toJSON FileVideoMediaMetadata'{..}
-          = object
-              (catMaybes
-                 [("height" .=) <$> _fvmmHeight,
-                  ("width" .=) <$> _fvmmWidth,
-                  ("durationMillis" .=) <$> _fvmmDurationMillis])
-
--- | A collection of arbitrary key-value pairs which are private to the
--- requesting app. Entries with null values are cleared in update and copy
--- requests.
---
--- /See:/ 'fileAppProperties' smart constructor.
-newtype FileAppProperties = FileAppProperties'
-    { _fapAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FileAppProperties' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fapAddtional'
-fileAppProperties
-    :: HashMap Text Text -- ^ 'fapAddtional'
-    -> FileAppProperties
-fileAppProperties pFapAddtional_ =
-    FileAppProperties'
-    { _fapAddtional = _Coerce # pFapAddtional_
-    }
-
-fapAddtional :: Lens' FileAppProperties (HashMap Text Text)
-fapAddtional
-  = lens _fapAddtional (\ s a -> s{_fapAddtional = a})
-      . _Coerce
-
-instance FromJSON FileAppProperties where
-        parseJSON
-          = withObject "FileAppProperties"
-              (\ o -> FileAppProperties' <$> (parseJSONObject o))
-
-instance ToJSON FileAppProperties where
-        toJSON = toJSON . _fapAddtional
-
--- | A change to a file or Team Drive.
---
--- /See:/ 'change' smart constructor.
-data Change = Change'
-    { _chaRemoved     :: !(Maybe Bool)
-    , _chaTime        :: !(Maybe DateTime')
-    , _chaKind        :: !Text
-    , _chaTeamDrive   :: !(Maybe TeamDrive)
-    , _chaTeamDriveId :: !(Maybe Text)
-    , _chaType        :: !(Maybe Text)
-    , _chaFileId      :: !(Maybe Text)
-    , _chaFile        :: !(Maybe File)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Change' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'chaRemoved'
---
--- * 'chaTime'
---
--- * 'chaKind'
---
--- * 'chaTeamDrive'
---
--- * 'chaTeamDriveId'
---
--- * 'chaType'
---
--- * 'chaFileId'
---
--- * 'chaFile'
-change
-    :: Change
-change =
-    Change'
-    { _chaRemoved = Nothing
-    , _chaTime = Nothing
-    , _chaKind = "drive#change"
-    , _chaTeamDrive = Nothing
-    , _chaTeamDriveId = Nothing
-    , _chaType = Nothing
-    , _chaFileId = Nothing
-    , _chaFile = Nothing
-    }
-
--- | Whether the file or Team Drive has been removed from this list of
--- changes, for example by deletion or loss of access.
-chaRemoved :: Lens' Change (Maybe Bool)
-chaRemoved
-  = lens _chaRemoved (\ s a -> s{_chaRemoved = a})
-
--- | The time of this change (RFC 3339 date-time).
-chaTime :: Lens' Change (Maybe UTCTime)
-chaTime
-  = lens _chaTime (\ s a -> s{_chaTime = a}) .
-      mapping _DateTime
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"drive#change\".
-chaKind :: Lens' Change Text
-chaKind = lens _chaKind (\ s a -> s{_chaKind = a})
-
--- | The updated state of the Team Drive. Present if the type is teamDrive,
--- the user is still a member of the Team Drive, and the Team Drive has not
--- been removed.
-chaTeamDrive :: Lens' Change (Maybe TeamDrive)
-chaTeamDrive
-  = lens _chaTeamDrive (\ s a -> s{_chaTeamDrive = a})
-
--- | The ID of the Team Drive associated with this change.
-chaTeamDriveId :: Lens' Change (Maybe Text)
-chaTeamDriveId
-  = lens _chaTeamDriveId
-      (\ s a -> s{_chaTeamDriveId = a})
-
--- | The type of the change. Possible values are file and teamDrive.
-chaType :: Lens' Change (Maybe Text)
-chaType = lens _chaType (\ s a -> s{_chaType = a})
-
--- | The ID of the file which has changed.
-chaFileId :: Lens' Change (Maybe Text)
-chaFileId
-  = lens _chaFileId (\ s a -> s{_chaFileId = a})
-
--- | The updated state of the file. Present if the type is file and the file
--- has not been removed from this list of changes.
-chaFile :: Lens' Change (Maybe File)
-chaFile = lens _chaFile (\ s a -> s{_chaFile = a})
-
-instance FromJSON Change where
-        parseJSON
-          = withObject "Change"
-              (\ o ->
-                 Change' <$>
-                   (o .:? "removed") <*> (o .:? "time") <*>
-                     (o .:? "kind" .!= "drive#change")
-                     <*> (o .:? "teamDrive")
-                     <*> (o .:? "teamDriveId")
-                     <*> (o .:? "type")
-                     <*> (o .:? "fileId")
-                     <*> (o .:? "file"))
-
-instance ToJSON Change where
-        toJSON Change'{..}
-          = object
-              (catMaybes
-                 [("removed" .=) <$> _chaRemoved,
-                  ("time" .=) <$> _chaTime, Just ("kind" .= _chaKind),
-                  ("teamDrive" .=) <$> _chaTeamDrive,
-                  ("teamDriveId" .=) <$> _chaTeamDriveId,
-                  ("type" .=) <$> _chaType,
-                  ("fileId" .=) <$> _chaFileId,
-                  ("file" .=) <$> _chaFile])
-
--- | Representation of a Team Drive.
---
--- /See:/ 'teamDrive' smart constructor.
-data TeamDrive = TeamDrive'
-    { _tdThemeId             :: !(Maybe Text)
-    , _tdBackgRoundImageFile :: !(Maybe TeamDriveBackgRoundImageFile)
-    , _tdColorRgb            :: !(Maybe Text)
-    , _tdCreatedTime         :: !(Maybe DateTime')
-    , _tdKind                :: !Text
-    , _tdBackgRoundImageLink :: !(Maybe Text)
-    , _tdName                :: !(Maybe Text)
-    , _tdRestrictions        :: !(Maybe TeamDriveRestrictions)
-    , _tdId                  :: !(Maybe Text)
-    , _tdCapabilities        :: !(Maybe TeamDriveCapabilities)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'TeamDrive' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'tdThemeId'
---
--- * 'tdBackgRoundImageFile'
---
--- * 'tdColorRgb'
---
--- * 'tdCreatedTime'
---
--- * 'tdKind'
---
--- * 'tdBackgRoundImageLink'
---
--- * 'tdName'
---
--- * 'tdRestrictions'
---
--- * 'tdId'
---
--- * 'tdCapabilities'
-teamDrive
-    :: TeamDrive
-teamDrive =
-    TeamDrive'
-    { _tdThemeId = Nothing
-    , _tdBackgRoundImageFile = Nothing
-    , _tdColorRgb = Nothing
-    , _tdCreatedTime = Nothing
-    , _tdKind = "drive#teamDrive"
-    , _tdBackgRoundImageLink = Nothing
-    , _tdName = Nothing
-    , _tdRestrictions = Nothing
-    , _tdId = Nothing
-    , _tdCapabilities = Nothing
-    }
-
--- | The ID of the theme from which the background image and color will be
--- set. The set of possible teamDriveThemes can be retrieved from a
--- drive.about.get response. When not specified on a
--- drive.teamdrives.create request, a random theme is chosen from which the
--- background image and color are set. This is a write-only field; it can
--- only be set on requests that don\'t set colorRgb or backgroundImageFile.
-tdThemeId :: Lens' TeamDrive (Maybe Text)
-tdThemeId
-  = lens _tdThemeId (\ s a -> s{_tdThemeId = a})
-
--- | An image file and cropping parameters from which a background image for
--- this Team Drive is set. This is a write only field; it can only be set
--- on drive.teamdrives.update requests that don\'t set themeId. When
--- specified, all fields of the backgroundImageFile must be set.
-tdBackgRoundImageFile :: Lens' TeamDrive (Maybe TeamDriveBackgRoundImageFile)
-tdBackgRoundImageFile
-  = lens _tdBackgRoundImageFile
-      (\ s a -> s{_tdBackgRoundImageFile = a})
-
--- | The color of this Team Drive as an RGB hex string. It can only be set on
--- a drive.teamdrives.update request that does not set themeId.
-tdColorRgb :: Lens' TeamDrive (Maybe Text)
-tdColorRgb
-  = lens _tdColorRgb (\ s a -> s{_tdColorRgb = a})
-
--- | The time at which the Team Drive was created (RFC 3339 date-time).
-tdCreatedTime :: Lens' TeamDrive (Maybe UTCTime)
-tdCreatedTime
-  = lens _tdCreatedTime
-      (\ s a -> s{_tdCreatedTime = a})
-      . mapping _DateTime
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"drive#teamDrive\".
-tdKind :: Lens' TeamDrive Text
-tdKind = lens _tdKind (\ s a -> s{_tdKind = a})
-
--- | A short-lived link to this Team Drive\'s background image.
-tdBackgRoundImageLink :: Lens' TeamDrive (Maybe Text)
-tdBackgRoundImageLink
-  = lens _tdBackgRoundImageLink
-      (\ s a -> s{_tdBackgRoundImageLink = a})
-
--- | The name of this Team Drive.
-tdName :: Lens' TeamDrive (Maybe Text)
-tdName = lens _tdName (\ s a -> s{_tdName = a})
-
--- | A set of restrictions that apply to this Team Drive or items inside this
--- Team Drive.
-tdRestrictions :: Lens' TeamDrive (Maybe TeamDriveRestrictions)
-tdRestrictions
-  = lens _tdRestrictions
-      (\ s a -> s{_tdRestrictions = a})
-
--- | The ID of this Team Drive which is also the ID of the top level folder
--- of this Team Drive.
-tdId :: Lens' TeamDrive (Maybe Text)
-tdId = lens _tdId (\ s a -> s{_tdId = a})
-
--- | Capabilities the current user has on this Team Drive.
-tdCapabilities :: Lens' TeamDrive (Maybe TeamDriveCapabilities)
-tdCapabilities
-  = lens _tdCapabilities
-      (\ s a -> s{_tdCapabilities = a})
-
-instance FromJSON TeamDrive where
-        parseJSON
-          = withObject "TeamDrive"
-              (\ o ->
-                 TeamDrive' <$>
-                   (o .:? "themeId") <*> (o .:? "backgroundImageFile")
-                     <*> (o .:? "colorRgb")
-                     <*> (o .:? "createdTime")
-                     <*> (o .:? "kind" .!= "drive#teamDrive")
-                     <*> (o .:? "backgroundImageLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "restrictions")
-                     <*> (o .:? "id")
-                     <*> (o .:? "capabilities"))
-
-instance ToJSON TeamDrive where
-        toJSON TeamDrive'{..}
-          = object
-              (catMaybes
-                 [("themeId" .=) <$> _tdThemeId,
-                  ("backgroundImageFile" .=) <$>
-                    _tdBackgRoundImageFile,
-                  ("colorRgb" .=) <$> _tdColorRgb,
-                  ("createdTime" .=) <$> _tdCreatedTime,
-                  Just ("kind" .= _tdKind),
-                  ("backgroundImageLink" .=) <$>
-                    _tdBackgRoundImageLink,
-                  ("name" .=) <$> _tdName,
-                  ("restrictions" .=) <$> _tdRestrictions,
-                  ("id" .=) <$> _tdId,
-                  ("capabilities" .=) <$> _tdCapabilities])
-
--- | A map of source MIME type to possible targets for all supported exports.
---
--- /See:/ 'aboutExportFormats' smart constructor.
-newtype AboutExportFormats = AboutExportFormats'
-    { _aefAddtional :: HashMap Text [Text]
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AboutExportFormats' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aefAddtional'
-aboutExportFormats
-    :: HashMap Text [Text] -- ^ 'aefAddtional'
-    -> AboutExportFormats
-aboutExportFormats pAefAddtional_ =
-    AboutExportFormats'
-    { _aefAddtional = _Coerce # pAefAddtional_
-    }
-
-aefAddtional :: Lens' AboutExportFormats (HashMap Text [Text])
-aefAddtional
-  = lens _aefAddtional (\ s a -> s{_aefAddtional = a})
-      . _Coerce
-
-instance FromJSON AboutExportFormats where
-        parseJSON
-          = withObject "AboutExportFormats"
-              (\ o -> AboutExportFormats' <$> (parseJSONObject o))
-
-instance ToJSON AboutExportFormats where
-        toJSON = toJSON . _aefAddtional
-
--- | Information about a Drive user.
---
--- /See:/ 'user' smart constructor.
-data User = User'
-    { _uPhotoLink    :: !(Maybe Text)
-    , _uMe           :: !(Maybe Bool)
-    , _uKind         :: !Text
-    , _uEmailAddress :: !(Maybe Text)
-    , _uDisplayName  :: !(Maybe Text)
-    , _uPermissionId :: !(Maybe Text)
-    } deriving (Eq,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:
---
--- * 'uPhotoLink'
---
--- * 'uMe'
---
--- * 'uKind'
---
--- * 'uEmailAddress'
---
--- * 'uDisplayName'
---
--- * 'uPermissionId'
-user
-    :: User
-user =
-    User'
-    { _uPhotoLink = Nothing
-    , _uMe = Nothing
-    , _uKind = "drive#user"
-    , _uEmailAddress = Nothing
-    , _uDisplayName = Nothing
-    , _uPermissionId = Nothing
-    }
-
--- | A link to the user\'s profile photo, if available.
-uPhotoLink :: Lens' User (Maybe Text)
-uPhotoLink
-  = lens _uPhotoLink (\ s a -> s{_uPhotoLink = a})
-
--- | Whether this user is the requesting user.
-uMe :: Lens' User (Maybe Bool)
-uMe = lens _uMe (\ s a -> s{_uMe = a})
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"drive#user\".
-uKind :: Lens' User Text
-uKind = lens _uKind (\ s a -> s{_uKind = a})
-
--- | The email address of the user. This may not be present in certain
--- contexts if the user has not made their email address visible to the
--- requester.
-uEmailAddress :: Lens' User (Maybe Text)
-uEmailAddress
-  = lens _uEmailAddress
-      (\ s a -> s{_uEmailAddress = a})
-
--- | A plain text displayable name for this user.
-uDisplayName :: Lens' User (Maybe Text)
-uDisplayName
-  = lens _uDisplayName (\ s a -> s{_uDisplayName = a})
-
--- | The user\'s ID as visible in Permission resources.
-uPermissionId :: Lens' User (Maybe Text)
-uPermissionId
-  = lens _uPermissionId
-      (\ s a -> s{_uPermissionId = a})
-
-instance FromJSON User where
-        parseJSON
-          = withObject "User"
-              (\ o ->
-                 User' <$>
-                   (o .:? "photoLink") <*> (o .:? "me") <*>
-                     (o .:? "kind" .!= "drive#user")
-                     <*> (o .:? "emailAddress")
-                     <*> (o .:? "displayName")
-                     <*> (o .:? "permissionId"))
-
-instance ToJSON User where
-        toJSON User'{..}
-          = object
-              (catMaybes
-                 [("photoLink" .=) <$> _uPhotoLink,
-                  ("me" .=) <$> _uMe, Just ("kind" .= _uKind),
-                  ("emailAddress" .=) <$> _uEmailAddress,
-                  ("displayName" .=) <$> _uDisplayName,
-                  ("permissionId" .=) <$> _uPermissionId])
-
--- | A list of changes for a user.
---
--- /See:/ 'changeList' smart constructor.
-data ChangeList = ChangeList'
-    { _clNewStartPageToken :: !(Maybe Text)
-    , _clNextPageToken     :: !(Maybe Text)
-    , _clChanges           :: !(Maybe [Change])
-    , _clKind              :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChangeList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'clNewStartPageToken'
---
--- * 'clNextPageToken'
---
--- * 'clChanges'
---
--- * 'clKind'
-changeList
-    :: ChangeList
-changeList =
-    ChangeList'
-    { _clNewStartPageToken = Nothing
-    , _clNextPageToken = Nothing
-    , _clChanges = Nothing
-    , _clKind = "drive#changeList"
-    }
-
--- | The starting page token for future changes. This will be present only if
--- the end of the current changes list has been reached.
-clNewStartPageToken :: Lens' ChangeList (Maybe Text)
-clNewStartPageToken
-  = lens _clNewStartPageToken
-      (\ s a -> s{_clNewStartPageToken = a})
-
--- | The page token for the next page of changes. This will be absent if the
--- end of the changes list has been reached. If the token is rejected for
--- any reason, it should be discarded, and pagination should be restarted
--- from the first page of results.
-clNextPageToken :: Lens' ChangeList (Maybe Text)
-clNextPageToken
-  = lens _clNextPageToken
-      (\ s a -> s{_clNextPageToken = a})
-
--- | The list of changes. If nextPageToken is populated, then this list may
--- be incomplete and an additional page of results should be fetched.
-clChanges :: Lens' ChangeList [Change]
-clChanges
-  = lens _clChanges (\ s a -> s{_clChanges = a}) .
-      _Default
-      . _Coerce
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"drive#changeList\".
-clKind :: Lens' ChangeList Text
-clKind = lens _clKind (\ s a -> s{_clKind = a})
-
-instance FromJSON ChangeList where
-        parseJSON
-          = withObject "ChangeList"
-              (\ o ->
-                 ChangeList' <$>
-                   (o .:? "newStartPageToken") <*>
-                     (o .:? "nextPageToken")
-                     <*> (o .:? "changes" .!= mempty)
-                     <*> (o .:? "kind" .!= "drive#changeList"))
-
-instance ToJSON ChangeList where
-        toJSON ChangeList'{..}
-          = object
-              (catMaybes
-                 [("newStartPageToken" .=) <$> _clNewStartPageToken,
-                  ("nextPageToken" .=) <$> _clNextPageToken,
-                  ("changes" .=) <$> _clChanges,
-                  Just ("kind" .= _clKind)])
-
--- | Links for exporting Google Docs to specific formats.
---
--- /See:/ 'revisionExportLinks' smart constructor.
-newtype RevisionExportLinks = RevisionExportLinks'
-    { _relAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RevisionExportLinks' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'relAddtional'
-revisionExportLinks
-    :: HashMap Text Text -- ^ 'relAddtional'
-    -> RevisionExportLinks
-revisionExportLinks pRelAddtional_ =
-    RevisionExportLinks'
-    { _relAddtional = _Coerce # pRelAddtional_
-    }
-
--- | A mapping from export format to URL
-relAddtional :: Lens' RevisionExportLinks (HashMap Text Text)
-relAddtional
-  = lens _relAddtional (\ s a -> s{_relAddtional = a})
-      . _Coerce
-
-instance FromJSON RevisionExportLinks where
-        parseJSON
-          = withObject "RevisionExportLinks"
-              (\ o -> RevisionExportLinks' <$> (parseJSONObject o))
-
-instance ToJSON RevisionExportLinks where
-        toJSON = toJSON . _relAddtional
-
--- | Additional information about the content of the file. These fields are
--- never populated in responses.
---
--- /See:/ 'fileContentHints' smart constructor.
-data FileContentHints = FileContentHints'
-    { _fchThumbnail     :: !(Maybe FileContentHintsThumbnail)
-    , _fchIndexableText :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FileContentHints' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fchThumbnail'
---
--- * 'fchIndexableText'
-fileContentHints
-    :: FileContentHints
-fileContentHints =
-    FileContentHints'
-    { _fchThumbnail = Nothing
-    , _fchIndexableText = Nothing
-    }
-
--- | A thumbnail for the file. This will only be used if Drive cannot
--- generate a standard thumbnail.
-fchThumbnail :: Lens' FileContentHints (Maybe FileContentHintsThumbnail)
-fchThumbnail
-  = lens _fchThumbnail (\ s a -> s{_fchThumbnail = a})
-
--- | Text to be indexed for the file to improve fullText queries. This is
--- limited to 128KB in length and may contain HTML elements.
-fchIndexableText :: Lens' FileContentHints (Maybe Text)
-fchIndexableText
-  = lens _fchIndexableText
-      (\ s a -> s{_fchIndexableText = a})
-
-instance FromJSON FileContentHints where
-        parseJSON
-          = withObject "FileContentHints"
-              (\ o ->
-                 FileContentHints' <$>
-                   (o .:? "thumbnail") <*> (o .:? "indexableText"))
-
-instance ToJSON FileContentHints where
-        toJSON FileContentHints'{..}
-          = object
-              (catMaybes
-                 [("thumbnail" .=) <$> _fchThumbnail,
-                  ("indexableText" .=) <$> _fchIndexableText])
-
--- | Additional parameters controlling delivery channel behavior. Optional.
---
--- /See:/ 'channelParams' smart constructor.
-newtype ChannelParams = ChannelParams'
-    { _cpAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChannelParams' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cpAddtional'
-channelParams
-    :: HashMap Text Text -- ^ 'cpAddtional'
-    -> ChannelParams
-channelParams pCpAddtional_ =
-    ChannelParams'
-    { _cpAddtional = _Coerce # pCpAddtional_
-    }
-
--- | Declares a new parameter by name.
-cpAddtional :: Lens' ChannelParams (HashMap Text Text)
-cpAddtional
-  = lens _cpAddtional (\ s a -> s{_cpAddtional = a}) .
-      _Coerce
-
-instance FromJSON ChannelParams where
-        parseJSON
-          = withObject "ChannelParams"
-              (\ o -> ChannelParams' <$> (parseJSONObject o))
-
-instance ToJSON ChannelParams where
-        toJSON = toJSON . _cpAddtional
-
--- | A collection of arbitrary key-value pairs which are visible to all apps.
--- Entries with null values are cleared in update and copy requests.
---
--- /See:/ 'fileProperties' smart constructor.
-newtype FileProperties = FileProperties'
-    { _fpAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FileProperties' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fpAddtional'
-fileProperties
-    :: HashMap Text Text -- ^ 'fpAddtional'
-    -> FileProperties
-fileProperties pFpAddtional_ =
-    FileProperties'
-    { _fpAddtional = _Coerce # pFpAddtional_
-    }
-
-fpAddtional :: Lens' FileProperties (HashMap Text Text)
-fpAddtional
-  = lens _fpAddtional (\ s a -> s{_fpAddtional = a}) .
-      _Coerce
-
-instance FromJSON FileProperties where
-        parseJSON
-          = withObject "FileProperties"
-              (\ o -> FileProperties' <$> (parseJSONObject o))
-
-instance ToJSON FileProperties where
-        toJSON = toJSON . _fpAddtional
-
--- | A map of maximum import sizes by MIME type, in bytes.
---
--- /See:/ 'aboutMaxImportSizes' smart constructor.
-newtype AboutMaxImportSizes = AboutMaxImportSizes'
-    { _amisAddtional :: HashMap Text (Textual Int64)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AboutMaxImportSizes' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'amisAddtional'
-aboutMaxImportSizes
-    :: HashMap Text Int64 -- ^ 'amisAddtional'
-    -> AboutMaxImportSizes
-aboutMaxImportSizes pAmisAddtional_ =
-    AboutMaxImportSizes'
-    { _amisAddtional = _Coerce # pAmisAddtional_
-    }
-
-amisAddtional :: Lens' AboutMaxImportSizes (HashMap Text Int64)
-amisAddtional
-  = lens _amisAddtional
-      (\ s a -> s{_amisAddtional = a})
-      . _Coerce
-
-instance FromJSON AboutMaxImportSizes where
-        parseJSON
-          = withObject "AboutMaxImportSizes"
-              (\ o -> AboutMaxImportSizes' <$> (parseJSONObject o))
-
-instance ToJSON AboutMaxImportSizes where
-        toJSON = toJSON . _amisAddtional
-
--- | Information about the user, the user\'s Drive, and system capabilities.
---
--- /See:/ 'about' smart constructor.
-data About = About'
-    { _aExportFormats       :: !(Maybe AboutExportFormats)
-    , _aMaxImportSizes      :: !(Maybe AboutMaxImportSizes)
-    , _aCanCreateTeamDrives :: !(Maybe Bool)
-    , _aImportFormats       :: !(Maybe AboutImportFormats)
-    , _aKind                :: !Text
-    , _aAppInstalled        :: !(Maybe Bool)
-    , _aUser                :: !(Maybe User)
-    , _aStorageQuota        :: !(Maybe AboutStorageQuota)
-    , _aMaxUploadSize       :: !(Maybe (Textual Int64))
-    , _aTeamDriveThemes     :: !(Maybe [AboutTeamDriveThemesItem])
-    , _aFolderColorPalette  :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'About' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aExportFormats'
---
--- * 'aMaxImportSizes'
---
--- * 'aCanCreateTeamDrives'
---
--- * 'aImportFormats'
---
--- * 'aKind'
---
--- * 'aAppInstalled'
---
--- * 'aUser'
---
--- * 'aStorageQuota'
---
--- * 'aMaxUploadSize'
---
--- * 'aTeamDriveThemes'
---
--- * 'aFolderColorPalette'
-about
-    :: About
-about =
-    About'
-    { _aExportFormats = Nothing
-    , _aMaxImportSizes = Nothing
-    , _aCanCreateTeamDrives = Nothing
-    , _aImportFormats = Nothing
-    , _aKind = "drive#about"
-    , _aAppInstalled = Nothing
-    , _aUser = Nothing
-    , _aStorageQuota = Nothing
-    , _aMaxUploadSize = Nothing
-    , _aTeamDriveThemes = Nothing
-    , _aFolderColorPalette = Nothing
-    }
-
--- | A map of source MIME type to possible targets for all supported exports.
-aExportFormats :: Lens' About (Maybe AboutExportFormats)
-aExportFormats
-  = lens _aExportFormats
-      (\ s a -> s{_aExportFormats = a})
-
--- | A map of maximum import sizes by MIME type, in bytes.
-aMaxImportSizes :: Lens' About (Maybe AboutMaxImportSizes)
-aMaxImportSizes
-  = lens _aMaxImportSizes
-      (\ s a -> s{_aMaxImportSizes = a})
-
--- | Whether the user can create Team Drives.
-aCanCreateTeamDrives :: Lens' About (Maybe Bool)
-aCanCreateTeamDrives
-  = lens _aCanCreateTeamDrives
-      (\ s a -> s{_aCanCreateTeamDrives = a})
-
--- | A map of source MIME type to possible targets for all supported imports.
-aImportFormats :: Lens' About (Maybe AboutImportFormats)
-aImportFormats
-  = lens _aImportFormats
-      (\ s a -> s{_aImportFormats = a})
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"drive#about\".
-aKind :: Lens' About Text
-aKind = lens _aKind (\ s a -> s{_aKind = a})
-
--- | Whether the user has installed the requesting app.
-aAppInstalled :: Lens' About (Maybe Bool)
-aAppInstalled
-  = lens _aAppInstalled
-      (\ s a -> s{_aAppInstalled = a})
-
--- | The authenticated user.
-aUser :: Lens' About (Maybe User)
-aUser = lens _aUser (\ s a -> s{_aUser = a})
-
--- | The user\'s storage quota limits and usage. All fields are measured in
--- bytes.
-aStorageQuota :: Lens' About (Maybe AboutStorageQuota)
-aStorageQuota
-  = lens _aStorageQuota
-      (\ s a -> s{_aStorageQuota = a})
-
--- | The maximum upload size in bytes.
-aMaxUploadSize :: Lens' About (Maybe Int64)
-aMaxUploadSize
-  = lens _aMaxUploadSize
-      (\ s a -> s{_aMaxUploadSize = a})
-      . mapping _Coerce
-
--- | A list of themes that are supported for Team Drives.
-aTeamDriveThemes :: Lens' About [AboutTeamDriveThemesItem]
-aTeamDriveThemes
-  = lens _aTeamDriveThemes
-      (\ s a -> s{_aTeamDriveThemes = a})
-      . _Default
-      . _Coerce
-
--- | The currently supported folder colors as RGB hex strings.
-aFolderColorPalette :: Lens' About [Text]
-aFolderColorPalette
-  = lens _aFolderColorPalette
-      (\ s a -> s{_aFolderColorPalette = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON About where
-        parseJSON
-          = withObject "About"
-              (\ o ->
-                 About' <$>
-                   (o .:? "exportFormats") <*> (o .:? "maxImportSizes")
-                     <*> (o .:? "canCreateTeamDrives")
-                     <*> (o .:? "importFormats")
-                     <*> (o .:? "kind" .!= "drive#about")
-                     <*> (o .:? "appInstalled")
-                     <*> (o .:? "user")
-                     <*> (o .:? "storageQuota")
-                     <*> (o .:? "maxUploadSize")
-                     <*> (o .:? "teamDriveThemes" .!= mempty)
-                     <*> (o .:? "folderColorPalette" .!= mempty))
-
-instance ToJSON About where
-        toJSON About'{..}
-          = object
-              (catMaybes
-                 [("exportFormats" .=) <$> _aExportFormats,
-                  ("maxImportSizes" .=) <$> _aMaxImportSizes,
-                  ("canCreateTeamDrives" .=) <$> _aCanCreateTeamDrives,
-                  ("importFormats" .=) <$> _aImportFormats,
-                  Just ("kind" .= _aKind),
-                  ("appInstalled" .=) <$> _aAppInstalled,
-                  ("user" .=) <$> _aUser,
-                  ("storageQuota" .=) <$> _aStorageQuota,
-                  ("maxUploadSize" .=) <$> _aMaxUploadSize,
-                  ("teamDriveThemes" .=) <$> _aTeamDriveThemes,
-                  ("folderColorPalette" .=) <$> _aFolderColorPalette])
-
--- | Geographic location information stored in the image.
---
--- /See:/ 'fileImageMediaMetadataLocation' smart constructor.
-data FileImageMediaMetadataLocation = FileImageMediaMetadataLocation'
-    { _fimmlLatitude  :: !(Maybe (Textual Double))
-    , _fimmlAltitude  :: !(Maybe (Textual Double))
-    , _fimmlLongitude :: !(Maybe (Textual Double))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FileImageMediaMetadataLocation' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fimmlLatitude'
---
--- * 'fimmlAltitude'
---
--- * 'fimmlLongitude'
-fileImageMediaMetadataLocation
-    :: FileImageMediaMetadataLocation
-fileImageMediaMetadataLocation =
-    FileImageMediaMetadataLocation'
-    { _fimmlLatitude = Nothing
-    , _fimmlAltitude = Nothing
-    , _fimmlLongitude = Nothing
-    }
-
--- | The latitude stored in the image.
-fimmlLatitude :: Lens' FileImageMediaMetadataLocation (Maybe Double)
-fimmlLatitude
-  = lens _fimmlLatitude
-      (\ s a -> s{_fimmlLatitude = a})
-      . mapping _Coerce
-
--- | The altitude stored in the image.
-fimmlAltitude :: Lens' FileImageMediaMetadataLocation (Maybe Double)
-fimmlAltitude
-  = lens _fimmlAltitude
-      (\ s a -> s{_fimmlAltitude = a})
-      . mapping _Coerce
-
--- | The longitude stored in the image.
-fimmlLongitude :: Lens' FileImageMediaMetadataLocation (Maybe Double)
-fimmlLongitude
-  = lens _fimmlLongitude
-      (\ s a -> s{_fimmlLongitude = a})
-      . mapping _Coerce
-
-instance FromJSON FileImageMediaMetadataLocation
-         where
-        parseJSON
-          = withObject "FileImageMediaMetadataLocation"
-              (\ o ->
-                 FileImageMediaMetadataLocation' <$>
-                   (o .:? "latitude") <*> (o .:? "altitude") <*>
-                     (o .:? "longitude"))
-
-instance ToJSON FileImageMediaMetadataLocation where
-        toJSON FileImageMediaMetadataLocation'{..}
-          = object
-              (catMaybes
-                 [("latitude" .=) <$> _fimmlLatitude,
-                  ("altitude" .=) <$> _fimmlAltitude,
-                  ("longitude" .=) <$> _fimmlLongitude])
-
---
--- /See:/ 'startPageToken' smart constructor.
-data StartPageToken = StartPageToken'
-    { _sptKind           :: !Text
-    , _sptStartPageToken :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'StartPageToken' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'sptKind'
---
--- * 'sptStartPageToken'
-startPageToken
-    :: StartPageToken
-startPageToken =
-    StartPageToken'
-    { _sptKind = "drive#startPageToken"
-    , _sptStartPageToken = Nothing
-    }
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"drive#startPageToken\".
-sptKind :: Lens' StartPageToken Text
-sptKind = lens _sptKind (\ s a -> s{_sptKind = a})
-
--- | The starting page token for listing changes.
-sptStartPageToken :: Lens' StartPageToken (Maybe Text)
-sptStartPageToken
-  = lens _sptStartPageToken
-      (\ s a -> s{_sptStartPageToken = a})
-
-instance FromJSON StartPageToken where
-        parseJSON
-          = withObject "StartPageToken"
-              (\ o ->
-                 StartPageToken' <$>
-                   (o .:? "kind" .!= "drive#startPageToken") <*>
-                     (o .:? "startPageToken"))
-
-instance ToJSON StartPageToken where
-        toJSON StartPageToken'{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _sptKind),
-                  ("startPageToken" .=) <$> _sptStartPageToken])
-
--- | Additional metadata about image media, if available.
---
--- /See:/ 'fileImageMediaMetadata' smart constructor.
-data FileImageMediaMetadata = FileImageMediaMetadata'
-    { _fimmRotation         :: !(Maybe (Textual Int32))
-    , _fimmHeight           :: !(Maybe (Textual Int32))
-    , _fimmSubjectDistance  :: !(Maybe (Textual Int32))
-    , _fimmMaxApertureValue :: !(Maybe (Textual Double))
-    , _fimmIsoSpeed         :: !(Maybe (Textual Int32))
-    , _fimmTime             :: !(Maybe Text)
-    , _fimmLocation         :: !(Maybe FileImageMediaMetadataLocation)
-    , _fimmAperture         :: !(Maybe (Textual Double))
-    , _fimmFocalLength      :: !(Maybe (Textual Double))
-    , _fimmCameraMake       :: !(Maybe Text)
-    , _fimmWidth            :: !(Maybe (Textual Int32))
-    , _fimmExposureTime     :: !(Maybe (Textual Double))
-    , _fimmCameraModel      :: !(Maybe Text)
-    , _fimmWhiteBalance     :: !(Maybe Text)
-    , _fimmLens             :: !(Maybe Text)
-    , _fimmFlashUsed        :: !(Maybe Bool)
-    , _fimmExposureBias     :: !(Maybe (Textual Double))
-    , _fimmMeteringMode     :: !(Maybe Text)
-    , _fimmExposureMode     :: !(Maybe Text)
-    , _fimmSensor           :: !(Maybe Text)
-    , _fimmColorSpace       :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FileImageMediaMetadata' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fimmRotation'
---
--- * 'fimmHeight'
---
--- * 'fimmSubjectDistance'
---
--- * 'fimmMaxApertureValue'
---
--- * 'fimmIsoSpeed'
---
--- * 'fimmTime'
---
--- * 'fimmLocation'
---
--- * 'fimmAperture'
---
--- * 'fimmFocalLength'
---
--- * 'fimmCameraMake'
---
--- * 'fimmWidth'
---
--- * 'fimmExposureTime'
---
--- * 'fimmCameraModel'
---
--- * 'fimmWhiteBalance'
---
--- * 'fimmLens'
---
--- * 'fimmFlashUsed'
---
--- * 'fimmExposureBias'
---
--- * 'fimmMeteringMode'
---
--- * 'fimmExposureMode'
---
--- * 'fimmSensor'
---
--- * 'fimmColorSpace'
-fileImageMediaMetadata
-    :: FileImageMediaMetadata
-fileImageMediaMetadata =
-    FileImageMediaMetadata'
-    { _fimmRotation = Nothing
-    , _fimmHeight = Nothing
-    , _fimmSubjectDistance = Nothing
-    , _fimmMaxApertureValue = Nothing
-    , _fimmIsoSpeed = Nothing
-    , _fimmTime = Nothing
-    , _fimmLocation = Nothing
-    , _fimmAperture = Nothing
-    , _fimmFocalLength = Nothing
-    , _fimmCameraMake = Nothing
-    , _fimmWidth = Nothing
-    , _fimmExposureTime = Nothing
-    , _fimmCameraModel = Nothing
-    , _fimmWhiteBalance = Nothing
-    , _fimmLens = Nothing
-    , _fimmFlashUsed = Nothing
-    , _fimmExposureBias = Nothing
-    , _fimmMeteringMode = Nothing
-    , _fimmExposureMode = Nothing
-    , _fimmSensor = Nothing
-    , _fimmColorSpace = Nothing
-    }
-
--- | The rotation in clockwise degrees from the image\'s original
--- orientation.
-fimmRotation :: Lens' FileImageMediaMetadata (Maybe Int32)
-fimmRotation
-  = lens _fimmRotation (\ s a -> s{_fimmRotation = a})
-      . mapping _Coerce
-
--- | The height of the image in pixels.
-fimmHeight :: Lens' FileImageMediaMetadata (Maybe Int32)
-fimmHeight
-  = lens _fimmHeight (\ s a -> s{_fimmHeight = a}) .
-      mapping _Coerce
-
--- | The distance to the subject of the photo, in meters.
-fimmSubjectDistance :: Lens' FileImageMediaMetadata (Maybe Int32)
-fimmSubjectDistance
-  = lens _fimmSubjectDistance
-      (\ s a -> s{_fimmSubjectDistance = a})
-      . mapping _Coerce
-
--- | The smallest f-number of the lens at the focal length used to create the
--- photo (APEX value).
-fimmMaxApertureValue :: Lens' FileImageMediaMetadata (Maybe Double)
-fimmMaxApertureValue
-  = lens _fimmMaxApertureValue
-      (\ s a -> s{_fimmMaxApertureValue = a})
-      . mapping _Coerce
-
--- | The ISO speed used to create the photo.
-fimmIsoSpeed :: Lens' FileImageMediaMetadata (Maybe Int32)
-fimmIsoSpeed
-  = lens _fimmIsoSpeed (\ s a -> s{_fimmIsoSpeed = a})
-      . mapping _Coerce
-
--- | The date and time the photo was taken (EXIF DateTime).
-fimmTime :: Lens' FileImageMediaMetadata (Maybe Text)
-fimmTime = lens _fimmTime (\ s a -> s{_fimmTime = a})
-
--- | Geographic location information stored in the image.
-fimmLocation :: Lens' FileImageMediaMetadata (Maybe FileImageMediaMetadataLocation)
-fimmLocation
-  = lens _fimmLocation (\ s a -> s{_fimmLocation = a})
-
--- | The aperture used to create the photo (f-number).
-fimmAperture :: Lens' FileImageMediaMetadata (Maybe Double)
-fimmAperture
-  = lens _fimmAperture (\ s a -> s{_fimmAperture = a})
-      . mapping _Coerce
-
--- | The focal length used to create the photo, in millimeters.
-fimmFocalLength :: Lens' FileImageMediaMetadata (Maybe Double)
-fimmFocalLength
-  = lens _fimmFocalLength
-      (\ s a -> s{_fimmFocalLength = a})
-      . mapping _Coerce
-
--- | The make of the camera used to create the photo.
-fimmCameraMake :: Lens' FileImageMediaMetadata (Maybe Text)
-fimmCameraMake
-  = lens _fimmCameraMake
-      (\ s a -> s{_fimmCameraMake = a})
-
--- | The width of the image in pixels.
-fimmWidth :: Lens' FileImageMediaMetadata (Maybe Int32)
-fimmWidth
-  = lens _fimmWidth (\ s a -> s{_fimmWidth = a}) .
-      mapping _Coerce
-
--- | The length of the exposure, in seconds.
-fimmExposureTime :: Lens' FileImageMediaMetadata (Maybe Double)
-fimmExposureTime
-  = lens _fimmExposureTime
-      (\ s a -> s{_fimmExposureTime = a})
-      . mapping _Coerce
-
--- | The model of the camera used to create the photo.
-fimmCameraModel :: Lens' FileImageMediaMetadata (Maybe Text)
-fimmCameraModel
-  = lens _fimmCameraModel
-      (\ s a -> s{_fimmCameraModel = a})
-
--- | The white balance mode used to create the photo.
-fimmWhiteBalance :: Lens' FileImageMediaMetadata (Maybe Text)
-fimmWhiteBalance
-  = lens _fimmWhiteBalance
-      (\ s a -> s{_fimmWhiteBalance = a})
-
--- | The lens used to create the photo.
-fimmLens :: Lens' FileImageMediaMetadata (Maybe Text)
-fimmLens = lens _fimmLens (\ s a -> s{_fimmLens = a})
-
--- | Whether a flash was used to create the photo.
-fimmFlashUsed :: Lens' FileImageMediaMetadata (Maybe Bool)
-fimmFlashUsed
-  = lens _fimmFlashUsed
-      (\ s a -> s{_fimmFlashUsed = a})
-
--- | The exposure bias of the photo (APEX value).
-fimmExposureBias :: Lens' FileImageMediaMetadata (Maybe Double)
-fimmExposureBias
-  = lens _fimmExposureBias
-      (\ s a -> s{_fimmExposureBias = a})
-      . mapping _Coerce
-
--- | The metering mode used to create the photo.
-fimmMeteringMode :: Lens' FileImageMediaMetadata (Maybe Text)
-fimmMeteringMode
-  = lens _fimmMeteringMode
-      (\ s a -> s{_fimmMeteringMode = a})
-
--- | The exposure mode used to create the photo.
-fimmExposureMode :: Lens' FileImageMediaMetadata (Maybe Text)
-fimmExposureMode
-  = lens _fimmExposureMode
-      (\ s a -> s{_fimmExposureMode = a})
-
--- | The type of sensor used to create the photo.
-fimmSensor :: Lens' FileImageMediaMetadata (Maybe Text)
-fimmSensor
-  = lens _fimmSensor (\ s a -> s{_fimmSensor = a})
-
--- | The color space of the photo.
-fimmColorSpace :: Lens' FileImageMediaMetadata (Maybe Text)
-fimmColorSpace
-  = lens _fimmColorSpace
-      (\ s a -> s{_fimmColorSpace = a})
-
-instance FromJSON FileImageMediaMetadata where
-        parseJSON
-          = withObject "FileImageMediaMetadata"
-              (\ o ->
-                 FileImageMediaMetadata' <$>
-                   (o .:? "rotation") <*> (o .:? "height") <*>
-                     (o .:? "subjectDistance")
-                     <*> (o .:? "maxApertureValue")
-                     <*> (o .:? "isoSpeed")
-                     <*> (o .:? "time")
-                     <*> (o .:? "location")
-                     <*> (o .:? "aperture")
-                     <*> (o .:? "focalLength")
-                     <*> (o .:? "cameraMake")
-                     <*> (o .:? "width")
-                     <*> (o .:? "exposureTime")
-                     <*> (o .:? "cameraModel")
-                     <*> (o .:? "whiteBalance")
-                     <*> (o .:? "lens")
-                     <*> (o .:? "flashUsed")
-                     <*> (o .:? "exposureBias")
-                     <*> (o .:? "meteringMode")
-                     <*> (o .:? "exposureMode")
-                     <*> (o .:? "sensor")
-                     <*> (o .:? "colorSpace"))
-
-instance ToJSON FileImageMediaMetadata where
-        toJSON FileImageMediaMetadata'{..}
-          = object
-              (catMaybes
-                 [("rotation" .=) <$> _fimmRotation,
-                  ("height" .=) <$> _fimmHeight,
-                  ("subjectDistance" .=) <$> _fimmSubjectDistance,
-                  ("maxApertureValue" .=) <$> _fimmMaxApertureValue,
-                  ("isoSpeed" .=) <$> _fimmIsoSpeed,
-                  ("time" .=) <$> _fimmTime,
-                  ("location" .=) <$> _fimmLocation,
-                  ("aperture" .=) <$> _fimmAperture,
-                  ("focalLength" .=) <$> _fimmFocalLength,
-                  ("cameraMake" .=) <$> _fimmCameraMake,
-                  ("width" .=) <$> _fimmWidth,
-                  ("exposureTime" .=) <$> _fimmExposureTime,
-                  ("cameraModel" .=) <$> _fimmCameraModel,
-                  ("whiteBalance" .=) <$> _fimmWhiteBalance,
-                  ("lens" .=) <$> _fimmLens,
-                  ("flashUsed" .=) <$> _fimmFlashUsed,
-                  ("exposureBias" .=) <$> _fimmExposureBias,
-                  ("meteringMode" .=) <$> _fimmMeteringMode,
-                  ("exposureMode" .=) <$> _fimmExposureMode,
-                  ("sensor" .=) <$> _fimmSensor,
-                  ("colorSpace" .=) <$> _fimmColorSpace])
-
--- | A comment on a file.
---
--- /See:/ 'comment' smart constructor.
-data Comment = Comment'
-    { _comHTMLContent       :: !(Maybe Text)
-    , _comModifiedTime      :: !(Maybe DateTime')
-    , _comCreatedTime       :: !(Maybe DateTime')
-    , _comKind              :: !Text
-    , _comResolved          :: !(Maybe Bool)
-    , _comQuotedFileContent :: !(Maybe CommentQuotedFileContent)
-    , _comAnchor            :: !(Maybe Text)
-    , _comContent           :: !(Maybe Text)
-    , _comReplies           :: !(Maybe [Reply])
-    , _comAuthor            :: !(Maybe User)
-    , _comId                :: !(Maybe Text)
-    , _comDeleted           :: !(Maybe Bool)
-    } 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:
---
--- * 'comHTMLContent'
---
--- * 'comModifiedTime'
---
--- * 'comCreatedTime'
---
--- * 'comKind'
---
--- * 'comResolved'
---
--- * 'comQuotedFileContent'
---
--- * 'comAnchor'
---
--- * 'comContent'
---
--- * 'comReplies'
---
--- * 'comAuthor'
---
--- * 'comId'
---
--- * 'comDeleted'
-comment
-    :: Comment
-comment =
-    Comment'
-    { _comHTMLContent = Nothing
-    , _comModifiedTime = Nothing
-    , _comCreatedTime = Nothing
-    , _comKind = "drive#comment"
-    , _comResolved = Nothing
-    , _comQuotedFileContent = Nothing
-    , _comAnchor = Nothing
-    , _comContent = Nothing
-    , _comReplies = Nothing
-    , _comAuthor = Nothing
-    , _comId = Nothing
-    , _comDeleted = Nothing
-    }
-
--- | The content of the comment with HTML formatting.
-comHTMLContent :: Lens' Comment (Maybe Text)
-comHTMLContent
-  = lens _comHTMLContent
-      (\ s a -> s{_comHTMLContent = a})
-
--- | The last time the comment or any of its replies was modified (RFC 3339
--- date-time).
-comModifiedTime :: Lens' Comment (Maybe UTCTime)
-comModifiedTime
-  = lens _comModifiedTime
-      (\ s a -> s{_comModifiedTime = a})
-      . mapping _DateTime
-
--- | The time at which the comment was created (RFC 3339 date-time).
-comCreatedTime :: Lens' Comment (Maybe UTCTime)
-comCreatedTime
-  = lens _comCreatedTime
-      (\ s a -> s{_comCreatedTime = a})
-      . mapping _DateTime
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"drive#comment\".
-comKind :: Lens' Comment Text
-comKind = lens _comKind (\ s a -> s{_comKind = a})
-
--- | Whether the comment has been resolved by one of its replies.
-comResolved :: Lens' Comment (Maybe Bool)
-comResolved
-  = lens _comResolved (\ s a -> s{_comResolved = a})
-
--- | The file content to which the comment refers, typically within the
--- anchor region. For a text file, for example, this would be the text at
--- the location of the comment.
-comQuotedFileContent :: Lens' Comment (Maybe CommentQuotedFileContent)
-comQuotedFileContent
-  = lens _comQuotedFileContent
-      (\ s a -> s{_comQuotedFileContent = a})
-
--- | A region of the document represented as a JSON string. See anchor
--- documentation for details on how to define and interpret anchor
--- properties.
-comAnchor :: Lens' Comment (Maybe Text)
-comAnchor
-  = lens _comAnchor (\ s a -> s{_comAnchor = a})
-
--- | The plain text content of the comment. This field is used for setting
--- the content, while htmlContent should be displayed.
-comContent :: Lens' Comment (Maybe Text)
-comContent
-  = lens _comContent (\ s a -> s{_comContent = a})
-
--- | The full list of replies to the comment in chronological order.
-comReplies :: Lens' Comment [Reply]
-comReplies
-  = lens _comReplies (\ s a -> s{_comReplies = a}) .
-      _Default
-      . _Coerce
-
--- | The user who created the comment.
-comAuthor :: Lens' Comment (Maybe User)
-comAuthor
-  = lens _comAuthor (\ s a -> s{_comAuthor = a})
-
--- | The ID of the comment.
-comId :: Lens' Comment (Maybe Text)
-comId = lens _comId (\ s a -> s{_comId = a})
-
--- | Whether the comment has been deleted. A deleted comment has no content.
-comDeleted :: Lens' Comment (Maybe Bool)
-comDeleted
-  = lens _comDeleted (\ s a -> s{_comDeleted = a})
-
-instance FromJSON Comment where
-        parseJSON
-          = withObject "Comment"
-              (\ o ->
-                 Comment' <$>
-                   (o .:? "htmlContent") <*> (o .:? "modifiedTime") <*>
-                     (o .:? "createdTime")
-                     <*> (o .:? "kind" .!= "drive#comment")
-                     <*> (o .:? "resolved")
-                     <*> (o .:? "quotedFileContent")
-                     <*> (o .:? "anchor")
-                     <*> (o .:? "content")
-                     <*> (o .:? "replies" .!= mempty)
-                     <*> (o .:? "author")
-                     <*> (o .:? "id")
-                     <*> (o .:? "deleted"))
-
-instance ToJSON Comment where
-        toJSON Comment'{..}
-          = object
-              (catMaybes
-                 [("htmlContent" .=) <$> _comHTMLContent,
-                  ("modifiedTime" .=) <$> _comModifiedTime,
-                  ("createdTime" .=) <$> _comCreatedTime,
-                  Just ("kind" .= _comKind),
-                  ("resolved" .=) <$> _comResolved,
-                  ("quotedFileContent" .=) <$> _comQuotedFileContent,
-                  ("anchor" .=) <$> _comAnchor,
-                  ("content" .=) <$> _comContent,
-                  ("replies" .=) <$> _comReplies,
-                  ("author" .=) <$> _comAuthor, ("id" .=) <$> _comId,
-                  ("deleted" .=) <$> _comDeleted])
-
--- | The metadata for a revision to a file.
---
--- /See:/ 'revision' smart constructor.
-data Revision = Revision'
-    { _revModifiedTime           :: !(Maybe DateTime')
-    , _revSize                   :: !(Maybe (Textual Int64))
-    , _revOriginalFilename       :: !(Maybe Text)
-    , _revKind                   :: !Text
-    , _revPublished              :: !(Maybe Bool)
-    , _revLastModifyingUser      :: !(Maybe User)
-    , _revPublishAuto            :: !(Maybe Bool)
-    , _revMD5Checksum            :: !(Maybe Text)
-    , _revKeepForever            :: !(Maybe Bool)
-    , _revMimeType               :: !(Maybe Text)
-    , _revExportLinks            :: !(Maybe RevisionExportLinks)
-    , _revPublishedOutsideDomain :: !(Maybe Bool)
-    , _revId                     :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Revision' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'revModifiedTime'
---
--- * 'revSize'
---
--- * 'revOriginalFilename'
---
--- * 'revKind'
---
--- * 'revPublished'
---
--- * 'revLastModifyingUser'
---
--- * 'revPublishAuto'
---
--- * 'revMD5Checksum'
---
--- * 'revKeepForever'
---
--- * 'revMimeType'
---
--- * 'revExportLinks'
---
--- * 'revPublishedOutsideDomain'
---
--- * 'revId'
-revision
-    :: Revision
-revision =
-    Revision'
-    { _revModifiedTime = Nothing
-    , _revSize = Nothing
-    , _revOriginalFilename = Nothing
-    , _revKind = "drive#revision"
-    , _revPublished = Nothing
-    , _revLastModifyingUser = Nothing
-    , _revPublishAuto = Nothing
-    , _revMD5Checksum = Nothing
-    , _revKeepForever = Nothing
-    , _revMimeType = Nothing
-    , _revExportLinks = Nothing
-    , _revPublishedOutsideDomain = Nothing
-    , _revId = Nothing
-    }
-
--- | The last time the revision was modified (RFC 3339 date-time).
-revModifiedTime :: Lens' Revision (Maybe UTCTime)
-revModifiedTime
-  = lens _revModifiedTime
-      (\ s a -> s{_revModifiedTime = a})
-      . mapping _DateTime
-
--- | The size of the revision\'s content in bytes. This is only applicable to
--- files with binary content in Drive.
-revSize :: Lens' Revision (Maybe Int64)
-revSize
-  = lens _revSize (\ s a -> s{_revSize = a}) .
-      mapping _Coerce
-
--- | The original filename used to create this revision. This is only
--- applicable to files with binary content in Drive.
-revOriginalFilename :: Lens' Revision (Maybe Text)
-revOriginalFilename
-  = lens _revOriginalFilename
-      (\ s a -> s{_revOriginalFilename = a})
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"drive#revision\".
-revKind :: Lens' Revision Text
-revKind = lens _revKind (\ s a -> s{_revKind = a})
-
--- | Whether this revision is published. This is only applicable to Google
--- Docs.
-revPublished :: Lens' Revision (Maybe Bool)
-revPublished
-  = lens _revPublished (\ s a -> s{_revPublished = a})
-
--- | The last user to modify this revision.
-revLastModifyingUser :: Lens' Revision (Maybe User)
-revLastModifyingUser
-  = lens _revLastModifyingUser
-      (\ s a -> s{_revLastModifyingUser = a})
-
--- | Whether subsequent revisions will be automatically republished. This is
--- only applicable to Google Docs.
-revPublishAuto :: Lens' Revision (Maybe Bool)
-revPublishAuto
-  = lens _revPublishAuto
-      (\ s a -> s{_revPublishAuto = a})
-
--- | The MD5 checksum of the revision\'s content. This is only applicable to
--- files with binary content in Drive.
-revMD5Checksum :: Lens' Revision (Maybe Text)
-revMD5Checksum
-  = lens _revMD5Checksum
-      (\ s a -> s{_revMD5Checksum = a})
-
--- | Whether to keep this revision forever, even if it is no longer the head
--- revision. If not set, the revision will be automatically purged 30 days
--- after newer content is uploaded. This can be set on a maximum of 200
--- revisions for a file. This field is only applicable to files with binary
--- content in Drive.
-revKeepForever :: Lens' Revision (Maybe Bool)
-revKeepForever
-  = lens _revKeepForever
-      (\ s a -> s{_revKeepForever = a})
-
--- | The MIME type of the revision.
-revMimeType :: Lens' Revision (Maybe Text)
-revMimeType
-  = lens _revMimeType (\ s a -> s{_revMimeType = a})
-
--- | Links for exporting Google Docs to specific formats.
-revExportLinks :: Lens' Revision (Maybe RevisionExportLinks)
-revExportLinks
-  = lens _revExportLinks
-      (\ s a -> s{_revExportLinks = a})
-
--- | Whether this revision is published outside the domain. This is only
--- applicable to Google Docs.
-revPublishedOutsideDomain :: Lens' Revision (Maybe Bool)
-revPublishedOutsideDomain
-  = lens _revPublishedOutsideDomain
-      (\ s a -> s{_revPublishedOutsideDomain = a})
-
--- | The ID of the revision.
-revId :: Lens' Revision (Maybe Text)
-revId = lens _revId (\ s a -> s{_revId = a})
-
-instance FromJSON Revision where
-        parseJSON
-          = withObject "Revision"
-              (\ o ->
-                 Revision' <$>
-                   (o .:? "modifiedTime") <*> (o .:? "size") <*>
-                     (o .:? "originalFilename")
-                     <*> (o .:? "kind" .!= "drive#revision")
-                     <*> (o .:? "published")
-                     <*> (o .:? "lastModifyingUser")
-                     <*> (o .:? "publishAuto")
-                     <*> (o .:? "md5Checksum")
-                     <*> (o .:? "keepForever")
-                     <*> (o .:? "mimeType")
-                     <*> (o .:? "exportLinks")
-                     <*> (o .:? "publishedOutsideDomain")
-                     <*> (o .:? "id"))
-
-instance ToJSON Revision where
-        toJSON Revision'{..}
-          = object
-              (catMaybes
-                 [("modifiedTime" .=) <$> _revModifiedTime,
-                  ("size" .=) <$> _revSize,
-                  ("originalFilename" .=) <$> _revOriginalFilename,
-                  Just ("kind" .= _revKind),
-                  ("published" .=) <$> _revPublished,
-                  ("lastModifyingUser" .=) <$> _revLastModifyingUser,
-                  ("publishAuto" .=) <$> _revPublishAuto,
-                  ("md5Checksum" .=) <$> _revMD5Checksum,
-                  ("keepForever" .=) <$> _revKeepForever,
-                  ("mimeType" .=) <$> _revMimeType,
-                  ("exportLinks" .=) <$> _revExportLinks,
-                  ("publishedOutsideDomain" .=) <$>
-                    _revPublishedOutsideDomain,
-                  ("id" .=) <$> _revId])
-
--- | A permission for a file. A permission grants a user, group, domain or
--- the world access to a file or a folder hierarchy.
---
--- /See:/ 'permission' smart constructor.
-data Permission = Permission'
-    { _pPhotoLink                  :: !(Maybe Text)
-    , _pTeamDrivePermissionDetails :: !(Maybe [PermissionTeamDrivePermissionDetailsItem])
-    , _pKind                       :: !Text
-    , _pDomain                     :: !(Maybe Text)
-    , _pRole                       :: !(Maybe Text)
-    , _pEmailAddress               :: !(Maybe Text)
-    , _pAllowFileDiscovery         :: !(Maybe Bool)
-    , _pDisplayName                :: !(Maybe Text)
-    , _pId                         :: !(Maybe Text)
-    , _pDeleted                    :: !(Maybe Bool)
-    , _pType                       :: !(Maybe Text)
-    , _pExpirationTime             :: !(Maybe DateTime')
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Permission' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pPhotoLink'
---
--- * 'pTeamDrivePermissionDetails'
---
--- * 'pKind'
---
--- * 'pDomain'
---
--- * 'pRole'
---
--- * 'pEmailAddress'
---
--- * 'pAllowFileDiscovery'
---
--- * 'pDisplayName'
---
--- * 'pId'
---
--- * 'pDeleted'
---
--- * 'pType'
---
--- * 'pExpirationTime'
-permission
-    :: Permission
-permission =
-    Permission'
-    { _pPhotoLink = Nothing
-    , _pTeamDrivePermissionDetails = Nothing
-    , _pKind = "drive#permission"
-    , _pDomain = Nothing
-    , _pRole = Nothing
-    , _pEmailAddress = Nothing
-    , _pAllowFileDiscovery = Nothing
-    , _pDisplayName = Nothing
-    , _pId = Nothing
-    , _pDeleted = Nothing
-    , _pType = Nothing
-    , _pExpirationTime = Nothing
-    }
-
--- | A link to the user\'s profile photo, if available.
-pPhotoLink :: Lens' Permission (Maybe Text)
-pPhotoLink
-  = lens _pPhotoLink (\ s a -> s{_pPhotoLink = a})
-
--- | Details of whether the permissions on this Team Drive item are inherited
--- or directly on this item. This is an output-only field which is present
--- only for Team Drive items.
-pTeamDrivePermissionDetails :: Lens' Permission [PermissionTeamDrivePermissionDetailsItem]
-pTeamDrivePermissionDetails
-  = lens _pTeamDrivePermissionDetails
-      (\ s a -> s{_pTeamDrivePermissionDetails = a})
-      . _Default
-      . _Coerce
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"drive#permission\".
-pKind :: Lens' Permission Text
-pKind = lens _pKind (\ s a -> s{_pKind = a})
-
--- | The domain to which this permission refers.
-pDomain :: Lens' Permission (Maybe Text)
-pDomain = lens _pDomain (\ s a -> s{_pDomain = a})
-
--- | The role granted by this permission. While new values may be supported
--- in the future, the following are currently allowed: - owner - organizer
--- - fileOrganizer - writer - commenter - reader
-pRole :: Lens' Permission (Maybe Text)
-pRole = lens _pRole (\ s a -> s{_pRole = a})
-
--- | The email address of the user or group to which this permission refers.
-pEmailAddress :: Lens' Permission (Maybe Text)
-pEmailAddress
-  = lens _pEmailAddress
-      (\ s a -> s{_pEmailAddress = a})
-
--- | Whether the permission allows the file to be discovered through search.
--- This is only applicable for permissions of type domain or anyone.
-pAllowFileDiscovery :: Lens' Permission (Maybe Bool)
-pAllowFileDiscovery
-  = lens _pAllowFileDiscovery
-      (\ s a -> s{_pAllowFileDiscovery = a})
-
--- | A displayable name for users, groups or domains.
-pDisplayName :: Lens' Permission (Maybe Text)
-pDisplayName
-  = lens _pDisplayName (\ s a -> s{_pDisplayName = a})
-
--- | The ID of this permission. This is a unique identifier for the grantee,
--- and is published in User resources as permissionId.
-pId :: Lens' Permission (Maybe Text)
-pId = lens _pId (\ s a -> s{_pId = a})
-
--- | Whether the account associated with this permission has been deleted.
--- This field only pertains to user and group permissions.
-pDeleted :: Lens' Permission (Maybe Bool)
-pDeleted = lens _pDeleted (\ s a -> s{_pDeleted = a})
-
--- | The type of the grantee. Valid values are: - user - group - domain -
--- anyone
-pType :: Lens' Permission (Maybe Text)
-pType = lens _pType (\ s a -> s{_pType = a})
-
--- | The time at which this permission will expire (RFC 3339 date-time).
--- Expiration times have the following restrictions: - They can only be set
--- on user and group permissions - The time must be in the future - The
--- time cannot be more than a year in the future
-pExpirationTime :: Lens' Permission (Maybe UTCTime)
-pExpirationTime
-  = lens _pExpirationTime
-      (\ s a -> s{_pExpirationTime = a})
-      . mapping _DateTime
-
-instance FromJSON Permission where
-        parseJSON
-          = withObject "Permission"
-              (\ o ->
-                 Permission' <$>
-                   (o .:? "photoLink") <*>
-                     (o .:? "teamDrivePermissionDetails" .!= mempty)
-                     <*> (o .:? "kind" .!= "drive#permission")
-                     <*> (o .:? "domain")
-                     <*> (o .:? "role")
-                     <*> (o .:? "emailAddress")
-                     <*> (o .:? "allowFileDiscovery")
-                     <*> (o .:? "displayName")
-                     <*> (o .:? "id")
-                     <*> (o .:? "deleted")
-                     <*> (o .:? "type")
-                     <*> (o .:? "expirationTime"))
-
-instance ToJSON Permission where
-        toJSON Permission'{..}
-          = object
-              (catMaybes
-                 [("photoLink" .=) <$> _pPhotoLink,
-                  ("teamDrivePermissionDetails" .=) <$>
-                    _pTeamDrivePermissionDetails,
-                  Just ("kind" .= _pKind), ("domain" .=) <$> _pDomain,
-                  ("role" .=) <$> _pRole,
-                  ("emailAddress" .=) <$> _pEmailAddress,
-                  ("allowFileDiscovery" .=) <$> _pAllowFileDiscovery,
-                  ("displayName" .=) <$> _pDisplayName,
-                  ("id" .=) <$> _pId, ("deleted" .=) <$> _pDeleted,
-                  ("type" .=) <$> _pType,
-                  ("expirationTime" .=) <$> _pExpirationTime])
-
--- | The metadata for a file.
---
--- /See:/ 'file' smart constructor.
-data File = File'
-    { _fOwnedByMe                    :: !(Maybe Bool)
-    , _fThumbnailLink                :: !(Maybe Text)
-    , _fFullFileExtension            :: !(Maybe Text)
-    , _fModifiedTime                 :: !(Maybe DateTime')
-    , _fModifiedByMeTime             :: !(Maybe DateTime')
-    , _fFileExtension                :: !(Maybe Text)
-    , _fViewedByMe                   :: !(Maybe Bool)
-    , _fOwners                       :: !(Maybe [User])
-    , _fViewedByMeTime               :: !(Maybe DateTime')
-    , _fModifiedByMe                 :: !(Maybe Bool)
-    , _fSize                         :: !(Maybe (Textual Int64))
-    , _fTrashed                      :: !(Maybe Bool)
-    , _fWebViewLink                  :: !(Maybe Text)
-    , _fCreatedTime                  :: !(Maybe DateTime')
-    , _fTrashedTime                  :: !(Maybe DateTime')
-    , _fOriginalFilename             :: !(Maybe Text)
-    , _fKind                         :: !Text
-    , _fLastModifyingUser            :: !(Maybe User)
-    , _fIconLink                     :: !(Maybe Text)
-    , _fHasThumbnail                 :: !(Maybe Bool)
-    , _fThumbnailVersion             :: !(Maybe (Textual Int64))
-    , _fImageMediaMetadata           :: !(Maybe FileImageMediaMetadata)
-    , _fExplicitlyTrashed            :: !(Maybe Bool)
-    , _fShared                       :: !(Maybe Bool)
-    , _fMD5Checksum                  :: !(Maybe Text)
-    , _fTeamDriveId                  :: !(Maybe Text)
-    , _fFolderColorRgb               :: !(Maybe Text)
-    , _fMimeType                     :: !(Maybe Text)
-    , _fIsAppAuthorized              :: !(Maybe Bool)
-    , _fCopyRequiresWriterPermission :: !(Maybe Bool)
-    , _fName                         :: !(Maybe Text)
-    , _fExportLinks                  :: !(Maybe FileExportLinks)
-    , _fParents                      :: !(Maybe [Text])
-    , _fStarred                      :: !(Maybe Bool)
-    , _fSpaces                       :: !(Maybe [Text])
-    , _fVersion                      :: !(Maybe (Textual Int64))
-    , _fHasAugmentedPermissions      :: !(Maybe Bool)
-    , _fWritersCanShare              :: !(Maybe Bool)
-    , _fTrashingUser                 :: !(Maybe User)
-    , _fId                           :: !(Maybe Text)
-    , _fPermissionIds                :: !(Maybe [Text])
-    , _fPermissions                  :: !(Maybe [Permission])
-    , _fQuotaBytesUsed               :: !(Maybe (Textual Int64))
-    , _fAppProperties                :: !(Maybe FileAppProperties)
-    , _fVideoMediaMetadata           :: !(Maybe FileVideoMediaMetadata)
-    , _fSharedWithMeTime             :: !(Maybe DateTime')
-    , _fHeadRevisionId               :: !(Maybe Text)
-    , _fCapabilities                 :: !(Maybe FileCapabilities)
-    , _fDescription                  :: !(Maybe Text)
-    , _fViewersCanCopyContent        :: !(Maybe Bool)
-    , _fSharingUser                  :: !(Maybe User)
-    , _fWebContentLink               :: !(Maybe Text)
-    , _fContentHints                 :: !(Maybe FileContentHints)
-    , _fProperties                   :: !(Maybe FileProperties)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'File' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fOwnedByMe'
---
--- * 'fThumbnailLink'
---
--- * 'fFullFileExtension'
---
--- * 'fModifiedTime'
---
--- * 'fModifiedByMeTime'
---
--- * 'fFileExtension'
---
--- * 'fViewedByMe'
---
--- * 'fOwners'
---
--- * 'fViewedByMeTime'
---
--- * 'fModifiedByMe'
---
--- * 'fSize'
---
--- * 'fTrashed'
---
--- * 'fWebViewLink'
---
--- * 'fCreatedTime'
---
--- * 'fTrashedTime'
---
--- * 'fOriginalFilename'
---
--- * 'fKind'
---
--- * 'fLastModifyingUser'
---
--- * 'fIconLink'
---
--- * 'fHasThumbnail'
---
--- * 'fThumbnailVersion'
---
--- * 'fImageMediaMetadata'
---
--- * 'fExplicitlyTrashed'
---
--- * 'fShared'
---
--- * 'fMD5Checksum'
---
--- * 'fTeamDriveId'
---
--- * 'fFolderColorRgb'
---
--- * 'fMimeType'
---
--- * 'fIsAppAuthorized'
---
--- * 'fCopyRequiresWriterPermission'
---
--- * 'fName'
---
--- * 'fExportLinks'
---
--- * 'fParents'
---
--- * 'fStarred'
---
--- * 'fSpaces'
---
--- * 'fVersion'
---
--- * 'fHasAugmentedPermissions'
---
--- * 'fWritersCanShare'
---
--- * 'fTrashingUser'
---
--- * 'fId'
---
--- * 'fPermissionIds'
---
--- * 'fPermissions'
---
--- * 'fQuotaBytesUsed'
---
--- * 'fAppProperties'
---
--- * 'fVideoMediaMetadata'
---
--- * 'fSharedWithMeTime'
---
--- * 'fHeadRevisionId'
---
--- * 'fCapabilities'
---
--- * 'fDescription'
---
--- * 'fViewersCanCopyContent'
---
--- * 'fSharingUser'
---
--- * 'fWebContentLink'
---
--- * 'fContentHints'
---
--- * 'fProperties'
-file
-    :: File
-file =
-    File'
-    { _fOwnedByMe = Nothing
-    , _fThumbnailLink = Nothing
-    , _fFullFileExtension = Nothing
-    , _fModifiedTime = Nothing
-    , _fModifiedByMeTime = Nothing
-    , _fFileExtension = Nothing
-    , _fViewedByMe = Nothing
-    , _fOwners = Nothing
-    , _fViewedByMeTime = Nothing
-    , _fModifiedByMe = Nothing
-    , _fSize = Nothing
-    , _fTrashed = Nothing
-    , _fWebViewLink = Nothing
-    , _fCreatedTime = Nothing
-    , _fTrashedTime = Nothing
-    , _fOriginalFilename = Nothing
-    , _fKind = "drive#file"
-    , _fLastModifyingUser = Nothing
-    , _fIconLink = Nothing
-    , _fHasThumbnail = Nothing
-    , _fThumbnailVersion = Nothing
-    , _fImageMediaMetadata = Nothing
-    , _fExplicitlyTrashed = Nothing
-    , _fShared = Nothing
-    , _fMD5Checksum = Nothing
-    , _fTeamDriveId = Nothing
-    , _fFolderColorRgb = Nothing
-    , _fMimeType = Nothing
-    , _fIsAppAuthorized = Nothing
-    , _fCopyRequiresWriterPermission = Nothing
-    , _fName = Nothing
-    , _fExportLinks = Nothing
-    , _fParents = Nothing
-    , _fStarred = Nothing
-    , _fSpaces = Nothing
-    , _fVersion = Nothing
-    , _fHasAugmentedPermissions = Nothing
-    , _fWritersCanShare = Nothing
-    , _fTrashingUser = Nothing
-    , _fId = Nothing
-    , _fPermissionIds = Nothing
-    , _fPermissions = Nothing
-    , _fQuotaBytesUsed = Nothing
-    , _fAppProperties = Nothing
-    , _fVideoMediaMetadata = Nothing
-    , _fSharedWithMeTime = Nothing
-    , _fHeadRevisionId = Nothing
-    , _fCapabilities = Nothing
-    , _fDescription = Nothing
-    , _fViewersCanCopyContent = Nothing
-    , _fSharingUser = Nothing
-    , _fWebContentLink = Nothing
-    , _fContentHints = Nothing
-    , _fProperties = Nothing
-    }
-
--- | Whether the user owns the file. Not populated for Team Drive files.
-fOwnedByMe :: Lens' File (Maybe Bool)
-fOwnedByMe
-  = lens _fOwnedByMe (\ s a -> s{_fOwnedByMe = a})
-
--- | A short-lived link to the file\'s thumbnail, if available. Typically
--- lasts on the order of hours. Only populated when the requesting app can
--- access the file\'s content.
-fThumbnailLink :: Lens' File (Maybe Text)
-fThumbnailLink
-  = lens _fThumbnailLink
-      (\ s a -> s{_fThumbnailLink = a})
-
--- | The full file extension extracted from the name field. May contain
--- multiple concatenated extensions, such as \"tar.gz\". This is only
--- available for files with binary content in Drive. This is automatically
--- updated when the name field changes, however it is not cleared if the
--- new name does not contain a valid extension.
-fFullFileExtension :: Lens' File (Maybe Text)
-fFullFileExtension
-  = lens _fFullFileExtension
-      (\ s a -> s{_fFullFileExtension = a})
-
--- | The last time the file was modified by anyone (RFC 3339 date-time). Note
--- that setting modifiedTime will also update modifiedByMeTime for the
--- user.
-fModifiedTime :: Lens' File (Maybe UTCTime)
-fModifiedTime
-  = lens _fModifiedTime
-      (\ s a -> s{_fModifiedTime = a})
-      . mapping _DateTime
-
--- | The last time the file was modified by the user (RFC 3339 date-time).
-fModifiedByMeTime :: Lens' File (Maybe UTCTime)
-fModifiedByMeTime
-  = lens _fModifiedByMeTime
-      (\ s a -> s{_fModifiedByMeTime = a})
-      . mapping _DateTime
-
--- | The final component of fullFileExtension. This is only available for
--- files with binary content in Drive.
-fFileExtension :: Lens' File (Maybe Text)
-fFileExtension
-  = lens _fFileExtension
-      (\ s a -> s{_fFileExtension = a})
-
--- | Whether the file has been viewed by this user.
-fViewedByMe :: Lens' File (Maybe Bool)
-fViewedByMe
-  = lens _fViewedByMe (\ s a -> s{_fViewedByMe = a})
-
--- | The owners of the file. Currently, only certain legacy files may have
--- more than one owner. Not populated for Team Drive files.
-fOwners :: Lens' File [User]
-fOwners
-  = lens _fOwners (\ s a -> s{_fOwners = a}) . _Default
-      . _Coerce
-
--- | The last time the file was viewed by the user (RFC 3339 date-time).
-fViewedByMeTime :: Lens' File (Maybe UTCTime)
-fViewedByMeTime
-  = lens _fViewedByMeTime
-      (\ s a -> s{_fViewedByMeTime = a})
-      . mapping _DateTime
-
--- | Whether the file has been modified by this user.
-fModifiedByMe :: Lens' File (Maybe Bool)
-fModifiedByMe
-  = lens _fModifiedByMe
-      (\ s a -> s{_fModifiedByMe = a})
-
--- | The size of the file\'s content in bytes. This is only applicable to
--- files with binary content in Drive.
-fSize :: Lens' File (Maybe Int64)
-fSize
-  = lens _fSize (\ s a -> s{_fSize = a}) .
-      mapping _Coerce
-
--- | Whether the file has been trashed, either explicitly or from a trashed
--- parent folder. Only the owner may trash a file, and other users cannot
--- see files in the owner\'s trash.
-fTrashed :: Lens' File (Maybe Bool)
-fTrashed = lens _fTrashed (\ s a -> s{_fTrashed = a})
-
--- | A link for opening the file in a relevant Google editor or viewer in a
--- browser.
-fWebViewLink :: Lens' File (Maybe Text)
-fWebViewLink
-  = lens _fWebViewLink (\ s a -> s{_fWebViewLink = a})
-
--- | The time at which the file was created (RFC 3339 date-time).
-fCreatedTime :: Lens' File (Maybe UTCTime)
-fCreatedTime
-  = lens _fCreatedTime (\ s a -> s{_fCreatedTime = a})
-      . mapping _DateTime
-
--- | The time that the item was trashed (RFC 3339 date-time). Only populated
--- for Team Drive files.
-fTrashedTime :: Lens' File (Maybe UTCTime)
-fTrashedTime
-  = lens _fTrashedTime (\ s a -> s{_fTrashedTime = a})
-      . mapping _DateTime
-
--- | The original filename of the uploaded content if available, or else the
--- original value of the name field. This is only available for files with
--- binary content in Drive.
-fOriginalFilename :: Lens' File (Maybe Text)
-fOriginalFilename
-  = lens _fOriginalFilename
-      (\ s a -> s{_fOriginalFilename = a})
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"drive#file\".
-fKind :: Lens' File Text
-fKind = lens _fKind (\ s a -> s{_fKind = a})
-
--- | The last user to modify the file.
-fLastModifyingUser :: Lens' File (Maybe User)
-fLastModifyingUser
-  = lens _fLastModifyingUser
-      (\ s a -> s{_fLastModifyingUser = a})
-
--- | A static, unauthenticated link to the file\'s icon.
-fIconLink :: Lens' File (Maybe Text)
-fIconLink
-  = lens _fIconLink (\ s a -> s{_fIconLink = a})
-
--- | Whether this file has a thumbnail. This does not indicate whether the
--- requesting app has access to the thumbnail. To check access, look for
--- the presence of the thumbnailLink field.
-fHasThumbnail :: Lens' File (Maybe Bool)
-fHasThumbnail
-  = lens _fHasThumbnail
-      (\ s a -> s{_fHasThumbnail = a})
-
--- | The thumbnail version for use in thumbnail cache invalidation.
-fThumbnailVersion :: Lens' File (Maybe Int64)
-fThumbnailVersion
-  = lens _fThumbnailVersion
-      (\ s a -> s{_fThumbnailVersion = a})
-      . mapping _Coerce
-
--- | Additional metadata about image media, if available.
-fImageMediaMetadata :: Lens' File (Maybe FileImageMediaMetadata)
-fImageMediaMetadata
-  = lens _fImageMediaMetadata
-      (\ s a -> s{_fImageMediaMetadata = a})
-
--- | Whether the file has been explicitly trashed, as opposed to recursively
--- trashed from a parent folder.
-fExplicitlyTrashed :: Lens' File (Maybe Bool)
-fExplicitlyTrashed
-  = lens _fExplicitlyTrashed
-      (\ s a -> s{_fExplicitlyTrashed = a})
-
--- | Whether the file has been shared. Not populated for Team Drive files.
-fShared :: Lens' File (Maybe Bool)
-fShared = lens _fShared (\ s a -> s{_fShared = a})
-
--- | The MD5 checksum for the content of the file. This is only applicable to
--- files with binary content in Drive.
-fMD5Checksum :: Lens' File (Maybe Text)
-fMD5Checksum
-  = lens _fMD5Checksum (\ s a -> s{_fMD5Checksum = a})
-
--- | ID of the Team Drive the file resides in.
-fTeamDriveId :: Lens' File (Maybe Text)
-fTeamDriveId
-  = lens _fTeamDriveId (\ s a -> s{_fTeamDriveId = a})
-
--- | The color for a folder as an RGB hex string. The supported colors are
--- published in the folderColorPalette field of the About resource. If an
--- unsupported color is specified, the closest color in the palette will be
--- used instead.
-fFolderColorRgb :: Lens' File (Maybe Text)
-fFolderColorRgb
-  = lens _fFolderColorRgb
-      (\ s a -> s{_fFolderColorRgb = a})
-
--- | The MIME type of the file. Drive will attempt to automatically detect an
--- appropriate value from uploaded content if no value is provided. The
--- value cannot be changed unless a new revision is uploaded. If a file is
--- created with a Google Doc MIME type, the uploaded content will be
--- imported if possible. The supported import formats are published in the
--- About resource.
-fMimeType :: Lens' File (Maybe Text)
-fMimeType
-  = lens _fMimeType (\ s a -> s{_fMimeType = a})
-
--- | Whether the file was created or opened by the requesting app.
-fIsAppAuthorized :: Lens' File (Maybe Bool)
-fIsAppAuthorized
-  = lens _fIsAppAuthorized
-      (\ s a -> s{_fIsAppAuthorized = a})
-
--- | Whether the options to copy, print, or download this file, should be
--- disabled for readers and commenters.
-fCopyRequiresWriterPermission :: Lens' File (Maybe Bool)
-fCopyRequiresWriterPermission
-  = lens _fCopyRequiresWriterPermission
-      (\ s a -> s{_fCopyRequiresWriterPermission = a})
-
--- | The name of the file. This is not necessarily unique within a folder.
--- Note that for immutable items such as the top level folders of Team
--- Drives, My Drive root folder, and Application Data folder the name is
--- constant.
-fName :: Lens' File (Maybe Text)
-fName = lens _fName (\ s a -> s{_fName = a})
-
--- | Links for exporting Google Docs to specific formats.
-fExportLinks :: Lens' File (Maybe FileExportLinks)
-fExportLinks
-  = lens _fExportLinks (\ s a -> s{_fExportLinks = a})
-
--- | The IDs of the parent folders which contain the file. If not specified
--- as part of a create request, the file will be placed directly in the
--- user\'s My Drive folder. If not specified as part of a copy request, the
--- file will inherit any discoverable parents of the source file. Update
--- requests must use the addParents and removeParents parameters to modify
--- the parents list.
-fParents :: Lens' File [Text]
-fParents
-  = lens _fParents (\ s a -> s{_fParents = a}) .
-      _Default
-      . _Coerce
-
--- | Whether the user has starred the file.
-fStarred :: Lens' File (Maybe Bool)
-fStarred = lens _fStarred (\ s a -> s{_fStarred = a})
-
--- | The list of spaces which contain the file. The currently supported
--- values are \'drive\', \'appDataFolder\' and \'photos\'.
-fSpaces :: Lens' File [Text]
-fSpaces
-  = lens _fSpaces (\ s a -> s{_fSpaces = a}) . _Default
-      . _Coerce
-
--- | A monotonically increasing version number for the file. This reflects
--- every change made to the file on the server, even those not visible to
--- the user.
-fVersion :: Lens' File (Maybe Int64)
-fVersion
-  = lens _fVersion (\ s a -> s{_fVersion = a}) .
-      mapping _Coerce
-
--- | Whether any users are granted file access directly on this file. This
--- field is only populated for Team Drive files.
-fHasAugmentedPermissions :: Lens' File (Maybe Bool)
-fHasAugmentedPermissions
-  = lens _fHasAugmentedPermissions
-      (\ s a -> s{_fHasAugmentedPermissions = a})
-
--- | Whether users with only writer permission can modify the file\'s
--- permissions. Not populated for Team Drive files.
-fWritersCanShare :: Lens' File (Maybe Bool)
-fWritersCanShare
-  = lens _fWritersCanShare
-      (\ s a -> s{_fWritersCanShare = a})
-
--- | If the file has been explicitly trashed, the user who trashed it. Only
--- populated for Team Drive files.
-fTrashingUser :: Lens' File (Maybe User)
-fTrashingUser
-  = lens _fTrashingUser
-      (\ s a -> s{_fTrashingUser = a})
-
--- | The ID of the file.
-fId :: Lens' File (Maybe Text)
-fId = lens _fId (\ s a -> s{_fId = a})
-
--- | List of permission IDs for users with access to this file.
-fPermissionIds :: Lens' File [Text]
-fPermissionIds
-  = lens _fPermissionIds
-      (\ s a -> s{_fPermissionIds = a})
-      . _Default
-      . _Coerce
-
--- | The full list of permissions for the file. This is only available if the
--- requesting user can share the file. Not populated for Team Drive files.
-fPermissions :: Lens' File [Permission]
-fPermissions
-  = lens _fPermissions (\ s a -> s{_fPermissions = a})
-      . _Default
-      . _Coerce
-
--- | The number of storage quota bytes used by the file. This includes the
--- head revision as well as previous revisions with keepForever enabled.
-fQuotaBytesUsed :: Lens' File (Maybe Int64)
-fQuotaBytesUsed
-  = lens _fQuotaBytesUsed
-      (\ s a -> s{_fQuotaBytesUsed = a})
-      . mapping _Coerce
-
--- | A collection of arbitrary key-value pairs which are private to the
--- requesting app. Entries with null values are cleared in update and copy
--- requests.
-fAppProperties :: Lens' File (Maybe FileAppProperties)
-fAppProperties
-  = lens _fAppProperties
-      (\ s a -> s{_fAppProperties = a})
-
--- | Additional metadata about video media. This may not be available
--- immediately upon upload.
-fVideoMediaMetadata :: Lens' File (Maybe FileVideoMediaMetadata)
-fVideoMediaMetadata
-  = lens _fVideoMediaMetadata
-      (\ s a -> s{_fVideoMediaMetadata = a})
-
--- | The time at which the file was shared with the user, if applicable (RFC
--- 3339 date-time).
-fSharedWithMeTime :: Lens' File (Maybe UTCTime)
-fSharedWithMeTime
-  = lens _fSharedWithMeTime
-      (\ s a -> s{_fSharedWithMeTime = a})
-      . mapping _DateTime
-
--- | The ID of the file\'s head revision. This is currently only available
--- for files with binary content in Drive.
-fHeadRevisionId :: Lens' File (Maybe Text)
-fHeadRevisionId
-  = lens _fHeadRevisionId
-      (\ s a -> s{_fHeadRevisionId = a})
-
--- | Capabilities the current user has on this file. Each capability
--- corresponds to a fine-grained action that a user may take.
-fCapabilities :: Lens' File (Maybe FileCapabilities)
-fCapabilities
-  = lens _fCapabilities
-      (\ s a -> s{_fCapabilities = a})
-
--- | A short description of the file.
-fDescription :: Lens' File (Maybe Text)
-fDescription
-  = lens _fDescription (\ s a -> s{_fDescription = a})
-
--- | Deprecated - use copyRequiresWriterPermission instead.
-fViewersCanCopyContent :: Lens' File (Maybe Bool)
-fViewersCanCopyContent
-  = lens _fViewersCanCopyContent
-      (\ s a -> s{_fViewersCanCopyContent = a})
-
--- | The user who shared the file with the requesting user, if applicable.
-fSharingUser :: Lens' File (Maybe User)
-fSharingUser
-  = lens _fSharingUser (\ s a -> s{_fSharingUser = a})
-
--- | A link for downloading the content of the file in a browser. This is
--- only available for files with binary content in Drive.
-fWebContentLink :: Lens' File (Maybe Text)
-fWebContentLink
-  = lens _fWebContentLink
-      (\ s a -> s{_fWebContentLink = a})
-
--- | Additional information about the content of the file. These fields are
--- never populated in responses.
-fContentHints :: Lens' File (Maybe FileContentHints)
-fContentHints
-  = lens _fContentHints
-      (\ s a -> s{_fContentHints = a})
-
--- | A collection of arbitrary key-value pairs which are visible to all apps.
--- Entries with null values are cleared in update and copy requests.
-fProperties :: Lens' File (Maybe FileProperties)
-fProperties
-  = lens _fProperties (\ s a -> s{_fProperties = a})
-
-instance FromJSON File where
-        parseJSON
-          = withObject "File"
-              (\ o ->
-                 File' <$>
-                   (o .:? "ownedByMe") <*> (o .:? "thumbnailLink") <*>
-                     (o .:? "fullFileExtension")
-                     <*> (o .:? "modifiedTime")
-                     <*> (o .:? "modifiedByMeTime")
-                     <*> (o .:? "fileExtension")
-                     <*> (o .:? "viewedByMe")
-                     <*> (o .:? "owners" .!= mempty)
-                     <*> (o .:? "viewedByMeTime")
-                     <*> (o .:? "modifiedByMe")
-                     <*> (o .:? "size")
-                     <*> (o .:? "trashed")
-                     <*> (o .:? "webViewLink")
-                     <*> (o .:? "createdTime")
-                     <*> (o .:? "trashedTime")
-                     <*> (o .:? "originalFilename")
-                     <*> (o .:? "kind" .!= "drive#file")
-                     <*> (o .:? "lastModifyingUser")
-                     <*> (o .:? "iconLink")
-                     <*> (o .:? "hasThumbnail")
-                     <*> (o .:? "thumbnailVersion")
-                     <*> (o .:? "imageMediaMetadata")
-                     <*> (o .:? "explicitlyTrashed")
-                     <*> (o .:? "shared")
-                     <*> (o .:? "md5Checksum")
-                     <*> (o .:? "teamDriveId")
-                     <*> (o .:? "folderColorRgb")
-                     <*> (o .:? "mimeType")
-                     <*> (o .:? "isAppAuthorized")
-                     <*> (o .:? "copyRequiresWriterPermission")
-                     <*> (o .:? "name")
-                     <*> (o .:? "exportLinks")
-                     <*> (o .:? "parents" .!= mempty)
-                     <*> (o .:? "starred")
-                     <*> (o .:? "spaces" .!= mempty)
-                     <*> (o .:? "version")
-                     <*> (o .:? "hasAugmentedPermissions")
-                     <*> (o .:? "writersCanShare")
-                     <*> (o .:? "trashingUser")
-                     <*> (o .:? "id")
-                     <*> (o .:? "permissionIds" .!= mempty)
-                     <*> (o .:? "permissions" .!= mempty)
-                     <*> (o .:? "quotaBytesUsed")
-                     <*> (o .:? "appProperties")
-                     <*> (o .:? "videoMediaMetadata")
-                     <*> (o .:? "sharedWithMeTime")
-                     <*> (o .:? "headRevisionId")
-                     <*> (o .:? "capabilities")
-                     <*> (o .:? "description")
-                     <*> (o .:? "viewersCanCopyContent")
-                     <*> (o .:? "sharingUser")
-                     <*> (o .:? "webContentLink")
-                     <*> (o .:? "contentHints")
-                     <*> (o .:? "properties"))
-
-instance ToJSON File where
-        toJSON File'{..}
-          = object
-              (catMaybes
-                 [("ownedByMe" .=) <$> _fOwnedByMe,
-                  ("thumbnailLink" .=) <$> _fThumbnailLink,
-                  ("fullFileExtension" .=) <$> _fFullFileExtension,
-                  ("modifiedTime" .=) <$> _fModifiedTime,
-                  ("modifiedByMeTime" .=) <$> _fModifiedByMeTime,
-                  ("fileExtension" .=) <$> _fFileExtension,
-                  ("viewedByMe" .=) <$> _fViewedByMe,
-                  ("owners" .=) <$> _fOwners,
-                  ("viewedByMeTime" .=) <$> _fViewedByMeTime,
-                  ("modifiedByMe" .=) <$> _fModifiedByMe,
-                  ("size" .=) <$> _fSize, ("trashed" .=) <$> _fTrashed,
-                  ("webViewLink" .=) <$> _fWebViewLink,
-                  ("createdTime" .=) <$> _fCreatedTime,
-                  ("trashedTime" .=) <$> _fTrashedTime,
-                  ("originalFilename" .=) <$> _fOriginalFilename,
-                  Just ("kind" .= _fKind),
-                  ("lastModifyingUser" .=) <$> _fLastModifyingUser,
-                  ("iconLink" .=) <$> _fIconLink,
-                  ("hasThumbnail" .=) <$> _fHasThumbnail,
-                  ("thumbnailVersion" .=) <$> _fThumbnailVersion,
-                  ("imageMediaMetadata" .=) <$> _fImageMediaMetadata,
-                  ("explicitlyTrashed" .=) <$> _fExplicitlyTrashed,
-                  ("shared" .=) <$> _fShared,
-                  ("md5Checksum" .=) <$> _fMD5Checksum,
-                  ("teamDriveId" .=) <$> _fTeamDriveId,
-                  ("folderColorRgb" .=) <$> _fFolderColorRgb,
-                  ("mimeType" .=) <$> _fMimeType,
-                  ("isAppAuthorized" .=) <$> _fIsAppAuthorized,
-                  ("copyRequiresWriterPermission" .=) <$>
-                    _fCopyRequiresWriterPermission,
-                  ("name" .=) <$> _fName,
-                  ("exportLinks" .=) <$> _fExportLinks,
-                  ("parents" .=) <$> _fParents,
-                  ("starred" .=) <$> _fStarred,
-                  ("spaces" .=) <$> _fSpaces,
-                  ("version" .=) <$> _fVersion,
-                  ("hasAugmentedPermissions" .=) <$>
-                    _fHasAugmentedPermissions,
-                  ("writersCanShare" .=) <$> _fWritersCanShare,
-                  ("trashingUser" .=) <$> _fTrashingUser,
-                  ("id" .=) <$> _fId,
-                  ("permissionIds" .=) <$> _fPermissionIds,
-                  ("permissions" .=) <$> _fPermissions,
-                  ("quotaBytesUsed" .=) <$> _fQuotaBytesUsed,
-                  ("appProperties" .=) <$> _fAppProperties,
-                  ("videoMediaMetadata" .=) <$> _fVideoMediaMetadata,
-                  ("sharedWithMeTime" .=) <$> _fSharedWithMeTime,
-                  ("headRevisionId" .=) <$> _fHeadRevisionId,
-                  ("capabilities" .=) <$> _fCapabilities,
-                  ("description" .=) <$> _fDescription,
-                  ("viewersCanCopyContent" .=) <$>
-                    _fViewersCanCopyContent,
-                  ("sharingUser" .=) <$> _fSharingUser,
-                  ("webContentLink" .=) <$> _fWebContentLink,
-                  ("contentHints" .=) <$> _fContentHints,
-                  ("properties" .=) <$> _fProperties])
-
---
--- /See:/ 'permissionTeamDrivePermissionDetailsItem' smart constructor.
-data PermissionTeamDrivePermissionDetailsItem = PermissionTeamDrivePermissionDetailsItem'
-    { _ptdpdiInherited               :: !(Maybe Bool)
-    , _ptdpdiTeamDrivePermissionType :: !(Maybe Text)
-    , _ptdpdiRole                    :: !(Maybe Text)
-    , _ptdpdiInheritedFrom           :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PermissionTeamDrivePermissionDetailsItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ptdpdiInherited'
---
--- * 'ptdpdiTeamDrivePermissionType'
---
--- * 'ptdpdiRole'
---
--- * 'ptdpdiInheritedFrom'
-permissionTeamDrivePermissionDetailsItem
-    :: PermissionTeamDrivePermissionDetailsItem
-permissionTeamDrivePermissionDetailsItem =
-    PermissionTeamDrivePermissionDetailsItem'
-    { _ptdpdiInherited = Nothing
-    , _ptdpdiTeamDrivePermissionType = Nothing
-    , _ptdpdiRole = Nothing
-    , _ptdpdiInheritedFrom = Nothing
-    }
-
--- | Whether this permission is inherited. This field is always populated.
--- This is an output-only field.
-ptdpdiInherited :: Lens' PermissionTeamDrivePermissionDetailsItem (Maybe Bool)
-ptdpdiInherited
-  = lens _ptdpdiInherited
-      (\ s a -> s{_ptdpdiInherited = a})
-
--- | The Team Drive permission type for this user. While new values may be
--- added in future, the following are currently possible: - file - member
-ptdpdiTeamDrivePermissionType :: Lens' PermissionTeamDrivePermissionDetailsItem (Maybe Text)
-ptdpdiTeamDrivePermissionType
-  = lens _ptdpdiTeamDrivePermissionType
-      (\ s a -> s{_ptdpdiTeamDrivePermissionType = a})
-
--- | The primary role for this user. While new values may be added in the
--- future, the following are currently possible: - organizer -
--- fileOrganizer - writer - commenter - reader
-ptdpdiRole :: Lens' PermissionTeamDrivePermissionDetailsItem (Maybe Text)
-ptdpdiRole
-  = lens _ptdpdiRole (\ s a -> s{_ptdpdiRole = a})
-
--- | The ID of the item from which this permission is inherited. This is an
--- output-only field and is only populated for members of the Team Drive.
-ptdpdiInheritedFrom :: Lens' PermissionTeamDrivePermissionDetailsItem (Maybe Text)
-ptdpdiInheritedFrom
-  = lens _ptdpdiInheritedFrom
-      (\ s a -> s{_ptdpdiInheritedFrom = a})
-
-instance FromJSON
-         PermissionTeamDrivePermissionDetailsItem where
-        parseJSON
-          = withObject
-              "PermissionTeamDrivePermissionDetailsItem"
-              (\ o ->
-                 PermissionTeamDrivePermissionDetailsItem' <$>
-                   (o .:? "inherited") <*>
-                     (o .:? "teamDrivePermissionType")
-                     <*> (o .:? "role")
-                     <*> (o .:? "inheritedFrom"))
-
-instance ToJSON
-         PermissionTeamDrivePermissionDetailsItem where
-        toJSON PermissionTeamDrivePermissionDetailsItem'{..}
-          = object
-              (catMaybes
-                 [("inherited" .=) <$> _ptdpdiInherited,
-                  ("teamDrivePermissionType" .=) <$>
-                    _ptdpdiTeamDrivePermissionType,
-                  ("role" .=) <$> _ptdpdiRole,
-                  ("inheritedFrom" .=) <$> _ptdpdiInheritedFrom])
-
--- | A list of generated file IDs which can be provided in create requests.
---
--- /See:/ 'generatedIds' smart constructor.
-data GeneratedIds = GeneratedIds'
-    { _giSpace :: !(Maybe Text)
-    , _giKind  :: !Text
-    , _giIds   :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'GeneratedIds' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'giSpace'
---
--- * 'giKind'
---
--- * 'giIds'
-generatedIds
-    :: GeneratedIds
-generatedIds =
-    GeneratedIds'
-    { _giSpace = Nothing
-    , _giKind = "drive#generatedIds"
-    , _giIds = Nothing
-    }
-
--- | The type of file that can be created with these IDs.
-giSpace :: Lens' GeneratedIds (Maybe Text)
-giSpace = lens _giSpace (\ s a -> s{_giSpace = a})
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"drive#generatedIds\".
-giKind :: Lens' GeneratedIds Text
-giKind = lens _giKind (\ s a -> s{_giKind = a})
-
--- | The IDs generated for the requesting user in the specified space.
-giIds :: Lens' GeneratedIds [Text]
-giIds
-  = lens _giIds (\ s a -> s{_giIds = a}) . _Default .
-      _Coerce
-
-instance FromJSON GeneratedIds where
-        parseJSON
-          = withObject "GeneratedIds"
-              (\ o ->
-                 GeneratedIds' <$>
-                   (o .:? "space") <*>
-                     (o .:? "kind" .!= "drive#generatedIds")
-                     <*> (o .:? "ids" .!= mempty))
-
-instance ToJSON GeneratedIds where
-        toJSON GeneratedIds'{..}
-          = object
-              (catMaybes
-                 [("space" .=) <$> _giSpace, Just ("kind" .= _giKind),
-                  ("ids" .=) <$> _giIds])
-
--- | Links for exporting Google Docs to specific formats.
---
--- /See:/ 'fileExportLinks' smart constructor.
-newtype FileExportLinks = FileExportLinks'
-    { _felAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FileExportLinks' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'felAddtional'
-fileExportLinks
-    :: HashMap Text Text -- ^ 'felAddtional'
-    -> FileExportLinks
-fileExportLinks pFelAddtional_ =
-    FileExportLinks'
-    { _felAddtional = _Coerce # pFelAddtional_
-    }
-
--- | A mapping from export format to URL
-felAddtional :: Lens' FileExportLinks (HashMap Text Text)
-felAddtional
-  = lens _felAddtional (\ s a -> s{_felAddtional = a})
-      . _Coerce
-
-instance FromJSON FileExportLinks where
-        parseJSON
-          = withObject "FileExportLinks"
-              (\ o -> FileExportLinks' <$> (parseJSONObject o))
-
-instance ToJSON FileExportLinks where
-        toJSON = toJSON . _felAddtional
-
--- | A list of comments on a file.
---
--- /See:/ 'commentList' smart constructor.
-data CommentList = CommentList'
-    { _cllNextPageToken :: !(Maybe Text)
-    , _cllKind          :: !Text
-    , _cllComments      :: !(Maybe [Comment])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CommentList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cllNextPageToken'
---
--- * 'cllKind'
---
--- * 'cllComments'
-commentList
-    :: CommentList
-commentList =
-    CommentList'
-    { _cllNextPageToken = Nothing
-    , _cllKind = "drive#commentList"
-    , _cllComments = Nothing
-    }
-
--- | The page token for the next page of comments. This will be absent if the
--- end of the comments list has been reached. If the token is rejected for
--- any reason, it should be discarded, and pagination should be restarted
--- from the first page of results.
-cllNextPageToken :: Lens' CommentList (Maybe Text)
-cllNextPageToken
-  = lens _cllNextPageToken
-      (\ s a -> s{_cllNextPageToken = a})
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"drive#commentList\".
-cllKind :: Lens' CommentList Text
-cllKind = lens _cllKind (\ s a -> s{_cllKind = a})
-
--- | The list of comments. If nextPageToken is populated, then this list may
--- be incomplete and an additional page of results should be fetched.
-cllComments :: Lens' CommentList [Comment]
-cllComments
-  = lens _cllComments (\ s a -> s{_cllComments = a}) .
-      _Default
-      . _Coerce
-
-instance FromJSON CommentList where
-        parseJSON
-          = withObject "CommentList"
-              (\ o ->
-                 CommentList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "drive#commentList")
-                     <*> (o .:? "comments" .!= mempty))
-
-instance ToJSON CommentList where
-        toJSON CommentList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _cllNextPageToken,
-                  Just ("kind" .= _cllKind),
-                  ("comments" .=) <$> _cllComments])
-
--- | A list of revisions of a file.
---
--- /See:/ 'revisionList' smart constructor.
-data RevisionList = RevisionList'
-    { _rllNextPageToken :: !(Maybe Text)
-    , _rllKind          :: !Text
-    , _rllRevisions     :: !(Maybe [Revision])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RevisionList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rllNextPageToken'
---
--- * 'rllKind'
---
--- * 'rllRevisions'
-revisionList
-    :: RevisionList
-revisionList =
-    RevisionList'
-    { _rllNextPageToken = Nothing
-    , _rllKind = "drive#revisionList"
-    , _rllRevisions = Nothing
-    }
-
--- | The page token for the next page of revisions. This will be absent if
--- the end of the revisions list has been reached. If the token is rejected
--- for any reason, it should be discarded, and pagination should be
--- restarted from the first page of results.
-rllNextPageToken :: Lens' RevisionList (Maybe Text)
-rllNextPageToken
-  = lens _rllNextPageToken
-      (\ s a -> s{_rllNextPageToken = a})
-
--- | Identifies what kind of resource this is. Value: the fixed string
--- \"drive#revisionList\".
-rllKind :: Lens' RevisionList Text
-rllKind = lens _rllKind (\ s a -> s{_rllKind = a})
-
--- | The list of revisions. If nextPageToken is populated, then this list may
--- be incomplete and an additional page of results should be fetched.
-rllRevisions :: Lens' RevisionList [Revision]
-rllRevisions
-  = lens _rllRevisions (\ s a -> s{_rllRevisions = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON RevisionList where
-        parseJSON
-          = withObject "RevisionList"
-              (\ o ->
-                 RevisionList' <$>
-                   (o .:? "nextPageToken") <*>
-                     (o .:? "kind" .!= "drive#revisionList")
-                     <*> (o .:? "revisions" .!= mempty))
-
-instance ToJSON RevisionList where
-        toJSON RevisionList'{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _rllNextPageToken,
-                  Just ("kind" .= _rllKind),
-                  ("revisions" .=) <$> _rllRevisions])
-
--- | A list of permissions for a file.
---
--- /See:/ 'permissionList' smart constructor.
-data PermissionList = PermissionList'
-    { _plNextPageToken :: !(Maybe Text)
-    , _plKind          :: !Text
-    , _plPermissions   :: !(Maybe [Permission])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PermissionList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'plNextPageToken'
---
--- * 'plKind'
---
--- * 'plPermissions'
-permissionList
-    :: PermissionList
-permissionList =
-    PermissionList'
-    { _plNextPageToken = Nothing
-    , _plKind = "drive#permissionList"
-    , _plPermissions = Nothing
-    }
+data FileList =
+  FileList'
+    { _flNextPageToken    :: !(Maybe Text)
+    , _flIncompleteSearch :: !(Maybe Bool)
+    , _flKind             :: !Text
+    , _flFiles            :: !(Maybe [File])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FileList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'flNextPageToken'
+--
+-- * 'flIncompleteSearch'
+--
+-- * 'flKind'
+--
+-- * 'flFiles'
+fileList
+    :: FileList
+fileList =
+  FileList'
+    { _flNextPageToken = Nothing
+    , _flIncompleteSearch = Nothing
+    , _flKind = "drive#fileList"
+    , _flFiles = Nothing
+    }
+
+
+-- | The page token for the next page of files. This will be absent if the
+-- end of the files list has been reached. If the token is rejected for any
+-- reason, it should be discarded, and pagination should be restarted from
+-- the first page of results.
+flNextPageToken :: Lens' FileList (Maybe Text)
+flNextPageToken
+  = lens _flNextPageToken
+      (\ s a -> s{_flNextPageToken = a})
+
+-- | Whether the search process was incomplete. If true, then some search
+-- results may be missing, since all documents were not searched. This may
+-- occur when searching multiple drives with the \"allDrives\" corpora, but
+-- all corpora could not be searched. When this happens, it is suggested
+-- that clients narrow their query by choosing a different corpus such as
+-- \"user\" or \"drive\".
+flIncompleteSearch :: Lens' FileList (Maybe Bool)
+flIncompleteSearch
+  = lens _flIncompleteSearch
+      (\ s a -> s{_flIncompleteSearch = a})
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"drive#fileList\".
+flKind :: Lens' FileList Text
+flKind = lens _flKind (\ s a -> s{_flKind = a})
+
+-- | The list of files. If nextPageToken is populated, then this list may be
+-- incomplete and an additional page of results should be fetched.
+flFiles :: Lens' FileList [File]
+flFiles
+  = lens _flFiles (\ s a -> s{_flFiles = a}) . _Default
+      . _Coerce
+
+instance FromJSON FileList where
+        parseJSON
+          = withObject "FileList"
+              (\ o ->
+                 FileList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "incompleteSearch")
+                     <*> (o .:? "kind" .!= "drive#fileList")
+                     <*> (o .:? "files" .!= mempty))
+
+instance ToJSON FileList where
+        toJSON FileList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _flNextPageToken,
+                  ("incompleteSearch" .=) <$> _flIncompleteSearch,
+                  Just ("kind" .= _flKind), ("files" .=) <$> _flFiles])
+
+-- | Representation of a shared drive.
+--
+-- /See:/ 'drive' smart constructor.
+data Drive =
+  Drive'
+    { _dThemeId             :: !(Maybe Text)
+    , _dBackgRoundImageFile :: !(Maybe DriveBackgRoundImageFile)
+    , _dColorRgb            :: !(Maybe Text)
+    , _dCreatedTime         :: !(Maybe DateTime')
+    , _dKind                :: !Text
+    , _dBackgRoundImageLink :: !(Maybe Text)
+    , _dName                :: !(Maybe Text)
+    , _dRestrictions        :: !(Maybe DriveRestrictions)
+    , _dHidden              :: !(Maybe Bool)
+    , _dId                  :: !(Maybe Text)
+    , _dCapabilities        :: !(Maybe DriveCapabilities)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Drive' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dThemeId'
+--
+-- * 'dBackgRoundImageFile'
+--
+-- * 'dColorRgb'
+--
+-- * 'dCreatedTime'
+--
+-- * 'dKind'
+--
+-- * 'dBackgRoundImageLink'
+--
+-- * 'dName'
+--
+-- * 'dRestrictions'
+--
+-- * 'dHidden'
+--
+-- * 'dId'
+--
+-- * 'dCapabilities'
+drive
+    :: Drive
+drive =
+  Drive'
+    { _dThemeId = Nothing
+    , _dBackgRoundImageFile = Nothing
+    , _dColorRgb = Nothing
+    , _dCreatedTime = Nothing
+    , _dKind = "drive#drive"
+    , _dBackgRoundImageLink = Nothing
+    , _dName = Nothing
+    , _dRestrictions = Nothing
+    , _dHidden = Nothing
+    , _dId = Nothing
+    , _dCapabilities = Nothing
+    }
+
+
+-- | The ID of the theme from which the background image and color will be
+-- set. The set of possible driveThemes can be retrieved from a
+-- drive.about.get response. When not specified on a drive.drives.create
+-- request, a random theme is chosen from which the background image and
+-- color are set. This is a write-only field; it can only be set on
+-- requests that don\'t set colorRgb or backgroundImageFile.
+dThemeId :: Lens' Drive (Maybe Text)
+dThemeId = lens _dThemeId (\ s a -> s{_dThemeId = a})
+
+-- | An image file and cropping parameters from which a background image for
+-- this shared drive is set. This is a write only field; it can only be set
+-- on drive.drives.update requests that don\'t set themeId. When specified,
+-- all fields of the backgroundImageFile must be set.
+dBackgRoundImageFile :: Lens' Drive (Maybe DriveBackgRoundImageFile)
+dBackgRoundImageFile
+  = lens _dBackgRoundImageFile
+      (\ s a -> s{_dBackgRoundImageFile = a})
+
+-- | The color of this shared drive as an RGB hex string. It can only be set
+-- on a drive.drives.update request that does not set themeId.
+dColorRgb :: Lens' Drive (Maybe Text)
+dColorRgb
+  = lens _dColorRgb (\ s a -> s{_dColorRgb = a})
+
+-- | The time at which the shared drive was created (RFC 3339 date-time).
+dCreatedTime :: Lens' Drive (Maybe UTCTime)
+dCreatedTime
+  = lens _dCreatedTime (\ s a -> s{_dCreatedTime = a})
+      . mapping _DateTime
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"drive#drive\".
+dKind :: Lens' Drive Text
+dKind = lens _dKind (\ s a -> s{_dKind = a})
+
+-- | A short-lived link to this shared drive\'s background image.
+dBackgRoundImageLink :: Lens' Drive (Maybe Text)
+dBackgRoundImageLink
+  = lens _dBackgRoundImageLink
+      (\ s a -> s{_dBackgRoundImageLink = a})
+
+-- | The name of this shared drive.
+dName :: Lens' Drive (Maybe Text)
+dName = lens _dName (\ s a -> s{_dName = a})
+
+-- | A set of restrictions that apply to this shared drive or items inside
+-- this shared drive.
+dRestrictions :: Lens' Drive (Maybe DriveRestrictions)
+dRestrictions
+  = lens _dRestrictions
+      (\ s a -> s{_dRestrictions = a})
+
+-- | Whether the shared drive is hidden from default view.
+dHidden :: Lens' Drive (Maybe Bool)
+dHidden = lens _dHidden (\ s a -> s{_dHidden = a})
+
+-- | The ID of this shared drive which is also the ID of the top level folder
+-- of this shared drive.
+dId :: Lens' Drive (Maybe Text)
+dId = lens _dId (\ s a -> s{_dId = a})
+
+-- | Capabilities the current user has on this shared drive.
+dCapabilities :: Lens' Drive (Maybe DriveCapabilities)
+dCapabilities
+  = lens _dCapabilities
+      (\ s a -> s{_dCapabilities = a})
+
+instance FromJSON Drive where
+        parseJSON
+          = withObject "Drive"
+              (\ o ->
+                 Drive' <$>
+                   (o .:? "themeId") <*> (o .:? "backgroundImageFile")
+                     <*> (o .:? "colorRgb")
+                     <*> (o .:? "createdTime")
+                     <*> (o .:? "kind" .!= "drive#drive")
+                     <*> (o .:? "backgroundImageLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "restrictions")
+                     <*> (o .:? "hidden")
+                     <*> (o .:? "id")
+                     <*> (o .:? "capabilities"))
+
+instance ToJSON Drive where
+        toJSON Drive'{..}
+          = object
+              (catMaybes
+                 [("themeId" .=) <$> _dThemeId,
+                  ("backgroundImageFile" .=) <$> _dBackgRoundImageFile,
+                  ("colorRgb" .=) <$> _dColorRgb,
+                  ("createdTime" .=) <$> _dCreatedTime,
+                  Just ("kind" .= _dKind),
+                  ("backgroundImageLink" .=) <$> _dBackgRoundImageLink,
+                  ("name" .=) <$> _dName,
+                  ("restrictions" .=) <$> _dRestrictions,
+                  ("hidden" .=) <$> _dHidden, ("id" .=) <$> _dId,
+                  ("capabilities" .=) <$> _dCapabilities])
+
+-- | Capabilities the current user has on this Team Drive.
+--
+-- /See:/ 'teamDriveCapabilities' smart constructor.
+data TeamDriveCapabilities =
+  TeamDriveCapabilities'
+    { _tdcCanRename                                        :: !(Maybe Bool)
+    , _tdcCanChangeTeamMembersOnlyRestriction              :: !(Maybe Bool)
+    , _tdcCanComment                                       :: !(Maybe Bool)
+    , _tdcCanRenameTeamDrive                               :: !(Maybe Bool)
+    , _tdcCanChangeTeamDriveBackgRound                     :: !(Maybe Bool)
+    , _tdcCanDownload                                      :: !(Maybe Bool)
+    , _tdcCanChangeDomainUsersOnlyRestriction              :: !(Maybe Bool)
+    , _tdcCanTrashChildren                                 :: !(Maybe Bool)
+    , _tdcCanAddChildren                                   :: !(Maybe Bool)
+    , _tdcCanRemoveChildren                                :: !(Maybe Bool)
+    , _tdcCanChangeCopyRequiresWriterPermissionRestriction :: !(Maybe Bool)
+    , _tdcCanDeleteTeamDrive                               :: !(Maybe Bool)
+    , _tdcCanListChildren                                  :: !(Maybe Bool)
+    , _tdcCanEdit                                          :: !(Maybe Bool)
+    , _tdcCanManageMembers                                 :: !(Maybe Bool)
+    , _tdcCanReadRevisions                                 :: !(Maybe Bool)
+    , _tdcCanDeleteChildren                                :: !(Maybe Bool)
+    , _tdcCanCopy                                          :: !(Maybe Bool)
+    , _tdcCanShare                                         :: !(Maybe Bool)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TeamDriveCapabilities' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tdcCanRename'
+--
+-- * 'tdcCanChangeTeamMembersOnlyRestriction'
+--
+-- * 'tdcCanComment'
+--
+-- * 'tdcCanRenameTeamDrive'
+--
+-- * 'tdcCanChangeTeamDriveBackgRound'
+--
+-- * 'tdcCanDownload'
+--
+-- * 'tdcCanChangeDomainUsersOnlyRestriction'
+--
+-- * 'tdcCanTrashChildren'
+--
+-- * 'tdcCanAddChildren'
+--
+-- * 'tdcCanRemoveChildren'
+--
+-- * 'tdcCanChangeCopyRequiresWriterPermissionRestriction'
+--
+-- * 'tdcCanDeleteTeamDrive'
+--
+-- * 'tdcCanListChildren'
+--
+-- * 'tdcCanEdit'
+--
+-- * 'tdcCanManageMembers'
+--
+-- * 'tdcCanReadRevisions'
+--
+-- * 'tdcCanDeleteChildren'
+--
+-- * 'tdcCanCopy'
+--
+-- * 'tdcCanShare'
+teamDriveCapabilities
+    :: TeamDriveCapabilities
+teamDriveCapabilities =
+  TeamDriveCapabilities'
+    { _tdcCanRename = Nothing
+    , _tdcCanChangeTeamMembersOnlyRestriction = Nothing
+    , _tdcCanComment = Nothing
+    , _tdcCanRenameTeamDrive = Nothing
+    , _tdcCanChangeTeamDriveBackgRound = Nothing
+    , _tdcCanDownload = Nothing
+    , _tdcCanChangeDomainUsersOnlyRestriction = Nothing
+    , _tdcCanTrashChildren = Nothing
+    , _tdcCanAddChildren = Nothing
+    , _tdcCanRemoveChildren = Nothing
+    , _tdcCanChangeCopyRequiresWriterPermissionRestriction = Nothing
+    , _tdcCanDeleteTeamDrive = Nothing
+    , _tdcCanListChildren = Nothing
+    , _tdcCanEdit = Nothing
+    , _tdcCanManageMembers = Nothing
+    , _tdcCanReadRevisions = Nothing
+    , _tdcCanDeleteChildren = Nothing
+    , _tdcCanCopy = Nothing
+    , _tdcCanShare = Nothing
+    }
+
+
+-- | Whether the current user can rename files or folders in this Team Drive.
+tdcCanRename :: Lens' TeamDriveCapabilities (Maybe Bool)
+tdcCanRename
+  = lens _tdcCanRename (\ s a -> s{_tdcCanRename = a})
+
+-- | Whether the current user can change the teamMembersOnly restriction of
+-- this Team Drive.
+tdcCanChangeTeamMembersOnlyRestriction :: Lens' TeamDriveCapabilities (Maybe Bool)
+tdcCanChangeTeamMembersOnlyRestriction
+  = lens _tdcCanChangeTeamMembersOnlyRestriction
+      (\ s a ->
+         s{_tdcCanChangeTeamMembersOnlyRestriction = a})
+
+-- | Whether the current user can comment on files in this Team Drive.
+tdcCanComment :: Lens' TeamDriveCapabilities (Maybe Bool)
+tdcCanComment
+  = lens _tdcCanComment
+      (\ s a -> s{_tdcCanComment = a})
+
+-- | Whether the current user can rename this Team Drive.
+tdcCanRenameTeamDrive :: Lens' TeamDriveCapabilities (Maybe Bool)
+tdcCanRenameTeamDrive
+  = lens _tdcCanRenameTeamDrive
+      (\ s a -> s{_tdcCanRenameTeamDrive = a})
+
+-- | Whether the current user can change the background of this Team Drive.
+tdcCanChangeTeamDriveBackgRound :: Lens' TeamDriveCapabilities (Maybe Bool)
+tdcCanChangeTeamDriveBackgRound
+  = lens _tdcCanChangeTeamDriveBackgRound
+      (\ s a -> s{_tdcCanChangeTeamDriveBackgRound = a})
+
+-- | Whether the current user can download files in this Team Drive.
+tdcCanDownload :: Lens' TeamDriveCapabilities (Maybe Bool)
+tdcCanDownload
+  = lens _tdcCanDownload
+      (\ s a -> s{_tdcCanDownload = a})
+
+-- | Whether the current user can change the domainUsersOnly restriction of
+-- this Team Drive.
+tdcCanChangeDomainUsersOnlyRestriction :: Lens' TeamDriveCapabilities (Maybe Bool)
+tdcCanChangeDomainUsersOnlyRestriction
+  = lens _tdcCanChangeDomainUsersOnlyRestriction
+      (\ s a ->
+         s{_tdcCanChangeDomainUsersOnlyRestriction = a})
+
+-- | Whether the current user can trash children from folders in this Team
+-- Drive.
+tdcCanTrashChildren :: Lens' TeamDriveCapabilities (Maybe Bool)
+tdcCanTrashChildren
+  = lens _tdcCanTrashChildren
+      (\ s a -> s{_tdcCanTrashChildren = a})
+
+-- | Whether the current user can add children to folders in this Team Drive.
+tdcCanAddChildren :: Lens' TeamDriveCapabilities (Maybe Bool)
+tdcCanAddChildren
+  = lens _tdcCanAddChildren
+      (\ s a -> s{_tdcCanAddChildren = a})
+
+-- | Deprecated - use canDeleteChildren or canTrashChildren instead.
+tdcCanRemoveChildren :: Lens' TeamDriveCapabilities (Maybe Bool)
+tdcCanRemoveChildren
+  = lens _tdcCanRemoveChildren
+      (\ s a -> s{_tdcCanRemoveChildren = a})
+
+-- | Whether the current user can change the copyRequiresWriterPermission
+-- restriction of this Team Drive.
+tdcCanChangeCopyRequiresWriterPermissionRestriction :: Lens' TeamDriveCapabilities (Maybe Bool)
+tdcCanChangeCopyRequiresWriterPermissionRestriction
+  = lens
+      _tdcCanChangeCopyRequiresWriterPermissionRestriction
+      (\ s a ->
+         s{_tdcCanChangeCopyRequiresWriterPermissionRestriction
+             = a})
+
+-- | Whether the current user can delete this Team Drive. Attempting to
+-- delete the Team Drive may still fail if there are untrashed items inside
+-- the Team Drive.
+tdcCanDeleteTeamDrive :: Lens' TeamDriveCapabilities (Maybe Bool)
+tdcCanDeleteTeamDrive
+  = lens _tdcCanDeleteTeamDrive
+      (\ s a -> s{_tdcCanDeleteTeamDrive = a})
+
+-- | Whether the current user can list the children of folders in this Team
+-- Drive.
+tdcCanListChildren :: Lens' TeamDriveCapabilities (Maybe Bool)
+tdcCanListChildren
+  = lens _tdcCanListChildren
+      (\ s a -> s{_tdcCanListChildren = a})
+
+-- | Whether the current user can edit files in this Team Drive
+tdcCanEdit :: Lens' TeamDriveCapabilities (Maybe Bool)
+tdcCanEdit
+  = lens _tdcCanEdit (\ s a -> s{_tdcCanEdit = a})
+
+-- | Whether the current user can add members to this Team Drive or remove
+-- them or change their role.
+tdcCanManageMembers :: Lens' TeamDriveCapabilities (Maybe Bool)
+tdcCanManageMembers
+  = lens _tdcCanManageMembers
+      (\ s a -> s{_tdcCanManageMembers = a})
+
+-- | Whether the current user can read the revisions resource of files in
+-- this Team Drive.
+tdcCanReadRevisions :: Lens' TeamDriveCapabilities (Maybe Bool)
+tdcCanReadRevisions
+  = lens _tdcCanReadRevisions
+      (\ s a -> s{_tdcCanReadRevisions = a})
+
+-- | Whether the current user can delete children from folders in this Team
+-- Drive.
+tdcCanDeleteChildren :: Lens' TeamDriveCapabilities (Maybe Bool)
+tdcCanDeleteChildren
+  = lens _tdcCanDeleteChildren
+      (\ s a -> s{_tdcCanDeleteChildren = a})
+
+-- | Whether the current user can copy files in this Team Drive.
+tdcCanCopy :: Lens' TeamDriveCapabilities (Maybe Bool)
+tdcCanCopy
+  = lens _tdcCanCopy (\ s a -> s{_tdcCanCopy = a})
+
+-- | Whether the current user can share files or folders in this Team Drive.
+tdcCanShare :: Lens' TeamDriveCapabilities (Maybe Bool)
+tdcCanShare
+  = lens _tdcCanShare (\ s a -> s{_tdcCanShare = a})
+
+instance FromJSON TeamDriveCapabilities where
+        parseJSON
+          = withObject "TeamDriveCapabilities"
+              (\ o ->
+                 TeamDriveCapabilities' <$>
+                   (o .:? "canRename") <*>
+                     (o .:? "canChangeTeamMembersOnlyRestriction")
+                     <*> (o .:? "canComment")
+                     <*> (o .:? "canRenameTeamDrive")
+                     <*> (o .:? "canChangeTeamDriveBackground")
+                     <*> (o .:? "canDownload")
+                     <*> (o .:? "canChangeDomainUsersOnlyRestriction")
+                     <*> (o .:? "canTrashChildren")
+                     <*> (o .:? "canAddChildren")
+                     <*> (o .:? "canRemoveChildren")
+                     <*>
+                     (o .:?
+                        "canChangeCopyRequiresWriterPermissionRestriction")
+                     <*> (o .:? "canDeleteTeamDrive")
+                     <*> (o .:? "canListChildren")
+                     <*> (o .:? "canEdit")
+                     <*> (o .:? "canManageMembers")
+                     <*> (o .:? "canReadRevisions")
+                     <*> (o .:? "canDeleteChildren")
+                     <*> (o .:? "canCopy")
+                     <*> (o .:? "canShare"))
+
+instance ToJSON TeamDriveCapabilities where
+        toJSON TeamDriveCapabilities'{..}
+          = object
+              (catMaybes
+                 [("canRename" .=) <$> _tdcCanRename,
+                  ("canChangeTeamMembersOnlyRestriction" .=) <$>
+                    _tdcCanChangeTeamMembersOnlyRestriction,
+                  ("canComment" .=) <$> _tdcCanComment,
+                  ("canRenameTeamDrive" .=) <$> _tdcCanRenameTeamDrive,
+                  ("canChangeTeamDriveBackground" .=) <$>
+                    _tdcCanChangeTeamDriveBackgRound,
+                  ("canDownload" .=) <$> _tdcCanDownload,
+                  ("canChangeDomainUsersOnlyRestriction" .=) <$>
+                    _tdcCanChangeDomainUsersOnlyRestriction,
+                  ("canTrashChildren" .=) <$> _tdcCanTrashChildren,
+                  ("canAddChildren" .=) <$> _tdcCanAddChildren,
+                  ("canRemoveChildren" .=) <$> _tdcCanRemoveChildren,
+                  ("canChangeCopyRequiresWriterPermissionRestriction"
+                     .=)
+                    <$>
+                    _tdcCanChangeCopyRequiresWriterPermissionRestriction,
+                  ("canDeleteTeamDrive" .=) <$> _tdcCanDeleteTeamDrive,
+                  ("canListChildren" .=) <$> _tdcCanListChildren,
+                  ("canEdit" .=) <$> _tdcCanEdit,
+                  ("canManageMembers" .=) <$> _tdcCanManageMembers,
+                  ("canReadRevisions" .=) <$> _tdcCanReadRevisions,
+                  ("canDeleteChildren" .=) <$> _tdcCanDeleteChildren,
+                  ("canCopy" .=) <$> _tdcCanCopy,
+                  ("canShare" .=) <$> _tdcCanShare])
+
+--
+-- /See:/ 'permissionPermissionDetailsItem' smart constructor.
+data PermissionPermissionDetailsItem =
+  PermissionPermissionDetailsItem'
+    { _ppdiInherited      :: !(Maybe Bool)
+    , _ppdiPermissionType :: !(Maybe Text)
+    , _ppdiRole           :: !(Maybe Text)
+    , _ppdiInheritedFrom  :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PermissionPermissionDetailsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ppdiInherited'
+--
+-- * 'ppdiPermissionType'
+--
+-- * 'ppdiRole'
+--
+-- * 'ppdiInheritedFrom'
+permissionPermissionDetailsItem
+    :: PermissionPermissionDetailsItem
+permissionPermissionDetailsItem =
+  PermissionPermissionDetailsItem'
+    { _ppdiInherited = Nothing
+    , _ppdiPermissionType = Nothing
+    , _ppdiRole = Nothing
+    , _ppdiInheritedFrom = Nothing
+    }
+
+
+-- | Whether this permission is inherited. This field is always populated.
+-- This is an output-only field.
+ppdiInherited :: Lens' PermissionPermissionDetailsItem (Maybe Bool)
+ppdiInherited
+  = lens _ppdiInherited
+      (\ s a -> s{_ppdiInherited = a})
+
+-- | The permission type for this user. While new values may be added in
+-- future, the following are currently possible: - file - member
+ppdiPermissionType :: Lens' PermissionPermissionDetailsItem (Maybe Text)
+ppdiPermissionType
+  = lens _ppdiPermissionType
+      (\ s a -> s{_ppdiPermissionType = a})
+
+-- | The primary role for this user. While new values may be added in the
+-- future, the following are currently possible: - organizer -
+-- fileOrganizer - writer - commenter - reader
+ppdiRole :: Lens' PermissionPermissionDetailsItem (Maybe Text)
+ppdiRole = lens _ppdiRole (\ s a -> s{_ppdiRole = a})
+
+-- | The ID of the item from which this permission is inherited. This is an
+-- output-only field and is only populated for members of the shared drive.
+ppdiInheritedFrom :: Lens' PermissionPermissionDetailsItem (Maybe Text)
+ppdiInheritedFrom
+  = lens _ppdiInheritedFrom
+      (\ s a -> s{_ppdiInheritedFrom = a})
+
+instance FromJSON PermissionPermissionDetailsItem
+         where
+        parseJSON
+          = withObject "PermissionPermissionDetailsItem"
+              (\ o ->
+                 PermissionPermissionDetailsItem' <$>
+                   (o .:? "inherited") <*> (o .:? "permissionType") <*>
+                     (o .:? "role")
+                     <*> (o .:? "inheritedFrom"))
+
+instance ToJSON PermissionPermissionDetailsItem where
+        toJSON PermissionPermissionDetailsItem'{..}
+          = object
+              (catMaybes
+                 [("inherited" .=) <$> _ppdiInherited,
+                  ("permissionType" .=) <$> _ppdiPermissionType,
+                  ("role" .=) <$> _ppdiRole,
+                  ("inheritedFrom" .=) <$> _ppdiInheritedFrom])
+
+-- | The file content to which the comment refers, typically within the
+-- anchor region. For a text file, for example, this would be the text at
+-- the location of the comment.
+--
+-- /See:/ 'commentQuotedFileContent' smart constructor.
+data CommentQuotedFileContent =
+  CommentQuotedFileContent'
+    { _cqfcValue    :: !(Maybe Text)
+    , _cqfcMimeType :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CommentQuotedFileContent' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cqfcValue'
+--
+-- * 'cqfcMimeType'
+commentQuotedFileContent
+    :: CommentQuotedFileContent
+commentQuotedFileContent =
+  CommentQuotedFileContent' {_cqfcValue = Nothing, _cqfcMimeType = Nothing}
+
+
+-- | The quoted content itself. This is interpreted as plain text if set
+-- through the API.
+cqfcValue :: Lens' CommentQuotedFileContent (Maybe Text)
+cqfcValue
+  = lens _cqfcValue (\ s a -> s{_cqfcValue = a})
+
+-- | The MIME type of the quoted content.
+cqfcMimeType :: Lens' CommentQuotedFileContent (Maybe Text)
+cqfcMimeType
+  = lens _cqfcMimeType (\ s a -> s{_cqfcMimeType = a})
+
+instance FromJSON CommentQuotedFileContent where
+        parseJSON
+          = withObject "CommentQuotedFileContent"
+              (\ o ->
+                 CommentQuotedFileContent' <$>
+                   (o .:? "value") <*> (o .:? "mimeType"))
+
+instance ToJSON CommentQuotedFileContent where
+        toJSON CommentQuotedFileContent'{..}
+          = object
+              (catMaybes
+                 [("value" .=) <$> _cqfcValue,
+                  ("mimeType" .=) <$> _cqfcMimeType])
+
+-- | Capabilities the current user has on this shared drive.
+--
+-- /See:/ 'driveCapabilities' smart constructor.
+data DriveCapabilities =
+  DriveCapabilities'
+    { _dcCanRename                                        :: !(Maybe Bool)
+    , _dcCanComment                                       :: !(Maybe Bool)
+    , _dcCanChangeDriveBackgRound                         :: !(Maybe Bool)
+    , _dcCanRenameDrive                                   :: !(Maybe Bool)
+    , _dcCanDownload                                      :: !(Maybe Bool)
+    , _dcCanChangeDomainUsersOnlyRestriction              :: !(Maybe Bool)
+    , _dcCanTrashChildren                                 :: !(Maybe Bool)
+    , _dcCanAddChildren                                   :: !(Maybe Bool)
+    , _dcCanChangeCopyRequiresWriterPermissionRestriction :: !(Maybe Bool)
+    , _dcCanChangeDriveMembersOnlyRestriction             :: !(Maybe Bool)
+    , _dcCanListChildren                                  :: !(Maybe Bool)
+    , _dcCanEdit                                          :: !(Maybe Bool)
+    , _dcCanManageMembers                                 :: !(Maybe Bool)
+    , _dcCanReadRevisions                                 :: !(Maybe Bool)
+    , _dcCanDeleteChildren                                :: !(Maybe Bool)
+    , _dcCanCopy                                          :: !(Maybe Bool)
+    , _dcCanDeleteDrive                                   :: !(Maybe Bool)
+    , _dcCanShare                                         :: !(Maybe Bool)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DriveCapabilities' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcCanRename'
+--
+-- * 'dcCanComment'
+--
+-- * 'dcCanChangeDriveBackgRound'
+--
+-- * 'dcCanRenameDrive'
+--
+-- * 'dcCanDownload'
+--
+-- * 'dcCanChangeDomainUsersOnlyRestriction'
+--
+-- * 'dcCanTrashChildren'
+--
+-- * 'dcCanAddChildren'
+--
+-- * 'dcCanChangeCopyRequiresWriterPermissionRestriction'
+--
+-- * 'dcCanChangeDriveMembersOnlyRestriction'
+--
+-- * 'dcCanListChildren'
+--
+-- * 'dcCanEdit'
+--
+-- * 'dcCanManageMembers'
+--
+-- * 'dcCanReadRevisions'
+--
+-- * 'dcCanDeleteChildren'
+--
+-- * 'dcCanCopy'
+--
+-- * 'dcCanDeleteDrive'
+--
+-- * 'dcCanShare'
+driveCapabilities
+    :: DriveCapabilities
+driveCapabilities =
+  DriveCapabilities'
+    { _dcCanRename = Nothing
+    , _dcCanComment = Nothing
+    , _dcCanChangeDriveBackgRound = Nothing
+    , _dcCanRenameDrive = Nothing
+    , _dcCanDownload = Nothing
+    , _dcCanChangeDomainUsersOnlyRestriction = Nothing
+    , _dcCanTrashChildren = Nothing
+    , _dcCanAddChildren = Nothing
+    , _dcCanChangeCopyRequiresWriterPermissionRestriction = Nothing
+    , _dcCanChangeDriveMembersOnlyRestriction = Nothing
+    , _dcCanListChildren = Nothing
+    , _dcCanEdit = Nothing
+    , _dcCanManageMembers = Nothing
+    , _dcCanReadRevisions = Nothing
+    , _dcCanDeleteChildren = Nothing
+    , _dcCanCopy = Nothing
+    , _dcCanDeleteDrive = Nothing
+    , _dcCanShare = Nothing
+    }
+
+
+-- | Whether the current user can rename files or folders in this shared
+-- drive.
+dcCanRename :: Lens' DriveCapabilities (Maybe Bool)
+dcCanRename
+  = lens _dcCanRename (\ s a -> s{_dcCanRename = a})
+
+-- | Whether the current user can comment on files in this shared drive.
+dcCanComment :: Lens' DriveCapabilities (Maybe Bool)
+dcCanComment
+  = lens _dcCanComment (\ s a -> s{_dcCanComment = a})
+
+-- | Whether the current user can change the background of this shared drive.
+dcCanChangeDriveBackgRound :: Lens' DriveCapabilities (Maybe Bool)
+dcCanChangeDriveBackgRound
+  = lens _dcCanChangeDriveBackgRound
+      (\ s a -> s{_dcCanChangeDriveBackgRound = a})
+
+-- | Whether the current user can rename this shared drive.
+dcCanRenameDrive :: Lens' DriveCapabilities (Maybe Bool)
+dcCanRenameDrive
+  = lens _dcCanRenameDrive
+      (\ s a -> s{_dcCanRenameDrive = a})
+
+-- | Whether the current user can download files in this shared drive.
+dcCanDownload :: Lens' DriveCapabilities (Maybe Bool)
+dcCanDownload
+  = lens _dcCanDownload
+      (\ s a -> s{_dcCanDownload = a})
+
+-- | Whether the current user can change the domainUsersOnly restriction of
+-- this shared drive.
+dcCanChangeDomainUsersOnlyRestriction :: Lens' DriveCapabilities (Maybe Bool)
+dcCanChangeDomainUsersOnlyRestriction
+  = lens _dcCanChangeDomainUsersOnlyRestriction
+      (\ s a ->
+         s{_dcCanChangeDomainUsersOnlyRestriction = a})
+
+-- | Whether the current user can trash children from folders in this shared
+-- drive.
+dcCanTrashChildren :: Lens' DriveCapabilities (Maybe Bool)
+dcCanTrashChildren
+  = lens _dcCanTrashChildren
+      (\ s a -> s{_dcCanTrashChildren = a})
+
+-- | Whether the current user can add children to folders in this shared
+-- drive.
+dcCanAddChildren :: Lens' DriveCapabilities (Maybe Bool)
+dcCanAddChildren
+  = lens _dcCanAddChildren
+      (\ s a -> s{_dcCanAddChildren = a})
+
+-- | Whether the current user can change the copyRequiresWriterPermission
+-- restriction of this shared drive.
+dcCanChangeCopyRequiresWriterPermissionRestriction :: Lens' DriveCapabilities (Maybe Bool)
+dcCanChangeCopyRequiresWriterPermissionRestriction
+  = lens
+      _dcCanChangeCopyRequiresWriterPermissionRestriction
+      (\ s a ->
+         s{_dcCanChangeCopyRequiresWriterPermissionRestriction
+             = a})
+
+-- | Whether the current user can change the driveMembersOnly restriction of
+-- this shared drive.
+dcCanChangeDriveMembersOnlyRestriction :: Lens' DriveCapabilities (Maybe Bool)
+dcCanChangeDriveMembersOnlyRestriction
+  = lens _dcCanChangeDriveMembersOnlyRestriction
+      (\ s a ->
+         s{_dcCanChangeDriveMembersOnlyRestriction = a})
+
+-- | Whether the current user can list the children of folders in this shared
+-- drive.
+dcCanListChildren :: Lens' DriveCapabilities (Maybe Bool)
+dcCanListChildren
+  = lens _dcCanListChildren
+      (\ s a -> s{_dcCanListChildren = a})
+
+-- | Whether the current user can edit files in this shared drive
+dcCanEdit :: Lens' DriveCapabilities (Maybe Bool)
+dcCanEdit
+  = lens _dcCanEdit (\ s a -> s{_dcCanEdit = a})
+
+-- | Whether the current user can add members to this shared drive or remove
+-- them or change their role.
+dcCanManageMembers :: Lens' DriveCapabilities (Maybe Bool)
+dcCanManageMembers
+  = lens _dcCanManageMembers
+      (\ s a -> s{_dcCanManageMembers = a})
+
+-- | Whether the current user can read the revisions resource of files in
+-- this shared drive.
+dcCanReadRevisions :: Lens' DriveCapabilities (Maybe Bool)
+dcCanReadRevisions
+  = lens _dcCanReadRevisions
+      (\ s a -> s{_dcCanReadRevisions = a})
+
+-- | Whether the current user can delete children from folders in this shared
+-- drive.
+dcCanDeleteChildren :: Lens' DriveCapabilities (Maybe Bool)
+dcCanDeleteChildren
+  = lens _dcCanDeleteChildren
+      (\ s a -> s{_dcCanDeleteChildren = a})
+
+-- | Whether the current user can copy files in this shared drive.
+dcCanCopy :: Lens' DriveCapabilities (Maybe Bool)
+dcCanCopy
+  = lens _dcCanCopy (\ s a -> s{_dcCanCopy = a})
+
+-- | Whether the current user can delete this shared drive. Attempting to
+-- delete the shared drive may still fail if there are untrashed items
+-- inside the shared drive.
+dcCanDeleteDrive :: Lens' DriveCapabilities (Maybe Bool)
+dcCanDeleteDrive
+  = lens _dcCanDeleteDrive
+      (\ s a -> s{_dcCanDeleteDrive = a})
+
+-- | Whether the current user can share files or folders in this shared
+-- drive.
+dcCanShare :: Lens' DriveCapabilities (Maybe Bool)
+dcCanShare
+  = lens _dcCanShare (\ s a -> s{_dcCanShare = a})
+
+instance FromJSON DriveCapabilities where
+        parseJSON
+          = withObject "DriveCapabilities"
+              (\ o ->
+                 DriveCapabilities' <$>
+                   (o .:? "canRename") <*> (o .:? "canComment") <*>
+                     (o .:? "canChangeDriveBackground")
+                     <*> (o .:? "canRenameDrive")
+                     <*> (o .:? "canDownload")
+                     <*> (o .:? "canChangeDomainUsersOnlyRestriction")
+                     <*> (o .:? "canTrashChildren")
+                     <*> (o .:? "canAddChildren")
+                     <*>
+                     (o .:?
+                        "canChangeCopyRequiresWriterPermissionRestriction")
+                     <*> (o .:? "canChangeDriveMembersOnlyRestriction")
+                     <*> (o .:? "canListChildren")
+                     <*> (o .:? "canEdit")
+                     <*> (o .:? "canManageMembers")
+                     <*> (o .:? "canReadRevisions")
+                     <*> (o .:? "canDeleteChildren")
+                     <*> (o .:? "canCopy")
+                     <*> (o .:? "canDeleteDrive")
+                     <*> (o .:? "canShare"))
+
+instance ToJSON DriveCapabilities where
+        toJSON DriveCapabilities'{..}
+          = object
+              (catMaybes
+                 [("canRename" .=) <$> _dcCanRename,
+                  ("canComment" .=) <$> _dcCanComment,
+                  ("canChangeDriveBackground" .=) <$>
+                    _dcCanChangeDriveBackgRound,
+                  ("canRenameDrive" .=) <$> _dcCanRenameDrive,
+                  ("canDownload" .=) <$> _dcCanDownload,
+                  ("canChangeDomainUsersOnlyRestriction" .=) <$>
+                    _dcCanChangeDomainUsersOnlyRestriction,
+                  ("canTrashChildren" .=) <$> _dcCanTrashChildren,
+                  ("canAddChildren" .=) <$> _dcCanAddChildren,
+                  ("canChangeCopyRequiresWriterPermissionRestriction"
+                     .=)
+                    <$>
+                    _dcCanChangeCopyRequiresWriterPermissionRestriction,
+                  ("canChangeDriveMembersOnlyRestriction" .=) <$>
+                    _dcCanChangeDriveMembersOnlyRestriction,
+                  ("canListChildren" .=) <$> _dcCanListChildren,
+                  ("canEdit" .=) <$> _dcCanEdit,
+                  ("canManageMembers" .=) <$> _dcCanManageMembers,
+                  ("canReadRevisions" .=) <$> _dcCanReadRevisions,
+                  ("canDeleteChildren" .=) <$> _dcCanDeleteChildren,
+                  ("canCopy" .=) <$> _dcCanCopy,
+                  ("canDeleteDrive" .=) <$> _dcCanDeleteDrive,
+                  ("canShare" .=) <$> _dcCanShare])
+
+-- | The user\'s storage quota limits and usage. All fields are measured in
+-- bytes.
+--
+-- /See:/ 'aboutStorageQuota' smart constructor.
+data AboutStorageQuota =
+  AboutStorageQuota'
+    { _asqUsageInDriveTrash :: !(Maybe (Textual Int64))
+    , _asqLimit             :: !(Maybe (Textual Int64))
+    , _asqUsage             :: !(Maybe (Textual Int64))
+    , _asqUsageInDrive      :: !(Maybe (Textual Int64))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AboutStorageQuota' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'asqUsageInDriveTrash'
+--
+-- * 'asqLimit'
+--
+-- * 'asqUsage'
+--
+-- * 'asqUsageInDrive'
+aboutStorageQuota
+    :: AboutStorageQuota
+aboutStorageQuota =
+  AboutStorageQuota'
+    { _asqUsageInDriveTrash = Nothing
+    , _asqLimit = Nothing
+    , _asqUsage = Nothing
+    , _asqUsageInDrive = Nothing
+    }
+
+
+-- | The usage by trashed files in Google Drive.
+asqUsageInDriveTrash :: Lens' AboutStorageQuota (Maybe Int64)
+asqUsageInDriveTrash
+  = lens _asqUsageInDriveTrash
+      (\ s a -> s{_asqUsageInDriveTrash = a})
+      . mapping _Coerce
+
+-- | The usage limit, if applicable. This will not be present if the user has
+-- unlimited storage.
+asqLimit :: Lens' AboutStorageQuota (Maybe Int64)
+asqLimit
+  = lens _asqLimit (\ s a -> s{_asqLimit = a}) .
+      mapping _Coerce
+
+-- | The total usage across all services.
+asqUsage :: Lens' AboutStorageQuota (Maybe Int64)
+asqUsage
+  = lens _asqUsage (\ s a -> s{_asqUsage = a}) .
+      mapping _Coerce
+
+-- | The usage by all files in Google Drive.
+asqUsageInDrive :: Lens' AboutStorageQuota (Maybe Int64)
+asqUsageInDrive
+  = lens _asqUsageInDrive
+      (\ s a -> s{_asqUsageInDrive = a})
+      . mapping _Coerce
+
+instance FromJSON AboutStorageQuota where
+        parseJSON
+          = withObject "AboutStorageQuota"
+              (\ o ->
+                 AboutStorageQuota' <$>
+                   (o .:? "usageInDriveTrash") <*> (o .:? "limit") <*>
+                     (o .:? "usage")
+                     <*> (o .:? "usageInDrive"))
+
+instance ToJSON AboutStorageQuota where
+        toJSON AboutStorageQuota'{..}
+          = object
+              (catMaybes
+                 [("usageInDriveTrash" .=) <$> _asqUsageInDriveTrash,
+                  ("limit" .=) <$> _asqLimit,
+                  ("usage" .=) <$> _asqUsage,
+                  ("usageInDrive" .=) <$> _asqUsageInDrive])
+
+-- | A reply to a comment on a file.
+--
+-- /See:/ 'reply' smart constructor.
+data Reply =
+  Reply'
+    { _rHTMLContent  :: !(Maybe Text)
+    , _rModifiedTime :: !(Maybe DateTime')
+    , _rCreatedTime  :: !(Maybe DateTime')
+    , _rKind         :: !Text
+    , _rAction       :: !(Maybe Text)
+    , _rContent      :: !(Maybe Text)
+    , _rAuthor       :: !(Maybe User)
+    , _rId           :: !(Maybe Text)
+    , _rDeleted      :: !(Maybe Bool)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Reply' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rHTMLContent'
+--
+-- * 'rModifiedTime'
+--
+-- * 'rCreatedTime'
+--
+-- * 'rKind'
+--
+-- * 'rAction'
+--
+-- * 'rContent'
+--
+-- * 'rAuthor'
+--
+-- * 'rId'
+--
+-- * 'rDeleted'
+reply
+    :: Reply
+reply =
+  Reply'
+    { _rHTMLContent = Nothing
+    , _rModifiedTime = Nothing
+    , _rCreatedTime = Nothing
+    , _rKind = "drive#reply"
+    , _rAction = Nothing
+    , _rContent = Nothing
+    , _rAuthor = Nothing
+    , _rId = Nothing
+    , _rDeleted = Nothing
+    }
+
+
+-- | The content of the reply with HTML formatting.
+rHTMLContent :: Lens' Reply (Maybe Text)
+rHTMLContent
+  = lens _rHTMLContent (\ s a -> s{_rHTMLContent = a})
+
+-- | The last time the reply was modified (RFC 3339 date-time).
+rModifiedTime :: Lens' Reply (Maybe UTCTime)
+rModifiedTime
+  = lens _rModifiedTime
+      (\ s a -> s{_rModifiedTime = a})
+      . mapping _DateTime
+
+-- | The time at which the reply was created (RFC 3339 date-time).
+rCreatedTime :: Lens' Reply (Maybe UTCTime)
+rCreatedTime
+  = lens _rCreatedTime (\ s a -> s{_rCreatedTime = a})
+      . mapping _DateTime
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"drive#reply\".
+rKind :: Lens' Reply Text
+rKind = lens _rKind (\ s a -> s{_rKind = a})
+
+-- | The action the reply performed to the parent comment. Valid values are:
+-- - resolve - reopen
+rAction :: Lens' Reply (Maybe Text)
+rAction = lens _rAction (\ s a -> s{_rAction = a})
+
+-- | The plain text content of the reply. This field is used for setting the
+-- content, while htmlContent should be displayed. This is required on
+-- creates if no action is specified.
+rContent :: Lens' Reply (Maybe Text)
+rContent = lens _rContent (\ s a -> s{_rContent = a})
+
+-- | The user who created the reply.
+rAuthor :: Lens' Reply (Maybe User)
+rAuthor = lens _rAuthor (\ s a -> s{_rAuthor = a})
+
+-- | The ID of the reply.
+rId :: Lens' Reply (Maybe Text)
+rId = lens _rId (\ s a -> s{_rId = a})
+
+-- | Whether the reply has been deleted. A deleted reply has no content.
+rDeleted :: Lens' Reply (Maybe Bool)
+rDeleted = lens _rDeleted (\ s a -> s{_rDeleted = a})
+
+instance FromJSON Reply where
+        parseJSON
+          = withObject "Reply"
+              (\ o ->
+                 Reply' <$>
+                   (o .:? "htmlContent") <*> (o .:? "modifiedTime") <*>
+                     (o .:? "createdTime")
+                     <*> (o .:? "kind" .!= "drive#reply")
+                     <*> (o .:? "action")
+                     <*> (o .:? "content")
+                     <*> (o .:? "author")
+                     <*> (o .:? "id")
+                     <*> (o .:? "deleted"))
+
+instance ToJSON Reply where
+        toJSON Reply'{..}
+          = object
+              (catMaybes
+                 [("htmlContent" .=) <$> _rHTMLContent,
+                  ("modifiedTime" .=) <$> _rModifiedTime,
+                  ("createdTime" .=) <$> _rCreatedTime,
+                  Just ("kind" .= _rKind), ("action" .=) <$> _rAction,
+                  ("content" .=) <$> _rContent,
+                  ("author" .=) <$> _rAuthor, ("id" .=) <$> _rId,
+                  ("deleted" .=) <$> _rDeleted])
+
+-- | A map of source MIME type to possible targets for all supported imports.
+--
+-- /See:/ 'aboutImportFormats' smart constructor.
+newtype AboutImportFormats =
+  AboutImportFormats'
+    { _aifAddtional :: HashMap Text [Text]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AboutImportFormats' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aifAddtional'
+aboutImportFormats
+    :: HashMap Text [Text] -- ^ 'aifAddtional'
+    -> AboutImportFormats
+aboutImportFormats pAifAddtional_ =
+  AboutImportFormats' {_aifAddtional = _Coerce # pAifAddtional_}
+
+
+aifAddtional :: Lens' AboutImportFormats (HashMap Text [Text])
+aifAddtional
+  = lens _aifAddtional (\ s a -> s{_aifAddtional = a})
+      . _Coerce
+
+instance FromJSON AboutImportFormats where
+        parseJSON
+          = withObject "AboutImportFormats"
+              (\ o -> AboutImportFormats' <$> (parseJSONObject o))
+
+instance ToJSON AboutImportFormats where
+        toJSON = toJSON . _aifAddtional
+
+-- | Capabilities the current user has on this file. Each capability
+-- corresponds to a fine-grained action that a user may take.
+--
+-- /See:/ 'fileCapabilities' smart constructor.
+data FileCapabilities =
+  FileCapabilities'
+    { _fcCanRename                             :: !(Maybe Bool)
+    , _fcCanComment                            :: !(Maybe Bool)
+    , _fcCanMoveChildrenWithinDrive            :: !(Maybe Bool)
+    , _fcCanMoveChildrenWithinTeamDrive        :: !(Maybe Bool)
+    , _fcCanDelete                             :: !(Maybe Bool)
+    , _fcCanMoveItemIntoTeamDrive              :: !(Maybe Bool)
+    , _fcCanDownload                           :: !(Maybe Bool)
+    , _fcCanTrash                              :: !(Maybe Bool)
+    , _fcCanUntrash                            :: !(Maybe Bool)
+    , _fcCanTrashChildren                      :: !(Maybe Bool)
+    , _fcCanMoveItemOutOfDrive                 :: !(Maybe Bool)
+    , _fcCanAddChildren                        :: !(Maybe Bool)
+    , _fcCanRemoveChildren                     :: !(Maybe Bool)
+    , _fcCanMoveTeamDriveItem                  :: !(Maybe Bool)
+    , _fcCanMoveItemWithinTeamDrive            :: !(Maybe Bool)
+    , _fcCanReadTeamDrive                      :: !(Maybe Bool)
+    , _fcCanReadDrive                          :: !(Maybe Bool)
+    , _fcCanChangeCopyRequiresWriterPermission :: !(Maybe Bool)
+    , _fcCanMoveChildrenOutOfDrive             :: !(Maybe Bool)
+    , _fcCanListChildren                       :: !(Maybe Bool)
+    , _fcCanMoveChildrenOutOfTeamDrive         :: !(Maybe Bool)
+    , _fcCanEdit                               :: !(Maybe Bool)
+    , _fcCanChangeViewersCanCopyContent        :: !(Maybe Bool)
+    , _fcCanReadRevisions                      :: !(Maybe Bool)
+    , _fcCanDeleteChildren                     :: !(Maybe Bool)
+    , _fcCanMoveItemOutOfTeamDrive             :: !(Maybe Bool)
+    , _fcCanCopy                               :: !(Maybe Bool)
+    , _fcCanMoveItemWithinDrive                :: !(Maybe Bool)
+    , _fcCanShare                              :: !(Maybe Bool)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FileCapabilities' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fcCanRename'
+--
+-- * 'fcCanComment'
+--
+-- * 'fcCanMoveChildrenWithinDrive'
+--
+-- * 'fcCanMoveChildrenWithinTeamDrive'
+--
+-- * 'fcCanDelete'
+--
+-- * 'fcCanMoveItemIntoTeamDrive'
+--
+-- * 'fcCanDownload'
+--
+-- * 'fcCanTrash'
+--
+-- * 'fcCanUntrash'
+--
+-- * 'fcCanTrashChildren'
+--
+-- * 'fcCanMoveItemOutOfDrive'
+--
+-- * 'fcCanAddChildren'
+--
+-- * 'fcCanRemoveChildren'
+--
+-- * 'fcCanMoveTeamDriveItem'
+--
+-- * 'fcCanMoveItemWithinTeamDrive'
+--
+-- * 'fcCanReadTeamDrive'
+--
+-- * 'fcCanReadDrive'
+--
+-- * 'fcCanChangeCopyRequiresWriterPermission'
+--
+-- * 'fcCanMoveChildrenOutOfDrive'
+--
+-- * 'fcCanListChildren'
+--
+-- * 'fcCanMoveChildrenOutOfTeamDrive'
+--
+-- * 'fcCanEdit'
+--
+-- * 'fcCanChangeViewersCanCopyContent'
+--
+-- * 'fcCanReadRevisions'
+--
+-- * 'fcCanDeleteChildren'
+--
+-- * 'fcCanMoveItemOutOfTeamDrive'
+--
+-- * 'fcCanCopy'
+--
+-- * 'fcCanMoveItemWithinDrive'
+--
+-- * 'fcCanShare'
+fileCapabilities
+    :: FileCapabilities
+fileCapabilities =
+  FileCapabilities'
+    { _fcCanRename = Nothing
+    , _fcCanComment = Nothing
+    , _fcCanMoveChildrenWithinDrive = Nothing
+    , _fcCanMoveChildrenWithinTeamDrive = Nothing
+    , _fcCanDelete = Nothing
+    , _fcCanMoveItemIntoTeamDrive = Nothing
+    , _fcCanDownload = Nothing
+    , _fcCanTrash = Nothing
+    , _fcCanUntrash = Nothing
+    , _fcCanTrashChildren = Nothing
+    , _fcCanMoveItemOutOfDrive = Nothing
+    , _fcCanAddChildren = Nothing
+    , _fcCanRemoveChildren = Nothing
+    , _fcCanMoveTeamDriveItem = Nothing
+    , _fcCanMoveItemWithinTeamDrive = Nothing
+    , _fcCanReadTeamDrive = Nothing
+    , _fcCanReadDrive = Nothing
+    , _fcCanChangeCopyRequiresWriterPermission = Nothing
+    , _fcCanMoveChildrenOutOfDrive = Nothing
+    , _fcCanListChildren = Nothing
+    , _fcCanMoveChildrenOutOfTeamDrive = Nothing
+    , _fcCanEdit = Nothing
+    , _fcCanChangeViewersCanCopyContent = Nothing
+    , _fcCanReadRevisions = Nothing
+    , _fcCanDeleteChildren = Nothing
+    , _fcCanMoveItemOutOfTeamDrive = Nothing
+    , _fcCanCopy = Nothing
+    , _fcCanMoveItemWithinDrive = Nothing
+    , _fcCanShare = Nothing
+    }
+
+
+-- | Whether the current user can rename this file.
+fcCanRename :: Lens' FileCapabilities (Maybe Bool)
+fcCanRename
+  = lens _fcCanRename (\ s a -> s{_fcCanRename = a})
+
+-- | Whether the current user can comment on this file.
+fcCanComment :: Lens' FileCapabilities (Maybe Bool)
+fcCanComment
+  = lens _fcCanComment (\ s a -> s{_fcCanComment = a})
+
+-- | Whether the current user can move children of this folder within the
+-- shared drive. This is false when the item is not a folder. Only
+-- populated for items in shared drives.
+fcCanMoveChildrenWithinDrive :: Lens' FileCapabilities (Maybe Bool)
+fcCanMoveChildrenWithinDrive
+  = lens _fcCanMoveChildrenWithinDrive
+      (\ s a -> s{_fcCanMoveChildrenWithinDrive = a})
+
+-- | Deprecated - use canMoveChildrenWithinDrive instead.
+fcCanMoveChildrenWithinTeamDrive :: Lens' FileCapabilities (Maybe Bool)
+fcCanMoveChildrenWithinTeamDrive
+  = lens _fcCanMoveChildrenWithinTeamDrive
+      (\ s a -> s{_fcCanMoveChildrenWithinTeamDrive = a})
+
+-- | Whether the current user can delete this file.
+fcCanDelete :: Lens' FileCapabilities (Maybe Bool)
+fcCanDelete
+  = lens _fcCanDelete (\ s a -> s{_fcCanDelete = a})
+
+-- | Deprecated - use canMoveItemOutOfDrive instead.
+fcCanMoveItemIntoTeamDrive :: Lens' FileCapabilities (Maybe Bool)
+fcCanMoveItemIntoTeamDrive
+  = lens _fcCanMoveItemIntoTeamDrive
+      (\ s a -> s{_fcCanMoveItemIntoTeamDrive = a})
+
+-- | Whether the current user can download this file.
+fcCanDownload :: Lens' FileCapabilities (Maybe Bool)
+fcCanDownload
+  = lens _fcCanDownload
+      (\ s a -> s{_fcCanDownload = a})
+
+-- | Whether the current user can move this file to trash.
+fcCanTrash :: Lens' FileCapabilities (Maybe Bool)
+fcCanTrash
+  = lens _fcCanTrash (\ s a -> s{_fcCanTrash = a})
+
+-- | Whether the current user can restore this file from trash.
+fcCanUntrash :: Lens' FileCapabilities (Maybe Bool)
+fcCanUntrash
+  = lens _fcCanUntrash (\ s a -> s{_fcCanUntrash = a})
+
+-- | Whether the current user can trash children of this folder. This is
+-- false when the item is not a folder. Only populated for items in shared
+-- drives.
+fcCanTrashChildren :: Lens' FileCapabilities (Maybe Bool)
+fcCanTrashChildren
+  = lens _fcCanTrashChildren
+      (\ s a -> s{_fcCanTrashChildren = a})
+
+-- | Whether the current user can move this item outside of this drive by
+-- changing its parent. Note that a request to change the parent of the
+-- item may still fail depending on the new parent that is being added.
+fcCanMoveItemOutOfDrive :: Lens' FileCapabilities (Maybe Bool)
+fcCanMoveItemOutOfDrive
+  = lens _fcCanMoveItemOutOfDrive
+      (\ s a -> s{_fcCanMoveItemOutOfDrive = a})
+
+-- | Whether the current user can add children to this folder. This is always
+-- false when the item is not a folder.
+fcCanAddChildren :: Lens' FileCapabilities (Maybe Bool)
+fcCanAddChildren
+  = lens _fcCanAddChildren
+      (\ s a -> s{_fcCanAddChildren = a})
+
+-- | Whether the current user can remove children from this folder. This is
+-- always false when the item is not a folder. For a folder in a shared
+-- drive, use canDeleteChildren or canTrashChildren instead.
+fcCanRemoveChildren :: Lens' FileCapabilities (Maybe Bool)
+fcCanRemoveChildren
+  = lens _fcCanRemoveChildren
+      (\ s a -> s{_fcCanRemoveChildren = a})
+
+-- | Deprecated - use canMoveItemWithinDrive or canMoveItemOutOfDrive
+-- instead.
+fcCanMoveTeamDriveItem :: Lens' FileCapabilities (Maybe Bool)
+fcCanMoveTeamDriveItem
+  = lens _fcCanMoveTeamDriveItem
+      (\ s a -> s{_fcCanMoveTeamDriveItem = a})
+
+-- | Deprecated - use canMoveItemWithinDrive instead.
+fcCanMoveItemWithinTeamDrive :: Lens' FileCapabilities (Maybe Bool)
+fcCanMoveItemWithinTeamDrive
+  = lens _fcCanMoveItemWithinTeamDrive
+      (\ s a -> s{_fcCanMoveItemWithinTeamDrive = a})
+
+-- | Deprecated - use canReadDrive instead.
+fcCanReadTeamDrive :: Lens' FileCapabilities (Maybe Bool)
+fcCanReadTeamDrive
+  = lens _fcCanReadTeamDrive
+      (\ s a -> s{_fcCanReadTeamDrive = a})
+
+-- | Whether the current user can read the shared drive to which this file
+-- belongs. Only populated for items in shared drives.
+fcCanReadDrive :: Lens' FileCapabilities (Maybe Bool)
+fcCanReadDrive
+  = lens _fcCanReadDrive
+      (\ s a -> s{_fcCanReadDrive = a})
+
+-- | Whether the current user can change the copyRequiresWriterPermission
+-- restriction of this file.
+fcCanChangeCopyRequiresWriterPermission :: Lens' FileCapabilities (Maybe Bool)
+fcCanChangeCopyRequiresWriterPermission
+  = lens _fcCanChangeCopyRequiresWriterPermission
+      (\ s a ->
+         s{_fcCanChangeCopyRequiresWriterPermission = a})
+
+-- | Whether the current user can move children of this folder outside of the
+-- shared drive. This is false when the item is not a folder. Only
+-- populated for items in shared drives.
+fcCanMoveChildrenOutOfDrive :: Lens' FileCapabilities (Maybe Bool)
+fcCanMoveChildrenOutOfDrive
+  = lens _fcCanMoveChildrenOutOfDrive
+      (\ s a -> s{_fcCanMoveChildrenOutOfDrive = a})
+
+-- | Whether the current user can list the children of this folder. This is
+-- always false when the item is not a folder.
+fcCanListChildren :: Lens' FileCapabilities (Maybe Bool)
+fcCanListChildren
+  = lens _fcCanListChildren
+      (\ s a -> s{_fcCanListChildren = a})
+
+-- | Deprecated - use canMoveChildrenOutOfDrive instead.
+fcCanMoveChildrenOutOfTeamDrive :: Lens' FileCapabilities (Maybe Bool)
+fcCanMoveChildrenOutOfTeamDrive
+  = lens _fcCanMoveChildrenOutOfTeamDrive
+      (\ s a -> s{_fcCanMoveChildrenOutOfTeamDrive = a})
+
+-- | Whether the current user can edit this file.
+fcCanEdit :: Lens' FileCapabilities (Maybe Bool)
+fcCanEdit
+  = lens _fcCanEdit (\ s a -> s{_fcCanEdit = a})
+
+-- | Deprecated
+fcCanChangeViewersCanCopyContent :: Lens' FileCapabilities (Maybe Bool)
+fcCanChangeViewersCanCopyContent
+  = lens _fcCanChangeViewersCanCopyContent
+      (\ s a -> s{_fcCanChangeViewersCanCopyContent = a})
+
+-- | Whether the current user can read the revisions resource of this file.
+-- For a shared drive item, whether revisions of non-folder descendants of
+-- this item, or this item itself if it is not a folder, can be read.
+fcCanReadRevisions :: Lens' FileCapabilities (Maybe Bool)
+fcCanReadRevisions
+  = lens _fcCanReadRevisions
+      (\ s a -> s{_fcCanReadRevisions = a})
+
+-- | Whether the current user can delete children of this folder. This is
+-- false when the item is not a folder. Only populated for items in shared
+-- drives.
+fcCanDeleteChildren :: Lens' FileCapabilities (Maybe Bool)
+fcCanDeleteChildren
+  = lens _fcCanDeleteChildren
+      (\ s a -> s{_fcCanDeleteChildren = a})
+
+-- | Deprecated - use canMoveItemOutOfDrive instead.
+fcCanMoveItemOutOfTeamDrive :: Lens' FileCapabilities (Maybe Bool)
+fcCanMoveItemOutOfTeamDrive
+  = lens _fcCanMoveItemOutOfTeamDrive
+      (\ s a -> s{_fcCanMoveItemOutOfTeamDrive = a})
+
+-- | Whether the current user can copy this file. For an item in a shared
+-- drive, whether the current user can copy non-folder descendants of this
+-- item, or this item itself if it is not a folder.
+fcCanCopy :: Lens' FileCapabilities (Maybe Bool)
+fcCanCopy
+  = lens _fcCanCopy (\ s a -> s{_fcCanCopy = a})
+
+-- | Whether the current user can move this item within this shared drive.
+-- Note that a request to change the parent of the item may still fail
+-- depending on the new parent that is being added. Only populated for
+-- items in shared drives.
+fcCanMoveItemWithinDrive :: Lens' FileCapabilities (Maybe Bool)
+fcCanMoveItemWithinDrive
+  = lens _fcCanMoveItemWithinDrive
+      (\ s a -> s{_fcCanMoveItemWithinDrive = a})
+
+-- | Whether the current user can modify the sharing settings for this file.
+fcCanShare :: Lens' FileCapabilities (Maybe Bool)
+fcCanShare
+  = lens _fcCanShare (\ s a -> s{_fcCanShare = a})
+
+instance FromJSON FileCapabilities where
+        parseJSON
+          = withObject "FileCapabilities"
+              (\ o ->
+                 FileCapabilities' <$>
+                   (o .:? "canRename") <*> (o .:? "canComment") <*>
+                     (o .:? "canMoveChildrenWithinDrive")
+                     <*> (o .:? "canMoveChildrenWithinTeamDrive")
+                     <*> (o .:? "canDelete")
+                     <*> (o .:? "canMoveItemIntoTeamDrive")
+                     <*> (o .:? "canDownload")
+                     <*> (o .:? "canTrash")
+                     <*> (o .:? "canUntrash")
+                     <*> (o .:? "canTrashChildren")
+                     <*> (o .:? "canMoveItemOutOfDrive")
+                     <*> (o .:? "canAddChildren")
+                     <*> (o .:? "canRemoveChildren")
+                     <*> (o .:? "canMoveTeamDriveItem")
+                     <*> (o .:? "canMoveItemWithinTeamDrive")
+                     <*> (o .:? "canReadTeamDrive")
+                     <*> (o .:? "canReadDrive")
+                     <*> (o .:? "canChangeCopyRequiresWriterPermission")
+                     <*> (o .:? "canMoveChildrenOutOfDrive")
+                     <*> (o .:? "canListChildren")
+                     <*> (o .:? "canMoveChildrenOutOfTeamDrive")
+                     <*> (o .:? "canEdit")
+                     <*> (o .:? "canChangeViewersCanCopyContent")
+                     <*> (o .:? "canReadRevisions")
+                     <*> (o .:? "canDeleteChildren")
+                     <*> (o .:? "canMoveItemOutOfTeamDrive")
+                     <*> (o .:? "canCopy")
+                     <*> (o .:? "canMoveItemWithinDrive")
+                     <*> (o .:? "canShare"))
+
+instance ToJSON FileCapabilities where
+        toJSON FileCapabilities'{..}
+          = object
+              (catMaybes
+                 [("canRename" .=) <$> _fcCanRename,
+                  ("canComment" .=) <$> _fcCanComment,
+                  ("canMoveChildrenWithinDrive" .=) <$>
+                    _fcCanMoveChildrenWithinDrive,
+                  ("canMoveChildrenWithinTeamDrive" .=) <$>
+                    _fcCanMoveChildrenWithinTeamDrive,
+                  ("canDelete" .=) <$> _fcCanDelete,
+                  ("canMoveItemIntoTeamDrive" .=) <$>
+                    _fcCanMoveItemIntoTeamDrive,
+                  ("canDownload" .=) <$> _fcCanDownload,
+                  ("canTrash" .=) <$> _fcCanTrash,
+                  ("canUntrash" .=) <$> _fcCanUntrash,
+                  ("canTrashChildren" .=) <$> _fcCanTrashChildren,
+                  ("canMoveItemOutOfDrive" .=) <$>
+                    _fcCanMoveItemOutOfDrive,
+                  ("canAddChildren" .=) <$> _fcCanAddChildren,
+                  ("canRemoveChildren" .=) <$> _fcCanRemoveChildren,
+                  ("canMoveTeamDriveItem" .=) <$>
+                    _fcCanMoveTeamDriveItem,
+                  ("canMoveItemWithinTeamDrive" .=) <$>
+                    _fcCanMoveItemWithinTeamDrive,
+                  ("canReadTeamDrive" .=) <$> _fcCanReadTeamDrive,
+                  ("canReadDrive" .=) <$> _fcCanReadDrive,
+                  ("canChangeCopyRequiresWriterPermission" .=) <$>
+                    _fcCanChangeCopyRequiresWriterPermission,
+                  ("canMoveChildrenOutOfDrive" .=) <$>
+                    _fcCanMoveChildrenOutOfDrive,
+                  ("canListChildren" .=) <$> _fcCanListChildren,
+                  ("canMoveChildrenOutOfTeamDrive" .=) <$>
+                    _fcCanMoveChildrenOutOfTeamDrive,
+                  ("canEdit" .=) <$> _fcCanEdit,
+                  ("canChangeViewersCanCopyContent" .=) <$>
+                    _fcCanChangeViewersCanCopyContent,
+                  ("canReadRevisions" .=) <$> _fcCanReadRevisions,
+                  ("canDeleteChildren" .=) <$> _fcCanDeleteChildren,
+                  ("canMoveItemOutOfTeamDrive" .=) <$>
+                    _fcCanMoveItemOutOfTeamDrive,
+                  ("canCopy" .=) <$> _fcCanCopy,
+                  ("canMoveItemWithinDrive" .=) <$>
+                    _fcCanMoveItemWithinDrive,
+                  ("canShare" .=) <$> _fcCanShare])
+
+-- | A list of replies to a comment on a file.
+--
+-- /See:/ 'replyList' smart constructor.
+data ReplyList =
+  ReplyList'
+    { _rlNextPageToken :: !(Maybe Text)
+    , _rlKind          :: !Text
+    , _rlReplies       :: !(Maybe [Reply])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ReplyList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rlNextPageToken'
+--
+-- * 'rlKind'
+--
+-- * 'rlReplies'
+replyList
+    :: ReplyList
+replyList =
+  ReplyList'
+    { _rlNextPageToken = Nothing
+    , _rlKind = "drive#replyList"
+    , _rlReplies = Nothing
+    }
+
+
+-- | The page token for the next page of replies. This will be absent if the
+-- end of the replies list has been reached. If the token is rejected for
+-- any reason, it should be discarded, and pagination should be restarted
+-- from the first page of results.
+rlNextPageToken :: Lens' ReplyList (Maybe Text)
+rlNextPageToken
+  = lens _rlNextPageToken
+      (\ s a -> s{_rlNextPageToken = a})
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"drive#replyList\".
+rlKind :: Lens' ReplyList Text
+rlKind = lens _rlKind (\ s a -> s{_rlKind = a})
+
+-- | The list of replies. If nextPageToken is populated, then this list may
+-- be incomplete and an additional page of results should be fetched.
+rlReplies :: Lens' ReplyList [Reply]
+rlReplies
+  = lens _rlReplies (\ s a -> s{_rlReplies = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON ReplyList where
+        parseJSON
+          = withObject "ReplyList"
+              (\ o ->
+                 ReplyList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "drive#replyList")
+                     <*> (o .:? "replies" .!= mempty))
+
+instance ToJSON ReplyList where
+        toJSON ReplyList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _rlNextPageToken,
+                  Just ("kind" .= _rlKind),
+                  ("replies" .=) <$> _rlReplies])
+
+-- | An image file and cropping parameters from which a background image for
+-- this shared drive is set. This is a write only field; it can only be set
+-- on drive.drives.update requests that don\'t set themeId. When specified,
+-- all fields of the backgroundImageFile must be set.
+--
+-- /See:/ 'driveBackgRoundImageFile' smart constructor.
+data DriveBackgRoundImageFile =
+  DriveBackgRoundImageFile'
+    { _dbrifXCoordinate :: !(Maybe (Textual Double))
+    , _dbrifYCoordinate :: !(Maybe (Textual Double))
+    , _dbrifWidth       :: !(Maybe (Textual Double))
+    , _dbrifId          :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DriveBackgRoundImageFile' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dbrifXCoordinate'
+--
+-- * 'dbrifYCoordinate'
+--
+-- * 'dbrifWidth'
+--
+-- * 'dbrifId'
+driveBackgRoundImageFile
+    :: DriveBackgRoundImageFile
+driveBackgRoundImageFile =
+  DriveBackgRoundImageFile'
+    { _dbrifXCoordinate = Nothing
+    , _dbrifYCoordinate = Nothing
+    , _dbrifWidth = Nothing
+    , _dbrifId = Nothing
+    }
+
+
+-- | The X coordinate of the upper left corner of the cropping area in the
+-- background image. This is a value in the closed range of 0 to 1. This
+-- value represents the horizontal distance from the left side of the
+-- entire image to the left side of the cropping area divided by the width
+-- of the entire image.
+dbrifXCoordinate :: Lens' DriveBackgRoundImageFile (Maybe Double)
+dbrifXCoordinate
+  = lens _dbrifXCoordinate
+      (\ s a -> s{_dbrifXCoordinate = a})
+      . mapping _Coerce
+
+-- | The Y coordinate of the upper left corner of the cropping area in the
+-- background image. This is a value in the closed range of 0 to 1. This
+-- value represents the vertical distance from the top side of the entire
+-- image to the top side of the cropping area divided by the height of the
+-- entire image.
+dbrifYCoordinate :: Lens' DriveBackgRoundImageFile (Maybe Double)
+dbrifYCoordinate
+  = lens _dbrifYCoordinate
+      (\ s a -> s{_dbrifYCoordinate = a})
+      . mapping _Coerce
+
+-- | The width of the cropped image in the closed range of 0 to 1. This value
+-- represents the width of the cropped image divided by the width of the
+-- entire image. The height is computed by applying a width to height
+-- aspect ratio of 80 to 9. The resulting image must be at least 1280
+-- pixels wide and 144 pixels high.
+dbrifWidth :: Lens' DriveBackgRoundImageFile (Maybe Double)
+dbrifWidth
+  = lens _dbrifWidth (\ s a -> s{_dbrifWidth = a}) .
+      mapping _Coerce
+
+-- | The ID of an image file in Google Drive to use for the background image.
+dbrifId :: Lens' DriveBackgRoundImageFile (Maybe Text)
+dbrifId = lens _dbrifId (\ s a -> s{_dbrifId = a})
+
+instance FromJSON DriveBackgRoundImageFile where
+        parseJSON
+          = withObject "DriveBackgRoundImageFile"
+              (\ o ->
+                 DriveBackgRoundImageFile' <$>
+                   (o .:? "xCoordinate") <*> (o .:? "yCoordinate") <*>
+                     (o .:? "width")
+                     <*> (o .:? "id"))
+
+instance ToJSON DriveBackgRoundImageFile where
+        toJSON DriveBackgRoundImageFile'{..}
+          = object
+              (catMaybes
+                 [("xCoordinate" .=) <$> _dbrifXCoordinate,
+                  ("yCoordinate" .=) <$> _dbrifYCoordinate,
+                  ("width" .=) <$> _dbrifWidth,
+                  ("id" .=) <$> _dbrifId])
+
+-- | A thumbnail for the file. This will only be used if Google Drive cannot
+-- generate a standard thumbnail.
+--
+-- /See:/ 'fileContentHintsThumbnail' smart constructor.
+data FileContentHintsThumbnail =
+  FileContentHintsThumbnail'
+    { _fchtImage    :: !(Maybe Bytes)
+    , _fchtMimeType :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FileContentHintsThumbnail' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fchtImage'
+--
+-- * 'fchtMimeType'
+fileContentHintsThumbnail
+    :: FileContentHintsThumbnail
+fileContentHintsThumbnail =
+  FileContentHintsThumbnail' {_fchtImage = Nothing, _fchtMimeType = Nothing}
+
+
+-- | The thumbnail data encoded with URL-safe Base64 (RFC 4648 section 5).
+fchtImage :: Lens' FileContentHintsThumbnail (Maybe ByteString)
+fchtImage
+  = lens _fchtImage (\ s a -> s{_fchtImage = a}) .
+      mapping _Bytes
+
+-- | The MIME type of the thumbnail.
+fchtMimeType :: Lens' FileContentHintsThumbnail (Maybe Text)
+fchtMimeType
+  = lens _fchtMimeType (\ s a -> s{_fchtMimeType = a})
+
+instance FromJSON FileContentHintsThumbnail where
+        parseJSON
+          = withObject "FileContentHintsThumbnail"
+              (\ o ->
+                 FileContentHintsThumbnail' <$>
+                   (o .:? "image") <*> (o .:? "mimeType"))
+
+instance ToJSON FileContentHintsThumbnail where
+        toJSON FileContentHintsThumbnail'{..}
+          = object
+              (catMaybes
+                 [("image" .=) <$> _fchtImage,
+                  ("mimeType" .=) <$> _fchtMimeType])
+
+-- | A list of Team Drives.
+--
+-- /See:/ 'teamDriveList' smart constructor.
+data TeamDriveList =
+  TeamDriveList'
+    { _tdlNextPageToken :: !(Maybe Text)
+    , _tdlTeamDrives    :: !(Maybe [TeamDrive])
+    , _tdlKind          :: !Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TeamDriveList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tdlNextPageToken'
+--
+-- * 'tdlTeamDrives'
+--
+-- * 'tdlKind'
+teamDriveList
+    :: TeamDriveList
+teamDriveList =
+  TeamDriveList'
+    { _tdlNextPageToken = Nothing
+    , _tdlTeamDrives = Nothing
+    , _tdlKind = "drive#teamDriveList"
+    }
+
+
+-- | The page token for the next page of Team Drives. This will be absent if
+-- the end of the Team Drives list has been reached. If the token is
+-- rejected for any reason, it should be discarded, and pagination should
+-- be restarted from the first page of results.
+tdlNextPageToken :: Lens' TeamDriveList (Maybe Text)
+tdlNextPageToken
+  = lens _tdlNextPageToken
+      (\ s a -> s{_tdlNextPageToken = a})
+
+-- | The list of Team Drives. If nextPageToken is populated, then this list
+-- may be incomplete and an additional page of results should be fetched.
+tdlTeamDrives :: Lens' TeamDriveList [TeamDrive]
+tdlTeamDrives
+  = lens _tdlTeamDrives
+      (\ s a -> s{_tdlTeamDrives = a})
+      . _Default
+      . _Coerce
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"drive#teamDriveList\".
+tdlKind :: Lens' TeamDriveList Text
+tdlKind = lens _tdlKind (\ s a -> s{_tdlKind = a})
+
+instance FromJSON TeamDriveList where
+        parseJSON
+          = withObject "TeamDriveList"
+              (\ o ->
+                 TeamDriveList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "teamDrives" .!= mempty)
+                     <*> (o .:? "kind" .!= "drive#teamDriveList"))
+
+instance ToJSON TeamDriveList where
+        toJSON TeamDriveList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _tdlNextPageToken,
+                  ("teamDrives" .=) <$> _tdlTeamDrives,
+                  Just ("kind" .= _tdlKind)])
+
+-- | An notification channel used to watch for resource changes.
+--
+-- /See:/ 'channel' smart constructor.
+data Channel =
+  Channel'
+    { _cResourceURI :: !(Maybe Text)
+    , _cResourceId  :: !(Maybe Text)
+    , _cKind        :: !Text
+    , _cExpiration  :: !(Maybe (Textual Int64))
+    , _cToken       :: !(Maybe Text)
+    , _cAddress     :: !(Maybe Text)
+    , _cPayload     :: !(Maybe Bool)
+    , _cParams      :: !(Maybe ChannelParams)
+    , _cId          :: !(Maybe Text)
+    , _cType        :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Channel' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cResourceURI'
+--
+-- * 'cResourceId'
+--
+-- * 'cKind'
+--
+-- * 'cExpiration'
+--
+-- * 'cToken'
+--
+-- * 'cAddress'
+--
+-- * 'cPayload'
+--
+-- * 'cParams'
+--
+-- * 'cId'
+--
+-- * 'cType'
+channel
+    :: Channel
+channel =
+  Channel'
+    { _cResourceURI = Nothing
+    , _cResourceId = Nothing
+    , _cKind = "api#channel"
+    , _cExpiration = Nothing
+    , _cToken = Nothing
+    , _cAddress = Nothing
+    , _cPayload = Nothing
+    , _cParams = Nothing
+    , _cId = Nothing
+    , _cType = Nothing
+    }
+
+
+-- | A version-specific identifier for the watched resource.
+cResourceURI :: Lens' Channel (Maybe Text)
+cResourceURI
+  = lens _cResourceURI (\ s a -> s{_cResourceURI = a})
+
+-- | An opaque ID that identifies the resource being watched on this channel.
+-- Stable across different API versions.
+cResourceId :: Lens' Channel (Maybe Text)
+cResourceId
+  = lens _cResourceId (\ s a -> s{_cResourceId = a})
+
+-- | Identifies this as a notification channel used to watch for changes to a
+-- resource. Value: the fixed string \"api#channel\".
+cKind :: Lens' Channel Text
+cKind = lens _cKind (\ s a -> s{_cKind = a})
+
+-- | Date and time of notification channel expiration, expressed as a Unix
+-- timestamp, in milliseconds. Optional.
+cExpiration :: Lens' Channel (Maybe Int64)
+cExpiration
+  = lens _cExpiration (\ s a -> s{_cExpiration = a}) .
+      mapping _Coerce
+
+-- | An arbitrary string delivered to the target address with each
+-- notification delivered over this channel. Optional.
+cToken :: Lens' Channel (Maybe Text)
+cToken = lens _cToken (\ s a -> s{_cToken = a})
+
+-- | The address where notifications are delivered for this channel.
+cAddress :: Lens' Channel (Maybe Text)
+cAddress = lens _cAddress (\ s a -> s{_cAddress = a})
+
+-- | A Boolean value to indicate whether payload is wanted. Optional.
+cPayload :: Lens' Channel (Maybe Bool)
+cPayload = lens _cPayload (\ s a -> s{_cPayload = a})
+
+-- | Additional parameters controlling delivery channel behavior. Optional.
+cParams :: Lens' Channel (Maybe ChannelParams)
+cParams = lens _cParams (\ s a -> s{_cParams = a})
+
+-- | A UUID or similar unique string that identifies this channel.
+cId :: Lens' Channel (Maybe Text)
+cId = lens _cId (\ s a -> s{_cId = a})
+
+-- | The type of delivery mechanism used for this channel.
+cType :: Lens' Channel (Maybe Text)
+cType = lens _cType (\ s a -> s{_cType = a})
+
+instance FromJSON Channel where
+        parseJSON
+          = withObject "Channel"
+              (\ o ->
+                 Channel' <$>
+                   (o .:? "resourceUri") <*> (o .:? "resourceId") <*>
+                     (o .:? "kind" .!= "api#channel")
+                     <*> (o .:? "expiration")
+                     <*> (o .:? "token")
+                     <*> (o .:? "address")
+                     <*> (o .:? "payload")
+                     <*> (o .:? "params")
+                     <*> (o .:? "id")
+                     <*> (o .:? "type"))
+
+instance ToJSON Channel where
+        toJSON Channel'{..}
+          = object
+              (catMaybes
+                 [("resourceUri" .=) <$> _cResourceURI,
+                  ("resourceId" .=) <$> _cResourceId,
+                  Just ("kind" .= _cKind),
+                  ("expiration" .=) <$> _cExpiration,
+                  ("token" .=) <$> _cToken,
+                  ("address" .=) <$> _cAddress,
+                  ("payload" .=) <$> _cPayload,
+                  ("params" .=) <$> _cParams, ("id" .=) <$> _cId,
+                  ("type" .=) <$> _cType])
+
+--
+-- /See:/ 'aboutTeamDriveThemesItem' smart constructor.
+data AboutTeamDriveThemesItem =
+  AboutTeamDriveThemesItem'
+    { _atdtiColorRgb            :: !(Maybe Text)
+    , _atdtiBackgRoundImageLink :: !(Maybe Text)
+    , _atdtiId                  :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AboutTeamDriveThemesItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'atdtiColorRgb'
+--
+-- * 'atdtiBackgRoundImageLink'
+--
+-- * 'atdtiId'
+aboutTeamDriveThemesItem
+    :: AboutTeamDriveThemesItem
+aboutTeamDriveThemesItem =
+  AboutTeamDriveThemesItem'
+    { _atdtiColorRgb = Nothing
+    , _atdtiBackgRoundImageLink = Nothing
+    , _atdtiId = Nothing
+    }
+
+
+-- | The color of this Team Drive theme as an RGB hex string.
+atdtiColorRgb :: Lens' AboutTeamDriveThemesItem (Maybe Text)
+atdtiColorRgb
+  = lens _atdtiColorRgb
+      (\ s a -> s{_atdtiColorRgb = a})
+
+-- | A link to this Team Drive theme\'s background image.
+atdtiBackgRoundImageLink :: Lens' AboutTeamDriveThemesItem (Maybe Text)
+atdtiBackgRoundImageLink
+  = lens _atdtiBackgRoundImageLink
+      (\ s a -> s{_atdtiBackgRoundImageLink = a})
+
+-- | The ID of the theme.
+atdtiId :: Lens' AboutTeamDriveThemesItem (Maybe Text)
+atdtiId = lens _atdtiId (\ s a -> s{_atdtiId = a})
+
+instance FromJSON AboutTeamDriveThemesItem where
+        parseJSON
+          = withObject "AboutTeamDriveThemesItem"
+              (\ o ->
+                 AboutTeamDriveThemesItem' <$>
+                   (o .:? "colorRgb") <*> (o .:? "backgroundImageLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON AboutTeamDriveThemesItem where
+        toJSON AboutTeamDriveThemesItem'{..}
+          = object
+              (catMaybes
+                 [("colorRgb" .=) <$> _atdtiColorRgb,
+                  ("backgroundImageLink" .=) <$>
+                    _atdtiBackgRoundImageLink,
+                  ("id" .=) <$> _atdtiId])
+
+-- | A set of restrictions that apply to this Team Drive or items inside this
+-- Team Drive.
+--
+-- /See:/ 'teamDriveRestrictions' smart constructor.
+data TeamDriveRestrictions =
+  TeamDriveRestrictions'
+    { _tdrTeamMembersOnly              :: !(Maybe Bool)
+    , _tdrAdminManagedRestrictions     :: !(Maybe Bool)
+    , _tdrCopyRequiresWriterPermission :: !(Maybe Bool)
+    , _tdrDomainUsersOnly              :: !(Maybe Bool)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TeamDriveRestrictions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tdrTeamMembersOnly'
+--
+-- * 'tdrAdminManagedRestrictions'
+--
+-- * 'tdrCopyRequiresWriterPermission'
+--
+-- * 'tdrDomainUsersOnly'
+teamDriveRestrictions
+    :: TeamDriveRestrictions
+teamDriveRestrictions =
+  TeamDriveRestrictions'
+    { _tdrTeamMembersOnly = Nothing
+    , _tdrAdminManagedRestrictions = Nothing
+    , _tdrCopyRequiresWriterPermission = Nothing
+    , _tdrDomainUsersOnly = Nothing
+    }
+
+
+-- | Whether access to items inside this Team Drive is restricted to members
+-- of this Team Drive.
+tdrTeamMembersOnly :: Lens' TeamDriveRestrictions (Maybe Bool)
+tdrTeamMembersOnly
+  = lens _tdrTeamMembersOnly
+      (\ s a -> s{_tdrTeamMembersOnly = a})
+
+-- | Whether administrative privileges on this Team Drive are required to
+-- modify restrictions.
+tdrAdminManagedRestrictions :: Lens' TeamDriveRestrictions (Maybe Bool)
+tdrAdminManagedRestrictions
+  = lens _tdrAdminManagedRestrictions
+      (\ s a -> s{_tdrAdminManagedRestrictions = a})
+
+-- | Whether the options to copy, print, or download files inside this Team
+-- Drive, should be disabled for readers and commenters. When this
+-- restriction is set to true, it will override the similarly named field
+-- to true for any file inside this Team Drive.
+tdrCopyRequiresWriterPermission :: Lens' TeamDriveRestrictions (Maybe Bool)
+tdrCopyRequiresWriterPermission
+  = lens _tdrCopyRequiresWriterPermission
+      (\ s a -> s{_tdrCopyRequiresWriterPermission = a})
+
+-- | Whether access to this Team Drive and items inside this Team Drive is
+-- restricted to users of the domain to which this Team Drive belongs. This
+-- restriction may be overridden by other sharing policies controlled
+-- outside of this Team Drive.
+tdrDomainUsersOnly :: Lens' TeamDriveRestrictions (Maybe Bool)
+tdrDomainUsersOnly
+  = lens _tdrDomainUsersOnly
+      (\ s a -> s{_tdrDomainUsersOnly = a})
+
+instance FromJSON TeamDriveRestrictions where
+        parseJSON
+          = withObject "TeamDriveRestrictions"
+              (\ o ->
+                 TeamDriveRestrictions' <$>
+                   (o .:? "teamMembersOnly") <*>
+                     (o .:? "adminManagedRestrictions")
+                     <*> (o .:? "copyRequiresWriterPermission")
+                     <*> (o .:? "domainUsersOnly"))
+
+instance ToJSON TeamDriveRestrictions where
+        toJSON TeamDriveRestrictions'{..}
+          = object
+              (catMaybes
+                 [("teamMembersOnly" .=) <$> _tdrTeamMembersOnly,
+                  ("adminManagedRestrictions" .=) <$>
+                    _tdrAdminManagedRestrictions,
+                  ("copyRequiresWriterPermission" .=) <$>
+                    _tdrCopyRequiresWriterPermission,
+                  ("domainUsersOnly" .=) <$> _tdrDomainUsersOnly])
+
+-- | An image file and cropping parameters from which a background image for
+-- this Team Drive is set. This is a write only field; it can only be set
+-- on drive.teamdrives.update requests that don\'t set themeId. When
+-- specified, all fields of the backgroundImageFile must be set.
+--
+-- /See:/ 'teamDriveBackgRoundImageFile' smart constructor.
+data TeamDriveBackgRoundImageFile =
+  TeamDriveBackgRoundImageFile'
+    { _tdbrifXCoordinate :: !(Maybe (Textual Double))
+    , _tdbrifYCoordinate :: !(Maybe (Textual Double))
+    , _tdbrifWidth       :: !(Maybe (Textual Double))
+    , _tdbrifId          :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TeamDriveBackgRoundImageFile' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tdbrifXCoordinate'
+--
+-- * 'tdbrifYCoordinate'
+--
+-- * 'tdbrifWidth'
+--
+-- * 'tdbrifId'
+teamDriveBackgRoundImageFile
+    :: TeamDriveBackgRoundImageFile
+teamDriveBackgRoundImageFile =
+  TeamDriveBackgRoundImageFile'
+    { _tdbrifXCoordinate = Nothing
+    , _tdbrifYCoordinate = Nothing
+    , _tdbrifWidth = Nothing
+    , _tdbrifId = Nothing
+    }
+
+
+-- | The X coordinate of the upper left corner of the cropping area in the
+-- background image. This is a value in the closed range of 0 to 1. This
+-- value represents the horizontal distance from the left side of the
+-- entire image to the left side of the cropping area divided by the width
+-- of the entire image.
+tdbrifXCoordinate :: Lens' TeamDriveBackgRoundImageFile (Maybe Double)
+tdbrifXCoordinate
+  = lens _tdbrifXCoordinate
+      (\ s a -> s{_tdbrifXCoordinate = a})
+      . mapping _Coerce
+
+-- | The Y coordinate of the upper left corner of the cropping area in the
+-- background image. This is a value in the closed range of 0 to 1. This
+-- value represents the vertical distance from the top side of the entire
+-- image to the top side of the cropping area divided by the height of the
+-- entire image.
+tdbrifYCoordinate :: Lens' TeamDriveBackgRoundImageFile (Maybe Double)
+tdbrifYCoordinate
+  = lens _tdbrifYCoordinate
+      (\ s a -> s{_tdbrifYCoordinate = a})
+      . mapping _Coerce
+
+-- | The width of the cropped image in the closed range of 0 to 1. This value
+-- represents the width of the cropped image divided by the width of the
+-- entire image. The height is computed by applying a width to height
+-- aspect ratio of 80 to 9. The resulting image must be at least 1280
+-- pixels wide and 144 pixels high.
+tdbrifWidth :: Lens' TeamDriveBackgRoundImageFile (Maybe Double)
+tdbrifWidth
+  = lens _tdbrifWidth (\ s a -> s{_tdbrifWidth = a}) .
+      mapping _Coerce
+
+-- | The ID of an image file in Drive to use for the background image.
+tdbrifId :: Lens' TeamDriveBackgRoundImageFile (Maybe Text)
+tdbrifId = lens _tdbrifId (\ s a -> s{_tdbrifId = a})
+
+instance FromJSON TeamDriveBackgRoundImageFile where
+        parseJSON
+          = withObject "TeamDriveBackgRoundImageFile"
+              (\ o ->
+                 TeamDriveBackgRoundImageFile' <$>
+                   (o .:? "xCoordinate") <*> (o .:? "yCoordinate") <*>
+                     (o .:? "width")
+                     <*> (o .:? "id"))
+
+instance ToJSON TeamDriveBackgRoundImageFile where
+        toJSON TeamDriveBackgRoundImageFile'{..}
+          = object
+              (catMaybes
+                 [("xCoordinate" .=) <$> _tdbrifXCoordinate,
+                  ("yCoordinate" .=) <$> _tdbrifYCoordinate,
+                  ("width" .=) <$> _tdbrifWidth,
+                  ("id" .=) <$> _tdbrifId])
+
+-- | Additional metadata about video media. This may not be available
+-- immediately upon upload.
+--
+-- /See:/ 'fileVideoMediaMetadata' smart constructor.
+data FileVideoMediaMetadata =
+  FileVideoMediaMetadata'
+    { _fvmmHeight         :: !(Maybe (Textual Int32))
+    , _fvmmWidth          :: !(Maybe (Textual Int32))
+    , _fvmmDurationMillis :: !(Maybe (Textual Int64))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FileVideoMediaMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fvmmHeight'
+--
+-- * 'fvmmWidth'
+--
+-- * 'fvmmDurationMillis'
+fileVideoMediaMetadata
+    :: FileVideoMediaMetadata
+fileVideoMediaMetadata =
+  FileVideoMediaMetadata'
+    {_fvmmHeight = Nothing, _fvmmWidth = Nothing, _fvmmDurationMillis = Nothing}
+
+
+-- | The height of the video in pixels.
+fvmmHeight :: Lens' FileVideoMediaMetadata (Maybe Int32)
+fvmmHeight
+  = lens _fvmmHeight (\ s a -> s{_fvmmHeight = a}) .
+      mapping _Coerce
+
+-- | The width of the video in pixels.
+fvmmWidth :: Lens' FileVideoMediaMetadata (Maybe Int32)
+fvmmWidth
+  = lens _fvmmWidth (\ s a -> s{_fvmmWidth = a}) .
+      mapping _Coerce
+
+-- | The duration of the video in milliseconds.
+fvmmDurationMillis :: Lens' FileVideoMediaMetadata (Maybe Int64)
+fvmmDurationMillis
+  = lens _fvmmDurationMillis
+      (\ s a -> s{_fvmmDurationMillis = a})
+      . mapping _Coerce
+
+instance FromJSON FileVideoMediaMetadata where
+        parseJSON
+          = withObject "FileVideoMediaMetadata"
+              (\ o ->
+                 FileVideoMediaMetadata' <$>
+                   (o .:? "height") <*> (o .:? "width") <*>
+                     (o .:? "durationMillis"))
+
+instance ToJSON FileVideoMediaMetadata where
+        toJSON FileVideoMediaMetadata'{..}
+          = object
+              (catMaybes
+                 [("height" .=) <$> _fvmmHeight,
+                  ("width" .=) <$> _fvmmWidth,
+                  ("durationMillis" .=) <$> _fvmmDurationMillis])
+
+-- | A collection of arbitrary key-value pairs which are private to the
+-- requesting app. Entries with null values are cleared in update and copy
+-- requests.
+--
+-- /See:/ 'fileAppProperties' smart constructor.
+newtype FileAppProperties =
+  FileAppProperties'
+    { _fapAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FileAppProperties' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fapAddtional'
+fileAppProperties
+    :: HashMap Text Text -- ^ 'fapAddtional'
+    -> FileAppProperties
+fileAppProperties pFapAddtional_ =
+  FileAppProperties' {_fapAddtional = _Coerce # pFapAddtional_}
+
+
+fapAddtional :: Lens' FileAppProperties (HashMap Text Text)
+fapAddtional
+  = lens _fapAddtional (\ s a -> s{_fapAddtional = a})
+      . _Coerce
+
+instance FromJSON FileAppProperties where
+        parseJSON
+          = withObject "FileAppProperties"
+              (\ o -> FileAppProperties' <$> (parseJSONObject o))
+
+instance ToJSON FileAppProperties where
+        toJSON = toJSON . _fapAddtional
+
+-- | A change to a file or shared drive.
+--
+-- /See:/ 'change' smart constructor.
+data Change =
+  Change'
+    { _chaDrive       :: !(Maybe Drive)
+    , _chaRemoved     :: !(Maybe Bool)
+    , _chaTime        :: !(Maybe DateTime')
+    , _chaKind        :: !Text
+    , _chaTeamDrive   :: !(Maybe TeamDrive)
+    , _chaTeamDriveId :: !(Maybe Text)
+    , _chaType        :: !(Maybe Text)
+    , _chaFileId      :: !(Maybe Text)
+    , _chaFile        :: !(Maybe File)
+    , _chaChangeType  :: !(Maybe Text)
+    , _chaDriveId     :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Change' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'chaDrive'
+--
+-- * 'chaRemoved'
+--
+-- * 'chaTime'
+--
+-- * 'chaKind'
+--
+-- * 'chaTeamDrive'
+--
+-- * 'chaTeamDriveId'
+--
+-- * 'chaType'
+--
+-- * 'chaFileId'
+--
+-- * 'chaFile'
+--
+-- * 'chaChangeType'
+--
+-- * 'chaDriveId'
+change
+    :: Change
+change =
+  Change'
+    { _chaDrive = Nothing
+    , _chaRemoved = Nothing
+    , _chaTime = Nothing
+    , _chaKind = "drive#change"
+    , _chaTeamDrive = Nothing
+    , _chaTeamDriveId = Nothing
+    , _chaType = Nothing
+    , _chaFileId = Nothing
+    , _chaFile = Nothing
+    , _chaChangeType = Nothing
+    , _chaDriveId = Nothing
+    }
+
+
+-- | The updated state of the shared drive. Present if the changeType is
+-- drive, the user is still a member of the shared drive, and the shared
+-- drive has not been deleted.
+chaDrive :: Lens' Change (Maybe Drive)
+chaDrive = lens _chaDrive (\ s a -> s{_chaDrive = a})
+
+-- | Whether the file or shared drive has been removed from this list of
+-- changes, for example by deletion or loss of access.
+chaRemoved :: Lens' Change (Maybe Bool)
+chaRemoved
+  = lens _chaRemoved (\ s a -> s{_chaRemoved = a})
+
+-- | The time of this change (RFC 3339 date-time).
+chaTime :: Lens' Change (Maybe UTCTime)
+chaTime
+  = lens _chaTime (\ s a -> s{_chaTime = a}) .
+      mapping _DateTime
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"drive#change\".
+chaKind :: Lens' Change Text
+chaKind = lens _chaKind (\ s a -> s{_chaKind = a})
+
+-- | Deprecated - use drive instead.
+chaTeamDrive :: Lens' Change (Maybe TeamDrive)
+chaTeamDrive
+  = lens _chaTeamDrive (\ s a -> s{_chaTeamDrive = a})
+
+-- | Deprecated - use driveId instead.
+chaTeamDriveId :: Lens' Change (Maybe Text)
+chaTeamDriveId
+  = lens _chaTeamDriveId
+      (\ s a -> s{_chaTeamDriveId = a})
+
+-- | Deprecated - use changeType instead.
+chaType :: Lens' Change (Maybe Text)
+chaType = lens _chaType (\ s a -> s{_chaType = a})
+
+-- | The ID of the file which has changed.
+chaFileId :: Lens' Change (Maybe Text)
+chaFileId
+  = lens _chaFileId (\ s a -> s{_chaFileId = a})
+
+-- | The updated state of the file. Present if the type is file and the file
+-- has not been removed from this list of changes.
+chaFile :: Lens' Change (Maybe File)
+chaFile = lens _chaFile (\ s a -> s{_chaFile = a})
+
+-- | The type of the change. Possible values are file and drive.
+chaChangeType :: Lens' Change (Maybe Text)
+chaChangeType
+  = lens _chaChangeType
+      (\ s a -> s{_chaChangeType = a})
+
+-- | The ID of the shared drive associated with this change.
+chaDriveId :: Lens' Change (Maybe Text)
+chaDriveId
+  = lens _chaDriveId (\ s a -> s{_chaDriveId = a})
+
+instance FromJSON Change where
+        parseJSON
+          = withObject "Change"
+              (\ o ->
+                 Change' <$>
+                   (o .:? "drive") <*> (o .:? "removed") <*>
+                     (o .:? "time")
+                     <*> (o .:? "kind" .!= "drive#change")
+                     <*> (o .:? "teamDrive")
+                     <*> (o .:? "teamDriveId")
+                     <*> (o .:? "type")
+                     <*> (o .:? "fileId")
+                     <*> (o .:? "file")
+                     <*> (o .:? "changeType")
+                     <*> (o .:? "driveId"))
+
+instance ToJSON Change where
+        toJSON Change'{..}
+          = object
+              (catMaybes
+                 [("drive" .=) <$> _chaDrive,
+                  ("removed" .=) <$> _chaRemoved,
+                  ("time" .=) <$> _chaTime, Just ("kind" .= _chaKind),
+                  ("teamDrive" .=) <$> _chaTeamDrive,
+                  ("teamDriveId" .=) <$> _chaTeamDriveId,
+                  ("type" .=) <$> _chaType,
+                  ("fileId" .=) <$> _chaFileId,
+                  ("file" .=) <$> _chaFile,
+                  ("changeType" .=) <$> _chaChangeType,
+                  ("driveId" .=) <$> _chaDriveId])
+
+-- | Representation of a Team Drive.
+--
+-- /See:/ 'teamDrive' smart constructor.
+data TeamDrive =
+  TeamDrive'
+    { _tdThemeId             :: !(Maybe Text)
+    , _tdBackgRoundImageFile :: !(Maybe TeamDriveBackgRoundImageFile)
+    , _tdColorRgb            :: !(Maybe Text)
+    , _tdCreatedTime         :: !(Maybe DateTime')
+    , _tdKind                :: !Text
+    , _tdBackgRoundImageLink :: !(Maybe Text)
+    , _tdName                :: !(Maybe Text)
+    , _tdRestrictions        :: !(Maybe TeamDriveRestrictions)
+    , _tdId                  :: !(Maybe Text)
+    , _tdCapabilities        :: !(Maybe TeamDriveCapabilities)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'TeamDrive' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'tdThemeId'
+--
+-- * 'tdBackgRoundImageFile'
+--
+-- * 'tdColorRgb'
+--
+-- * 'tdCreatedTime'
+--
+-- * 'tdKind'
+--
+-- * 'tdBackgRoundImageLink'
+--
+-- * 'tdName'
+--
+-- * 'tdRestrictions'
+--
+-- * 'tdId'
+--
+-- * 'tdCapabilities'
+teamDrive
+    :: TeamDrive
+teamDrive =
+  TeamDrive'
+    { _tdThemeId = Nothing
+    , _tdBackgRoundImageFile = Nothing
+    , _tdColorRgb = Nothing
+    , _tdCreatedTime = Nothing
+    , _tdKind = "drive#teamDrive"
+    , _tdBackgRoundImageLink = Nothing
+    , _tdName = Nothing
+    , _tdRestrictions = Nothing
+    , _tdId = Nothing
+    , _tdCapabilities = Nothing
+    }
+
+
+-- | The ID of the theme from which the background image and color will be
+-- set. The set of possible teamDriveThemes can be retrieved from a
+-- drive.about.get response. When not specified on a
+-- drive.teamdrives.create request, a random theme is chosen from which the
+-- background image and color are set. This is a write-only field; it can
+-- only be set on requests that don\'t set colorRgb or backgroundImageFile.
+tdThemeId :: Lens' TeamDrive (Maybe Text)
+tdThemeId
+  = lens _tdThemeId (\ s a -> s{_tdThemeId = a})
+
+-- | An image file and cropping parameters from which a background image for
+-- this Team Drive is set. This is a write only field; it can only be set
+-- on drive.teamdrives.update requests that don\'t set themeId. When
+-- specified, all fields of the backgroundImageFile must be set.
+tdBackgRoundImageFile :: Lens' TeamDrive (Maybe TeamDriveBackgRoundImageFile)
+tdBackgRoundImageFile
+  = lens _tdBackgRoundImageFile
+      (\ s a -> s{_tdBackgRoundImageFile = a})
+
+-- | The color of this Team Drive as an RGB hex string. It can only be set on
+-- a drive.teamdrives.update request that does not set themeId.
+tdColorRgb :: Lens' TeamDrive (Maybe Text)
+tdColorRgb
+  = lens _tdColorRgb (\ s a -> s{_tdColorRgb = a})
+
+-- | The time at which the Team Drive was created (RFC 3339 date-time).
+tdCreatedTime :: Lens' TeamDrive (Maybe UTCTime)
+tdCreatedTime
+  = lens _tdCreatedTime
+      (\ s a -> s{_tdCreatedTime = a})
+      . mapping _DateTime
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"drive#teamDrive\".
+tdKind :: Lens' TeamDrive Text
+tdKind = lens _tdKind (\ s a -> s{_tdKind = a})
+
+-- | A short-lived link to this Team Drive\'s background image.
+tdBackgRoundImageLink :: Lens' TeamDrive (Maybe Text)
+tdBackgRoundImageLink
+  = lens _tdBackgRoundImageLink
+      (\ s a -> s{_tdBackgRoundImageLink = a})
+
+-- | The name of this Team Drive.
+tdName :: Lens' TeamDrive (Maybe Text)
+tdName = lens _tdName (\ s a -> s{_tdName = a})
+
+-- | A set of restrictions that apply to this Team Drive or items inside this
+-- Team Drive.
+tdRestrictions :: Lens' TeamDrive (Maybe TeamDriveRestrictions)
+tdRestrictions
+  = lens _tdRestrictions
+      (\ s a -> s{_tdRestrictions = a})
+
+-- | The ID of this Team Drive which is also the ID of the top level folder
+-- of this Team Drive.
+tdId :: Lens' TeamDrive (Maybe Text)
+tdId = lens _tdId (\ s a -> s{_tdId = a})
+
+-- | Capabilities the current user has on this Team Drive.
+tdCapabilities :: Lens' TeamDrive (Maybe TeamDriveCapabilities)
+tdCapabilities
+  = lens _tdCapabilities
+      (\ s a -> s{_tdCapabilities = a})
+
+instance FromJSON TeamDrive where
+        parseJSON
+          = withObject "TeamDrive"
+              (\ o ->
+                 TeamDrive' <$>
+                   (o .:? "themeId") <*> (o .:? "backgroundImageFile")
+                     <*> (o .:? "colorRgb")
+                     <*> (o .:? "createdTime")
+                     <*> (o .:? "kind" .!= "drive#teamDrive")
+                     <*> (o .:? "backgroundImageLink")
+                     <*> (o .:? "name")
+                     <*> (o .:? "restrictions")
+                     <*> (o .:? "id")
+                     <*> (o .:? "capabilities"))
+
+instance ToJSON TeamDrive where
+        toJSON TeamDrive'{..}
+          = object
+              (catMaybes
+                 [("themeId" .=) <$> _tdThemeId,
+                  ("backgroundImageFile" .=) <$>
+                    _tdBackgRoundImageFile,
+                  ("colorRgb" .=) <$> _tdColorRgb,
+                  ("createdTime" .=) <$> _tdCreatedTime,
+                  Just ("kind" .= _tdKind),
+                  ("backgroundImageLink" .=) <$>
+                    _tdBackgRoundImageLink,
+                  ("name" .=) <$> _tdName,
+                  ("restrictions" .=) <$> _tdRestrictions,
+                  ("id" .=) <$> _tdId,
+                  ("capabilities" .=) <$> _tdCapabilities])
+
+-- | A map of source MIME type to possible targets for all supported exports.
+--
+-- /See:/ 'aboutExportFormats' smart constructor.
+newtype AboutExportFormats =
+  AboutExportFormats'
+    { _aefAddtional :: HashMap Text [Text]
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AboutExportFormats' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aefAddtional'
+aboutExportFormats
+    :: HashMap Text [Text] -- ^ 'aefAddtional'
+    -> AboutExportFormats
+aboutExportFormats pAefAddtional_ =
+  AboutExportFormats' {_aefAddtional = _Coerce # pAefAddtional_}
+
+
+aefAddtional :: Lens' AboutExportFormats (HashMap Text [Text])
+aefAddtional
+  = lens _aefAddtional (\ s a -> s{_aefAddtional = a})
+      . _Coerce
+
+instance FromJSON AboutExportFormats where
+        parseJSON
+          = withObject "AboutExportFormats"
+              (\ o -> AboutExportFormats' <$> (parseJSONObject o))
+
+instance ToJSON AboutExportFormats where
+        toJSON = toJSON . _aefAddtional
+
+-- | Information about a Drive user.
+--
+-- /See:/ 'user' smart constructor.
+data User =
+  User'
+    { _uPhotoLink    :: !(Maybe Text)
+    , _uMe           :: !(Maybe Bool)
+    , _uKind         :: !Text
+    , _uEmailAddress :: !(Maybe Text)
+    , _uDisplayName  :: !(Maybe Text)
+    , _uPermissionId :: !(Maybe Text)
+    }
+  deriving (Eq, 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:
+--
+-- * 'uPhotoLink'
+--
+-- * 'uMe'
+--
+-- * 'uKind'
+--
+-- * 'uEmailAddress'
+--
+-- * 'uDisplayName'
+--
+-- * 'uPermissionId'
+user
+    :: User
+user =
+  User'
+    { _uPhotoLink = Nothing
+    , _uMe = Nothing
+    , _uKind = "drive#user"
+    , _uEmailAddress = Nothing
+    , _uDisplayName = Nothing
+    , _uPermissionId = Nothing
+    }
+
+
+-- | A link to the user\'s profile photo, if available.
+uPhotoLink :: Lens' User (Maybe Text)
+uPhotoLink
+  = lens _uPhotoLink (\ s a -> s{_uPhotoLink = a})
+
+-- | Whether this user is the requesting user.
+uMe :: Lens' User (Maybe Bool)
+uMe = lens _uMe (\ s a -> s{_uMe = a})
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"drive#user\".
+uKind :: Lens' User Text
+uKind = lens _uKind (\ s a -> s{_uKind = a})
+
+-- | The email address of the user. This may not be present in certain
+-- contexts if the user has not made their email address visible to the
+-- requester.
+uEmailAddress :: Lens' User (Maybe Text)
+uEmailAddress
+  = lens _uEmailAddress
+      (\ s a -> s{_uEmailAddress = a})
+
+-- | A plain text displayable name for this user.
+uDisplayName :: Lens' User (Maybe Text)
+uDisplayName
+  = lens _uDisplayName (\ s a -> s{_uDisplayName = a})
+
+-- | The user\'s ID as visible in Permission resources.
+uPermissionId :: Lens' User (Maybe Text)
+uPermissionId
+  = lens _uPermissionId
+      (\ s a -> s{_uPermissionId = a})
+
+instance FromJSON User where
+        parseJSON
+          = withObject "User"
+              (\ o ->
+                 User' <$>
+                   (o .:? "photoLink") <*> (o .:? "me") <*>
+                     (o .:? "kind" .!= "drive#user")
+                     <*> (o .:? "emailAddress")
+                     <*> (o .:? "displayName")
+                     <*> (o .:? "permissionId"))
+
+instance ToJSON User where
+        toJSON User'{..}
+          = object
+              (catMaybes
+                 [("photoLink" .=) <$> _uPhotoLink,
+                  ("me" .=) <$> _uMe, Just ("kind" .= _uKind),
+                  ("emailAddress" .=) <$> _uEmailAddress,
+                  ("displayName" .=) <$> _uDisplayName,
+                  ("permissionId" .=) <$> _uPermissionId])
+
+-- | A list of changes for a user.
+--
+-- /See:/ 'changeList' smart constructor.
+data ChangeList =
+  ChangeList'
+    { _clNewStartPageToken :: !(Maybe Text)
+    , _clNextPageToken     :: !(Maybe Text)
+    , _clChanges           :: !(Maybe [Change])
+    , _clKind              :: !Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ChangeList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'clNewStartPageToken'
+--
+-- * 'clNextPageToken'
+--
+-- * 'clChanges'
+--
+-- * 'clKind'
+changeList
+    :: ChangeList
+changeList =
+  ChangeList'
+    { _clNewStartPageToken = Nothing
+    , _clNextPageToken = Nothing
+    , _clChanges = Nothing
+    , _clKind = "drive#changeList"
+    }
+
+
+-- | The starting page token for future changes. This will be present only if
+-- the end of the current changes list has been reached.
+clNewStartPageToken :: Lens' ChangeList (Maybe Text)
+clNewStartPageToken
+  = lens _clNewStartPageToken
+      (\ s a -> s{_clNewStartPageToken = a})
+
+-- | The page token for the next page of changes. This will be absent if the
+-- end of the changes list has been reached. If the token is rejected for
+-- any reason, it should be discarded, and pagination should be restarted
+-- from the first page of results.
+clNextPageToken :: Lens' ChangeList (Maybe Text)
+clNextPageToken
+  = lens _clNextPageToken
+      (\ s a -> s{_clNextPageToken = a})
+
+-- | The list of changes. If nextPageToken is populated, then this list may
+-- be incomplete and an additional page of results should be fetched.
+clChanges :: Lens' ChangeList [Change]
+clChanges
+  = lens _clChanges (\ s a -> s{_clChanges = a}) .
+      _Default
+      . _Coerce
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"drive#changeList\".
+clKind :: Lens' ChangeList Text
+clKind = lens _clKind (\ s a -> s{_clKind = a})
+
+instance FromJSON ChangeList where
+        parseJSON
+          = withObject "ChangeList"
+              (\ o ->
+                 ChangeList' <$>
+                   (o .:? "newStartPageToken") <*>
+                     (o .:? "nextPageToken")
+                     <*> (o .:? "changes" .!= mempty)
+                     <*> (o .:? "kind" .!= "drive#changeList"))
+
+instance ToJSON ChangeList where
+        toJSON ChangeList'{..}
+          = object
+              (catMaybes
+                 [("newStartPageToken" .=) <$> _clNewStartPageToken,
+                  ("nextPageToken" .=) <$> _clNextPageToken,
+                  ("changes" .=) <$> _clChanges,
+                  Just ("kind" .= _clKind)])
+
+-- | Links for exporting Google Docs to specific formats.
+--
+-- /See:/ 'revisionExportLinks' smart constructor.
+newtype RevisionExportLinks =
+  RevisionExportLinks'
+    { _relAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'RevisionExportLinks' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'relAddtional'
+revisionExportLinks
+    :: HashMap Text Text -- ^ 'relAddtional'
+    -> RevisionExportLinks
+revisionExportLinks pRelAddtional_ =
+  RevisionExportLinks' {_relAddtional = _Coerce # pRelAddtional_}
+
+
+-- | A mapping from export format to URL
+relAddtional :: Lens' RevisionExportLinks (HashMap Text Text)
+relAddtional
+  = lens _relAddtional (\ s a -> s{_relAddtional = a})
+      . _Coerce
+
+instance FromJSON RevisionExportLinks where
+        parseJSON
+          = withObject "RevisionExportLinks"
+              (\ o -> RevisionExportLinks' <$> (parseJSONObject o))
+
+instance ToJSON RevisionExportLinks where
+        toJSON = toJSON . _relAddtional
+
+-- | Additional information about the content of the file. These fields are
+-- never populated in responses.
+--
+-- /See:/ 'fileContentHints' smart constructor.
+data FileContentHints =
+  FileContentHints'
+    { _fchThumbnail     :: !(Maybe FileContentHintsThumbnail)
+    , _fchIndexableText :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FileContentHints' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fchThumbnail'
+--
+-- * 'fchIndexableText'
+fileContentHints
+    :: FileContentHints
+fileContentHints =
+  FileContentHints' {_fchThumbnail = Nothing, _fchIndexableText = Nothing}
+
+
+-- | A thumbnail for the file. This will only be used if Google Drive cannot
+-- generate a standard thumbnail.
+fchThumbnail :: Lens' FileContentHints (Maybe FileContentHintsThumbnail)
+fchThumbnail
+  = lens _fchThumbnail (\ s a -> s{_fchThumbnail = a})
+
+-- | Text to be indexed for the file to improve fullText queries. This is
+-- limited to 128KB in length and may contain HTML elements.
+fchIndexableText :: Lens' FileContentHints (Maybe Text)
+fchIndexableText
+  = lens _fchIndexableText
+      (\ s a -> s{_fchIndexableText = a})
+
+instance FromJSON FileContentHints where
+        parseJSON
+          = withObject "FileContentHints"
+              (\ o ->
+                 FileContentHints' <$>
+                   (o .:? "thumbnail") <*> (o .:? "indexableText"))
+
+instance ToJSON FileContentHints where
+        toJSON FileContentHints'{..}
+          = object
+              (catMaybes
+                 [("thumbnail" .=) <$> _fchThumbnail,
+                  ("indexableText" .=) <$> _fchIndexableText])
+
+-- | Additional parameters controlling delivery channel behavior. Optional.
+--
+-- /See:/ 'channelParams' smart constructor.
+newtype ChannelParams =
+  ChannelParams'
+    { _cpAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'ChannelParams' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cpAddtional'
+channelParams
+    :: HashMap Text Text -- ^ 'cpAddtional'
+    -> ChannelParams
+channelParams pCpAddtional_ =
+  ChannelParams' {_cpAddtional = _Coerce # pCpAddtional_}
+
+
+-- | Declares a new parameter by name.
+cpAddtional :: Lens' ChannelParams (HashMap Text Text)
+cpAddtional
+  = lens _cpAddtional (\ s a -> s{_cpAddtional = a}) .
+      _Coerce
+
+instance FromJSON ChannelParams where
+        parseJSON
+          = withObject "ChannelParams"
+              (\ o -> ChannelParams' <$> (parseJSONObject o))
+
+instance ToJSON ChannelParams where
+        toJSON = toJSON . _cpAddtional
+
+-- | A collection of arbitrary key-value pairs which are visible to all apps.
+-- Entries with null values are cleared in update and copy requests.
+--
+-- /See:/ 'fileProperties' smart constructor.
+newtype FileProperties =
+  FileProperties'
+    { _fpAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FileProperties' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fpAddtional'
+fileProperties
+    :: HashMap Text Text -- ^ 'fpAddtional'
+    -> FileProperties
+fileProperties pFpAddtional_ =
+  FileProperties' {_fpAddtional = _Coerce # pFpAddtional_}
+
+
+fpAddtional :: Lens' FileProperties (HashMap Text Text)
+fpAddtional
+  = lens _fpAddtional (\ s a -> s{_fpAddtional = a}) .
+      _Coerce
+
+instance FromJSON FileProperties where
+        parseJSON
+          = withObject "FileProperties"
+              (\ o -> FileProperties' <$> (parseJSONObject o))
+
+instance ToJSON FileProperties where
+        toJSON = toJSON . _fpAddtional
+
+-- | A map of maximum import sizes by MIME type, in bytes.
+--
+-- /See:/ 'aboutMaxImportSizes' smart constructor.
+newtype AboutMaxImportSizes =
+  AboutMaxImportSizes'
+    { _amisAddtional :: HashMap Text (Textual Int64)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AboutMaxImportSizes' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'amisAddtional'
+aboutMaxImportSizes
+    :: HashMap Text Int64 -- ^ 'amisAddtional'
+    -> AboutMaxImportSizes
+aboutMaxImportSizes pAmisAddtional_ =
+  AboutMaxImportSizes' {_amisAddtional = _Coerce # pAmisAddtional_}
+
+
+amisAddtional :: Lens' AboutMaxImportSizes (HashMap Text Int64)
+amisAddtional
+  = lens _amisAddtional
+      (\ s a -> s{_amisAddtional = a})
+      . _Coerce
+
+instance FromJSON AboutMaxImportSizes where
+        parseJSON
+          = withObject "AboutMaxImportSizes"
+              (\ o -> AboutMaxImportSizes' <$> (parseJSONObject o))
+
+instance ToJSON AboutMaxImportSizes where
+        toJSON = toJSON . _amisAddtional
+
+-- | Information about the user, the user\'s Drive, and system capabilities.
+--
+-- /See:/ 'about' smart constructor.
+data About =
+  About'
+    { _aExportFormats       :: !(Maybe AboutExportFormats)
+    , _aMaxImportSizes      :: !(Maybe AboutMaxImportSizes)
+    , _aCanCreateTeamDrives :: !(Maybe Bool)
+    , _aImportFormats       :: !(Maybe AboutImportFormats)
+    , _aKind                :: !Text
+    , _aDriveThemes         :: !(Maybe [AboutDriveThemesItem])
+    , _aAppInstalled        :: !(Maybe Bool)
+    , _aUser                :: !(Maybe User)
+    , _aStorageQuota        :: !(Maybe AboutStorageQuota)
+    , _aCanCreateDrives     :: !(Maybe Bool)
+    , _aMaxUploadSize       :: !(Maybe (Textual Int64))
+    , _aTeamDriveThemes     :: !(Maybe [AboutTeamDriveThemesItem])
+    , _aFolderColorPalette  :: !(Maybe [Text])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'About' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'aExportFormats'
+--
+-- * 'aMaxImportSizes'
+--
+-- * 'aCanCreateTeamDrives'
+--
+-- * 'aImportFormats'
+--
+-- * 'aKind'
+--
+-- * 'aDriveThemes'
+--
+-- * 'aAppInstalled'
+--
+-- * 'aUser'
+--
+-- * 'aStorageQuota'
+--
+-- * 'aCanCreateDrives'
+--
+-- * 'aMaxUploadSize'
+--
+-- * 'aTeamDriveThemes'
+--
+-- * 'aFolderColorPalette'
+about
+    :: About
+about =
+  About'
+    { _aExportFormats = Nothing
+    , _aMaxImportSizes = Nothing
+    , _aCanCreateTeamDrives = Nothing
+    , _aImportFormats = Nothing
+    , _aKind = "drive#about"
+    , _aDriveThemes = Nothing
+    , _aAppInstalled = Nothing
+    , _aUser = Nothing
+    , _aStorageQuota = Nothing
+    , _aCanCreateDrives = Nothing
+    , _aMaxUploadSize = Nothing
+    , _aTeamDriveThemes = Nothing
+    , _aFolderColorPalette = Nothing
+    }
+
+
+-- | A map of source MIME type to possible targets for all supported exports.
+aExportFormats :: Lens' About (Maybe AboutExportFormats)
+aExportFormats
+  = lens _aExportFormats
+      (\ s a -> s{_aExportFormats = a})
+
+-- | A map of maximum import sizes by MIME type, in bytes.
+aMaxImportSizes :: Lens' About (Maybe AboutMaxImportSizes)
+aMaxImportSizes
+  = lens _aMaxImportSizes
+      (\ s a -> s{_aMaxImportSizes = a})
+
+-- | Deprecated - use canCreateDrives instead.
+aCanCreateTeamDrives :: Lens' About (Maybe Bool)
+aCanCreateTeamDrives
+  = lens _aCanCreateTeamDrives
+      (\ s a -> s{_aCanCreateTeamDrives = a})
+
+-- | A map of source MIME type to possible targets for all supported imports.
+aImportFormats :: Lens' About (Maybe AboutImportFormats)
+aImportFormats
+  = lens _aImportFormats
+      (\ s a -> s{_aImportFormats = a})
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"drive#about\".
+aKind :: Lens' About Text
+aKind = lens _aKind (\ s a -> s{_aKind = a})
+
+-- | A list of themes that are supported for shared drives.
+aDriveThemes :: Lens' About [AboutDriveThemesItem]
+aDriveThemes
+  = lens _aDriveThemes (\ s a -> s{_aDriveThemes = a})
+      . _Default
+      . _Coerce
+
+-- | Whether the user has installed the requesting app.
+aAppInstalled :: Lens' About (Maybe Bool)
+aAppInstalled
+  = lens _aAppInstalled
+      (\ s a -> s{_aAppInstalled = a})
+
+-- | The authenticated user.
+aUser :: Lens' About (Maybe User)
+aUser = lens _aUser (\ s a -> s{_aUser = a})
+
+-- | The user\'s storage quota limits and usage. All fields are measured in
+-- bytes.
+aStorageQuota :: Lens' About (Maybe AboutStorageQuota)
+aStorageQuota
+  = lens _aStorageQuota
+      (\ s a -> s{_aStorageQuota = a})
+
+-- | Whether the user can create shared drives.
+aCanCreateDrives :: Lens' About (Maybe Bool)
+aCanCreateDrives
+  = lens _aCanCreateDrives
+      (\ s a -> s{_aCanCreateDrives = a})
+
+-- | The maximum upload size in bytes.
+aMaxUploadSize :: Lens' About (Maybe Int64)
+aMaxUploadSize
+  = lens _aMaxUploadSize
+      (\ s a -> s{_aMaxUploadSize = a})
+      . mapping _Coerce
+
+-- | Deprecated - use driveThemes instead.
+aTeamDriveThemes :: Lens' About [AboutTeamDriveThemesItem]
+aTeamDriveThemes
+  = lens _aTeamDriveThemes
+      (\ s a -> s{_aTeamDriveThemes = a})
+      . _Default
+      . _Coerce
+
+-- | The currently supported folder colors as RGB hex strings.
+aFolderColorPalette :: Lens' About [Text]
+aFolderColorPalette
+  = lens _aFolderColorPalette
+      (\ s a -> s{_aFolderColorPalette = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON About where
+        parseJSON
+          = withObject "About"
+              (\ o ->
+                 About' <$>
+                   (o .:? "exportFormats") <*> (o .:? "maxImportSizes")
+                     <*> (o .:? "canCreateTeamDrives")
+                     <*> (o .:? "importFormats")
+                     <*> (o .:? "kind" .!= "drive#about")
+                     <*> (o .:? "driveThemes" .!= mempty)
+                     <*> (o .:? "appInstalled")
+                     <*> (o .:? "user")
+                     <*> (o .:? "storageQuota")
+                     <*> (o .:? "canCreateDrives")
+                     <*> (o .:? "maxUploadSize")
+                     <*> (o .:? "teamDriveThemes" .!= mempty)
+                     <*> (o .:? "folderColorPalette" .!= mempty))
+
+instance ToJSON About where
+        toJSON About'{..}
+          = object
+              (catMaybes
+                 [("exportFormats" .=) <$> _aExportFormats,
+                  ("maxImportSizes" .=) <$> _aMaxImportSizes,
+                  ("canCreateTeamDrives" .=) <$> _aCanCreateTeamDrives,
+                  ("importFormats" .=) <$> _aImportFormats,
+                  Just ("kind" .= _aKind),
+                  ("driveThemes" .=) <$> _aDriveThemes,
+                  ("appInstalled" .=) <$> _aAppInstalled,
+                  ("user" .=) <$> _aUser,
+                  ("storageQuota" .=) <$> _aStorageQuota,
+                  ("canCreateDrives" .=) <$> _aCanCreateDrives,
+                  ("maxUploadSize" .=) <$> _aMaxUploadSize,
+                  ("teamDriveThemes" .=) <$> _aTeamDriveThemes,
+                  ("folderColorPalette" .=) <$> _aFolderColorPalette])
+
+-- | Geographic location information stored in the image.
+--
+-- /See:/ 'fileImageMediaMetadataLocation' smart constructor.
+data FileImageMediaMetadataLocation =
+  FileImageMediaMetadataLocation'
+    { _fimmlLatitude  :: !(Maybe (Textual Double))
+    , _fimmlAltitude  :: !(Maybe (Textual Double))
+    , _fimmlLongitude :: !(Maybe (Textual Double))
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FileImageMediaMetadataLocation' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fimmlLatitude'
+--
+-- * 'fimmlAltitude'
+--
+-- * 'fimmlLongitude'
+fileImageMediaMetadataLocation
+    :: FileImageMediaMetadataLocation
+fileImageMediaMetadataLocation =
+  FileImageMediaMetadataLocation'
+    { _fimmlLatitude = Nothing
+    , _fimmlAltitude = Nothing
+    , _fimmlLongitude = Nothing
+    }
+
+
+-- | The latitude stored in the image.
+fimmlLatitude :: Lens' FileImageMediaMetadataLocation (Maybe Double)
+fimmlLatitude
+  = lens _fimmlLatitude
+      (\ s a -> s{_fimmlLatitude = a})
+      . mapping _Coerce
+
+-- | The altitude stored in the image.
+fimmlAltitude :: Lens' FileImageMediaMetadataLocation (Maybe Double)
+fimmlAltitude
+  = lens _fimmlAltitude
+      (\ s a -> s{_fimmlAltitude = a})
+      . mapping _Coerce
+
+-- | The longitude stored in the image.
+fimmlLongitude :: Lens' FileImageMediaMetadataLocation (Maybe Double)
+fimmlLongitude
+  = lens _fimmlLongitude
+      (\ s a -> s{_fimmlLongitude = a})
+      . mapping _Coerce
+
+instance FromJSON FileImageMediaMetadataLocation
+         where
+        parseJSON
+          = withObject "FileImageMediaMetadataLocation"
+              (\ o ->
+                 FileImageMediaMetadataLocation' <$>
+                   (o .:? "latitude") <*> (o .:? "altitude") <*>
+                     (o .:? "longitude"))
+
+instance ToJSON FileImageMediaMetadataLocation where
+        toJSON FileImageMediaMetadataLocation'{..}
+          = object
+              (catMaybes
+                 [("latitude" .=) <$> _fimmlLatitude,
+                  ("altitude" .=) <$> _fimmlAltitude,
+                  ("longitude" .=) <$> _fimmlLongitude])
+
+--
+-- /See:/ 'startPageToken' smart constructor.
+data StartPageToken =
+  StartPageToken'
+    { _sptKind           :: !Text
+    , _sptStartPageToken :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'StartPageToken' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'sptKind'
+--
+-- * 'sptStartPageToken'
+startPageToken
+    :: StartPageToken
+startPageToken =
+  StartPageToken'
+    {_sptKind = "drive#startPageToken", _sptStartPageToken = Nothing}
+
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"drive#startPageToken\".
+sptKind :: Lens' StartPageToken Text
+sptKind = lens _sptKind (\ s a -> s{_sptKind = a})
+
+-- | The starting page token for listing changes.
+sptStartPageToken :: Lens' StartPageToken (Maybe Text)
+sptStartPageToken
+  = lens _sptStartPageToken
+      (\ s a -> s{_sptStartPageToken = a})
+
+instance FromJSON StartPageToken where
+        parseJSON
+          = withObject "StartPageToken"
+              (\ o ->
+                 StartPageToken' <$>
+                   (o .:? "kind" .!= "drive#startPageToken") <*>
+                     (o .:? "startPageToken"))
+
+instance ToJSON StartPageToken where
+        toJSON StartPageToken'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _sptKind),
+                  ("startPageToken" .=) <$> _sptStartPageToken])
+
+-- | Additional metadata about image media, if available.
+--
+-- /See:/ 'fileImageMediaMetadata' smart constructor.
+data FileImageMediaMetadata =
+  FileImageMediaMetadata'
+    { _fimmRotation         :: !(Maybe (Textual Int32))
+    , _fimmHeight           :: !(Maybe (Textual Int32))
+    , _fimmSubjectDistance  :: !(Maybe (Textual Int32))
+    , _fimmMaxApertureValue :: !(Maybe (Textual Double))
+    , _fimmIsoSpeed         :: !(Maybe (Textual Int32))
+    , _fimmTime             :: !(Maybe Text)
+    , _fimmLocation         :: !(Maybe FileImageMediaMetadataLocation)
+    , _fimmAperture         :: !(Maybe (Textual Double))
+    , _fimmFocalLength      :: !(Maybe (Textual Double))
+    , _fimmCameraMake       :: !(Maybe Text)
+    , _fimmWidth            :: !(Maybe (Textual Int32))
+    , _fimmExposureTime     :: !(Maybe (Textual Double))
+    , _fimmCameraModel      :: !(Maybe Text)
+    , _fimmWhiteBalance     :: !(Maybe Text)
+    , _fimmLens             :: !(Maybe Text)
+    , _fimmFlashUsed        :: !(Maybe Bool)
+    , _fimmExposureBias     :: !(Maybe (Textual Double))
+    , _fimmMeteringMode     :: !(Maybe Text)
+    , _fimmExposureMode     :: !(Maybe Text)
+    , _fimmSensor           :: !(Maybe Text)
+    , _fimmColorSpace       :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FileImageMediaMetadata' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fimmRotation'
+--
+-- * 'fimmHeight'
+--
+-- * 'fimmSubjectDistance'
+--
+-- * 'fimmMaxApertureValue'
+--
+-- * 'fimmIsoSpeed'
+--
+-- * 'fimmTime'
+--
+-- * 'fimmLocation'
+--
+-- * 'fimmAperture'
+--
+-- * 'fimmFocalLength'
+--
+-- * 'fimmCameraMake'
+--
+-- * 'fimmWidth'
+--
+-- * 'fimmExposureTime'
+--
+-- * 'fimmCameraModel'
+--
+-- * 'fimmWhiteBalance'
+--
+-- * 'fimmLens'
+--
+-- * 'fimmFlashUsed'
+--
+-- * 'fimmExposureBias'
+--
+-- * 'fimmMeteringMode'
+--
+-- * 'fimmExposureMode'
+--
+-- * 'fimmSensor'
+--
+-- * 'fimmColorSpace'
+fileImageMediaMetadata
+    :: FileImageMediaMetadata
+fileImageMediaMetadata =
+  FileImageMediaMetadata'
+    { _fimmRotation = Nothing
+    , _fimmHeight = Nothing
+    , _fimmSubjectDistance = Nothing
+    , _fimmMaxApertureValue = Nothing
+    , _fimmIsoSpeed = Nothing
+    , _fimmTime = Nothing
+    , _fimmLocation = Nothing
+    , _fimmAperture = Nothing
+    , _fimmFocalLength = Nothing
+    , _fimmCameraMake = Nothing
+    , _fimmWidth = Nothing
+    , _fimmExposureTime = Nothing
+    , _fimmCameraModel = Nothing
+    , _fimmWhiteBalance = Nothing
+    , _fimmLens = Nothing
+    , _fimmFlashUsed = Nothing
+    , _fimmExposureBias = Nothing
+    , _fimmMeteringMode = Nothing
+    , _fimmExposureMode = Nothing
+    , _fimmSensor = Nothing
+    , _fimmColorSpace = Nothing
+    }
+
+
+-- | The rotation in clockwise degrees from the image\'s original
+-- orientation.
+fimmRotation :: Lens' FileImageMediaMetadata (Maybe Int32)
+fimmRotation
+  = lens _fimmRotation (\ s a -> s{_fimmRotation = a})
+      . mapping _Coerce
+
+-- | The height of the image in pixels.
+fimmHeight :: Lens' FileImageMediaMetadata (Maybe Int32)
+fimmHeight
+  = lens _fimmHeight (\ s a -> s{_fimmHeight = a}) .
+      mapping _Coerce
+
+-- | The distance to the subject of the photo, in meters.
+fimmSubjectDistance :: Lens' FileImageMediaMetadata (Maybe Int32)
+fimmSubjectDistance
+  = lens _fimmSubjectDistance
+      (\ s a -> s{_fimmSubjectDistance = a})
+      . mapping _Coerce
+
+-- | The smallest f-number of the lens at the focal length used to create the
+-- photo (APEX value).
+fimmMaxApertureValue :: Lens' FileImageMediaMetadata (Maybe Double)
+fimmMaxApertureValue
+  = lens _fimmMaxApertureValue
+      (\ s a -> s{_fimmMaxApertureValue = a})
+      . mapping _Coerce
+
+-- | The ISO speed used to create the photo.
+fimmIsoSpeed :: Lens' FileImageMediaMetadata (Maybe Int32)
+fimmIsoSpeed
+  = lens _fimmIsoSpeed (\ s a -> s{_fimmIsoSpeed = a})
+      . mapping _Coerce
+
+-- | The date and time the photo was taken (EXIF DateTime).
+fimmTime :: Lens' FileImageMediaMetadata (Maybe Text)
+fimmTime = lens _fimmTime (\ s a -> s{_fimmTime = a})
+
+-- | Geographic location information stored in the image.
+fimmLocation :: Lens' FileImageMediaMetadata (Maybe FileImageMediaMetadataLocation)
+fimmLocation
+  = lens _fimmLocation (\ s a -> s{_fimmLocation = a})
+
+-- | The aperture used to create the photo (f-number).
+fimmAperture :: Lens' FileImageMediaMetadata (Maybe Double)
+fimmAperture
+  = lens _fimmAperture (\ s a -> s{_fimmAperture = a})
+      . mapping _Coerce
+
+-- | The focal length used to create the photo, in millimeters.
+fimmFocalLength :: Lens' FileImageMediaMetadata (Maybe Double)
+fimmFocalLength
+  = lens _fimmFocalLength
+      (\ s a -> s{_fimmFocalLength = a})
+      . mapping _Coerce
+
+-- | The make of the camera used to create the photo.
+fimmCameraMake :: Lens' FileImageMediaMetadata (Maybe Text)
+fimmCameraMake
+  = lens _fimmCameraMake
+      (\ s a -> s{_fimmCameraMake = a})
+
+-- | The width of the image in pixels.
+fimmWidth :: Lens' FileImageMediaMetadata (Maybe Int32)
+fimmWidth
+  = lens _fimmWidth (\ s a -> s{_fimmWidth = a}) .
+      mapping _Coerce
+
+-- | The length of the exposure, in seconds.
+fimmExposureTime :: Lens' FileImageMediaMetadata (Maybe Double)
+fimmExposureTime
+  = lens _fimmExposureTime
+      (\ s a -> s{_fimmExposureTime = a})
+      . mapping _Coerce
+
+-- | The model of the camera used to create the photo.
+fimmCameraModel :: Lens' FileImageMediaMetadata (Maybe Text)
+fimmCameraModel
+  = lens _fimmCameraModel
+      (\ s a -> s{_fimmCameraModel = a})
+
+-- | The white balance mode used to create the photo.
+fimmWhiteBalance :: Lens' FileImageMediaMetadata (Maybe Text)
+fimmWhiteBalance
+  = lens _fimmWhiteBalance
+      (\ s a -> s{_fimmWhiteBalance = a})
+
+-- | The lens used to create the photo.
+fimmLens :: Lens' FileImageMediaMetadata (Maybe Text)
+fimmLens = lens _fimmLens (\ s a -> s{_fimmLens = a})
+
+-- | Whether a flash was used to create the photo.
+fimmFlashUsed :: Lens' FileImageMediaMetadata (Maybe Bool)
+fimmFlashUsed
+  = lens _fimmFlashUsed
+      (\ s a -> s{_fimmFlashUsed = a})
+
+-- | The exposure bias of the photo (APEX value).
+fimmExposureBias :: Lens' FileImageMediaMetadata (Maybe Double)
+fimmExposureBias
+  = lens _fimmExposureBias
+      (\ s a -> s{_fimmExposureBias = a})
+      . mapping _Coerce
+
+-- | The metering mode used to create the photo.
+fimmMeteringMode :: Lens' FileImageMediaMetadata (Maybe Text)
+fimmMeteringMode
+  = lens _fimmMeteringMode
+      (\ s a -> s{_fimmMeteringMode = a})
+
+-- | The exposure mode used to create the photo.
+fimmExposureMode :: Lens' FileImageMediaMetadata (Maybe Text)
+fimmExposureMode
+  = lens _fimmExposureMode
+      (\ s a -> s{_fimmExposureMode = a})
+
+-- | The type of sensor used to create the photo.
+fimmSensor :: Lens' FileImageMediaMetadata (Maybe Text)
+fimmSensor
+  = lens _fimmSensor (\ s a -> s{_fimmSensor = a})
+
+-- | The color space of the photo.
+fimmColorSpace :: Lens' FileImageMediaMetadata (Maybe Text)
+fimmColorSpace
+  = lens _fimmColorSpace
+      (\ s a -> s{_fimmColorSpace = a})
+
+instance FromJSON FileImageMediaMetadata where
+        parseJSON
+          = withObject "FileImageMediaMetadata"
+              (\ o ->
+                 FileImageMediaMetadata' <$>
+                   (o .:? "rotation") <*> (o .:? "height") <*>
+                     (o .:? "subjectDistance")
+                     <*> (o .:? "maxApertureValue")
+                     <*> (o .:? "isoSpeed")
+                     <*> (o .:? "time")
+                     <*> (o .:? "location")
+                     <*> (o .:? "aperture")
+                     <*> (o .:? "focalLength")
+                     <*> (o .:? "cameraMake")
+                     <*> (o .:? "width")
+                     <*> (o .:? "exposureTime")
+                     <*> (o .:? "cameraModel")
+                     <*> (o .:? "whiteBalance")
+                     <*> (o .:? "lens")
+                     <*> (o .:? "flashUsed")
+                     <*> (o .:? "exposureBias")
+                     <*> (o .:? "meteringMode")
+                     <*> (o .:? "exposureMode")
+                     <*> (o .:? "sensor")
+                     <*> (o .:? "colorSpace"))
+
+instance ToJSON FileImageMediaMetadata where
+        toJSON FileImageMediaMetadata'{..}
+          = object
+              (catMaybes
+                 [("rotation" .=) <$> _fimmRotation,
+                  ("height" .=) <$> _fimmHeight,
+                  ("subjectDistance" .=) <$> _fimmSubjectDistance,
+                  ("maxApertureValue" .=) <$> _fimmMaxApertureValue,
+                  ("isoSpeed" .=) <$> _fimmIsoSpeed,
+                  ("time" .=) <$> _fimmTime,
+                  ("location" .=) <$> _fimmLocation,
+                  ("aperture" .=) <$> _fimmAperture,
+                  ("focalLength" .=) <$> _fimmFocalLength,
+                  ("cameraMake" .=) <$> _fimmCameraMake,
+                  ("width" .=) <$> _fimmWidth,
+                  ("exposureTime" .=) <$> _fimmExposureTime,
+                  ("cameraModel" .=) <$> _fimmCameraModel,
+                  ("whiteBalance" .=) <$> _fimmWhiteBalance,
+                  ("lens" .=) <$> _fimmLens,
+                  ("flashUsed" .=) <$> _fimmFlashUsed,
+                  ("exposureBias" .=) <$> _fimmExposureBias,
+                  ("meteringMode" .=) <$> _fimmMeteringMode,
+                  ("exposureMode" .=) <$> _fimmExposureMode,
+                  ("sensor" .=) <$> _fimmSensor,
+                  ("colorSpace" .=) <$> _fimmColorSpace])
+
+-- | A comment on a file.
+--
+-- /See:/ 'comment' smart constructor.
+data Comment =
+  Comment'
+    { _comHTMLContent       :: !(Maybe Text)
+    , _comModifiedTime      :: !(Maybe DateTime')
+    , _comCreatedTime       :: !(Maybe DateTime')
+    , _comKind              :: !Text
+    , _comResolved          :: !(Maybe Bool)
+    , _comQuotedFileContent :: !(Maybe CommentQuotedFileContent)
+    , _comAnchor            :: !(Maybe Text)
+    , _comContent           :: !(Maybe Text)
+    , _comReplies           :: !(Maybe [Reply])
+    , _comAuthor            :: !(Maybe User)
+    , _comId                :: !(Maybe Text)
+    , _comDeleted           :: !(Maybe Bool)
+    }
+  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:
+--
+-- * 'comHTMLContent'
+--
+-- * 'comModifiedTime'
+--
+-- * 'comCreatedTime'
+--
+-- * 'comKind'
+--
+-- * 'comResolved'
+--
+-- * 'comQuotedFileContent'
+--
+-- * 'comAnchor'
+--
+-- * 'comContent'
+--
+-- * 'comReplies'
+--
+-- * 'comAuthor'
+--
+-- * 'comId'
+--
+-- * 'comDeleted'
+comment
+    :: Comment
+comment =
+  Comment'
+    { _comHTMLContent = Nothing
+    , _comModifiedTime = Nothing
+    , _comCreatedTime = Nothing
+    , _comKind = "drive#comment"
+    , _comResolved = Nothing
+    , _comQuotedFileContent = Nothing
+    , _comAnchor = Nothing
+    , _comContent = Nothing
+    , _comReplies = Nothing
+    , _comAuthor = Nothing
+    , _comId = Nothing
+    , _comDeleted = Nothing
+    }
+
+
+-- | The content of the comment with HTML formatting.
+comHTMLContent :: Lens' Comment (Maybe Text)
+comHTMLContent
+  = lens _comHTMLContent
+      (\ s a -> s{_comHTMLContent = a})
+
+-- | The last time the comment or any of its replies was modified (RFC 3339
+-- date-time).
+comModifiedTime :: Lens' Comment (Maybe UTCTime)
+comModifiedTime
+  = lens _comModifiedTime
+      (\ s a -> s{_comModifiedTime = a})
+      . mapping _DateTime
+
+-- | The time at which the comment was created (RFC 3339 date-time).
+comCreatedTime :: Lens' Comment (Maybe UTCTime)
+comCreatedTime
+  = lens _comCreatedTime
+      (\ s a -> s{_comCreatedTime = a})
+      . mapping _DateTime
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"drive#comment\".
+comKind :: Lens' Comment Text
+comKind = lens _comKind (\ s a -> s{_comKind = a})
+
+-- | Whether the comment has been resolved by one of its replies.
+comResolved :: Lens' Comment (Maybe Bool)
+comResolved
+  = lens _comResolved (\ s a -> s{_comResolved = a})
+
+-- | The file content to which the comment refers, typically within the
+-- anchor region. For a text file, for example, this would be the text at
+-- the location of the comment.
+comQuotedFileContent :: Lens' Comment (Maybe CommentQuotedFileContent)
+comQuotedFileContent
+  = lens _comQuotedFileContent
+      (\ s a -> s{_comQuotedFileContent = a})
+
+-- | A region of the document represented as a JSON string. See anchor
+-- documentation for details on how to define and interpret anchor
+-- properties.
+comAnchor :: Lens' Comment (Maybe Text)
+comAnchor
+  = lens _comAnchor (\ s a -> s{_comAnchor = a})
+
+-- | The plain text content of the comment. This field is used for setting
+-- the content, while htmlContent should be displayed.
+comContent :: Lens' Comment (Maybe Text)
+comContent
+  = lens _comContent (\ s a -> s{_comContent = a})
+
+-- | The full list of replies to the comment in chronological order.
+comReplies :: Lens' Comment [Reply]
+comReplies
+  = lens _comReplies (\ s a -> s{_comReplies = a}) .
+      _Default
+      . _Coerce
+
+-- | The user who created the comment.
+comAuthor :: Lens' Comment (Maybe User)
+comAuthor
+  = lens _comAuthor (\ s a -> s{_comAuthor = a})
+
+-- | The ID of the comment.
+comId :: Lens' Comment (Maybe Text)
+comId = lens _comId (\ s a -> s{_comId = a})
+
+-- | Whether the comment has been deleted. A deleted comment has no content.
+comDeleted :: Lens' Comment (Maybe Bool)
+comDeleted
+  = lens _comDeleted (\ s a -> s{_comDeleted = a})
+
+instance FromJSON Comment where
+        parseJSON
+          = withObject "Comment"
+              (\ o ->
+                 Comment' <$>
+                   (o .:? "htmlContent") <*> (o .:? "modifiedTime") <*>
+                     (o .:? "createdTime")
+                     <*> (o .:? "kind" .!= "drive#comment")
+                     <*> (o .:? "resolved")
+                     <*> (o .:? "quotedFileContent")
+                     <*> (o .:? "anchor")
+                     <*> (o .:? "content")
+                     <*> (o .:? "replies" .!= mempty)
+                     <*> (o .:? "author")
+                     <*> (o .:? "id")
+                     <*> (o .:? "deleted"))
+
+instance ToJSON Comment where
+        toJSON Comment'{..}
+          = object
+              (catMaybes
+                 [("htmlContent" .=) <$> _comHTMLContent,
+                  ("modifiedTime" .=) <$> _comModifiedTime,
+                  ("createdTime" .=) <$> _comCreatedTime,
+                  Just ("kind" .= _comKind),
+                  ("resolved" .=) <$> _comResolved,
+                  ("quotedFileContent" .=) <$> _comQuotedFileContent,
+                  ("anchor" .=) <$> _comAnchor,
+                  ("content" .=) <$> _comContent,
+                  ("replies" .=) <$> _comReplies,
+                  ("author" .=) <$> _comAuthor, ("id" .=) <$> _comId,
+                  ("deleted" .=) <$> _comDeleted])
+
+-- | The metadata for a revision to a file.
+--
+-- /See:/ 'revision' smart constructor.
+data Revision =
+  Revision'
+    { _revModifiedTime           :: !(Maybe DateTime')
+    , _revSize                   :: !(Maybe (Textual Int64))
+    , _revOriginalFilename       :: !(Maybe Text)
+    , _revKind                   :: !Text
+    , _revPublished              :: !(Maybe Bool)
+    , _revLastModifyingUser      :: !(Maybe User)
+    , _revPublishAuto            :: !(Maybe Bool)
+    , _revMD5Checksum            :: !(Maybe Text)
+    , _revKeepForever            :: !(Maybe Bool)
+    , _revMimeType               :: !(Maybe Text)
+    , _revExportLinks            :: !(Maybe RevisionExportLinks)
+    , _revPublishedOutsideDomain :: !(Maybe Bool)
+    , _revId                     :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Revision' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'revModifiedTime'
+--
+-- * 'revSize'
+--
+-- * 'revOriginalFilename'
+--
+-- * 'revKind'
+--
+-- * 'revPublished'
+--
+-- * 'revLastModifyingUser'
+--
+-- * 'revPublishAuto'
+--
+-- * 'revMD5Checksum'
+--
+-- * 'revKeepForever'
+--
+-- * 'revMimeType'
+--
+-- * 'revExportLinks'
+--
+-- * 'revPublishedOutsideDomain'
+--
+-- * 'revId'
+revision
+    :: Revision
+revision =
+  Revision'
+    { _revModifiedTime = Nothing
+    , _revSize = Nothing
+    , _revOriginalFilename = Nothing
+    , _revKind = "drive#revision"
+    , _revPublished = Nothing
+    , _revLastModifyingUser = Nothing
+    , _revPublishAuto = Nothing
+    , _revMD5Checksum = Nothing
+    , _revKeepForever = Nothing
+    , _revMimeType = Nothing
+    , _revExportLinks = Nothing
+    , _revPublishedOutsideDomain = Nothing
+    , _revId = Nothing
+    }
+
+
+-- | The last time the revision was modified (RFC 3339 date-time).
+revModifiedTime :: Lens' Revision (Maybe UTCTime)
+revModifiedTime
+  = lens _revModifiedTime
+      (\ s a -> s{_revModifiedTime = a})
+      . mapping _DateTime
+
+-- | The size of the revision\'s content in bytes. This is only applicable to
+-- files with binary content in Drive.
+revSize :: Lens' Revision (Maybe Int64)
+revSize
+  = lens _revSize (\ s a -> s{_revSize = a}) .
+      mapping _Coerce
+
+-- | The original filename used to create this revision. This is only
+-- applicable to files with binary content in Drive.
+revOriginalFilename :: Lens' Revision (Maybe Text)
+revOriginalFilename
+  = lens _revOriginalFilename
+      (\ s a -> s{_revOriginalFilename = a})
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"drive#revision\".
+revKind :: Lens' Revision Text
+revKind = lens _revKind (\ s a -> s{_revKind = a})
+
+-- | Whether this revision is published. This is only applicable to Google
+-- Docs.
+revPublished :: Lens' Revision (Maybe Bool)
+revPublished
+  = lens _revPublished (\ s a -> s{_revPublished = a})
+
+-- | The last user to modify this revision.
+revLastModifyingUser :: Lens' Revision (Maybe User)
+revLastModifyingUser
+  = lens _revLastModifyingUser
+      (\ s a -> s{_revLastModifyingUser = a})
+
+-- | Whether subsequent revisions will be automatically republished. This is
+-- only applicable to Google Docs.
+revPublishAuto :: Lens' Revision (Maybe Bool)
+revPublishAuto
+  = lens _revPublishAuto
+      (\ s a -> s{_revPublishAuto = a})
+
+-- | The MD5 checksum of the revision\'s content. This is only applicable to
+-- files with binary content in Drive.
+revMD5Checksum :: Lens' Revision (Maybe Text)
+revMD5Checksum
+  = lens _revMD5Checksum
+      (\ s a -> s{_revMD5Checksum = a})
+
+-- | Whether to keep this revision forever, even if it is no longer the head
+-- revision. If not set, the revision will be automatically purged 30 days
+-- after newer content is uploaded. This can be set on a maximum of 200
+-- revisions for a file. This field is only applicable to files with binary
+-- content in Drive.
+revKeepForever :: Lens' Revision (Maybe Bool)
+revKeepForever
+  = lens _revKeepForever
+      (\ s a -> s{_revKeepForever = a})
+
+-- | The MIME type of the revision.
+revMimeType :: Lens' Revision (Maybe Text)
+revMimeType
+  = lens _revMimeType (\ s a -> s{_revMimeType = a})
+
+-- | Links for exporting Google Docs to specific formats.
+revExportLinks :: Lens' Revision (Maybe RevisionExportLinks)
+revExportLinks
+  = lens _revExportLinks
+      (\ s a -> s{_revExportLinks = a})
+
+-- | Whether this revision is published outside the domain. This is only
+-- applicable to Google Docs.
+revPublishedOutsideDomain :: Lens' Revision (Maybe Bool)
+revPublishedOutsideDomain
+  = lens _revPublishedOutsideDomain
+      (\ s a -> s{_revPublishedOutsideDomain = a})
+
+-- | The ID of the revision.
+revId :: Lens' Revision (Maybe Text)
+revId = lens _revId (\ s a -> s{_revId = a})
+
+instance FromJSON Revision where
+        parseJSON
+          = withObject "Revision"
+              (\ o ->
+                 Revision' <$>
+                   (o .:? "modifiedTime") <*> (o .:? "size") <*>
+                     (o .:? "originalFilename")
+                     <*> (o .:? "kind" .!= "drive#revision")
+                     <*> (o .:? "published")
+                     <*> (o .:? "lastModifyingUser")
+                     <*> (o .:? "publishAuto")
+                     <*> (o .:? "md5Checksum")
+                     <*> (o .:? "keepForever")
+                     <*> (o .:? "mimeType")
+                     <*> (o .:? "exportLinks")
+                     <*> (o .:? "publishedOutsideDomain")
+                     <*> (o .:? "id"))
+
+instance ToJSON Revision where
+        toJSON Revision'{..}
+          = object
+              (catMaybes
+                 [("modifiedTime" .=) <$> _revModifiedTime,
+                  ("size" .=) <$> _revSize,
+                  ("originalFilename" .=) <$> _revOriginalFilename,
+                  Just ("kind" .= _revKind),
+                  ("published" .=) <$> _revPublished,
+                  ("lastModifyingUser" .=) <$> _revLastModifyingUser,
+                  ("publishAuto" .=) <$> _revPublishAuto,
+                  ("md5Checksum" .=) <$> _revMD5Checksum,
+                  ("keepForever" .=) <$> _revKeepForever,
+                  ("mimeType" .=) <$> _revMimeType,
+                  ("exportLinks" .=) <$> _revExportLinks,
+                  ("publishedOutsideDomain" .=) <$>
+                    _revPublishedOutsideDomain,
+                  ("id" .=) <$> _revId])
+
+-- | A permission for a file. A permission grants a user, group, domain or
+-- the world access to a file or a folder hierarchy.
+--
+-- /See:/ 'permission' smart constructor.
+data Permission =
+  Permission'
+    { _pPhotoLink                  :: !(Maybe Text)
+    , _pTeamDrivePermissionDetails :: !(Maybe [PermissionTeamDrivePermissionDetailsItem])
+    , _pKind                       :: !Text
+    , _pDomain                     :: !(Maybe Text)
+    , _pRole                       :: !(Maybe Text)
+    , _pEmailAddress               :: !(Maybe Text)
+    , _pAllowFileDiscovery         :: !(Maybe Bool)
+    , _pDisplayName                :: !(Maybe Text)
+    , _pId                         :: !(Maybe Text)
+    , _pDeleted                    :: !(Maybe Bool)
+    , _pType                       :: !(Maybe Text)
+    , _pExpirationTime             :: !(Maybe DateTime')
+    , _pPermissionDetails          :: !(Maybe [PermissionPermissionDetailsItem])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'Permission' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'pPhotoLink'
+--
+-- * 'pTeamDrivePermissionDetails'
+--
+-- * 'pKind'
+--
+-- * 'pDomain'
+--
+-- * 'pRole'
+--
+-- * 'pEmailAddress'
+--
+-- * 'pAllowFileDiscovery'
+--
+-- * 'pDisplayName'
+--
+-- * 'pId'
+--
+-- * 'pDeleted'
+--
+-- * 'pType'
+--
+-- * 'pExpirationTime'
+--
+-- * 'pPermissionDetails'
+permission
+    :: Permission
+permission =
+  Permission'
+    { _pPhotoLink = Nothing
+    , _pTeamDrivePermissionDetails = Nothing
+    , _pKind = "drive#permission"
+    , _pDomain = Nothing
+    , _pRole = Nothing
+    , _pEmailAddress = Nothing
+    , _pAllowFileDiscovery = Nothing
+    , _pDisplayName = Nothing
+    , _pId = Nothing
+    , _pDeleted = Nothing
+    , _pType = Nothing
+    , _pExpirationTime = Nothing
+    , _pPermissionDetails = Nothing
+    }
+
+
+-- | A link to the user\'s profile photo, if available.
+pPhotoLink :: Lens' Permission (Maybe Text)
+pPhotoLink
+  = lens _pPhotoLink (\ s a -> s{_pPhotoLink = a})
+
+-- | Deprecated - use permissionDetails instead.
+pTeamDrivePermissionDetails :: Lens' Permission [PermissionTeamDrivePermissionDetailsItem]
+pTeamDrivePermissionDetails
+  = lens _pTeamDrivePermissionDetails
+      (\ s a -> s{_pTeamDrivePermissionDetails = a})
+      . _Default
+      . _Coerce
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"drive#permission\".
+pKind :: Lens' Permission Text
+pKind = lens _pKind (\ s a -> s{_pKind = a})
+
+-- | The domain to which this permission refers.
+pDomain :: Lens' Permission (Maybe Text)
+pDomain = lens _pDomain (\ s a -> s{_pDomain = a})
+
+-- | The role granted by this permission. While new values may be supported
+-- in the future, the following are currently allowed: - owner - organizer
+-- - fileOrganizer - writer - commenter - reader
+pRole :: Lens' Permission (Maybe Text)
+pRole = lens _pRole (\ s a -> s{_pRole = a})
+
+-- | The email address of the user or group to which this permission refers.
+pEmailAddress :: Lens' Permission (Maybe Text)
+pEmailAddress
+  = lens _pEmailAddress
+      (\ s a -> s{_pEmailAddress = a})
+
+-- | Whether the permission allows the file to be discovered through search.
+-- This is only applicable for permissions of type domain or anyone.
+pAllowFileDiscovery :: Lens' Permission (Maybe Bool)
+pAllowFileDiscovery
+  = lens _pAllowFileDiscovery
+      (\ s a -> s{_pAllowFileDiscovery = a})
+
+-- | A displayable name for users, groups or domains.
+pDisplayName :: Lens' Permission (Maybe Text)
+pDisplayName
+  = lens _pDisplayName (\ s a -> s{_pDisplayName = a})
+
+-- | The ID of this permission. This is a unique identifier for the grantee,
+-- and is published in User resources as permissionId.
+pId :: Lens' Permission (Maybe Text)
+pId = lens _pId (\ s a -> s{_pId = a})
+
+-- | Whether the account associated with this permission has been deleted.
+-- This field only pertains to user and group permissions.
+pDeleted :: Lens' Permission (Maybe Bool)
+pDeleted = lens _pDeleted (\ s a -> s{_pDeleted = a})
+
+-- | The type of the grantee. Valid values are: - user - group - domain -
+-- anyone
+pType :: Lens' Permission (Maybe Text)
+pType = lens _pType (\ s a -> s{_pType = a})
+
+-- | The time at which this permission will expire (RFC 3339 date-time).
+-- Expiration times have the following restrictions: - They can only be set
+-- on user and group permissions - The time must be in the future - The
+-- time cannot be more than a year in the future
+pExpirationTime :: Lens' Permission (Maybe UTCTime)
+pExpirationTime
+  = lens _pExpirationTime
+      (\ s a -> s{_pExpirationTime = a})
+      . mapping _DateTime
+
+-- | Details of whether the permissions on this shared drive item are
+-- inherited or directly on this item. This is an output-only field which
+-- is present only for shared drive items.
+pPermissionDetails :: Lens' Permission [PermissionPermissionDetailsItem]
+pPermissionDetails
+  = lens _pPermissionDetails
+      (\ s a -> s{_pPermissionDetails = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON Permission where
+        parseJSON
+          = withObject "Permission"
+              (\ o ->
+                 Permission' <$>
+                   (o .:? "photoLink") <*>
+                     (o .:? "teamDrivePermissionDetails" .!= mempty)
+                     <*> (o .:? "kind" .!= "drive#permission")
+                     <*> (o .:? "domain")
+                     <*> (o .:? "role")
+                     <*> (o .:? "emailAddress")
+                     <*> (o .:? "allowFileDiscovery")
+                     <*> (o .:? "displayName")
+                     <*> (o .:? "id")
+                     <*> (o .:? "deleted")
+                     <*> (o .:? "type")
+                     <*> (o .:? "expirationTime")
+                     <*> (o .:? "permissionDetails" .!= mempty))
+
+instance ToJSON Permission where
+        toJSON Permission'{..}
+          = object
+              (catMaybes
+                 [("photoLink" .=) <$> _pPhotoLink,
+                  ("teamDrivePermissionDetails" .=) <$>
+                    _pTeamDrivePermissionDetails,
+                  Just ("kind" .= _pKind), ("domain" .=) <$> _pDomain,
+                  ("role" .=) <$> _pRole,
+                  ("emailAddress" .=) <$> _pEmailAddress,
+                  ("allowFileDiscovery" .=) <$> _pAllowFileDiscovery,
+                  ("displayName" .=) <$> _pDisplayName,
+                  ("id" .=) <$> _pId, ("deleted" .=) <$> _pDeleted,
+                  ("type" .=) <$> _pType,
+                  ("expirationTime" .=) <$> _pExpirationTime,
+                  ("permissionDetails" .=) <$> _pPermissionDetails])
+
+-- | A set of restrictions that apply to this shared drive or items inside
+-- this shared drive.
+--
+-- /See:/ 'driveRestrictions' smart constructor.
+data DriveRestrictions =
+  DriveRestrictions'
+    { _drAdminManagedRestrictions     :: !(Maybe Bool)
+    , _drDriveMembersOnly             :: !(Maybe Bool)
+    , _drCopyRequiresWriterPermission :: !(Maybe Bool)
+    , _drDomainUsersOnly              :: !(Maybe Bool)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DriveRestrictions' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'drAdminManagedRestrictions'
+--
+-- * 'drDriveMembersOnly'
+--
+-- * 'drCopyRequiresWriterPermission'
+--
+-- * 'drDomainUsersOnly'
+driveRestrictions
+    :: DriveRestrictions
+driveRestrictions =
+  DriveRestrictions'
+    { _drAdminManagedRestrictions = Nothing
+    , _drDriveMembersOnly = Nothing
+    , _drCopyRequiresWriterPermission = Nothing
+    , _drDomainUsersOnly = Nothing
+    }
+
+
+-- | Whether administrative privileges on this shared drive are required to
+-- modify restrictions.
+drAdminManagedRestrictions :: Lens' DriveRestrictions (Maybe Bool)
+drAdminManagedRestrictions
+  = lens _drAdminManagedRestrictions
+      (\ s a -> s{_drAdminManagedRestrictions = a})
+
+-- | Whether access to items inside this shared drive is restricted to its
+-- members.
+drDriveMembersOnly :: Lens' DriveRestrictions (Maybe Bool)
+drDriveMembersOnly
+  = lens _drDriveMembersOnly
+      (\ s a -> s{_drDriveMembersOnly = a})
+
+-- | Whether the options to copy, print, or download files inside this shared
+-- drive, should be disabled for readers and commenters. When this
+-- restriction is set to true, it will override the similarly named field
+-- to true for any file inside this shared drive.
+drCopyRequiresWriterPermission :: Lens' DriveRestrictions (Maybe Bool)
+drCopyRequiresWriterPermission
+  = lens _drCopyRequiresWriterPermission
+      (\ s a -> s{_drCopyRequiresWriterPermission = a})
+
+-- | Whether access to this shared drive and items inside this shared drive
+-- is restricted to users of the domain to which this shared drive belongs.
+-- This restriction may be overridden by other sharing policies controlled
+-- outside of this shared drive.
+drDomainUsersOnly :: Lens' DriveRestrictions (Maybe Bool)
+drDomainUsersOnly
+  = lens _drDomainUsersOnly
+      (\ s a -> s{_drDomainUsersOnly = a})
+
+instance FromJSON DriveRestrictions where
+        parseJSON
+          = withObject "DriveRestrictions"
+              (\ o ->
+                 DriveRestrictions' <$>
+                   (o .:? "adminManagedRestrictions") <*>
+                     (o .:? "driveMembersOnly")
+                     <*> (o .:? "copyRequiresWriterPermission")
+                     <*> (o .:? "domainUsersOnly"))
+
+instance ToJSON DriveRestrictions where
+        toJSON DriveRestrictions'{..}
+          = object
+              (catMaybes
+                 [("adminManagedRestrictions" .=) <$>
+                    _drAdminManagedRestrictions,
+                  ("driveMembersOnly" .=) <$> _drDriveMembersOnly,
+                  ("copyRequiresWriterPermission" .=) <$>
+                    _drCopyRequiresWriterPermission,
+                  ("domainUsersOnly" .=) <$> _drDomainUsersOnly])
+
+-- | The metadata for a file.
+--
+-- /See:/ 'file' smart constructor.
+data File =
+  File'
+    { _fOwnedByMe                    :: !(Maybe Bool)
+    , _fThumbnailLink                :: !(Maybe Text)
+    , _fFullFileExtension            :: !(Maybe Text)
+    , _fModifiedTime                 :: !(Maybe DateTime')
+    , _fModifiedByMeTime             :: !(Maybe DateTime')
+    , _fFileExtension                :: !(Maybe Text)
+    , _fViewedByMe                   :: !(Maybe Bool)
+    , _fOwners                       :: !(Maybe [User])
+    , _fViewedByMeTime               :: !(Maybe DateTime')
+    , _fModifiedByMe                 :: !(Maybe Bool)
+    , _fSize                         :: !(Maybe (Textual Int64))
+    , _fTrashed                      :: !(Maybe Bool)
+    , _fWebViewLink                  :: !(Maybe Text)
+    , _fCreatedTime                  :: !(Maybe DateTime')
+    , _fTrashedTime                  :: !(Maybe DateTime')
+    , _fOriginalFilename             :: !(Maybe Text)
+    , _fKind                         :: !Text
+    , _fLastModifyingUser            :: !(Maybe User)
+    , _fIconLink                     :: !(Maybe Text)
+    , _fHasThumbnail                 :: !(Maybe Bool)
+    , _fThumbnailVersion             :: !(Maybe (Textual Int64))
+    , _fImageMediaMetadata           :: !(Maybe FileImageMediaMetadata)
+    , _fExplicitlyTrashed            :: !(Maybe Bool)
+    , _fShared                       :: !(Maybe Bool)
+    , _fMD5Checksum                  :: !(Maybe Text)
+    , _fTeamDriveId                  :: !(Maybe Text)
+    , _fFolderColorRgb               :: !(Maybe Text)
+    , _fMimeType                     :: !(Maybe Text)
+    , _fIsAppAuthorized              :: !(Maybe Bool)
+    , _fCopyRequiresWriterPermission :: !(Maybe Bool)
+    , _fName                         :: !(Maybe Text)
+    , _fExportLinks                  :: !(Maybe FileExportLinks)
+    , _fParents                      :: !(Maybe [Text])
+    , _fStarred                      :: !(Maybe Bool)
+    , _fSpaces                       :: !(Maybe [Text])
+    , _fVersion                      :: !(Maybe (Textual Int64))
+    , _fHasAugmentedPermissions      :: !(Maybe Bool)
+    , _fWritersCanShare              :: !(Maybe Bool)
+    , _fTrashingUser                 :: !(Maybe User)
+    , _fId                           :: !(Maybe Text)
+    , _fPermissionIds                :: !(Maybe [Text])
+    , _fPermissions                  :: !(Maybe [Permission])
+    , _fQuotaBytesUsed               :: !(Maybe (Textual Int64))
+    , _fAppProperties                :: !(Maybe FileAppProperties)
+    , _fVideoMediaMetadata           :: !(Maybe FileVideoMediaMetadata)
+    , _fSharedWithMeTime             :: !(Maybe DateTime')
+    , _fHeadRevisionId               :: !(Maybe Text)
+    , _fCapabilities                 :: !(Maybe FileCapabilities)
+    , _fDescription                  :: !(Maybe Text)
+    , _fViewersCanCopyContent        :: !(Maybe Bool)
+    , _fDriveId                      :: !(Maybe Text)
+    , _fSharingUser                  :: !(Maybe User)
+    , _fWebContentLink               :: !(Maybe Text)
+    , _fContentHints                 :: !(Maybe FileContentHints)
+    , _fProperties                   :: !(Maybe FileProperties)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'File' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'fOwnedByMe'
+--
+-- * 'fThumbnailLink'
+--
+-- * 'fFullFileExtension'
+--
+-- * 'fModifiedTime'
+--
+-- * 'fModifiedByMeTime'
+--
+-- * 'fFileExtension'
+--
+-- * 'fViewedByMe'
+--
+-- * 'fOwners'
+--
+-- * 'fViewedByMeTime'
+--
+-- * 'fModifiedByMe'
+--
+-- * 'fSize'
+--
+-- * 'fTrashed'
+--
+-- * 'fWebViewLink'
+--
+-- * 'fCreatedTime'
+--
+-- * 'fTrashedTime'
+--
+-- * 'fOriginalFilename'
+--
+-- * 'fKind'
+--
+-- * 'fLastModifyingUser'
+--
+-- * 'fIconLink'
+--
+-- * 'fHasThumbnail'
+--
+-- * 'fThumbnailVersion'
+--
+-- * 'fImageMediaMetadata'
+--
+-- * 'fExplicitlyTrashed'
+--
+-- * 'fShared'
+--
+-- * 'fMD5Checksum'
+--
+-- * 'fTeamDriveId'
+--
+-- * 'fFolderColorRgb'
+--
+-- * 'fMimeType'
+--
+-- * 'fIsAppAuthorized'
+--
+-- * 'fCopyRequiresWriterPermission'
+--
+-- * 'fName'
+--
+-- * 'fExportLinks'
+--
+-- * 'fParents'
+--
+-- * 'fStarred'
+--
+-- * 'fSpaces'
+--
+-- * 'fVersion'
+--
+-- * 'fHasAugmentedPermissions'
+--
+-- * 'fWritersCanShare'
+--
+-- * 'fTrashingUser'
+--
+-- * 'fId'
+--
+-- * 'fPermissionIds'
+--
+-- * 'fPermissions'
+--
+-- * 'fQuotaBytesUsed'
+--
+-- * 'fAppProperties'
+--
+-- * 'fVideoMediaMetadata'
+--
+-- * 'fSharedWithMeTime'
+--
+-- * 'fHeadRevisionId'
+--
+-- * 'fCapabilities'
+--
+-- * 'fDescription'
+--
+-- * 'fViewersCanCopyContent'
+--
+-- * 'fDriveId'
+--
+-- * 'fSharingUser'
+--
+-- * 'fWebContentLink'
+--
+-- * 'fContentHints'
+--
+-- * 'fProperties'
+file
+    :: File
+file =
+  File'
+    { _fOwnedByMe = Nothing
+    , _fThumbnailLink = Nothing
+    , _fFullFileExtension = Nothing
+    , _fModifiedTime = Nothing
+    , _fModifiedByMeTime = Nothing
+    , _fFileExtension = Nothing
+    , _fViewedByMe = Nothing
+    , _fOwners = Nothing
+    , _fViewedByMeTime = Nothing
+    , _fModifiedByMe = Nothing
+    , _fSize = Nothing
+    , _fTrashed = Nothing
+    , _fWebViewLink = Nothing
+    , _fCreatedTime = Nothing
+    , _fTrashedTime = Nothing
+    , _fOriginalFilename = Nothing
+    , _fKind = "drive#file"
+    , _fLastModifyingUser = Nothing
+    , _fIconLink = Nothing
+    , _fHasThumbnail = Nothing
+    , _fThumbnailVersion = Nothing
+    , _fImageMediaMetadata = Nothing
+    , _fExplicitlyTrashed = Nothing
+    , _fShared = Nothing
+    , _fMD5Checksum = Nothing
+    , _fTeamDriveId = Nothing
+    , _fFolderColorRgb = Nothing
+    , _fMimeType = Nothing
+    , _fIsAppAuthorized = Nothing
+    , _fCopyRequiresWriterPermission = Nothing
+    , _fName = Nothing
+    , _fExportLinks = Nothing
+    , _fParents = Nothing
+    , _fStarred = Nothing
+    , _fSpaces = Nothing
+    , _fVersion = Nothing
+    , _fHasAugmentedPermissions = Nothing
+    , _fWritersCanShare = Nothing
+    , _fTrashingUser = Nothing
+    , _fId = Nothing
+    , _fPermissionIds = Nothing
+    , _fPermissions = Nothing
+    , _fQuotaBytesUsed = Nothing
+    , _fAppProperties = Nothing
+    , _fVideoMediaMetadata = Nothing
+    , _fSharedWithMeTime = Nothing
+    , _fHeadRevisionId = Nothing
+    , _fCapabilities = Nothing
+    , _fDescription = Nothing
+    , _fViewersCanCopyContent = Nothing
+    , _fDriveId = Nothing
+    , _fSharingUser = Nothing
+    , _fWebContentLink = Nothing
+    , _fContentHints = Nothing
+    , _fProperties = Nothing
+    }
+
+
+-- | Whether the user owns the file. Not populated for items in shared
+-- drives.
+fOwnedByMe :: Lens' File (Maybe Bool)
+fOwnedByMe
+  = lens _fOwnedByMe (\ s a -> s{_fOwnedByMe = a})
+
+-- | A short-lived link to the file\'s thumbnail, if available. Typically
+-- lasts on the order of hours. Only populated when the requesting app can
+-- access the file\'s content.
+fThumbnailLink :: Lens' File (Maybe Text)
+fThumbnailLink
+  = lens _fThumbnailLink
+      (\ s a -> s{_fThumbnailLink = a})
+
+-- | The full file extension extracted from the name field. May contain
+-- multiple concatenated extensions, such as \"tar.gz\". This is only
+-- available for files with binary content in Google Drive. This is
+-- automatically updated when the name field changes, however it is not
+-- cleared if the new name does not contain a valid extension.
+fFullFileExtension :: Lens' File (Maybe Text)
+fFullFileExtension
+  = lens _fFullFileExtension
+      (\ s a -> s{_fFullFileExtension = a})
+
+-- | The last time the file was modified by anyone (RFC 3339 date-time). Note
+-- that setting modifiedTime will also update modifiedByMeTime for the
+-- user.
+fModifiedTime :: Lens' File (Maybe UTCTime)
+fModifiedTime
+  = lens _fModifiedTime
+      (\ s a -> s{_fModifiedTime = a})
+      . mapping _DateTime
+
+-- | The last time the file was modified by the user (RFC 3339 date-time).
+fModifiedByMeTime :: Lens' File (Maybe UTCTime)
+fModifiedByMeTime
+  = lens _fModifiedByMeTime
+      (\ s a -> s{_fModifiedByMeTime = a})
+      . mapping _DateTime
+
+-- | The final component of fullFileExtension. This is only available for
+-- files with binary content in Google Drive.
+fFileExtension :: Lens' File (Maybe Text)
+fFileExtension
+  = lens _fFileExtension
+      (\ s a -> s{_fFileExtension = a})
+
+-- | Whether the file has been viewed by this user.
+fViewedByMe :: Lens' File (Maybe Bool)
+fViewedByMe
+  = lens _fViewedByMe (\ s a -> s{_fViewedByMe = a})
+
+-- | The owners of the file. Currently, only certain legacy files may have
+-- more than one owner. Not populated for items in shared drives.
+fOwners :: Lens' File [User]
+fOwners
+  = lens _fOwners (\ s a -> s{_fOwners = a}) . _Default
+      . _Coerce
+
+-- | The last time the file was viewed by the user (RFC 3339 date-time).
+fViewedByMeTime :: Lens' File (Maybe UTCTime)
+fViewedByMeTime
+  = lens _fViewedByMeTime
+      (\ s a -> s{_fViewedByMeTime = a})
+      . mapping _DateTime
+
+-- | Whether the file has been modified by this user.
+fModifiedByMe :: Lens' File (Maybe Bool)
+fModifiedByMe
+  = lens _fModifiedByMe
+      (\ s a -> s{_fModifiedByMe = a})
+
+-- | The size of the file\'s content in bytes. This is only applicable to
+-- files with binary content in Google Drive.
+fSize :: Lens' File (Maybe Int64)
+fSize
+  = lens _fSize (\ s a -> s{_fSize = a}) .
+      mapping _Coerce
+
+-- | Whether the file has been trashed, either explicitly or from a trashed
+-- parent folder. Only the owner may trash a file, and other users cannot
+-- see files in the owner\'s trash.
+fTrashed :: Lens' File (Maybe Bool)
+fTrashed = lens _fTrashed (\ s a -> s{_fTrashed = a})
+
+-- | A link for opening the file in a relevant Google editor or viewer in a
+-- browser.
+fWebViewLink :: Lens' File (Maybe Text)
+fWebViewLink
+  = lens _fWebViewLink (\ s a -> s{_fWebViewLink = a})
+
+-- | The time at which the file was created (RFC 3339 date-time).
+fCreatedTime :: Lens' File (Maybe UTCTime)
+fCreatedTime
+  = lens _fCreatedTime (\ s a -> s{_fCreatedTime = a})
+      . mapping _DateTime
+
+-- | The time that the item was trashed (RFC 3339 date-time). Only populated
+-- for items in shared drives.
+fTrashedTime :: Lens' File (Maybe UTCTime)
+fTrashedTime
+  = lens _fTrashedTime (\ s a -> s{_fTrashedTime = a})
+      . mapping _DateTime
+
+-- | The original filename of the uploaded content if available, or else the
+-- original value of the name field. This is only available for files with
+-- binary content in Google Drive.
+fOriginalFilename :: Lens' File (Maybe Text)
+fOriginalFilename
+  = lens _fOriginalFilename
+      (\ s a -> s{_fOriginalFilename = a})
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"drive#file\".
+fKind :: Lens' File Text
+fKind = lens _fKind (\ s a -> s{_fKind = a})
+
+-- | The last user to modify the file.
+fLastModifyingUser :: Lens' File (Maybe User)
+fLastModifyingUser
+  = lens _fLastModifyingUser
+      (\ s a -> s{_fLastModifyingUser = a})
+
+-- | A static, unauthenticated link to the file\'s icon.
+fIconLink :: Lens' File (Maybe Text)
+fIconLink
+  = lens _fIconLink (\ s a -> s{_fIconLink = a})
+
+-- | Whether this file has a thumbnail. This does not indicate whether the
+-- requesting app has access to the thumbnail. To check access, look for
+-- the presence of the thumbnailLink field.
+fHasThumbnail :: Lens' File (Maybe Bool)
+fHasThumbnail
+  = lens _fHasThumbnail
+      (\ s a -> s{_fHasThumbnail = a})
+
+-- | The thumbnail version for use in thumbnail cache invalidation.
+fThumbnailVersion :: Lens' File (Maybe Int64)
+fThumbnailVersion
+  = lens _fThumbnailVersion
+      (\ s a -> s{_fThumbnailVersion = a})
+      . mapping _Coerce
+
+-- | Additional metadata about image media, if available.
+fImageMediaMetadata :: Lens' File (Maybe FileImageMediaMetadata)
+fImageMediaMetadata
+  = lens _fImageMediaMetadata
+      (\ s a -> s{_fImageMediaMetadata = a})
+
+-- | Whether the file has been explicitly trashed, as opposed to recursively
+-- trashed from a parent folder.
+fExplicitlyTrashed :: Lens' File (Maybe Bool)
+fExplicitlyTrashed
+  = lens _fExplicitlyTrashed
+      (\ s a -> s{_fExplicitlyTrashed = a})
+
+-- | Whether the file has been shared. Not populated for items in shared
+-- drives.
+fShared :: Lens' File (Maybe Bool)
+fShared = lens _fShared (\ s a -> s{_fShared = a})
+
+-- | The MD5 checksum for the content of the file. This is only applicable to
+-- files with binary content in Google Drive.
+fMD5Checksum :: Lens' File (Maybe Text)
+fMD5Checksum
+  = lens _fMD5Checksum (\ s a -> s{_fMD5Checksum = a})
+
+-- | Deprecated - use driveId instead.
+fTeamDriveId :: Lens' File (Maybe Text)
+fTeamDriveId
+  = lens _fTeamDriveId (\ s a -> s{_fTeamDriveId = a})
+
+-- | The color for a folder as an RGB hex string. The supported colors are
+-- published in the folderColorPalette field of the About resource. If an
+-- unsupported color is specified, the closest color in the palette will be
+-- used instead.
+fFolderColorRgb :: Lens' File (Maybe Text)
+fFolderColorRgb
+  = lens _fFolderColorRgb
+      (\ s a -> s{_fFolderColorRgb = a})
+
+-- | The MIME type of the file. Google Drive will attempt to automatically
+-- detect an appropriate value from uploaded content if no value is
+-- provided. The value cannot be changed unless a new revision is uploaded.
+-- If a file is created with a Google Doc MIME type, the uploaded content
+-- will be imported if possible. The supported import formats are published
+-- in the About resource.
+fMimeType :: Lens' File (Maybe Text)
+fMimeType
+  = lens _fMimeType (\ s a -> s{_fMimeType = a})
+
+-- | Whether the file was created or opened by the requesting app.
+fIsAppAuthorized :: Lens' File (Maybe Bool)
+fIsAppAuthorized
+  = lens _fIsAppAuthorized
+      (\ s a -> s{_fIsAppAuthorized = a})
+
+-- | Whether the options to copy, print, or download this file, should be
+-- disabled for readers and commenters.
+fCopyRequiresWriterPermission :: Lens' File (Maybe Bool)
+fCopyRequiresWriterPermission
+  = lens _fCopyRequiresWriterPermission
+      (\ s a -> s{_fCopyRequiresWriterPermission = a})
+
+-- | The name of the file. This is not necessarily unique within a folder.
+-- Note that for immutable items such as the top level folders of shared
+-- drives, My Drive root folder, and Application Data folder the name is
+-- constant.
+fName :: Lens' File (Maybe Text)
+fName = lens _fName (\ s a -> s{_fName = a})
+
+-- | Links for exporting Google Docs to specific formats.
+fExportLinks :: Lens' File (Maybe FileExportLinks)
+fExportLinks
+  = lens _fExportLinks (\ s a -> s{_fExportLinks = a})
+
+-- | The IDs of the parent folders which contain the file. If not specified
+-- as part of a create request, the file will be placed directly in the
+-- user\'s My Drive folder. If not specified as part of a copy request, the
+-- file will inherit any discoverable parents of the source file. Update
+-- requests must use the addParents and removeParents parameters to modify
+-- the parents list.
+fParents :: Lens' File [Text]
+fParents
+  = lens _fParents (\ s a -> s{_fParents = a}) .
+      _Default
+      . _Coerce
+
+-- | Whether the user has starred the file.
+fStarred :: Lens' File (Maybe Bool)
+fStarred = lens _fStarred (\ s a -> s{_fStarred = a})
+
+-- | The list of spaces which contain the file. The currently supported
+-- values are \'drive\', \'appDataFolder\' and \'photos\'.
+fSpaces :: Lens' File [Text]
+fSpaces
+  = lens _fSpaces (\ s a -> s{_fSpaces = a}) . _Default
+      . _Coerce
+
+-- | A monotonically increasing version number for the file. This reflects
+-- every change made to the file on the server, even those not visible to
+-- the user.
+fVersion :: Lens' File (Maybe Int64)
+fVersion
+  = lens _fVersion (\ s a -> s{_fVersion = a}) .
+      mapping _Coerce
+
+-- | Whether any users are granted file access directly on this file. This
+-- field is only populated for shared drive files.
+fHasAugmentedPermissions :: Lens' File (Maybe Bool)
+fHasAugmentedPermissions
+  = lens _fHasAugmentedPermissions
+      (\ s a -> s{_fHasAugmentedPermissions = a})
+
+-- | Whether users with only writer permission can modify the file\'s
+-- permissions. Not populated for items in shared drives.
+fWritersCanShare :: Lens' File (Maybe Bool)
+fWritersCanShare
+  = lens _fWritersCanShare
+      (\ s a -> s{_fWritersCanShare = a})
+
+-- | If the file has been explicitly trashed, the user who trashed it. Only
+-- populated for items in shared drives.
+fTrashingUser :: Lens' File (Maybe User)
+fTrashingUser
+  = lens _fTrashingUser
+      (\ s a -> s{_fTrashingUser = a})
+
+-- | The ID of the file.
+fId :: Lens' File (Maybe Text)
+fId = lens _fId (\ s a -> s{_fId = a})
+
+-- | List of permission IDs for users with access to this file.
+fPermissionIds :: Lens' File [Text]
+fPermissionIds
+  = lens _fPermissionIds
+      (\ s a -> s{_fPermissionIds = a})
+      . _Default
+      . _Coerce
+
+-- | The full list of permissions for the file. This is only available if the
+-- requesting user can share the file. Not populated for items in shared
+-- drives.
+fPermissions :: Lens' File [Permission]
+fPermissions
+  = lens _fPermissions (\ s a -> s{_fPermissions = a})
+      . _Default
+      . _Coerce
+
+-- | The number of storage quota bytes used by the file. This includes the
+-- head revision as well as previous revisions with keepForever enabled.
+fQuotaBytesUsed :: Lens' File (Maybe Int64)
+fQuotaBytesUsed
+  = lens _fQuotaBytesUsed
+      (\ s a -> s{_fQuotaBytesUsed = a})
+      . mapping _Coerce
+
+-- | A collection of arbitrary key-value pairs which are private to the
+-- requesting app. Entries with null values are cleared in update and copy
+-- requests.
+fAppProperties :: Lens' File (Maybe FileAppProperties)
+fAppProperties
+  = lens _fAppProperties
+      (\ s a -> s{_fAppProperties = a})
+
+-- | Additional metadata about video media. This may not be available
+-- immediately upon upload.
+fVideoMediaMetadata :: Lens' File (Maybe FileVideoMediaMetadata)
+fVideoMediaMetadata
+  = lens _fVideoMediaMetadata
+      (\ s a -> s{_fVideoMediaMetadata = a})
+
+-- | The time at which the file was shared with the user, if applicable (RFC
+-- 3339 date-time).
+fSharedWithMeTime :: Lens' File (Maybe UTCTime)
+fSharedWithMeTime
+  = lens _fSharedWithMeTime
+      (\ s a -> s{_fSharedWithMeTime = a})
+      . mapping _DateTime
+
+-- | The ID of the file\'s head revision. This is currently only available
+-- for files with binary content in Google Drive.
+fHeadRevisionId :: Lens' File (Maybe Text)
+fHeadRevisionId
+  = lens _fHeadRevisionId
+      (\ s a -> s{_fHeadRevisionId = a})
+
+-- | Capabilities the current user has on this file. Each capability
+-- corresponds to a fine-grained action that a user may take.
+fCapabilities :: Lens' File (Maybe FileCapabilities)
+fCapabilities
+  = lens _fCapabilities
+      (\ s a -> s{_fCapabilities = a})
+
+-- | A short description of the file.
+fDescription :: Lens' File (Maybe Text)
+fDescription
+  = lens _fDescription (\ s a -> s{_fDescription = a})
+
+-- | Deprecated - use copyRequiresWriterPermission instead.
+fViewersCanCopyContent :: Lens' File (Maybe Bool)
+fViewersCanCopyContent
+  = lens _fViewersCanCopyContent
+      (\ s a -> s{_fViewersCanCopyContent = a})
+
+-- | ID of the shared drive the file resides in. Only populated for items in
+-- shared drives.
+fDriveId :: Lens' File (Maybe Text)
+fDriveId = lens _fDriveId (\ s a -> s{_fDriveId = a})
+
+-- | The user who shared the file with the requesting user, if applicable.
+fSharingUser :: Lens' File (Maybe User)
+fSharingUser
+  = lens _fSharingUser (\ s a -> s{_fSharingUser = a})
+
+-- | A link for downloading the content of the file in a browser. This is
+-- only available for files with binary content in Google Drive.
+fWebContentLink :: Lens' File (Maybe Text)
+fWebContentLink
+  = lens _fWebContentLink
+      (\ s a -> s{_fWebContentLink = a})
+
+-- | Additional information about the content of the file. These fields are
+-- never populated in responses.
+fContentHints :: Lens' File (Maybe FileContentHints)
+fContentHints
+  = lens _fContentHints
+      (\ s a -> s{_fContentHints = a})
+
+-- | A collection of arbitrary key-value pairs which are visible to all apps.
+-- Entries with null values are cleared in update and copy requests.
+fProperties :: Lens' File (Maybe FileProperties)
+fProperties
+  = lens _fProperties (\ s a -> s{_fProperties = a})
+
+instance FromJSON File where
+        parseJSON
+          = withObject "File"
+              (\ o ->
+                 File' <$>
+                   (o .:? "ownedByMe") <*> (o .:? "thumbnailLink") <*>
+                     (o .:? "fullFileExtension")
+                     <*> (o .:? "modifiedTime")
+                     <*> (o .:? "modifiedByMeTime")
+                     <*> (o .:? "fileExtension")
+                     <*> (o .:? "viewedByMe")
+                     <*> (o .:? "owners" .!= mempty)
+                     <*> (o .:? "viewedByMeTime")
+                     <*> (o .:? "modifiedByMe")
+                     <*> (o .:? "size")
+                     <*> (o .:? "trashed")
+                     <*> (o .:? "webViewLink")
+                     <*> (o .:? "createdTime")
+                     <*> (o .:? "trashedTime")
+                     <*> (o .:? "originalFilename")
+                     <*> (o .:? "kind" .!= "drive#file")
+                     <*> (o .:? "lastModifyingUser")
+                     <*> (o .:? "iconLink")
+                     <*> (o .:? "hasThumbnail")
+                     <*> (o .:? "thumbnailVersion")
+                     <*> (o .:? "imageMediaMetadata")
+                     <*> (o .:? "explicitlyTrashed")
+                     <*> (o .:? "shared")
+                     <*> (o .:? "md5Checksum")
+                     <*> (o .:? "teamDriveId")
+                     <*> (o .:? "folderColorRgb")
+                     <*> (o .:? "mimeType")
+                     <*> (o .:? "isAppAuthorized")
+                     <*> (o .:? "copyRequiresWriterPermission")
+                     <*> (o .:? "name")
+                     <*> (o .:? "exportLinks")
+                     <*> (o .:? "parents" .!= mempty)
+                     <*> (o .:? "starred")
+                     <*> (o .:? "spaces" .!= mempty)
+                     <*> (o .:? "version")
+                     <*> (o .:? "hasAugmentedPermissions")
+                     <*> (o .:? "writersCanShare")
+                     <*> (o .:? "trashingUser")
+                     <*> (o .:? "id")
+                     <*> (o .:? "permissionIds" .!= mempty)
+                     <*> (o .:? "permissions" .!= mempty)
+                     <*> (o .:? "quotaBytesUsed")
+                     <*> (o .:? "appProperties")
+                     <*> (o .:? "videoMediaMetadata")
+                     <*> (o .:? "sharedWithMeTime")
+                     <*> (o .:? "headRevisionId")
+                     <*> (o .:? "capabilities")
+                     <*> (o .:? "description")
+                     <*> (o .:? "viewersCanCopyContent")
+                     <*> (o .:? "driveId")
+                     <*> (o .:? "sharingUser")
+                     <*> (o .:? "webContentLink")
+                     <*> (o .:? "contentHints")
+                     <*> (o .:? "properties"))
+
+instance ToJSON File where
+        toJSON File'{..}
+          = object
+              (catMaybes
+                 [("ownedByMe" .=) <$> _fOwnedByMe,
+                  ("thumbnailLink" .=) <$> _fThumbnailLink,
+                  ("fullFileExtension" .=) <$> _fFullFileExtension,
+                  ("modifiedTime" .=) <$> _fModifiedTime,
+                  ("modifiedByMeTime" .=) <$> _fModifiedByMeTime,
+                  ("fileExtension" .=) <$> _fFileExtension,
+                  ("viewedByMe" .=) <$> _fViewedByMe,
+                  ("owners" .=) <$> _fOwners,
+                  ("viewedByMeTime" .=) <$> _fViewedByMeTime,
+                  ("modifiedByMe" .=) <$> _fModifiedByMe,
+                  ("size" .=) <$> _fSize, ("trashed" .=) <$> _fTrashed,
+                  ("webViewLink" .=) <$> _fWebViewLink,
+                  ("createdTime" .=) <$> _fCreatedTime,
+                  ("trashedTime" .=) <$> _fTrashedTime,
+                  ("originalFilename" .=) <$> _fOriginalFilename,
+                  Just ("kind" .= _fKind),
+                  ("lastModifyingUser" .=) <$> _fLastModifyingUser,
+                  ("iconLink" .=) <$> _fIconLink,
+                  ("hasThumbnail" .=) <$> _fHasThumbnail,
+                  ("thumbnailVersion" .=) <$> _fThumbnailVersion,
+                  ("imageMediaMetadata" .=) <$> _fImageMediaMetadata,
+                  ("explicitlyTrashed" .=) <$> _fExplicitlyTrashed,
+                  ("shared" .=) <$> _fShared,
+                  ("md5Checksum" .=) <$> _fMD5Checksum,
+                  ("teamDriveId" .=) <$> _fTeamDriveId,
+                  ("folderColorRgb" .=) <$> _fFolderColorRgb,
+                  ("mimeType" .=) <$> _fMimeType,
+                  ("isAppAuthorized" .=) <$> _fIsAppAuthorized,
+                  ("copyRequiresWriterPermission" .=) <$>
+                    _fCopyRequiresWriterPermission,
+                  ("name" .=) <$> _fName,
+                  ("exportLinks" .=) <$> _fExportLinks,
+                  ("parents" .=) <$> _fParents,
+                  ("starred" .=) <$> _fStarred,
+                  ("spaces" .=) <$> _fSpaces,
+                  ("version" .=) <$> _fVersion,
+                  ("hasAugmentedPermissions" .=) <$>
+                    _fHasAugmentedPermissions,
+                  ("writersCanShare" .=) <$> _fWritersCanShare,
+                  ("trashingUser" .=) <$> _fTrashingUser,
+                  ("id" .=) <$> _fId,
+                  ("permissionIds" .=) <$> _fPermissionIds,
+                  ("permissions" .=) <$> _fPermissions,
+                  ("quotaBytesUsed" .=) <$> _fQuotaBytesUsed,
+                  ("appProperties" .=) <$> _fAppProperties,
+                  ("videoMediaMetadata" .=) <$> _fVideoMediaMetadata,
+                  ("sharedWithMeTime" .=) <$> _fSharedWithMeTime,
+                  ("headRevisionId" .=) <$> _fHeadRevisionId,
+                  ("capabilities" .=) <$> _fCapabilities,
+                  ("description" .=) <$> _fDescription,
+                  ("viewersCanCopyContent" .=) <$>
+                    _fViewersCanCopyContent,
+                  ("driveId" .=) <$> _fDriveId,
+                  ("sharingUser" .=) <$> _fSharingUser,
+                  ("webContentLink" .=) <$> _fWebContentLink,
+                  ("contentHints" .=) <$> _fContentHints,
+                  ("properties" .=) <$> _fProperties])
+
+--
+-- /See:/ 'aboutDriveThemesItem' smart constructor.
+data AboutDriveThemesItem =
+  AboutDriveThemesItem'
+    { _adtiColorRgb            :: !(Maybe Text)
+    , _adtiBackgRoundImageLink :: !(Maybe Text)
+    , _adtiId                  :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'AboutDriveThemesItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'adtiColorRgb'
+--
+-- * 'adtiBackgRoundImageLink'
+--
+-- * 'adtiId'
+aboutDriveThemesItem
+    :: AboutDriveThemesItem
+aboutDriveThemesItem =
+  AboutDriveThemesItem'
+    { _adtiColorRgb = Nothing
+    , _adtiBackgRoundImageLink = Nothing
+    , _adtiId = Nothing
+    }
+
+
+-- | The color of this theme as an RGB hex string.
+adtiColorRgb :: Lens' AboutDriveThemesItem (Maybe Text)
+adtiColorRgb
+  = lens _adtiColorRgb (\ s a -> s{_adtiColorRgb = a})
+
+-- | A link to this theme\'s background image.
+adtiBackgRoundImageLink :: Lens' AboutDriveThemesItem (Maybe Text)
+adtiBackgRoundImageLink
+  = lens _adtiBackgRoundImageLink
+      (\ s a -> s{_adtiBackgRoundImageLink = a})
+
+-- | The ID of the theme.
+adtiId :: Lens' AboutDriveThemesItem (Maybe Text)
+adtiId = lens _adtiId (\ s a -> s{_adtiId = a})
+
+instance FromJSON AboutDriveThemesItem where
+        parseJSON
+          = withObject "AboutDriveThemesItem"
+              (\ o ->
+                 AboutDriveThemesItem' <$>
+                   (o .:? "colorRgb") <*> (o .:? "backgroundImageLink")
+                     <*> (o .:? "id"))
+
+instance ToJSON AboutDriveThemesItem where
+        toJSON AboutDriveThemesItem'{..}
+          = object
+              (catMaybes
+                 [("colorRgb" .=) <$> _adtiColorRgb,
+                  ("backgroundImageLink" .=) <$>
+                    _adtiBackgRoundImageLink,
+                  ("id" .=) <$> _adtiId])
+
+--
+-- /See:/ 'permissionTeamDrivePermissionDetailsItem' smart constructor.
+data PermissionTeamDrivePermissionDetailsItem =
+  PermissionTeamDrivePermissionDetailsItem'
+    { _ptdpdiInherited               :: !(Maybe Bool)
+    , _ptdpdiTeamDrivePermissionType :: !(Maybe Text)
+    , _ptdpdiRole                    :: !(Maybe Text)
+    , _ptdpdiInheritedFrom           :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PermissionTeamDrivePermissionDetailsItem' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ptdpdiInherited'
+--
+-- * 'ptdpdiTeamDrivePermissionType'
+--
+-- * 'ptdpdiRole'
+--
+-- * 'ptdpdiInheritedFrom'
+permissionTeamDrivePermissionDetailsItem
+    :: PermissionTeamDrivePermissionDetailsItem
+permissionTeamDrivePermissionDetailsItem =
+  PermissionTeamDrivePermissionDetailsItem'
+    { _ptdpdiInherited = Nothing
+    , _ptdpdiTeamDrivePermissionType = Nothing
+    , _ptdpdiRole = Nothing
+    , _ptdpdiInheritedFrom = Nothing
+    }
+
+
+-- | Whether this permission is inherited. This field is always populated.
+-- This is an output-only field.
+ptdpdiInherited :: Lens' PermissionTeamDrivePermissionDetailsItem (Maybe Bool)
+ptdpdiInherited
+  = lens _ptdpdiInherited
+      (\ s a -> s{_ptdpdiInherited = a})
+
+-- | The Team Drive permission type for this user. While new values may be
+-- added in future, the following are currently possible: - file - member
+ptdpdiTeamDrivePermissionType :: Lens' PermissionTeamDrivePermissionDetailsItem (Maybe Text)
+ptdpdiTeamDrivePermissionType
+  = lens _ptdpdiTeamDrivePermissionType
+      (\ s a -> s{_ptdpdiTeamDrivePermissionType = a})
+
+-- | The primary role for this user. While new values may be added in the
+-- future, the following are currently possible: - organizer -
+-- fileOrganizer - writer - commenter - reader
+ptdpdiRole :: Lens' PermissionTeamDrivePermissionDetailsItem (Maybe Text)
+ptdpdiRole
+  = lens _ptdpdiRole (\ s a -> s{_ptdpdiRole = a})
+
+-- | The ID of the item from which this permission is inherited. This is an
+-- output-only field and is only populated for members of the Team Drive.
+ptdpdiInheritedFrom :: Lens' PermissionTeamDrivePermissionDetailsItem (Maybe Text)
+ptdpdiInheritedFrom
+  = lens _ptdpdiInheritedFrom
+      (\ s a -> s{_ptdpdiInheritedFrom = a})
+
+instance FromJSON
+           PermissionTeamDrivePermissionDetailsItem
+         where
+        parseJSON
+          = withObject
+              "PermissionTeamDrivePermissionDetailsItem"
+              (\ o ->
+                 PermissionTeamDrivePermissionDetailsItem' <$>
+                   (o .:? "inherited") <*>
+                     (o .:? "teamDrivePermissionType")
+                     <*> (o .:? "role")
+                     <*> (o .:? "inheritedFrom"))
+
+instance ToJSON
+           PermissionTeamDrivePermissionDetailsItem
+         where
+        toJSON PermissionTeamDrivePermissionDetailsItem'{..}
+          = object
+              (catMaybes
+                 [("inherited" .=) <$> _ptdpdiInherited,
+                  ("teamDrivePermissionType" .=) <$>
+                    _ptdpdiTeamDrivePermissionType,
+                  ("role" .=) <$> _ptdpdiRole,
+                  ("inheritedFrom" .=) <$> _ptdpdiInheritedFrom])
+
+-- | A list of shared drives.
+--
+-- /See:/ 'driveList' smart constructor.
+data DriveList =
+  DriveList'
+    { _dlNextPageToken :: !(Maybe Text)
+    , _dlKind          :: !Text
+    , _dlDrives        :: !(Maybe [Drive])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DriveList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlNextPageToken'
+--
+-- * 'dlKind'
+--
+-- * 'dlDrives'
+driveList
+    :: DriveList
+driveList =
+  DriveList'
+    { _dlNextPageToken = Nothing
+    , _dlKind = "drive#driveList"
+    , _dlDrives = Nothing
+    }
+
+
+-- | The page token for the next page of shared drives. This will be absent
+-- if the end of the list has been reached. If the token is rejected for
+-- any reason, it should be discarded, and pagination should be restarted
+-- from the first page of results.
+dlNextPageToken :: Lens' DriveList (Maybe Text)
+dlNextPageToken
+  = lens _dlNextPageToken
+      (\ s a -> s{_dlNextPageToken = a})
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"drive#driveList\".
+dlKind :: Lens' DriveList Text
+dlKind = lens _dlKind (\ s a -> s{_dlKind = a})
+
+-- | The list of shared drives. If nextPageToken is populated, then this list
+-- may be incomplete and an additional page of results should be fetched.
+dlDrives :: Lens' DriveList [Drive]
+dlDrives
+  = lens _dlDrives (\ s a -> s{_dlDrives = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON DriveList where
+        parseJSON
+          = withObject "DriveList"
+              (\ o ->
+                 DriveList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "drive#driveList")
+                     <*> (o .:? "drives" .!= mempty))
+
+instance ToJSON DriveList where
+        toJSON DriveList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _dlNextPageToken,
+                  Just ("kind" .= _dlKind),
+                  ("drives" .=) <$> _dlDrives])
+
+-- | A list of generated file IDs which can be provided in create requests.
+--
+-- /See:/ 'generatedIds' smart constructor.
+data GeneratedIds =
+  GeneratedIds'
+    { _giSpace :: !(Maybe Text)
+    , _giKind  :: !Text
+    , _giIds   :: !(Maybe [Text])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'GeneratedIds' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'giSpace'
+--
+-- * 'giKind'
+--
+-- * 'giIds'
+generatedIds
+    :: GeneratedIds
+generatedIds =
+  GeneratedIds'
+    {_giSpace = Nothing, _giKind = "drive#generatedIds", _giIds = Nothing}
+
+
+-- | The type of file that can be created with these IDs.
+giSpace :: Lens' GeneratedIds (Maybe Text)
+giSpace = lens _giSpace (\ s a -> s{_giSpace = a})
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"drive#generatedIds\".
+giKind :: Lens' GeneratedIds Text
+giKind = lens _giKind (\ s a -> s{_giKind = a})
+
+-- | The IDs generated for the requesting user in the specified space.
+giIds :: Lens' GeneratedIds [Text]
+giIds
+  = lens _giIds (\ s a -> s{_giIds = a}) . _Default .
+      _Coerce
+
+instance FromJSON GeneratedIds where
+        parseJSON
+          = withObject "GeneratedIds"
+              (\ o ->
+                 GeneratedIds' <$>
+                   (o .:? "space") <*>
+                     (o .:? "kind" .!= "drive#generatedIds")
+                     <*> (o .:? "ids" .!= mempty))
+
+instance ToJSON GeneratedIds where
+        toJSON GeneratedIds'{..}
+          = object
+              (catMaybes
+                 [("space" .=) <$> _giSpace, Just ("kind" .= _giKind),
+                  ("ids" .=) <$> _giIds])
+
+-- | Links for exporting Google Docs to specific formats.
+--
+-- /See:/ 'fileExportLinks' smart constructor.
+newtype FileExportLinks =
+  FileExportLinks'
+    { _felAddtional :: HashMap Text Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'FileExportLinks' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'felAddtional'
+fileExportLinks
+    :: HashMap Text Text -- ^ 'felAddtional'
+    -> FileExportLinks
+fileExportLinks pFelAddtional_ =
+  FileExportLinks' {_felAddtional = _Coerce # pFelAddtional_}
+
+
+-- | A mapping from export format to URL
+felAddtional :: Lens' FileExportLinks (HashMap Text Text)
+felAddtional
+  = lens _felAddtional (\ s a -> s{_felAddtional = a})
+      . _Coerce
+
+instance FromJSON FileExportLinks where
+        parseJSON
+          = withObject "FileExportLinks"
+              (\ o -> FileExportLinks' <$> (parseJSONObject o))
+
+instance ToJSON FileExportLinks where
+        toJSON = toJSON . _felAddtional
+
+-- | A list of comments on a file.
+--
+-- /See:/ 'commentList' smart constructor.
+data CommentList =
+  CommentList'
+    { _cllNextPageToken :: !(Maybe Text)
+    , _cllKind          :: !Text
+    , _cllComments      :: !(Maybe [Comment])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'CommentList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'cllNextPageToken'
+--
+-- * 'cllKind'
+--
+-- * 'cllComments'
+commentList
+    :: CommentList
+commentList =
+  CommentList'
+    { _cllNextPageToken = Nothing
+    , _cllKind = "drive#commentList"
+    , _cllComments = Nothing
+    }
+
+
+-- | The page token for the next page of comments. This will be absent if the
+-- end of the comments list has been reached. If the token is rejected for
+-- any reason, it should be discarded, and pagination should be restarted
+-- from the first page of results.
+cllNextPageToken :: Lens' CommentList (Maybe Text)
+cllNextPageToken
+  = lens _cllNextPageToken
+      (\ s a -> s{_cllNextPageToken = a})
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"drive#commentList\".
+cllKind :: Lens' CommentList Text
+cllKind = lens _cllKind (\ s a -> s{_cllKind = a})
+
+-- | The list of comments. If nextPageToken is populated, then this list may
+-- be incomplete and an additional page of results should be fetched.
+cllComments :: Lens' CommentList [Comment]
+cllComments
+  = lens _cllComments (\ s a -> s{_cllComments = a}) .
+      _Default
+      . _Coerce
+
+instance FromJSON CommentList where
+        parseJSON
+          = withObject "CommentList"
+              (\ o ->
+                 CommentList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "drive#commentList")
+                     <*> (o .:? "comments" .!= mempty))
+
+instance ToJSON CommentList where
+        toJSON CommentList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _cllNextPageToken,
+                  Just ("kind" .= _cllKind),
+                  ("comments" .=) <$> _cllComments])
+
+-- | A list of revisions of a file.
+--
+-- /See:/ 'revisionList' smart constructor.
+data RevisionList =
+  RevisionList'
+    { _rllNextPageToken :: !(Maybe Text)
+    , _rllKind          :: !Text
+    , _rllRevisions     :: !(Maybe [Revision])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'RevisionList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'rllNextPageToken'
+--
+-- * 'rllKind'
+--
+-- * 'rllRevisions'
+revisionList
+    :: RevisionList
+revisionList =
+  RevisionList'
+    { _rllNextPageToken = Nothing
+    , _rllKind = "drive#revisionList"
+    , _rllRevisions = Nothing
+    }
+
+
+-- | The page token for the next page of revisions. This will be absent if
+-- the end of the revisions list has been reached. If the token is rejected
+-- for any reason, it should be discarded, and pagination should be
+-- restarted from the first page of results.
+rllNextPageToken :: Lens' RevisionList (Maybe Text)
+rllNextPageToken
+  = lens _rllNextPageToken
+      (\ s a -> s{_rllNextPageToken = a})
+
+-- | Identifies what kind of resource this is. Value: the fixed string
+-- \"drive#revisionList\".
+rllKind :: Lens' RevisionList Text
+rllKind = lens _rllKind (\ s a -> s{_rllKind = a})
+
+-- | The list of revisions. If nextPageToken is populated, then this list may
+-- be incomplete and an additional page of results should be fetched.
+rllRevisions :: Lens' RevisionList [Revision]
+rllRevisions
+  = lens _rllRevisions (\ s a -> s{_rllRevisions = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON RevisionList where
+        parseJSON
+          = withObject "RevisionList"
+              (\ o ->
+                 RevisionList' <$>
+                   (o .:? "nextPageToken") <*>
+                     (o .:? "kind" .!= "drive#revisionList")
+                     <*> (o .:? "revisions" .!= mempty))
+
+instance ToJSON RevisionList where
+        toJSON RevisionList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _rllNextPageToken,
+                  Just ("kind" .= _rllKind),
+                  ("revisions" .=) <$> _rllRevisions])
+
+-- | A list of permissions for a file.
+--
+-- /See:/ 'permissionList' smart constructor.
+data PermissionList =
+  PermissionList'
+    { _plNextPageToken :: !(Maybe Text)
+    , _plKind          :: !Text
+    , _plPermissions   :: !(Maybe [Permission])
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'PermissionList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'plNextPageToken'
+--
+-- * 'plKind'
+--
+-- * 'plPermissions'
+permissionList
+    :: PermissionList
+permissionList =
+  PermissionList'
+    { _plNextPageToken = Nothing
+    , _plKind = "drive#permissionList"
+    , _plPermissions = Nothing
+    }
+
 
 -- | The page token for the next page of permissions. This field will be
 -- absent if the end of the permissions list has been reached. If the token
diff --git a/gen/Network/Google/Resource/Drive/About/Get.hs b/gen/Network/Google/Resource/Drive/About/Get.hs
--- a/gen/Network/Google/Resource/Drive/About/Get.hs
+++ b/gen/Network/Google/Resource/Drive/About/Get.hs
@@ -51,14 +51,16 @@
 --
 -- /See:/ 'aboutGet' smart constructor.
 data AboutGet =
-    AboutGet'
-    deriving (Eq,Show,Data,Typeable,Generic)
+  AboutGet'
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'AboutGet' with the minimum fields required to make a request.
 --
 aboutGet
     :: AboutGet
 aboutGet = AboutGet'
+
 
 instance GoogleRequest AboutGet where
         type Rs AboutGet = About
diff --git a/gen/Network/Google/Resource/Drive/Changes/GetStartPageToken.hs b/gen/Network/Google/Resource/Drive/Changes/GetStartPageToken.hs
--- a/gen/Network/Google/Resource/Drive/Changes/GetStartPageToken.hs
+++ b/gen/Network/Google/Resource/Drive/Changes/GetStartPageToken.hs
@@ -34,7 +34,9 @@
 
     -- * Request Lenses
     , cgsptTeamDriveId
+    , cgsptSupportsAllDrives
     , cgsptSupportsTeamDrives
+    , cgsptDriveId
     ) where
 
 import           Network.Google.Drive.Types
@@ -48,46 +50,72 @@
          "changes" :>
            "startPageToken" :>
              QueryParam "teamDriveId" Text :>
-               QueryParam "supportsTeamDrives" Bool :>
-                 QueryParam "alt" AltJSON :>
-                   Get '[JSON] StartPageToken
+               QueryParam "supportsAllDrives" Bool :>
+                 QueryParam "supportsTeamDrives" Bool :>
+                   QueryParam "driveId" Text :>
+                     QueryParam "alt" AltJSON :>
+                       Get '[JSON] StartPageToken
 
 -- | Gets the starting pageToken for listing future changes.
 --
 -- /See:/ 'changesGetStartPageToken' smart constructor.
-data ChangesGetStartPageToken = ChangesGetStartPageToken'
+data ChangesGetStartPageToken =
+  ChangesGetStartPageToken'
     { _cgsptTeamDriveId        :: !(Maybe Text)
+    , _cgsptSupportsAllDrives  :: !Bool
     , _cgsptSupportsTeamDrives :: !Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    , _cgsptDriveId            :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ChangesGetStartPageToken' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'cgsptTeamDriveId'
 --
+-- * 'cgsptSupportsAllDrives'
+--
 -- * 'cgsptSupportsTeamDrives'
+--
+-- * 'cgsptDriveId'
 changesGetStartPageToken
     :: ChangesGetStartPageToken
 changesGetStartPageToken =
-    ChangesGetStartPageToken'
+  ChangesGetStartPageToken'
     { _cgsptTeamDriveId = Nothing
+    , _cgsptSupportsAllDrives = False
     , _cgsptSupportsTeamDrives = False
+    , _cgsptDriveId = Nothing
     }
 
--- | The ID of the Team Drive for which the starting pageToken for listing
--- future changes from that Team Drive will be returned.
+
+-- | Deprecated use driveId instead.
 cgsptTeamDriveId :: Lens' ChangesGetStartPageToken (Maybe Text)
 cgsptTeamDriveId
   = lens _cgsptTeamDriveId
       (\ s a -> s{_cgsptTeamDriveId = a})
 
--- | Whether the requesting application supports Team Drives.
+-- | Whether the requesting application supports both My Drives and shared
+-- drives.
+cgsptSupportsAllDrives :: Lens' ChangesGetStartPageToken Bool
+cgsptSupportsAllDrives
+  = lens _cgsptSupportsAllDrives
+      (\ s a -> s{_cgsptSupportsAllDrives = a})
+
+-- | Deprecated use supportsAllDrives instead.
 cgsptSupportsTeamDrives :: Lens' ChangesGetStartPageToken Bool
 cgsptSupportsTeamDrives
   = lens _cgsptSupportsTeamDrives
       (\ s a -> s{_cgsptSupportsTeamDrives = a})
 
+-- | The ID of the shared drive for which the starting pageToken for listing
+-- future changes from that shared drive will be returned.
+cgsptDriveId :: Lens' ChangesGetStartPageToken (Maybe Text)
+cgsptDriveId
+  = lens _cgsptDriveId (\ s a -> s{_cgsptDriveId = a})
+
 instance GoogleRequest ChangesGetStartPageToken where
         type Rs ChangesGetStartPageToken = StartPageToken
         type Scopes ChangesGetStartPageToken =
@@ -99,8 +127,9 @@
                "https://www.googleapis.com/auth/drive.photos.readonly",
                "https://www.googleapis.com/auth/drive.readonly"]
         requestClient ChangesGetStartPageToken'{..}
-          = go _cgsptTeamDriveId
+          = go _cgsptTeamDriveId (Just _cgsptSupportsAllDrives)
               (Just _cgsptSupportsTeamDrives)
+              _cgsptDriveId
               (Just AltJSON)
               driveService
           where go
diff --git a/gen/Network/Google/Resource/Drive/Changes/List.hs b/gen/Network/Google/Resource/Drive/Changes/List.hs
--- a/gen/Network/Google/Resource/Drive/Changes/List.hs
+++ b/gen/Network/Google/Resource/Drive/Changes/List.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Lists the changes for a user or Team Drive.
+-- Lists the changes for a user or shared drive.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.changes.list@.
 module Network.Google.Resource.Drive.Changes.List
@@ -38,10 +38,13 @@
     , clTeamDriveId
     , clRestrictToMyDrive
     , clSpaces
+    , clIncludeItemsFromAllDrives
+    , clSupportsAllDrives
     , clPageToken
     , clPageSize
     , clIncludeRemoved
     , clSupportsTeamDrives
+    , clDriveId
     ) where
 
 import           Network.Google.Drive.Types
@@ -59,26 +62,36 @@
                  QueryParam "teamDriveId" Text :>
                    QueryParam "restrictToMyDrive" Bool :>
                      QueryParam "spaces" Text :>
-                       QueryParam "pageSize" (Textual Int32) :>
-                         QueryParam "includeRemoved" Bool :>
-                           QueryParam "supportsTeamDrives" Bool :>
-                             QueryParam "alt" AltJSON :> Get '[JSON] ChangeList
+                       QueryParam "includeItemsFromAllDrives" Bool :>
+                         QueryParam "supportsAllDrives" Bool :>
+                           QueryParam "pageSize" (Textual Int32) :>
+                             QueryParam "includeRemoved" Bool :>
+                               QueryParam "supportsTeamDrives" Bool :>
+                                 QueryParam "driveId" Text :>
+                                   QueryParam "alt" AltJSON :>
+                                     Get '[JSON] ChangeList
 
--- | Lists the changes for a user or Team Drive.
+-- | Lists the changes for a user or shared drive.
 --
 -- /See:/ 'changesList' smart constructor.
-data ChangesList = ChangesList'
-    { _clIncludeTeamDriveItems :: !Bool
-    , _clIncludeCorpusRemovals :: !Bool
-    , _clTeamDriveId           :: !(Maybe Text)
-    , _clRestrictToMyDrive     :: !Bool
-    , _clSpaces                :: !Text
-    , _clPageToken             :: !Text
-    , _clPageSize              :: !(Textual Int32)
-    , _clIncludeRemoved        :: !Bool
-    , _clSupportsTeamDrives    :: !Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
+data ChangesList =
+  ChangesList'
+    { _clIncludeTeamDriveItems     :: !Bool
+    , _clIncludeCorpusRemovals     :: !Bool
+    , _clTeamDriveId               :: !(Maybe Text)
+    , _clRestrictToMyDrive         :: !Bool
+    , _clSpaces                    :: !Text
+    , _clIncludeItemsFromAllDrives :: !Bool
+    , _clSupportsAllDrives         :: !Bool
+    , _clPageToken                 :: !Text
+    , _clPageSize                  :: !(Textual Int32)
+    , _clIncludeRemoved            :: !Bool
+    , _clSupportsTeamDrives        :: !Bool
+    , _clDriveId                   :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ChangesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -93,6 +106,10 @@
 --
 -- * 'clSpaces'
 --
+-- * 'clIncludeItemsFromAllDrives'
+--
+-- * 'clSupportsAllDrives'
+--
 -- * 'clPageToken'
 --
 -- * 'clPageSize'
@@ -100,23 +117,29 @@
 -- * 'clIncludeRemoved'
 --
 -- * 'clSupportsTeamDrives'
+--
+-- * 'clDriveId'
 changesList
     :: Text -- ^ 'clPageToken'
     -> ChangesList
 changesList pClPageToken_ =
-    ChangesList'
+  ChangesList'
     { _clIncludeTeamDriveItems = False
     , _clIncludeCorpusRemovals = False
     , _clTeamDriveId = Nothing
     , _clRestrictToMyDrive = False
     , _clSpaces = "drive"
+    , _clIncludeItemsFromAllDrives = False
+    , _clSupportsAllDrives = False
     , _clPageToken = pClPageToken_
     , _clPageSize = 100
     , _clIncludeRemoved = True
     , _clSupportsTeamDrives = False
+    , _clDriveId = Nothing
     }
 
--- | Whether Team Drive files or changes should be included in results.
+
+-- | Deprecated use includeItemsFromAllDrives instead.
 clIncludeTeamDriveItems :: Lens' ChangesList Bool
 clIncludeTeamDriveItems
   = lens _clIncludeTeamDriveItems
@@ -131,9 +154,7 @@
   = lens _clIncludeCorpusRemovals
       (\ s a -> s{_clIncludeCorpusRemovals = a})
 
--- | The Team Drive from which changes will be returned. If specified the
--- change IDs will be reflective of the Team Drive; use the combined Team
--- Drive ID and change ID as an identifier.
+-- | Deprecated use driveId instead.
 clTeamDriveId :: Lens' ChangesList (Maybe Text)
 clTeamDriveId
   = lens _clTeamDriveId
@@ -152,6 +173,20 @@
 clSpaces :: Lens' ChangesList Text
 clSpaces = lens _clSpaces (\ s a -> s{_clSpaces = a})
 
+-- | Whether both My Drive and shared drive items should be included in
+-- results.
+clIncludeItemsFromAllDrives :: Lens' ChangesList Bool
+clIncludeItemsFromAllDrives
+  = lens _clIncludeItemsFromAllDrives
+      (\ s a -> s{_clIncludeItemsFromAllDrives = a})
+
+-- | Whether the requesting application supports both My Drives and shared
+-- drives.
+clSupportsAllDrives :: Lens' ChangesList Bool
+clSupportsAllDrives
+  = lens _clSupportsAllDrives
+      (\ s a -> s{_clSupportsAllDrives = a})
+
 -- | The token for continuing a previous list request on the next page. This
 -- should be set to the value of \'nextPageToken\' from the previous
 -- response or to the response from the getStartPageToken method.
@@ -172,12 +207,19 @@
   = lens _clIncludeRemoved
       (\ s a -> s{_clIncludeRemoved = a})
 
--- | Whether the requesting application supports Team Drives.
+-- | Deprecated use supportsAllDrives instead.
 clSupportsTeamDrives :: Lens' ChangesList Bool
 clSupportsTeamDrives
   = lens _clSupportsTeamDrives
       (\ s a -> s{_clSupportsTeamDrives = a})
 
+-- | The shared drive from which changes will be returned. If specified the
+-- change IDs will be reflective of the shared drive; use the combined
+-- drive ID and change ID as an identifier.
+clDriveId :: Lens' ChangesList (Maybe Text)
+clDriveId
+  = lens _clDriveId (\ s a -> s{_clDriveId = a})
+
 instance GoogleRequest ChangesList where
         type Rs ChangesList = ChangeList
         type Scopes ChangesList =
@@ -195,9 +237,12 @@
               _clTeamDriveId
               (Just _clRestrictToMyDrive)
               (Just _clSpaces)
+              (Just _clIncludeItemsFromAllDrives)
+              (Just _clSupportsAllDrives)
               (Just _clPageSize)
               (Just _clIncludeRemoved)
               (Just _clSupportsTeamDrives)
+              _clDriveId
               (Just AltJSON)
               driveService
           where go
diff --git a/gen/Network/Google/Resource/Drive/Changes/Watch.hs b/gen/Network/Google/Resource/Drive/Changes/Watch.hs
--- a/gen/Network/Google/Resource/Drive/Changes/Watch.hs
+++ b/gen/Network/Google/Resource/Drive/Changes/Watch.hs
@@ -39,10 +39,13 @@
     , cwTeamDriveId
     , cwRestrictToMyDrive
     , cwSpaces
+    , cwIncludeItemsFromAllDrives
+    , cwSupportsAllDrives
     , cwPageToken
     , cwPageSize
     , cwIncludeRemoved
     , cwSupportsTeamDrives
+    , cwDriveId
     ) where
 
 import           Network.Google.Drive.Types
@@ -61,28 +64,38 @@
                    QueryParam "teamDriveId" Text :>
                      QueryParam "restrictToMyDrive" Bool :>
                        QueryParam "spaces" Text :>
-                         QueryParam "pageSize" (Textual Int32) :>
-                           QueryParam "includeRemoved" Bool :>
-                             QueryParam "supportsTeamDrives" Bool :>
-                               QueryParam "alt" AltJSON :>
-                                 ReqBody '[JSON] Channel :> Post '[JSON] Channel
+                         QueryParam "includeItemsFromAllDrives" Bool :>
+                           QueryParam "supportsAllDrives" Bool :>
+                             QueryParam "pageSize" (Textual Int32) :>
+                               QueryParam "includeRemoved" Bool :>
+                                 QueryParam "supportsTeamDrives" Bool :>
+                                   QueryParam "driveId" Text :>
+                                     QueryParam "alt" AltJSON :>
+                                       ReqBody '[JSON] Channel :>
+                                         Post '[JSON] Channel
 
 -- | Subscribes to changes for a user.
 --
 -- /See:/ 'changesWatch' smart constructor.
-data ChangesWatch = ChangesWatch'
-    { _cwIncludeTeamDriveItems :: !Bool
-    , _cwPayload               :: !Channel
-    , _cwIncludeCorpusRemovals :: !Bool
-    , _cwTeamDriveId           :: !(Maybe Text)
-    , _cwRestrictToMyDrive     :: !Bool
-    , _cwSpaces                :: !Text
-    , _cwPageToken             :: !Text
-    , _cwPageSize              :: !(Textual Int32)
-    , _cwIncludeRemoved        :: !Bool
-    , _cwSupportsTeamDrives    :: !Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
+data ChangesWatch =
+  ChangesWatch'
+    { _cwIncludeTeamDriveItems     :: !Bool
+    , _cwPayload                   :: !Channel
+    , _cwIncludeCorpusRemovals     :: !Bool
+    , _cwTeamDriveId               :: !(Maybe Text)
+    , _cwRestrictToMyDrive         :: !Bool
+    , _cwSpaces                    :: !Text
+    , _cwIncludeItemsFromAllDrives :: !Bool
+    , _cwSupportsAllDrives         :: !Bool
+    , _cwPageToken                 :: !Text
+    , _cwPageSize                  :: !(Textual Int32)
+    , _cwIncludeRemoved            :: !Bool
+    , _cwSupportsTeamDrives        :: !Bool
+    , _cwDriveId                   :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ChangesWatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -99,6 +112,10 @@
 --
 -- * 'cwSpaces'
 --
+-- * 'cwIncludeItemsFromAllDrives'
+--
+-- * 'cwSupportsAllDrives'
+--
 -- * 'cwPageToken'
 --
 -- * 'cwPageSize'
@@ -106,25 +123,31 @@
 -- * 'cwIncludeRemoved'
 --
 -- * 'cwSupportsTeamDrives'
+--
+-- * 'cwDriveId'
 changesWatch
     :: Channel -- ^ 'cwPayload'
     -> Text -- ^ 'cwPageToken'
     -> ChangesWatch
 changesWatch pCwPayload_ pCwPageToken_ =
-    ChangesWatch'
+  ChangesWatch'
     { _cwIncludeTeamDriveItems = False
     , _cwPayload = pCwPayload_
     , _cwIncludeCorpusRemovals = False
     , _cwTeamDriveId = Nothing
     , _cwRestrictToMyDrive = False
     , _cwSpaces = "drive"
+    , _cwIncludeItemsFromAllDrives = False
+    , _cwSupportsAllDrives = False
     , _cwPageToken = pCwPageToken_
     , _cwPageSize = 100
     , _cwIncludeRemoved = True
     , _cwSupportsTeamDrives = False
+    , _cwDriveId = Nothing
     }
 
--- | Whether Team Drive files or changes should be included in results.
+
+-- | Deprecated use includeItemsFromAllDrives instead.
 cwIncludeTeamDriveItems :: Lens' ChangesWatch Bool
 cwIncludeTeamDriveItems
   = lens _cwIncludeTeamDriveItems
@@ -144,9 +167,7 @@
   = lens _cwIncludeCorpusRemovals
       (\ s a -> s{_cwIncludeCorpusRemovals = a})
 
--- | The Team Drive from which changes will be returned. If specified the
--- change IDs will be reflective of the Team Drive; use the combined Team
--- Drive ID and change ID as an identifier.
+-- | Deprecated use driveId instead.
 cwTeamDriveId :: Lens' ChangesWatch (Maybe Text)
 cwTeamDriveId
   = lens _cwTeamDriveId
@@ -165,6 +186,20 @@
 cwSpaces :: Lens' ChangesWatch Text
 cwSpaces = lens _cwSpaces (\ s a -> s{_cwSpaces = a})
 
+-- | Whether both My Drive and shared drive items should be included in
+-- results.
+cwIncludeItemsFromAllDrives :: Lens' ChangesWatch Bool
+cwIncludeItemsFromAllDrives
+  = lens _cwIncludeItemsFromAllDrives
+      (\ s a -> s{_cwIncludeItemsFromAllDrives = a})
+
+-- | Whether the requesting application supports both My Drives and shared
+-- drives.
+cwSupportsAllDrives :: Lens' ChangesWatch Bool
+cwSupportsAllDrives
+  = lens _cwSupportsAllDrives
+      (\ s a -> s{_cwSupportsAllDrives = a})
+
 -- | The token for continuing a previous list request on the next page. This
 -- should be set to the value of \'nextPageToken\' from the previous
 -- response or to the response from the getStartPageToken method.
@@ -185,12 +220,19 @@
   = lens _cwIncludeRemoved
       (\ s a -> s{_cwIncludeRemoved = a})
 
--- | Whether the requesting application supports Team Drives.
+-- | Deprecated use supportsAllDrives instead.
 cwSupportsTeamDrives :: Lens' ChangesWatch Bool
 cwSupportsTeamDrives
   = lens _cwSupportsTeamDrives
       (\ s a -> s{_cwSupportsTeamDrives = a})
 
+-- | The shared drive from which changes will be returned. If specified the
+-- change IDs will be reflective of the shared drive; use the combined
+-- drive ID and change ID as an identifier.
+cwDriveId :: Lens' ChangesWatch (Maybe Text)
+cwDriveId
+  = lens _cwDriveId (\ s a -> s{_cwDriveId = a})
+
 instance GoogleRequest ChangesWatch where
         type Rs ChangesWatch = Channel
         type Scopes ChangesWatch =
@@ -208,9 +250,12 @@
               _cwTeamDriveId
               (Just _cwRestrictToMyDrive)
               (Just _cwSpaces)
+              (Just _cwIncludeItemsFromAllDrives)
+              (Just _cwSupportsAllDrives)
               (Just _cwPageSize)
               (Just _cwIncludeRemoved)
               (Just _cwSupportsTeamDrives)
+              _cwDriveId
               (Just AltJSON)
               _cwPayload
               driveService
diff --git a/gen/Network/Google/Resource/Drive/Channels/Stop.hs b/gen/Network/Google/Resource/Drive/Channels/Stop.hs
--- a/gen/Network/Google/Resource/Drive/Channels/Stop.hs
+++ b/gen/Network/Google/Resource/Drive/Channels/Stop.hs
@@ -52,10 +52,13 @@
 -- | Stop watching resources through this channel
 --
 -- /See:/ 'channelsStop' smart constructor.
-newtype ChannelsStop = ChannelsStop'
+newtype ChannelsStop =
+  ChannelsStop'
     { _csPayload :: Channel
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'ChannelsStop' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -64,10 +67,8 @@
 channelsStop
     :: Channel -- ^ 'csPayload'
     -> ChannelsStop
-channelsStop pCsPayload_ =
-    ChannelsStop'
-    { _csPayload = pCsPayload_
-    }
+channelsStop pCsPayload_ = ChannelsStop' {_csPayload = pCsPayload_}
+
 
 -- | Multipart request metadata.
 csPayload :: Lens' ChannelsStop Channel
diff --git a/gen/Network/Google/Resource/Drive/Comments/Create.hs b/gen/Network/Google/Resource/Drive/Comments/Create.hs
--- a/gen/Network/Google/Resource/Drive/Comments/Create.hs
+++ b/gen/Network/Google/Resource/Drive/Comments/Create.hs
@@ -54,11 +54,14 @@
 -- | Creates a new comment on a file.
 --
 -- /See:/ 'commentsCreate' smart constructor.
-data CommentsCreate = CommentsCreate'
+data CommentsCreate =
+  CommentsCreate'
     { _ccPayload :: !Comment
     , _ccFileId  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CommentsCreate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -71,10 +74,8 @@
     -> Text -- ^ 'ccFileId'
     -> CommentsCreate
 commentsCreate pCcPayload_ pCcFileId_ =
-    CommentsCreate'
-    { _ccPayload = pCcPayload_
-    , _ccFileId = pCcFileId_
-    }
+  CommentsCreate' {_ccPayload = pCcPayload_, _ccFileId = pCcFileId_}
+
 
 -- | Multipart request metadata.
 ccPayload :: Lens' CommentsCreate Comment
diff --git a/gen/Network/Google/Resource/Drive/Comments/Delete.hs b/gen/Network/Google/Resource/Drive/Comments/Delete.hs
--- a/gen/Network/Google/Resource/Drive/Comments/Delete.hs
+++ b/gen/Network/Google/Resource/Drive/Comments/Delete.hs
@@ -54,11 +54,14 @@
 -- | Deletes a comment.
 --
 -- /See:/ 'commentsDelete' smart constructor.
-data CommentsDelete = CommentsDelete'
+data CommentsDelete =
+  CommentsDelete'
     { _cdFileId    :: !Text
     , _cdCommentId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CommentsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -71,10 +74,8 @@
     -> Text -- ^ 'cdCommentId'
     -> CommentsDelete
 commentsDelete pCdFileId_ pCdCommentId_ =
-    CommentsDelete'
-    { _cdFileId = pCdFileId_
-    , _cdCommentId = pCdCommentId_
-    }
+  CommentsDelete' {_cdFileId = pCdFileId_, _cdCommentId = pCdCommentId_}
+
 
 -- | The ID of the file.
 cdFileId :: Lens' CommentsDelete Text
diff --git a/gen/Network/Google/Resource/Drive/Comments/Get.hs b/gen/Network/Google/Resource/Drive/Comments/Get.hs
--- a/gen/Network/Google/Resource/Drive/Comments/Get.hs
+++ b/gen/Network/Google/Resource/Drive/Comments/Get.hs
@@ -56,12 +56,15 @@
 -- | Gets a comment by ID.
 --
 -- /See:/ 'commentsGet' smart constructor.
-data CommentsGet = CommentsGet'
+data CommentsGet =
+  CommentsGet'
     { _cgFileId         :: !Text
     , _cgCommentId      :: !Text
     , _cgIncludeDeleted :: !Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CommentsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -76,11 +79,12 @@
     -> Text -- ^ 'cgCommentId'
     -> CommentsGet
 commentsGet pCgFileId_ pCgCommentId_ =
-    CommentsGet'
+  CommentsGet'
     { _cgFileId = pCgFileId_
     , _cgCommentId = pCgCommentId_
     , _cgIncludeDeleted = False
     }
+
 
 -- | The ID of the file.
 cgFileId :: Lens' CommentsGet Text
diff --git a/gen/Network/Google/Resource/Drive/Comments/List.hs b/gen/Network/Google/Resource/Drive/Comments/List.hs
--- a/gen/Network/Google/Resource/Drive/Comments/List.hs
+++ b/gen/Network/Google/Resource/Drive/Comments/List.hs
@@ -60,14 +60,17 @@
 -- | Lists a file\'s comments.
 --
 -- /See:/ 'commentsList' smart constructor.
-data CommentsList = CommentsList'
+data CommentsList =
+  CommentsList'
     { _cStartModifiedTime :: !(Maybe Text)
     , _cPageToken         :: !(Maybe Text)
     , _cFileId            :: !Text
     , _cPageSize          :: !(Textual Int32)
     , _cIncludeDeleted    :: !Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CommentsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -85,13 +88,14 @@
     :: Text -- ^ 'cFileId'
     -> CommentsList
 commentsList pCFileId_ =
-    CommentsList'
+  CommentsList'
     { _cStartModifiedTime = Nothing
     , _cPageToken = Nothing
     , _cFileId = pCFileId_
     , _cPageSize = 20
     , _cIncludeDeleted = False
     }
+
 
 -- | The minimum value of \'modifiedTime\' for the result comments (RFC 3339
 -- date-time).
diff --git a/gen/Network/Google/Resource/Drive/Comments/Update.hs b/gen/Network/Google/Resource/Drive/Comments/Update.hs
--- a/gen/Network/Google/Resource/Drive/Comments/Update.hs
+++ b/gen/Network/Google/Resource/Drive/Comments/Update.hs
@@ -56,12 +56,15 @@
 -- | Updates a comment with patch semantics.
 --
 -- /See:/ 'commentsUpdate' smart constructor.
-data CommentsUpdate = CommentsUpdate'
+data CommentsUpdate =
+  CommentsUpdate'
     { _cuPayload   :: !Comment
     , _cuFileId    :: !Text
     , _cuCommentId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'CommentsUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -77,11 +80,12 @@
     -> Text -- ^ 'cuCommentId'
     -> CommentsUpdate
 commentsUpdate pCuPayload_ pCuFileId_ pCuCommentId_ =
-    CommentsUpdate'
+  CommentsUpdate'
     { _cuPayload = pCuPayload_
     , _cuFileId = pCuFileId_
     , _cuCommentId = pCuCommentId_
     }
+
 
 -- | Multipart request metadata.
 cuPayload :: Lens' CommentsUpdate Comment
diff --git a/gen/Network/Google/Resource/Drive/Drives/Create.hs b/gen/Network/Google/Resource/Drive/Drives/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Drive/Drives/Create.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Drive.Drives.Create
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Creates a new shared drive.
+--
+-- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.drives.create@.
+module Network.Google.Resource.Drive.Drives.Create
+    (
+    -- * REST Resource
+      DrivesCreateResource
+
+    -- * Creating a Request
+    , drivesCreate
+    , DrivesCreate
+
+    -- * Request Lenses
+    , dcRequestId
+    , dcPayload
+    ) where
+
+import           Network.Google.Drive.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @drive.drives.create@ method which the
+-- 'DrivesCreate' request conforms to.
+type DrivesCreateResource =
+     "drive" :>
+       "v3" :>
+         "drives" :>
+           QueryParam "requestId" Text :>
+             QueryParam "alt" AltJSON :>
+               ReqBody '[JSON] Drive :> Post '[JSON] Drive
+
+-- | Creates a new shared drive.
+--
+-- /See:/ 'drivesCreate' smart constructor.
+data DrivesCreate =
+  DrivesCreate'
+    { _dcRequestId :: !Text
+    , _dcPayload   :: !Drive
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DrivesCreate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dcRequestId'
+--
+-- * 'dcPayload'
+drivesCreate
+    :: Text -- ^ 'dcRequestId'
+    -> Drive -- ^ 'dcPayload'
+    -> DrivesCreate
+drivesCreate pDcRequestId_ pDcPayload_ =
+  DrivesCreate' {_dcRequestId = pDcRequestId_, _dcPayload = pDcPayload_}
+
+
+-- | An ID, such as a random UUID, which uniquely identifies this user\'s
+-- request for idempotent creation of a shared drive. A repeated request by
+-- the same user and with the same request ID will avoid creating
+-- duplicates by attempting to create the same shared drive. If the shared
+-- drive already exists a 409 error will be returned.
+dcRequestId :: Lens' DrivesCreate Text
+dcRequestId
+  = lens _dcRequestId (\ s a -> s{_dcRequestId = a})
+
+-- | Multipart request metadata.
+dcPayload :: Lens' DrivesCreate Drive
+dcPayload
+  = lens _dcPayload (\ s a -> s{_dcPayload = a})
+
+instance GoogleRequest DrivesCreate where
+        type Rs DrivesCreate = Drive
+        type Scopes DrivesCreate =
+             '["https://www.googleapis.com/auth/drive"]
+        requestClient DrivesCreate'{..}
+          = go (Just _dcRequestId) (Just AltJSON) _dcPayload
+              driveService
+          where go
+                  = buildClient (Proxy :: Proxy DrivesCreateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Drives/Delete.hs b/gen/Network/Google/Resource/Drive/Drives/Delete.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Drive/Drives/Delete.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Drive.Drives.Delete
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Permanently deletes a shared drive for which the user is an organizer.
+-- The shared drive cannot contain any untrashed items.
+--
+-- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.drives.delete@.
+module Network.Google.Resource.Drive.Drives.Delete
+    (
+    -- * REST Resource
+      DrivesDeleteResource
+
+    -- * Creating a Request
+    , drivesDelete
+    , DrivesDelete
+
+    -- * Request Lenses
+    , ddDriveId
+    ) where
+
+import           Network.Google.Drive.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @drive.drives.delete@ method which the
+-- 'DrivesDelete' request conforms to.
+type DrivesDeleteResource =
+     "drive" :>
+       "v3" :>
+         "drives" :>
+           Capture "driveId" Text :>
+             QueryParam "alt" AltJSON :> Delete '[JSON] ()
+
+-- | Permanently deletes a shared drive for which the user is an organizer.
+-- The shared drive cannot contain any untrashed items.
+--
+-- /See:/ 'drivesDelete' smart constructor.
+newtype DrivesDelete =
+  DrivesDelete'
+    { _ddDriveId :: Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DrivesDelete' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'ddDriveId'
+drivesDelete
+    :: Text -- ^ 'ddDriveId'
+    -> DrivesDelete
+drivesDelete pDdDriveId_ = DrivesDelete' {_ddDriveId = pDdDriveId_}
+
+
+-- | The ID of the shared drive.
+ddDriveId :: Lens' DrivesDelete Text
+ddDriveId
+  = lens _ddDriveId (\ s a -> s{_ddDriveId = a})
+
+instance GoogleRequest DrivesDelete where
+        type Rs DrivesDelete = ()
+        type Scopes DrivesDelete =
+             '["https://www.googleapis.com/auth/drive"]
+        requestClient DrivesDelete'{..}
+          = go _ddDriveId (Just AltJSON) driveService
+          where go
+                  = buildClient (Proxy :: Proxy DrivesDeleteResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Drives/Get.hs b/gen/Network/Google/Resource/Drive/Drives/Get.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Drive/Drives/Get.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Drive.Drives.Get
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Gets a shared drive\'s metadata by ID.
+--
+-- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.drives.get@.
+module Network.Google.Resource.Drive.Drives.Get
+    (
+    -- * REST Resource
+      DrivesGetResource
+
+    -- * Creating a Request
+    , drivesGet
+    , DrivesGet
+
+    -- * Request Lenses
+    , dgUseDomainAdminAccess
+    , dgDriveId
+    ) where
+
+import           Network.Google.Drive.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @drive.drives.get@ method which the
+-- 'DrivesGet' request conforms to.
+type DrivesGetResource =
+     "drive" :>
+       "v3" :>
+         "drives" :>
+           Capture "driveId" Text :>
+             QueryParam "useDomainAdminAccess" Bool :>
+               QueryParam "alt" AltJSON :> Get '[JSON] Drive
+
+-- | Gets a shared drive\'s metadata by ID.
+--
+-- /See:/ 'drivesGet' smart constructor.
+data DrivesGet =
+  DrivesGet'
+    { _dgUseDomainAdminAccess :: !Bool
+    , _dgDriveId              :: !Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DrivesGet' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dgUseDomainAdminAccess'
+--
+-- * 'dgDriveId'
+drivesGet
+    :: Text -- ^ 'dgDriveId'
+    -> DrivesGet
+drivesGet pDgDriveId_ =
+  DrivesGet' {_dgUseDomainAdminAccess = False, _dgDriveId = pDgDriveId_}
+
+
+-- | Issue the request as a domain administrator; if set to true, then the
+-- requester will be granted access if they are an administrator of the
+-- domain to which the shared drive belongs.
+dgUseDomainAdminAccess :: Lens' DrivesGet Bool
+dgUseDomainAdminAccess
+  = lens _dgUseDomainAdminAccess
+      (\ s a -> s{_dgUseDomainAdminAccess = a})
+
+-- | The ID of the shared drive.
+dgDriveId :: Lens' DrivesGet Text
+dgDriveId
+  = lens _dgDriveId (\ s a -> s{_dgDriveId = a})
+
+instance GoogleRequest DrivesGet where
+        type Rs DrivesGet = Drive
+        type Scopes DrivesGet =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.readonly"]
+        requestClient DrivesGet'{..}
+          = go _dgDriveId (Just _dgUseDomainAdminAccess)
+              (Just AltJSON)
+              driveService
+          where go
+                  = buildClient (Proxy :: Proxy DrivesGetResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Drives/Hide.hs b/gen/Network/Google/Resource/Drive/Drives/Hide.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Drive/Drives/Hide.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Drive.Drives.Hide
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Hides a shared drive from the default view.
+--
+-- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.drives.hide@.
+module Network.Google.Resource.Drive.Drives.Hide
+    (
+    -- * REST Resource
+      DrivesHideResource
+
+    -- * Creating a Request
+    , drivesHide
+    , DrivesHide
+
+    -- * Request Lenses
+    , dhDriveId
+    ) where
+
+import           Network.Google.Drive.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @drive.drives.hide@ method which the
+-- 'DrivesHide' request conforms to.
+type DrivesHideResource =
+     "drive" :>
+       "v3" :>
+         "drives" :>
+           Capture "driveId" Text :>
+             "hide" :>
+               QueryParam "alt" AltJSON :> Post '[JSON] Drive
+
+-- | Hides a shared drive from the default view.
+--
+-- /See:/ 'drivesHide' smart constructor.
+newtype DrivesHide =
+  DrivesHide'
+    { _dhDriveId :: Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DrivesHide' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dhDriveId'
+drivesHide
+    :: Text -- ^ 'dhDriveId'
+    -> DrivesHide
+drivesHide pDhDriveId_ = DrivesHide' {_dhDriveId = pDhDriveId_}
+
+
+-- | The ID of the shared drive.
+dhDriveId :: Lens' DrivesHide Text
+dhDriveId
+  = lens _dhDriveId (\ s a -> s{_dhDriveId = a})
+
+instance GoogleRequest DrivesHide where
+        type Rs DrivesHide = Drive
+        type Scopes DrivesHide =
+             '["https://www.googleapis.com/auth/drive"]
+        requestClient DrivesHide'{..}
+          = go _dhDriveId (Just AltJSON) driveService
+          where go
+                  = buildClient (Proxy :: Proxy DrivesHideResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Drives/List.hs b/gen/Network/Google/Resource/Drive/Drives/List.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Drive/Drives/List.hs
@@ -0,0 +1,127 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Drive.Drives.List
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Lists the user\'s shared drives.
+--
+-- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.drives.list@.
+module Network.Google.Resource.Drive.Drives.List
+    (
+    -- * REST Resource
+      DrivesListResource
+
+    -- * Creating a Request
+    , drivesList
+    , DrivesList
+
+    -- * Request Lenses
+    , dlQ
+    , dlPageToken
+    , dlUseDomainAdminAccess
+    , dlPageSize
+    ) where
+
+import           Network.Google.Drive.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @drive.drives.list@ method which the
+-- 'DrivesList' request conforms to.
+type DrivesListResource =
+     "drive" :>
+       "v3" :>
+         "drives" :>
+           QueryParam "q" Text :>
+             QueryParam "pageToken" Text :>
+               QueryParam "useDomainAdminAccess" Bool :>
+                 QueryParam "pageSize" (Textual Int32) :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] DriveList
+
+-- | Lists the user\'s shared drives.
+--
+-- /See:/ 'drivesList' smart constructor.
+data DrivesList =
+  DrivesList'
+    { _dlQ                    :: !(Maybe Text)
+    , _dlPageToken            :: !(Maybe Text)
+    , _dlUseDomainAdminAccess :: !Bool
+    , _dlPageSize             :: !(Textual Int32)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DrivesList' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dlQ'
+--
+-- * 'dlPageToken'
+--
+-- * 'dlUseDomainAdminAccess'
+--
+-- * 'dlPageSize'
+drivesList
+    :: DrivesList
+drivesList =
+  DrivesList'
+    { _dlQ = Nothing
+    , _dlPageToken = Nothing
+    , _dlUseDomainAdminAccess = False
+    , _dlPageSize = 10
+    }
+
+
+-- | Query string for searching shared drives.
+dlQ :: Lens' DrivesList (Maybe Text)
+dlQ = lens _dlQ (\ s a -> s{_dlQ = a})
+
+-- | Page token for shared drives.
+dlPageToken :: Lens' DrivesList (Maybe Text)
+dlPageToken
+  = lens _dlPageToken (\ s a -> s{_dlPageToken = a})
+
+-- | Issue the request as a domain administrator; if set to true, then all
+-- shared drives of the domain in which the requester is an administrator
+-- are returned.
+dlUseDomainAdminAccess :: Lens' DrivesList Bool
+dlUseDomainAdminAccess
+  = lens _dlUseDomainAdminAccess
+      (\ s a -> s{_dlUseDomainAdminAccess = a})
+
+-- | Maximum number of shared drives to return.
+dlPageSize :: Lens' DrivesList Int32
+dlPageSize
+  = lens _dlPageSize (\ s a -> s{_dlPageSize = a}) .
+      _Coerce
+
+instance GoogleRequest DrivesList where
+        type Rs DrivesList = DriveList
+        type Scopes DrivesList =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.readonly"]
+        requestClient DrivesList'{..}
+          = go _dlQ _dlPageToken (Just _dlUseDomainAdminAccess)
+              (Just _dlPageSize)
+              (Just AltJSON)
+              driveService
+          where go
+                  = buildClient (Proxy :: Proxy DrivesListResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Drives/Unhide.hs b/gen/Network/Google/Resource/Drive/Drives/Unhide.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Drive/Drives/Unhide.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Drive.Drives.Unhide
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Restores a shared drive to the default view.
+--
+-- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.drives.unhide@.
+module Network.Google.Resource.Drive.Drives.Unhide
+    (
+    -- * REST Resource
+      DrivesUnhideResource
+
+    -- * Creating a Request
+    , drivesUnhide
+    , DrivesUnhide
+
+    -- * Request Lenses
+    , duDriveId
+    ) where
+
+import           Network.Google.Drive.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @drive.drives.unhide@ method which the
+-- 'DrivesUnhide' request conforms to.
+type DrivesUnhideResource =
+     "drive" :>
+       "v3" :>
+         "drives" :>
+           Capture "driveId" Text :>
+             "unhide" :>
+               QueryParam "alt" AltJSON :> Post '[JSON] Drive
+
+-- | Restores a shared drive to the default view.
+--
+-- /See:/ 'drivesUnhide' smart constructor.
+newtype DrivesUnhide =
+  DrivesUnhide'
+    { _duDriveId :: Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DrivesUnhide' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'duDriveId'
+drivesUnhide
+    :: Text -- ^ 'duDriveId'
+    -> DrivesUnhide
+drivesUnhide pDuDriveId_ = DrivesUnhide' {_duDriveId = pDuDriveId_}
+
+
+-- | The ID of the shared drive.
+duDriveId :: Lens' DrivesUnhide Text
+duDriveId
+  = lens _duDriveId (\ s a -> s{_duDriveId = a})
+
+instance GoogleRequest DrivesUnhide where
+        type Rs DrivesUnhide = Drive
+        type Scopes DrivesUnhide =
+             '["https://www.googleapis.com/auth/drive"]
+        requestClient DrivesUnhide'{..}
+          = go _duDriveId (Just AltJSON) driveService
+          where go
+                  = buildClient (Proxy :: Proxy DrivesUnhideResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Drives/Update.hs b/gen/Network/Google/Resource/Drive/Drives/Update.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Drive/Drives/Update.hs
@@ -0,0 +1,115 @@
+{-# LANGUAGE DataKinds          #-}
+{-# LANGUAGE DeriveDataTypeable #-}
+{-# LANGUAGE DeriveGeneric      #-}
+{-# LANGUAGE FlexibleInstances  #-}
+{-# LANGUAGE NoImplicitPrelude  #-}
+{-# LANGUAGE OverloadedStrings  #-}
+{-# LANGUAGE RecordWildCards    #-}
+{-# LANGUAGE TypeFamilies       #-}
+{-# LANGUAGE TypeOperators      #-}
+
+{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
+{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
+{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
+
+-- |
+-- Module      : Network.Google.Resource.Drive.Drives.Update
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+-- Updates the metadate for a shared drive.
+--
+-- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.drives.update@.
+module Network.Google.Resource.Drive.Drives.Update
+    (
+    -- * REST Resource
+      DrivesUpdateResource
+
+    -- * Creating a Request
+    , drivesUpdate
+    , DrivesUpdate
+
+    -- * Request Lenses
+    , dPayload
+    , dUseDomainAdminAccess
+    , dDriveId
+    ) where
+
+import           Network.Google.Drive.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @drive.drives.update@ method which the
+-- 'DrivesUpdate' request conforms to.
+type DrivesUpdateResource =
+     "drive" :>
+       "v3" :>
+         "drives" :>
+           Capture "driveId" Text :>
+             QueryParam "useDomainAdminAccess" Bool :>
+               QueryParam "alt" AltJSON :>
+                 ReqBody '[JSON] Drive :> Patch '[JSON] Drive
+
+-- | Updates the metadate for a shared drive.
+--
+-- /See:/ 'drivesUpdate' smart constructor.
+data DrivesUpdate =
+  DrivesUpdate'
+    { _dPayload              :: !Drive
+    , _dUseDomainAdminAccess :: !Bool
+    , _dDriveId              :: !Text
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
+
+
+-- | Creates a value of 'DrivesUpdate' with the minimum fields required to make a request.
+--
+-- Use one of the following lenses to modify other fields as desired:
+--
+-- * 'dPayload'
+--
+-- * 'dUseDomainAdminAccess'
+--
+-- * 'dDriveId'
+drivesUpdate
+    :: Drive -- ^ 'dPayload'
+    -> Text -- ^ 'dDriveId'
+    -> DrivesUpdate
+drivesUpdate pDPayload_ pDDriveId_ =
+  DrivesUpdate'
+    { _dPayload = pDPayload_
+    , _dUseDomainAdminAccess = False
+    , _dDriveId = pDDriveId_
+    }
+
+
+-- | Multipart request metadata.
+dPayload :: Lens' DrivesUpdate Drive
+dPayload = lens _dPayload (\ s a -> s{_dPayload = a})
+
+-- | Issue the request as a domain administrator; if set to true, then the
+-- requester will be granted access if they are an administrator of the
+-- domain to which the shared drive belongs.
+dUseDomainAdminAccess :: Lens' DrivesUpdate Bool
+dUseDomainAdminAccess
+  = lens _dUseDomainAdminAccess
+      (\ s a -> s{_dUseDomainAdminAccess = a})
+
+-- | The ID of the shared drive.
+dDriveId :: Lens' DrivesUpdate Text
+dDriveId = lens _dDriveId (\ s a -> s{_dDriveId = a})
+
+instance GoogleRequest DrivesUpdate where
+        type Rs DrivesUpdate = Drive
+        type Scopes DrivesUpdate =
+             '["https://www.googleapis.com/auth/drive"]
+        requestClient DrivesUpdate'{..}
+          = go _dDriveId (Just _dUseDomainAdminAccess)
+              (Just AltJSON)
+              _dPayload
+              driveService
+          where go
+                  = buildClient (Proxy :: Proxy DrivesUpdateResource)
+                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Files/Copy.hs b/gen/Network/Google/Resource/Drive/Files/Copy.hs
--- a/gen/Network/Google/Resource/Drive/Files/Copy.hs
+++ b/gen/Network/Google/Resource/Drive/Files/Copy.hs
@@ -37,6 +37,7 @@
     , fPayload
     , fOCRLanguage
     , fKeepRevisionForever
+    , fSupportsAllDrives
     , fIgnoreDefaultVisibility
     , fFileId
     , fSupportsTeamDrives
@@ -55,24 +56,29 @@
              "copy" :>
                QueryParam "ocrLanguage" Text :>
                  QueryParam "keepRevisionForever" Bool :>
-                   QueryParam "ignoreDefaultVisibility" Bool :>
-                     QueryParam "supportsTeamDrives" Bool :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] File :> Post '[JSON] File
+                   QueryParam "supportsAllDrives" Bool :>
+                     QueryParam "ignoreDefaultVisibility" Bool :>
+                       QueryParam "supportsTeamDrives" Bool :>
+                         QueryParam "alt" AltJSON :>
+                           ReqBody '[JSON] File :> Post '[JSON] File
 
 -- | Creates a copy of a file and applies any requested updates with patch
 -- semantics.
 --
 -- /See:/ 'filesCopy' smart constructor.
-data FilesCopy = FilesCopy'
+data FilesCopy =
+  FilesCopy'
     { _fPayload                 :: !File
     , _fOCRLanguage             :: !(Maybe Text)
     , _fKeepRevisionForever     :: !Bool
+    , _fSupportsAllDrives       :: !Bool
     , _fIgnoreDefaultVisibility :: !Bool
     , _fFileId                  :: !Text
     , _fSupportsTeamDrives      :: !Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'FilesCopy' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -83,6 +89,8 @@
 --
 -- * 'fKeepRevisionForever'
 --
+-- * 'fSupportsAllDrives'
+--
 -- * 'fIgnoreDefaultVisibility'
 --
 -- * 'fFileId'
@@ -93,15 +101,17 @@
     -> Text -- ^ 'fFileId'
     -> FilesCopy
 filesCopy pFPayload_ pFFileId_ =
-    FilesCopy'
+  FilesCopy'
     { _fPayload = pFPayload_
     , _fOCRLanguage = Nothing
     , _fKeepRevisionForever = False
+    , _fSupportsAllDrives = False
     , _fIgnoreDefaultVisibility = False
     , _fFileId = pFFileId_
     , _fSupportsTeamDrives = False
     }
 
+
 -- | Multipart request metadata.
 fPayload :: Lens' FilesCopy File
 fPayload = lens _fPayload (\ s a -> s{_fPayload = a})
@@ -112,12 +122,19 @@
   = lens _fOCRLanguage (\ s a -> s{_fOCRLanguage = a})
 
 -- | Whether to set the \'keepForever\' field in the new head revision. This
--- is only applicable to files with binary content in Drive.
+-- is only applicable to files with binary content in Google Drive.
 fKeepRevisionForever :: Lens' FilesCopy Bool
 fKeepRevisionForever
   = lens _fKeepRevisionForever
       (\ s a -> s{_fKeepRevisionForever = a})
 
+-- | Whether the requesting application supports both My Drives and shared
+-- drives.
+fSupportsAllDrives :: Lens' FilesCopy Bool
+fSupportsAllDrives
+  = lens _fSupportsAllDrives
+      (\ s a -> s{_fSupportsAllDrives = a})
+
 -- | Whether to ignore the domain\'s default visibility settings for the
 -- created file. Domain administrators can choose to make all uploaded
 -- files visible to the domain by default; this parameter bypasses that
@@ -132,7 +149,7 @@
 fFileId :: Lens' FilesCopy Text
 fFileId = lens _fFileId (\ s a -> s{_fFileId = a})
 
--- | Whether the requesting application supports Team Drives.
+-- | Deprecated use supportsAllDrives instead.
 fSupportsTeamDrives :: Lens' FilesCopy Bool
 fSupportsTeamDrives
   = lens _fSupportsTeamDrives
@@ -148,6 +165,7 @@
         requestClient FilesCopy'{..}
           = go _fFileId _fOCRLanguage
               (Just _fKeepRevisionForever)
+              (Just _fSupportsAllDrives)
               (Just _fIgnoreDefaultVisibility)
               (Just _fSupportsTeamDrives)
               (Just AltJSON)
diff --git a/gen/Network/Google/Resource/Drive/Files/Create.hs b/gen/Network/Google/Resource/Drive/Files/Create.hs
--- a/gen/Network/Google/Resource/Drive/Files/Create.hs
+++ b/gen/Network/Google/Resource/Drive/Files/Create.hs
@@ -37,6 +37,7 @@
     , fcUseContentAsIndexableText
     , fcOCRLanguage
     , fcKeepRevisionForever
+    , fcSupportsAllDrives
     , fcIgnoreDefaultVisibility
     , fcSupportsTeamDrives
     ) where
@@ -53,10 +54,11 @@
            QueryParam "useContentAsIndexableText" Bool :>
              QueryParam "ocrLanguage" Text :>
                QueryParam "keepRevisionForever" Bool :>
-                 QueryParam "ignoreDefaultVisibility" Bool :>
-                   QueryParam "supportsTeamDrives" Bool :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] File :> Post '[JSON] File
+                 QueryParam "supportsAllDrives" Bool :>
+                   QueryParam "ignoreDefaultVisibility" Bool :>
+                     QueryParam "supportsTeamDrives" Bool :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] File :> Post '[JSON] File
        :<|>
        "upload" :>
          "drive" :>
@@ -65,24 +67,30 @@
                QueryParam "useContentAsIndexableText" Bool :>
                  QueryParam "ocrLanguage" Text :>
                    QueryParam "keepRevisionForever" Bool :>
-                     QueryParam "ignoreDefaultVisibility" Bool :>
-                       QueryParam "supportsTeamDrives" Bool :>
-                         QueryParam "alt" AltJSON :>
-                           QueryParam "uploadType" Multipart :>
-                             MultipartRelated '[JSON] File :> Post '[JSON] File
+                     QueryParam "supportsAllDrives" Bool :>
+                       QueryParam "ignoreDefaultVisibility" Bool :>
+                         QueryParam "supportsTeamDrives" Bool :>
+                           QueryParam "alt" AltJSON :>
+                             QueryParam "uploadType" Multipart :>
+                               MultipartRelated '[JSON] File :>
+                                 Post '[JSON] File
 
 -- | Creates a new file.
 --
 -- /See:/ 'filesCreate' smart constructor.
-data FilesCreate = FilesCreate'
+data FilesCreate =
+  FilesCreate'
     { _fcPayload                   :: !File
     , _fcUseContentAsIndexableText :: !Bool
     , _fcOCRLanguage               :: !(Maybe Text)
     , _fcKeepRevisionForever       :: !Bool
+    , _fcSupportsAllDrives         :: !Bool
     , _fcIgnoreDefaultVisibility   :: !Bool
     , _fcSupportsTeamDrives        :: !Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'FilesCreate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -95,6 +103,8 @@
 --
 -- * 'fcKeepRevisionForever'
 --
+-- * 'fcSupportsAllDrives'
+--
 -- * 'fcIgnoreDefaultVisibility'
 --
 -- * 'fcSupportsTeamDrives'
@@ -102,15 +112,17 @@
     :: File -- ^ 'fcPayload'
     -> FilesCreate
 filesCreate pFcPayload_ =
-    FilesCreate'
+  FilesCreate'
     { _fcPayload = pFcPayload_
     , _fcUseContentAsIndexableText = False
     , _fcOCRLanguage = Nothing
     , _fcKeepRevisionForever = False
+    , _fcSupportsAllDrives = False
     , _fcIgnoreDefaultVisibility = False
     , _fcSupportsTeamDrives = False
     }
 
+
 -- | Multipart request metadata.
 fcPayload :: Lens' FilesCreate File
 fcPayload
@@ -129,12 +141,19 @@
       (\ s a -> s{_fcOCRLanguage = a})
 
 -- | Whether to set the \'keepForever\' field in the new head revision. This
--- is only applicable to files with binary content in Drive.
+-- is only applicable to files with binary content in Google Drive.
 fcKeepRevisionForever :: Lens' FilesCreate Bool
 fcKeepRevisionForever
   = lens _fcKeepRevisionForever
       (\ s a -> s{_fcKeepRevisionForever = a})
 
+-- | Whether the requesting application supports both My Drives and shared
+-- drives.
+fcSupportsAllDrives :: Lens' FilesCreate Bool
+fcSupportsAllDrives
+  = lens _fcSupportsAllDrives
+      (\ s a -> s{_fcSupportsAllDrives = a})
+
 -- | Whether to ignore the domain\'s default visibility settings for the
 -- created file. Domain administrators can choose to make all uploaded
 -- files visible to the domain by default; this parameter bypasses that
@@ -145,7 +164,7 @@
   = lens _fcIgnoreDefaultVisibility
       (\ s a -> s{_fcIgnoreDefaultVisibility = a})
 
--- | Whether the requesting application supports Team Drives.
+-- | Deprecated use supportsAllDrives instead.
 fcSupportsTeamDrives :: Lens' FilesCreate Bool
 fcSupportsTeamDrives
   = lens _fcSupportsTeamDrives
@@ -161,6 +180,7 @@
           = go (Just _fcUseContentAsIndexableText)
               _fcOCRLanguage
               (Just _fcKeepRevisionForever)
+              (Just _fcSupportsAllDrives)
               (Just _fcIgnoreDefaultVisibility)
               (Just _fcSupportsTeamDrives)
               (Just AltJSON)
@@ -179,6 +199,7 @@
           = go (Just _fcUseContentAsIndexableText)
               _fcOCRLanguage
               (Just _fcKeepRevisionForever)
+              (Just _fcSupportsAllDrives)
               (Just _fcIgnoreDefaultVisibility)
               (Just _fcSupportsTeamDrives)
               (Just AltJSON)
diff --git a/gen/Network/Google/Resource/Drive/Files/Delete.hs b/gen/Network/Google/Resource/Drive/Files/Delete.hs
--- a/gen/Network/Google/Resource/Drive/Files/Delete.hs
+++ b/gen/Network/Google/Resource/Drive/Files/Delete.hs
@@ -21,9 +21,9 @@
 -- Portability : non-portable (GHC extensions)
 --
 -- Permanently deletes a file owned by the user without moving it to the
--- trash. If the file belongs to a Team Drive the user must be an organizer
--- on the parent. If the target is a folder, all descendants owned by the
--- user are also deleted.
+-- trash. If the file belongs to a shared drive the user must be an
+-- organizer on the parent. If the target is a folder, all descendants
+-- owned by the user are also deleted.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.files.delete@.
 module Network.Google.Resource.Drive.Files.Delete
@@ -36,6 +36,7 @@
     , FilesDelete
 
     -- * Request Lenses
+    , fdSupportsAllDrives
     , fdFileId
     , fdSupportsTeamDrives
     ) where
@@ -50,24 +51,31 @@
        "v3" :>
          "files" :>
            Capture "fileId" Text :>
-             QueryParam "supportsTeamDrives" Bool :>
-               QueryParam "alt" AltJSON :> Delete '[JSON] ()
+             QueryParam "supportsAllDrives" Bool :>
+               QueryParam "supportsTeamDrives" Bool :>
+                 QueryParam "alt" AltJSON :> Delete '[JSON] ()
 
 -- | Permanently deletes a file owned by the user without moving it to the
--- trash. If the file belongs to a Team Drive the user must be an organizer
--- on the parent. If the target is a folder, all descendants owned by the
--- user are also deleted.
+-- trash. If the file belongs to a shared drive the user must be an
+-- organizer on the parent. If the target is a folder, all descendants
+-- owned by the user are also deleted.
 --
 -- /See:/ 'filesDelete' smart constructor.
-data FilesDelete = FilesDelete'
-    { _fdFileId             :: !Text
+data FilesDelete =
+  FilesDelete'
+    { _fdSupportsAllDrives  :: !Bool
+    , _fdFileId             :: !Text
     , _fdSupportsTeamDrives :: !Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'FilesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'fdSupportsAllDrives'
+--
 -- * 'fdFileId'
 --
 -- * 'fdSupportsTeamDrives'
@@ -75,16 +83,25 @@
     :: Text -- ^ 'fdFileId'
     -> FilesDelete
 filesDelete pFdFileId_ =
-    FilesDelete'
-    { _fdFileId = pFdFileId_
+  FilesDelete'
+    { _fdSupportsAllDrives = False
+    , _fdFileId = pFdFileId_
     , _fdSupportsTeamDrives = False
     }
 
+
+-- | Whether the requesting application supports both My Drives and shared
+-- drives.
+fdSupportsAllDrives :: Lens' FilesDelete Bool
+fdSupportsAllDrives
+  = lens _fdSupportsAllDrives
+      (\ s a -> s{_fdSupportsAllDrives = a})
+
 -- | The ID of the file.
 fdFileId :: Lens' FilesDelete Text
 fdFileId = lens _fdFileId (\ s a -> s{_fdFileId = a})
 
--- | Whether the requesting application supports Team Drives.
+-- | Deprecated use supportsAllDrives instead.
 fdSupportsTeamDrives :: Lens' FilesDelete Bool
 fdSupportsTeamDrives
   = lens _fdSupportsTeamDrives
@@ -97,7 +114,8 @@
                "https://www.googleapis.com/auth/drive.appdata",
                "https://www.googleapis.com/auth/drive.file"]
         requestClient FilesDelete'{..}
-          = go _fdFileId (Just _fdSupportsTeamDrives)
+          = go _fdFileId (Just _fdSupportsAllDrives)
+              (Just _fdSupportsTeamDrives)
               (Just AltJSON)
               driveService
           where go
diff --git a/gen/Network/Google/Resource/Drive/Files/EmptyTrash.hs b/gen/Network/Google/Resource/Drive/Files/EmptyTrash.hs
--- a/gen/Network/Google/Resource/Drive/Files/EmptyTrash.hs
+++ b/gen/Network/Google/Resource/Drive/Files/EmptyTrash.hs
@@ -50,14 +50,16 @@
 --
 -- /See:/ 'filesEmptyTrash' smart constructor.
 data FilesEmptyTrash =
-    FilesEmptyTrash'
-    deriving (Eq,Show,Data,Typeable,Generic)
+  FilesEmptyTrash'
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'FilesEmptyTrash' with the minimum fields required to make a request.
 --
 filesEmptyTrash
     :: FilesEmptyTrash
 filesEmptyTrash = FilesEmptyTrash'
+
 
 instance GoogleRequest FilesEmptyTrash where
         type Rs FilesEmptyTrash = ()
diff --git a/gen/Network/Google/Resource/Drive/Files/Export.hs b/gen/Network/Google/Resource/Drive/Files/Export.hs
--- a/gen/Network/Google/Resource/Drive/Files/Export.hs
+++ b/gen/Network/Google/Resource/Drive/Files/Export.hs
@@ -65,11 +65,14 @@
 -- content. Please note that the exported content is limited to 10MB.
 --
 -- /See:/ 'filesExport' smart constructor.
-data FilesExport = FilesExport'
+data FilesExport =
+  FilesExport'
     { _feMimeType :: !Text
     , _feFileId   :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'FilesExport' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -82,10 +85,8 @@
     -> Text -- ^ 'feFileId'
     -> FilesExport
 filesExport pFeMimeType_ pFeFileId_ =
-    FilesExport'
-    { _feMimeType = pFeMimeType_
-    , _feFileId = pFeFileId_
-    }
+  FilesExport' {_feMimeType = pFeMimeType_, _feFileId = pFeFileId_}
+
 
 -- | The MIME type of the format requested for this export.
 feMimeType :: Lens' FilesExport Text
diff --git a/gen/Network/Google/Resource/Drive/Files/GenerateIds.hs b/gen/Network/Google/Resource/Drive/Files/GenerateIds.hs
--- a/gen/Network/Google/Resource/Drive/Files/GenerateIds.hs
+++ b/gen/Network/Google/Resource/Drive/Files/GenerateIds.hs
@@ -54,11 +54,14 @@
 -- | Generates a set of file IDs which can be provided in create requests.
 --
 -- /See:/ 'filesGenerateIds' smart constructor.
-data FilesGenerateIds = FilesGenerateIds'
+data FilesGenerateIds =
+  FilesGenerateIds'
     { _fgiSpace :: !Text
     , _fgiCount :: !(Textual Int32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'FilesGenerateIds' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -68,11 +71,8 @@
 -- * 'fgiCount'
 filesGenerateIds
     :: FilesGenerateIds
-filesGenerateIds =
-    FilesGenerateIds'
-    { _fgiSpace = "drive"
-    , _fgiCount = 10
-    }
+filesGenerateIds = FilesGenerateIds' {_fgiSpace = "drive", _fgiCount = 10}
+
 
 -- | The space in which the IDs can be used to create new files. Supported
 -- values are \'drive\' and \'appDataFolder\'.
diff --git a/gen/Network/Google/Resource/Drive/Files/Get.hs b/gen/Network/Google/Resource/Drive/Files/Get.hs
--- a/gen/Network/Google/Resource/Drive/Files/Get.hs
+++ b/gen/Network/Google/Resource/Drive/Files/Get.hs
@@ -33,6 +33,7 @@
     , FilesGet
 
     -- * Request Lenses
+    , fgSupportsAllDrives
     , fgAcknowledgeAbuse
     , fgFileId
     , fgSupportsTeamDrives
@@ -48,32 +49,40 @@
        "v3" :>
          "files" :>
            Capture "fileId" Text :>
-             QueryParam "acknowledgeAbuse" Bool :>
-               QueryParam "supportsTeamDrives" Bool :>
-                 QueryParam "alt" AltJSON :> Get '[JSON] File
+             QueryParam "supportsAllDrives" Bool :>
+               QueryParam "acknowledgeAbuse" Bool :>
+                 QueryParam "supportsTeamDrives" Bool :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] File
        :<|>
        "drive" :>
          "v3" :>
            "files" :>
              Capture "fileId" Text :>
-               QueryParam "acknowledgeAbuse" Bool :>
-                 QueryParam "supportsTeamDrives" Bool :>
-                   QueryParam "alt" AltMedia :>
-                     Get '[OctetStream] Stream
+               QueryParam "supportsAllDrives" Bool :>
+                 QueryParam "acknowledgeAbuse" Bool :>
+                   QueryParam "supportsTeamDrives" Bool :>
+                     QueryParam "alt" AltMedia :>
+                       Get '[OctetStream] Stream
 
 -- | Gets a file\'s metadata or content by ID.
 --
 -- /See:/ 'filesGet' smart constructor.
-data FilesGet = FilesGet'
-    { _fgAcknowledgeAbuse   :: !Bool
+data FilesGet =
+  FilesGet'
+    { _fgSupportsAllDrives  :: !Bool
+    , _fgAcknowledgeAbuse   :: !Bool
     , _fgFileId             :: !Text
     , _fgSupportsTeamDrives :: !Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'FilesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'fgSupportsAllDrives'
+--
 -- * 'fgAcknowledgeAbuse'
 --
 -- * 'fgFileId'
@@ -83,12 +92,21 @@
     :: Text -- ^ 'fgFileId'
     -> FilesGet
 filesGet pFgFileId_ =
-    FilesGet'
-    { _fgAcknowledgeAbuse = False
+  FilesGet'
+    { _fgSupportsAllDrives = False
+    , _fgAcknowledgeAbuse = False
     , _fgFileId = pFgFileId_
     , _fgSupportsTeamDrives = False
     }
 
+
+-- | Whether the requesting application supports both My Drives and shared
+-- drives.
+fgSupportsAllDrives :: Lens' FilesGet Bool
+fgSupportsAllDrives
+  = lens _fgSupportsAllDrives
+      (\ s a -> s{_fgSupportsAllDrives = a})
+
 -- | Whether the user is acknowledging the risk of downloading known malware
 -- or other abusive files. This is only applicable when alt=media.
 fgAcknowledgeAbuse :: Lens' FilesGet Bool
@@ -100,7 +118,7 @@
 fgFileId :: Lens' FilesGet Text
 fgFileId = lens _fgFileId (\ s a -> s{_fgFileId = a})
 
--- | Whether the requesting application supports Team Drives.
+-- | Deprecated use supportsAllDrives instead.
 fgSupportsTeamDrives :: Lens' FilesGet Bool
 fgSupportsTeamDrives
   = lens _fgSupportsTeamDrives
@@ -117,7 +135,8 @@
                "https://www.googleapis.com/auth/drive.photos.readonly",
                "https://www.googleapis.com/auth/drive.readonly"]
         requestClient FilesGet'{..}
-          = go _fgFileId (Just _fgAcknowledgeAbuse)
+          = go _fgFileId (Just _fgSupportsAllDrives)
+              (Just _fgAcknowledgeAbuse)
               (Just _fgSupportsTeamDrives)
               (Just AltJSON)
               driveService
@@ -130,7 +149,8 @@
         type Scopes (MediaDownload FilesGet) =
              Scopes FilesGet
         requestClient (MediaDownload FilesGet'{..})
-          = go _fgFileId (Just _fgAcknowledgeAbuse)
+          = go _fgFileId (Just _fgSupportsAllDrives)
+              (Just _fgAcknowledgeAbuse)
               (Just _fgSupportsTeamDrives)
               (Just AltMedia)
               driveService
diff --git a/gen/Network/Google/Resource/Drive/Files/List.hs b/gen/Network/Google/Resource/Drive/Files/List.hs
--- a/gen/Network/Google/Resource/Drive/Files/List.hs
+++ b/gen/Network/Google/Resource/Drive/Files/List.hs
@@ -39,10 +39,13 @@
     , flQ
     , flTeamDriveId
     , flSpaces
+    , flIncludeItemsFromAllDrives
+    , flSupportsAllDrives
     , flCorpus
     , flPageToken
     , flPageSize
     , flSupportsTeamDrives
+    , flDriveId
     ) where
 
 import           Network.Google.Drive.Types
@@ -60,28 +63,38 @@
                  QueryParam "q" Text :>
                    QueryParam "teamDriveId" Text :>
                      QueryParam "spaces" Text :>
-                       QueryParam "corpus" FilesListCorpus :>
-                         QueryParam "pageToken" Text :>
-                           QueryParam "pageSize" (Textual Int32) :>
-                             QueryParam "supportsTeamDrives" Bool :>
-                               QueryParam "alt" AltJSON :> Get '[JSON] FileList
+                       QueryParam "includeItemsFromAllDrives" Bool :>
+                         QueryParam "supportsAllDrives" Bool :>
+                           QueryParam "corpus" FilesListCorpus :>
+                             QueryParam "pageToken" Text :>
+                               QueryParam "pageSize" (Textual Int32) :>
+                                 QueryParam "supportsTeamDrives" Bool :>
+                                   QueryParam "driveId" Text :>
+                                     QueryParam "alt" AltJSON :>
+                                       Get '[JSON] FileList
 
 -- | Lists or searches files.
 --
 -- /See:/ 'filesList' smart constructor.
-data FilesList = FilesList'
-    { _flCorpora               :: !(Maybe Text)
-    , _flOrderBy               :: !(Maybe Text)
-    , _flIncludeTeamDriveItems :: !Bool
-    , _flQ                     :: !(Maybe Text)
-    , _flTeamDriveId           :: !(Maybe Text)
-    , _flSpaces                :: !Text
-    , _flCorpus                :: !(Maybe FilesListCorpus)
-    , _flPageToken             :: !(Maybe Text)
-    , _flPageSize              :: !(Textual Int32)
-    , _flSupportsTeamDrives    :: !Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
+data FilesList =
+  FilesList'
+    { _flCorpora                   :: !(Maybe Text)
+    , _flOrderBy                   :: !(Maybe Text)
+    , _flIncludeTeamDriveItems     :: !Bool
+    , _flQ                         :: !(Maybe Text)
+    , _flTeamDriveId               :: !(Maybe Text)
+    , _flSpaces                    :: !Text
+    , _flIncludeItemsFromAllDrives :: !Bool
+    , _flSupportsAllDrives         :: !Bool
+    , _flCorpus                    :: !(Maybe FilesListCorpus)
+    , _flPageToken                 :: !(Maybe Text)
+    , _flPageSize                  :: !(Textual Int32)
+    , _flSupportsTeamDrives        :: !Bool
+    , _flDriveId                   :: !(Maybe Text)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'FilesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -98,6 +111,10 @@
 --
 -- * 'flSpaces'
 --
+-- * 'flIncludeItemsFromAllDrives'
+--
+-- * 'flSupportsAllDrives'
+--
 -- * 'flCorpus'
 --
 -- * 'flPageToken'
@@ -105,27 +122,31 @@
 -- * 'flPageSize'
 --
 -- * 'flSupportsTeamDrives'
+--
+-- * 'flDriveId'
 filesList
     :: FilesList
 filesList =
-    FilesList'
+  FilesList'
     { _flCorpora = Nothing
     , _flOrderBy = Nothing
     , _flIncludeTeamDriveItems = False
     , _flQ = Nothing
     , _flTeamDriveId = Nothing
     , _flSpaces = "drive"
+    , _flIncludeItemsFromAllDrives = False
+    , _flSupportsAllDrives = False
     , _flCorpus = Nothing
     , _flPageToken = Nothing
     , _flPageSize = 100
     , _flSupportsTeamDrives = False
+    , _flDriveId = Nothing
     }
 
--- | Comma-separated list of bodies of items (files\/documents) to which the
--- query applies. Supported bodies are \'user\', \'domain\', \'teamDrive\'
--- and \'allTeamDrives\'. \'allTeamDrives\' must be combined with \'user\';
--- all other values must be used in isolation. Prefer \'user\' or
--- \'teamDrive\' to \'allTeamDrives\' for efficiency.
+
+-- | Bodies of items (files\/documents) to which the query applies. Supported
+-- bodies are \'user\', \'domain\', \'drive\' and \'allDrives\'. Prefer
+-- \'user\' or \'drive\' to \'allDrives\' for efficiency.
 flCorpora :: Lens' FilesList (Maybe Text)
 flCorpora
   = lens _flCorpora (\ s a -> s{_flCorpora = a})
@@ -142,7 +163,7 @@
 flOrderBy
   = lens _flOrderBy (\ s a -> s{_flOrderBy = a})
 
--- | Whether Team Drive items should be included in results.
+-- | Deprecated use includeItemsFromAllDrives instead.
 flIncludeTeamDriveItems :: Lens' FilesList Bool
 flIncludeTeamDriveItems
   = lens _flIncludeTeamDriveItems
@@ -153,7 +174,7 @@
 flQ :: Lens' FilesList (Maybe Text)
 flQ = lens _flQ (\ s a -> s{_flQ = a})
 
--- | ID of Team Drive to search.
+-- | Deprecated use driveId instead.
 flTeamDriveId :: Lens' FilesList (Maybe Text)
 flTeamDriveId
   = lens _flTeamDriveId
@@ -164,6 +185,20 @@
 flSpaces :: Lens' FilesList Text
 flSpaces = lens _flSpaces (\ s a -> s{_flSpaces = a})
 
+-- | Whether both My Drive and shared drive items should be included in
+-- results.
+flIncludeItemsFromAllDrives :: Lens' FilesList Bool
+flIncludeItemsFromAllDrives
+  = lens _flIncludeItemsFromAllDrives
+      (\ s a -> s{_flIncludeItemsFromAllDrives = a})
+
+-- | Whether the requesting application supports both My Drives and shared
+-- drives.
+flSupportsAllDrives :: Lens' FilesList Bool
+flSupportsAllDrives
+  = lens _flSupportsAllDrives
+      (\ s a -> s{_flSupportsAllDrives = a})
+
 -- | The source of files to list. Deprecated: use \'corpora\' instead.
 flCorpus :: Lens' FilesList (Maybe FilesListCorpus)
 flCorpus = lens _flCorpus (\ s a -> s{_flCorpus = a})
@@ -183,12 +218,17 @@
   = lens _flPageSize (\ s a -> s{_flPageSize = a}) .
       _Coerce
 
--- | Whether the requesting application supports Team Drives.
+-- | Deprecated use supportsAllDrives instead.
 flSupportsTeamDrives :: Lens' FilesList Bool
 flSupportsTeamDrives
   = lens _flSupportsTeamDrives
       (\ s a -> s{_flSupportsTeamDrives = a})
 
+-- | ID of the shared drive to search.
+flDriveId :: Lens' FilesList (Maybe Text)
+flDriveId
+  = lens _flDriveId (\ s a -> s{_flDriveId = a})
+
 instance GoogleRequest FilesList where
         type Rs FilesList = FileList
         type Scopes FilesList =
@@ -205,10 +245,13 @@
               _flQ
               _flTeamDriveId
               (Just _flSpaces)
+              (Just _flIncludeItemsFromAllDrives)
+              (Just _flSupportsAllDrives)
               _flCorpus
               _flPageToken
               (Just _flPageSize)
               (Just _flSupportsTeamDrives)
+              _flDriveId
               (Just AltJSON)
               driveService
           where go
diff --git a/gen/Network/Google/Resource/Drive/Files/Update.hs b/gen/Network/Google/Resource/Drive/Files/Update.hs
--- a/gen/Network/Google/Resource/Drive/Files/Update.hs
+++ b/gen/Network/Google/Resource/Drive/Files/Update.hs
@@ -38,6 +38,7 @@
     , fuUseContentAsIndexableText
     , fuOCRLanguage
     , fuKeepRevisionForever
+    , fuSupportsAllDrives
     , fuFileId
     , fuAddParents
     , fuSupportsTeamDrives
@@ -57,10 +58,11 @@
                QueryParam "useContentAsIndexableText" Bool :>
                  QueryParam "ocrLanguage" Text :>
                    QueryParam "keepRevisionForever" Bool :>
-                     QueryParam "addParents" Text :>
-                       QueryParam "supportsTeamDrives" Bool :>
-                         QueryParam "alt" AltJSON :>
-                           ReqBody '[JSON] File :> Patch '[JSON] File
+                     QueryParam "supportsAllDrives" Bool :>
+                       QueryParam "addParents" Text :>
+                         QueryParam "supportsTeamDrives" Bool :>
+                           QueryParam "alt" AltJSON :>
+                             ReqBody '[JSON] File :> Patch '[JSON] File
        :<|>
        "upload" :>
          "drive" :>
@@ -71,27 +73,32 @@
                    QueryParam "useContentAsIndexableText" Bool :>
                      QueryParam "ocrLanguage" Text :>
                        QueryParam "keepRevisionForever" Bool :>
-                         QueryParam "addParents" Text :>
-                           QueryParam "supportsTeamDrives" Bool :>
-                             QueryParam "alt" AltJSON :>
-                               QueryParam "uploadType" Multipart :>
-                                 MultipartRelated '[JSON] File :>
-                                   Patch '[JSON] File
+                         QueryParam "supportsAllDrives" Bool :>
+                           QueryParam "addParents" Text :>
+                             QueryParam "supportsTeamDrives" Bool :>
+                               QueryParam "alt" AltJSON :>
+                                 QueryParam "uploadType" Multipart :>
+                                   MultipartRelated '[JSON] File :>
+                                     Patch '[JSON] File
 
 -- | Updates a file\'s metadata and\/or content with patch semantics.
 --
 -- /See:/ 'filesUpdate' smart constructor.
-data FilesUpdate = FilesUpdate'
+data FilesUpdate =
+  FilesUpdate'
     { _fuPayload                   :: !File
     , _fuRemoveParents             :: !(Maybe Text)
     , _fuUseContentAsIndexableText :: !Bool
     , _fuOCRLanguage               :: !(Maybe Text)
     , _fuKeepRevisionForever       :: !Bool
+    , _fuSupportsAllDrives         :: !Bool
     , _fuFileId                    :: !Text
     , _fuAddParents                :: !(Maybe Text)
     , _fuSupportsTeamDrives        :: !Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'FilesUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -106,6 +113,8 @@
 --
 -- * 'fuKeepRevisionForever'
 --
+-- * 'fuSupportsAllDrives'
+--
 -- * 'fuFileId'
 --
 -- * 'fuAddParents'
@@ -116,17 +125,19 @@
     -> Text -- ^ 'fuFileId'
     -> FilesUpdate
 filesUpdate pFuPayload_ pFuFileId_ =
-    FilesUpdate'
+  FilesUpdate'
     { _fuPayload = pFuPayload_
     , _fuRemoveParents = Nothing
     , _fuUseContentAsIndexableText = False
     , _fuOCRLanguage = Nothing
     , _fuKeepRevisionForever = False
+    , _fuSupportsAllDrives = False
     , _fuFileId = pFuFileId_
     , _fuAddParents = Nothing
     , _fuSupportsTeamDrives = False
     }
 
+
 -- | Multipart request metadata.
 fuPayload :: Lens' FilesUpdate File
 fuPayload
@@ -151,12 +162,19 @@
       (\ s a -> s{_fuOCRLanguage = a})
 
 -- | Whether to set the \'keepForever\' field in the new head revision. This
--- is only applicable to files with binary content in Drive.
+-- is only applicable to files with binary content in Google Drive.
 fuKeepRevisionForever :: Lens' FilesUpdate Bool
 fuKeepRevisionForever
   = lens _fuKeepRevisionForever
       (\ s a -> s{_fuKeepRevisionForever = a})
 
+-- | Whether the requesting application supports both My Drives and shared
+-- drives.
+fuSupportsAllDrives :: Lens' FilesUpdate Bool
+fuSupportsAllDrives
+  = lens _fuSupportsAllDrives
+      (\ s a -> s{_fuSupportsAllDrives = a})
+
 -- | The ID of the file.
 fuFileId :: Lens' FilesUpdate Text
 fuFileId = lens _fuFileId (\ s a -> s{_fuFileId = a})
@@ -166,7 +184,7 @@
 fuAddParents
   = lens _fuAddParents (\ s a -> s{_fuAddParents = a})
 
--- | Whether the requesting application supports Team Drives.
+-- | Deprecated use supportsAllDrives instead.
 fuSupportsTeamDrives :: Lens' FilesUpdate Bool
 fuSupportsTeamDrives
   = lens _fuSupportsTeamDrives
@@ -185,6 +203,7 @@
               (Just _fuUseContentAsIndexableText)
               _fuOCRLanguage
               (Just _fuKeepRevisionForever)
+              (Just _fuSupportsAllDrives)
               _fuAddParents
               (Just _fuSupportsTeamDrives)
               (Just AltJSON)
@@ -204,6 +223,7 @@
               (Just _fuUseContentAsIndexableText)
               _fuOCRLanguage
               (Just _fuKeepRevisionForever)
+              (Just _fuSupportsAllDrives)
               _fuAddParents
               (Just _fuSupportsTeamDrives)
               (Just AltJSON)
diff --git a/gen/Network/Google/Resource/Drive/Files/Watch.hs b/gen/Network/Google/Resource/Drive/Files/Watch.hs
--- a/gen/Network/Google/Resource/Drive/Files/Watch.hs
+++ b/gen/Network/Google/Resource/Drive/Files/Watch.hs
@@ -34,6 +34,7 @@
 
     -- * Request Lenses
     , fwPayload
+    , fwSupportsAllDrives
     , fwAcknowledgeAbuse
     , fwFileId
     , fwSupportsTeamDrives
@@ -50,37 +51,45 @@
          "files" :>
            Capture "fileId" Text :>
              "watch" :>
-               QueryParam "acknowledgeAbuse" Bool :>
-                 QueryParam "supportsTeamDrives" Bool :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] Channel :> Post '[JSON] Channel
+               QueryParam "supportsAllDrives" Bool :>
+                 QueryParam "acknowledgeAbuse" Bool :>
+                   QueryParam "supportsTeamDrives" Bool :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Channel :> Post '[JSON] Channel
        :<|>
        "drive" :>
          "v3" :>
            "files" :>
              Capture "fileId" Text :>
                "watch" :>
-                 QueryParam "acknowledgeAbuse" Bool :>
-                   QueryParam "supportsTeamDrives" Bool :>
-                     QueryParam "alt" AltMedia :>
-                       Post '[OctetStream] Stream
+                 QueryParam "supportsAllDrives" Bool :>
+                   QueryParam "acknowledgeAbuse" Bool :>
+                     QueryParam "supportsTeamDrives" Bool :>
+                       QueryParam "alt" AltMedia :>
+                         Post '[OctetStream] Stream
 
 -- | Subscribes to changes to a file
 --
 -- /See:/ 'filesWatch' smart constructor.
-data FilesWatch = FilesWatch'
+data FilesWatch =
+  FilesWatch'
     { _fwPayload            :: !Channel
+    , _fwSupportsAllDrives  :: !Bool
     , _fwAcknowledgeAbuse   :: !Bool
     , _fwFileId             :: !Text
     , _fwSupportsTeamDrives :: !Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'FilesWatch' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'fwPayload'
 --
+-- * 'fwSupportsAllDrives'
+--
 -- * 'fwAcknowledgeAbuse'
 --
 -- * 'fwFileId'
@@ -91,18 +100,27 @@
     -> Text -- ^ 'fwFileId'
     -> FilesWatch
 filesWatch pFwPayload_ pFwFileId_ =
-    FilesWatch'
+  FilesWatch'
     { _fwPayload = pFwPayload_
+    , _fwSupportsAllDrives = False
     , _fwAcknowledgeAbuse = False
     , _fwFileId = pFwFileId_
     , _fwSupportsTeamDrives = False
     }
 
+
 -- | Multipart request metadata.
 fwPayload :: Lens' FilesWatch Channel
 fwPayload
   = lens _fwPayload (\ s a -> s{_fwPayload = a})
 
+-- | Whether the requesting application supports both My Drives and shared
+-- drives.
+fwSupportsAllDrives :: Lens' FilesWatch Bool
+fwSupportsAllDrives
+  = lens _fwSupportsAllDrives
+      (\ s a -> s{_fwSupportsAllDrives = a})
+
 -- | Whether the user is acknowledging the risk of downloading known malware
 -- or other abusive files. This is only applicable when alt=media.
 fwAcknowledgeAbuse :: Lens' FilesWatch Bool
@@ -114,7 +132,7 @@
 fwFileId :: Lens' FilesWatch Text
 fwFileId = lens _fwFileId (\ s a -> s{_fwFileId = a})
 
--- | Whether the requesting application supports Team Drives.
+-- | Deprecated use supportsAllDrives instead.
 fwSupportsTeamDrives :: Lens' FilesWatch Bool
 fwSupportsTeamDrives
   = lens _fwSupportsTeamDrives
@@ -131,7 +149,8 @@
                "https://www.googleapis.com/auth/drive.photos.readonly",
                "https://www.googleapis.com/auth/drive.readonly"]
         requestClient FilesWatch'{..}
-          = go _fwFileId (Just _fwAcknowledgeAbuse)
+          = go _fwFileId (Just _fwSupportsAllDrives)
+              (Just _fwAcknowledgeAbuse)
               (Just _fwSupportsTeamDrives)
               (Just AltJSON)
               _fwPayload
@@ -146,7 +165,8 @@
         type Scopes (MediaDownload FilesWatch) =
              Scopes FilesWatch
         requestClient (MediaDownload FilesWatch'{..})
-          = go _fwFileId (Just _fwAcknowledgeAbuse)
+          = go _fwFileId (Just _fwSupportsAllDrives)
+              (Just _fwAcknowledgeAbuse)
               (Just _fwSupportsTeamDrives)
               (Just AltMedia)
               driveService
diff --git a/gen/Network/Google/Resource/Drive/Permissions/Create.hs b/gen/Network/Google/Resource/Drive/Permissions/Create.hs
--- a/gen/Network/Google/Resource/Drive/Permissions/Create.hs
+++ b/gen/Network/Google/Resource/Drive/Permissions/Create.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Creates a permission for a file or Team Drive.
+-- Creates a permission for a file or shared drive.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.permissions.create@.
 module Network.Google.Resource.Drive.Permissions.Create
@@ -36,6 +36,7 @@
     , pcSendNotificationEmail
     , pcPayload
     , pcEmailMessage
+    , pcSupportsAllDrives
     , pcUseDomainAdminAccess
     , pcTransferOwnership
     , pcFileId
@@ -55,25 +56,31 @@
              "permissions" :>
                QueryParam "sendNotificationEmail" Bool :>
                  QueryParam "emailMessage" Text :>
-                   QueryParam "useDomainAdminAccess" Bool :>
-                     QueryParam "transferOwnership" Bool :>
-                       QueryParam "supportsTeamDrives" Bool :>
-                         QueryParam "alt" AltJSON :>
-                           ReqBody '[JSON] Permission :> Post '[JSON] Permission
+                   QueryParam "supportsAllDrives" Bool :>
+                     QueryParam "useDomainAdminAccess" Bool :>
+                       QueryParam "transferOwnership" Bool :>
+                         QueryParam "supportsTeamDrives" Bool :>
+                           QueryParam "alt" AltJSON :>
+                             ReqBody '[JSON] Permission :>
+                               Post '[JSON] Permission
 
--- | Creates a permission for a file or Team Drive.
+-- | Creates a permission for a file or shared drive.
 --
 -- /See:/ 'permissionsCreate' smart constructor.
-data PermissionsCreate = PermissionsCreate'
+data PermissionsCreate =
+  PermissionsCreate'
     { _pcSendNotificationEmail :: !(Maybe Bool)
     , _pcPayload               :: !Permission
     , _pcEmailMessage          :: !(Maybe Text)
+    , _pcSupportsAllDrives     :: !Bool
     , _pcUseDomainAdminAccess  :: !Bool
     , _pcTransferOwnership     :: !Bool
     , _pcFileId                :: !Text
     , _pcSupportsTeamDrives    :: !Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PermissionsCreate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -84,6 +91,8 @@
 --
 -- * 'pcEmailMessage'
 --
+-- * 'pcSupportsAllDrives'
+--
 -- * 'pcUseDomainAdminAccess'
 --
 -- * 'pcTransferOwnership'
@@ -96,16 +105,18 @@
     -> Text -- ^ 'pcFileId'
     -> PermissionsCreate
 permissionsCreate pPcPayload_ pPcFileId_ =
-    PermissionsCreate'
+  PermissionsCreate'
     { _pcSendNotificationEmail = Nothing
     , _pcPayload = pPcPayload_
     , _pcEmailMessage = Nothing
+    , _pcSupportsAllDrives = False
     , _pcUseDomainAdminAccess = False
     , _pcTransferOwnership = False
     , _pcFileId = pPcFileId_
     , _pcSupportsTeamDrives = False
     }
 
+
 -- | Whether to send a notification email when sharing to users or groups.
 -- This defaults to true for users and groups, and is not allowed for other
 -- requests. It must not be disabled for ownership transfers.
@@ -125,9 +136,17 @@
   = lens _pcEmailMessage
       (\ s a -> s{_pcEmailMessage = a})
 
+-- | Whether the requesting application supports both My Drives and shared
+-- drives.
+pcSupportsAllDrives :: Lens' PermissionsCreate Bool
+pcSupportsAllDrives
+  = lens _pcSupportsAllDrives
+      (\ s a -> s{_pcSupportsAllDrives = a})
+
 -- | Issue the request as a domain administrator; if set to true, then the
--- requester will be granted access if they are an administrator of the
--- domain to which the item belongs.
+-- requester will be granted access if the file ID parameter refers to a
+-- shared drive and the requester is an administrator of the domain to
+-- which the shared drive belongs.
 pcUseDomainAdminAccess :: Lens' PermissionsCreate Bool
 pcUseDomainAdminAccess
   = lens _pcUseDomainAdminAccess
@@ -141,11 +160,11 @@
   = lens _pcTransferOwnership
       (\ s a -> s{_pcTransferOwnership = a})
 
--- | The ID of the file or Team Drive.
+-- | The ID of the file or shared drive.
 pcFileId :: Lens' PermissionsCreate Text
 pcFileId = lens _pcFileId (\ s a -> s{_pcFileId = a})
 
--- | Whether the requesting application supports Team Drives.
+-- | Deprecated use supportsAllDrives instead.
 pcSupportsTeamDrives :: Lens' PermissionsCreate Bool
 pcSupportsTeamDrives
   = lens _pcSupportsTeamDrives
@@ -159,6 +178,7 @@
         requestClient PermissionsCreate'{..}
           = go _pcFileId _pcSendNotificationEmail
               _pcEmailMessage
+              (Just _pcSupportsAllDrives)
               (Just _pcUseDomainAdminAccess)
               (Just _pcTransferOwnership)
               (Just _pcSupportsTeamDrives)
diff --git a/gen/Network/Google/Resource/Drive/Permissions/Delete.hs b/gen/Network/Google/Resource/Drive/Permissions/Delete.hs
--- a/gen/Network/Google/Resource/Drive/Permissions/Delete.hs
+++ b/gen/Network/Google/Resource/Drive/Permissions/Delete.hs
@@ -33,6 +33,7 @@
     , PermissionsDelete
 
     -- * Request Lenses
+    , pdSupportsAllDrives
     , pdUseDomainAdminAccess
     , pdFileId
     , pdSupportsTeamDrives
@@ -51,24 +52,31 @@
            Capture "fileId" Text :>
              "permissions" :>
                Capture "permissionId" Text :>
-                 QueryParam "useDomainAdminAccess" Bool :>
-                   QueryParam "supportsTeamDrives" Bool :>
-                     QueryParam "alt" AltJSON :> Delete '[JSON] ()
+                 QueryParam "supportsAllDrives" Bool :>
+                   QueryParam "useDomainAdminAccess" Bool :>
+                     QueryParam "supportsTeamDrives" Bool :>
+                       QueryParam "alt" AltJSON :> Delete '[JSON] ()
 
 -- | Deletes a permission.
 --
 -- /See:/ 'permissionsDelete' smart constructor.
-data PermissionsDelete = PermissionsDelete'
-    { _pdUseDomainAdminAccess :: !Bool
+data PermissionsDelete =
+  PermissionsDelete'
+    { _pdSupportsAllDrives    :: !Bool
+    , _pdUseDomainAdminAccess :: !Bool
     , _pdFileId               :: !Text
     , _pdSupportsTeamDrives   :: !Bool
     , _pdPermissionId         :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PermissionsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'pdSupportsAllDrives'
+--
 -- * 'pdUseDomainAdminAccess'
 --
 -- * 'pdFileId'
@@ -81,26 +89,36 @@
     -> Text -- ^ 'pdPermissionId'
     -> PermissionsDelete
 permissionsDelete pPdFileId_ pPdPermissionId_ =
-    PermissionsDelete'
-    { _pdUseDomainAdminAccess = False
+  PermissionsDelete'
+    { _pdSupportsAllDrives = False
+    , _pdUseDomainAdminAccess = False
     , _pdFileId = pPdFileId_
     , _pdSupportsTeamDrives = False
     , _pdPermissionId = pPdPermissionId_
     }
 
+
+-- | Whether the requesting application supports both My Drives and shared
+-- drives.
+pdSupportsAllDrives :: Lens' PermissionsDelete Bool
+pdSupportsAllDrives
+  = lens _pdSupportsAllDrives
+      (\ s a -> s{_pdSupportsAllDrives = a})
+
 -- | Issue the request as a domain administrator; if set to true, then the
--- requester will be granted access if they are an administrator of the
--- domain to which the item belongs.
+-- requester will be granted access if the file ID parameter refers to a
+-- shared drive and the requester is an administrator of the domain to
+-- which the shared drive belongs.
 pdUseDomainAdminAccess :: Lens' PermissionsDelete Bool
 pdUseDomainAdminAccess
   = lens _pdUseDomainAdminAccess
       (\ s a -> s{_pdUseDomainAdminAccess = a})
 
--- | The ID of the file or Team Drive.
+-- | The ID of the file or shared drive.
 pdFileId :: Lens' PermissionsDelete Text
 pdFileId = lens _pdFileId (\ s a -> s{_pdFileId = a})
 
--- | Whether the requesting application supports Team Drives.
+-- | Deprecated use supportsAllDrives instead.
 pdSupportsTeamDrives :: Lens' PermissionsDelete Bool
 pdSupportsTeamDrives
   = lens _pdSupportsTeamDrives
@@ -119,6 +137,7 @@
                "https://www.googleapis.com/auth/drive.file"]
         requestClient PermissionsDelete'{..}
           = go _pdFileId _pdPermissionId
+              (Just _pdSupportsAllDrives)
               (Just _pdUseDomainAdminAccess)
               (Just _pdSupportsTeamDrives)
               (Just AltJSON)
diff --git a/gen/Network/Google/Resource/Drive/Permissions/Get.hs b/gen/Network/Google/Resource/Drive/Permissions/Get.hs
--- a/gen/Network/Google/Resource/Drive/Permissions/Get.hs
+++ b/gen/Network/Google/Resource/Drive/Permissions/Get.hs
@@ -33,6 +33,7 @@
     , PermissionsGet
 
     -- * Request Lenses
+    , pgSupportsAllDrives
     , pgUseDomainAdminAccess
     , pgFileId
     , pgSupportsTeamDrives
@@ -51,24 +52,31 @@
            Capture "fileId" Text :>
              "permissions" :>
                Capture "permissionId" Text :>
-                 QueryParam "useDomainAdminAccess" Bool :>
-                   QueryParam "supportsTeamDrives" Bool :>
-                     QueryParam "alt" AltJSON :> Get '[JSON] Permission
+                 QueryParam "supportsAllDrives" Bool :>
+                   QueryParam "useDomainAdminAccess" Bool :>
+                     QueryParam "supportsTeamDrives" Bool :>
+                       QueryParam "alt" AltJSON :> Get '[JSON] Permission
 
 -- | Gets a permission by ID.
 --
 -- /See:/ 'permissionsGet' smart constructor.
-data PermissionsGet = PermissionsGet'
-    { _pgUseDomainAdminAccess :: !Bool
+data PermissionsGet =
+  PermissionsGet'
+    { _pgSupportsAllDrives    :: !Bool
+    , _pgUseDomainAdminAccess :: !Bool
     , _pgFileId               :: !Text
     , _pgSupportsTeamDrives   :: !Bool
     , _pgPermissionId         :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PermissionsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'pgSupportsAllDrives'
+--
 -- * 'pgUseDomainAdminAccess'
 --
 -- * 'pgFileId'
@@ -81,16 +89,26 @@
     -> Text -- ^ 'pgPermissionId'
     -> PermissionsGet
 permissionsGet pPgFileId_ pPgPermissionId_ =
-    PermissionsGet'
-    { _pgUseDomainAdminAccess = False
+  PermissionsGet'
+    { _pgSupportsAllDrives = False
+    , _pgUseDomainAdminAccess = False
     , _pgFileId = pPgFileId_
     , _pgSupportsTeamDrives = False
     , _pgPermissionId = pPgPermissionId_
     }
 
+
+-- | Whether the requesting application supports both My Drives and shared
+-- drives.
+pgSupportsAllDrives :: Lens' PermissionsGet Bool
+pgSupportsAllDrives
+  = lens _pgSupportsAllDrives
+      (\ s a -> s{_pgSupportsAllDrives = a})
+
 -- | Issue the request as a domain administrator; if set to true, then the
--- requester will be granted access if they are an administrator of the
--- domain to which the item belongs.
+-- requester will be granted access if the file ID parameter refers to a
+-- shared drive and the requester is an administrator of the domain to
+-- which the shared drive belongs.
 pgUseDomainAdminAccess :: Lens' PermissionsGet Bool
 pgUseDomainAdminAccess
   = lens _pgUseDomainAdminAccess
@@ -100,7 +118,7 @@
 pgFileId :: Lens' PermissionsGet Text
 pgFileId = lens _pgFileId (\ s a -> s{_pgFileId = a})
 
--- | Whether the requesting application supports Team Drives.
+-- | Deprecated use supportsAllDrives instead.
 pgSupportsTeamDrives :: Lens' PermissionsGet Bool
 pgSupportsTeamDrives
   = lens _pgSupportsTeamDrives
@@ -123,6 +141,7 @@
                "https://www.googleapis.com/auth/drive.readonly"]
         requestClient PermissionsGet'{..}
           = go _pgFileId _pgPermissionId
+              (Just _pgSupportsAllDrives)
               (Just _pgUseDomainAdminAccess)
               (Just _pgSupportsTeamDrives)
               (Just AltJSON)
diff --git a/gen/Network/Google/Resource/Drive/Permissions/List.hs b/gen/Network/Google/Resource/Drive/Permissions/List.hs
--- a/gen/Network/Google/Resource/Drive/Permissions/List.hs
+++ b/gen/Network/Google/Resource/Drive/Permissions/List.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Lists a file\'s or Team Drive\'s permissions.
+-- Lists a file\'s or shared drive\'s permissions.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.permissions.list@.
 module Network.Google.Resource.Drive.Permissions.List
@@ -33,6 +33,7 @@
     , PermissionsList
 
     -- * Request Lenses
+    , plSupportsAllDrives
     , plPageToken
     , plUseDomainAdminAccess
     , plFileId
@@ -51,28 +52,35 @@
          "files" :>
            Capture "fileId" Text :>
              "permissions" :>
-               QueryParam "pageToken" Text :>
-                 QueryParam "useDomainAdminAccess" Bool :>
-                   QueryParam "pageSize" (Textual Int32) :>
-                     QueryParam "supportsTeamDrives" Bool :>
-                       QueryParam "alt" AltJSON :>
-                         Get '[JSON] PermissionList
+               QueryParam "supportsAllDrives" Bool :>
+                 QueryParam "pageToken" Text :>
+                   QueryParam "useDomainAdminAccess" Bool :>
+                     QueryParam "pageSize" (Textual Int32) :>
+                       QueryParam "supportsTeamDrives" Bool :>
+                         QueryParam "alt" AltJSON :>
+                           Get '[JSON] PermissionList
 
--- | Lists a file\'s or Team Drive\'s permissions.
+-- | Lists a file\'s or shared drive\'s permissions.
 --
 -- /See:/ 'permissionsList' smart constructor.
-data PermissionsList = PermissionsList'
-    { _plPageToken            :: !(Maybe Text)
+data PermissionsList =
+  PermissionsList'
+    { _plSupportsAllDrives    :: !Bool
+    , _plPageToken            :: !(Maybe Text)
     , _plUseDomainAdminAccess :: !Bool
     , _plFileId               :: !Text
     , _plPageSize             :: !(Maybe (Textual Int32))
     , _plSupportsTeamDrives   :: !Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PermissionsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
+-- * 'plSupportsAllDrives'
+--
 -- * 'plPageToken'
 --
 -- * 'plUseDomainAdminAccess'
@@ -86,14 +94,23 @@
     :: Text -- ^ 'plFileId'
     -> PermissionsList
 permissionsList pPlFileId_ =
-    PermissionsList'
-    { _plPageToken = Nothing
+  PermissionsList'
+    { _plSupportsAllDrives = False
+    , _plPageToken = Nothing
     , _plUseDomainAdminAccess = False
     , _plFileId = pPlFileId_
     , _plPageSize = Nothing
     , _plSupportsTeamDrives = False
     }
 
+
+-- | Whether the requesting application supports both My Drives and shared
+-- drives.
+plSupportsAllDrives :: Lens' PermissionsList Bool
+plSupportsAllDrives
+  = lens _plSupportsAllDrives
+      (\ s a -> s{_plSupportsAllDrives = a})
+
 -- | The token for continuing a previous list request on the next page. This
 -- should be set to the value of \'nextPageToken\' from the previous
 -- response.
@@ -102,27 +119,28 @@
   = lens _plPageToken (\ s a -> s{_plPageToken = a})
 
 -- | Issue the request as a domain administrator; if set to true, then the
--- requester will be granted access if they are an administrator of the
--- domain to which the item belongs.
+-- requester will be granted access if the file ID parameter refers to a
+-- shared drive and the requester is an administrator of the domain to
+-- which the shared drive belongs.
 plUseDomainAdminAccess :: Lens' PermissionsList Bool
 plUseDomainAdminAccess
   = lens _plUseDomainAdminAccess
       (\ s a -> s{_plUseDomainAdminAccess = a})
 
--- | The ID of the file or Team Drive.
+-- | The ID of the file or shared drive.
 plFileId :: Lens' PermissionsList Text
 plFileId = lens _plFileId (\ s a -> s{_plFileId = a})
 
 -- | The maximum number of permissions to return per page. When not set for
--- files in a Team Drive, at most 100 results will be returned. When not
--- set for files that are not in a Team Drive, the entire list will be
+-- files in a shared drive, at most 100 results will be returned. When not
+-- set for files that are not in a shared drive, the entire list will be
 -- returned.
 plPageSize :: Lens' PermissionsList (Maybe Int32)
 plPageSize
   = lens _plPageSize (\ s a -> s{_plPageSize = a}) .
       mapping _Coerce
 
--- | Whether the requesting application supports Team Drives.
+-- | Deprecated use supportsAllDrives instead.
 plSupportsTeamDrives :: Lens' PermissionsList Bool
 plSupportsTeamDrives
   = lens _plSupportsTeamDrives
@@ -138,7 +156,8 @@
                "https://www.googleapis.com/auth/drive.photos.readonly",
                "https://www.googleapis.com/auth/drive.readonly"]
         requestClient PermissionsList'{..}
-          = go _plFileId _plPageToken
+          = go _plFileId (Just _plSupportsAllDrives)
+              _plPageToken
               (Just _plUseDomainAdminAccess)
               _plPageSize
               (Just _plSupportsTeamDrives)
diff --git a/gen/Network/Google/Resource/Drive/Permissions/Update.hs b/gen/Network/Google/Resource/Drive/Permissions/Update.hs
--- a/gen/Network/Google/Resource/Drive/Permissions/Update.hs
+++ b/gen/Network/Google/Resource/Drive/Permissions/Update.hs
@@ -34,6 +34,7 @@
 
     -- * Request Lenses
     , puPayload
+    , puSupportsAllDrives
     , puRemoveExpiration
     , puUseDomainAdminAccess
     , puTransferOwnership
@@ -54,33 +55,40 @@
            Capture "fileId" Text :>
              "permissions" :>
                Capture "permissionId" Text :>
-                 QueryParam "removeExpiration" Bool :>
-                   QueryParam "useDomainAdminAccess" Bool :>
-                     QueryParam "transferOwnership" Bool :>
-                       QueryParam "supportsTeamDrives" Bool :>
-                         QueryParam "alt" AltJSON :>
-                           ReqBody '[JSON] Permission :>
-                             Patch '[JSON] Permission
+                 QueryParam "supportsAllDrives" Bool :>
+                   QueryParam "removeExpiration" Bool :>
+                     QueryParam "useDomainAdminAccess" Bool :>
+                       QueryParam "transferOwnership" Bool :>
+                         QueryParam "supportsTeamDrives" Bool :>
+                           QueryParam "alt" AltJSON :>
+                             ReqBody '[JSON] Permission :>
+                               Patch '[JSON] Permission
 
 -- | Updates a permission with patch semantics.
 --
 -- /See:/ 'permissionsUpdate' smart constructor.
-data PermissionsUpdate = PermissionsUpdate'
+data PermissionsUpdate =
+  PermissionsUpdate'
     { _puPayload              :: !Permission
+    , _puSupportsAllDrives    :: !Bool
     , _puRemoveExpiration     :: !Bool
     , _puUseDomainAdminAccess :: !Bool
     , _puTransferOwnership    :: !Bool
     , _puFileId               :: !Text
     , _puSupportsTeamDrives   :: !Bool
     , _puPermissionId         :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'PermissionsUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
 --
 -- * 'puPayload'
 --
+-- * 'puSupportsAllDrives'
+--
 -- * 'puRemoveExpiration'
 --
 -- * 'puUseDomainAdminAccess'
@@ -98,8 +106,9 @@
     -> Text -- ^ 'puPermissionId'
     -> PermissionsUpdate
 permissionsUpdate pPuPayload_ pPuFileId_ pPuPermissionId_ =
-    PermissionsUpdate'
+  PermissionsUpdate'
     { _puPayload = pPuPayload_
+    , _puSupportsAllDrives = False
     , _puRemoveExpiration = False
     , _puUseDomainAdminAccess = False
     , _puTransferOwnership = False
@@ -108,11 +117,19 @@
     , _puPermissionId = pPuPermissionId_
     }
 
+
 -- | Multipart request metadata.
 puPayload :: Lens' PermissionsUpdate Permission
 puPayload
   = lens _puPayload (\ s a -> s{_puPayload = a})
 
+-- | Whether the requesting application supports both My Drives and shared
+-- drives.
+puSupportsAllDrives :: Lens' PermissionsUpdate Bool
+puSupportsAllDrives
+  = lens _puSupportsAllDrives
+      (\ s a -> s{_puSupportsAllDrives = a})
+
 -- | Whether to remove the expiration date.
 puRemoveExpiration :: Lens' PermissionsUpdate Bool
 puRemoveExpiration
@@ -120,8 +137,9 @@
       (\ s a -> s{_puRemoveExpiration = a})
 
 -- | Issue the request as a domain administrator; if set to true, then the
--- requester will be granted access if they are an administrator of the
--- domain to which the item belongs.
+-- requester will be granted access if the file ID parameter refers to a
+-- shared drive and the requester is an administrator of the domain to
+-- which the shared drive belongs.
 puUseDomainAdminAccess :: Lens' PermissionsUpdate Bool
 puUseDomainAdminAccess
   = lens _puUseDomainAdminAccess
@@ -135,11 +153,11 @@
   = lens _puTransferOwnership
       (\ s a -> s{_puTransferOwnership = a})
 
--- | The ID of the file or Team Drive.
+-- | The ID of the file or shared drive.
 puFileId :: Lens' PermissionsUpdate Text
 puFileId = lens _puFileId (\ s a -> s{_puFileId = a})
 
--- | Whether the requesting application supports Team Drives.
+-- | Deprecated use supportsAllDrives instead.
 puSupportsTeamDrives :: Lens' PermissionsUpdate Bool
 puSupportsTeamDrives
   = lens _puSupportsTeamDrives
@@ -158,6 +176,7 @@
                "https://www.googleapis.com/auth/drive.file"]
         requestClient PermissionsUpdate'{..}
           = go _puFileId _puPermissionId
+              (Just _puSupportsAllDrives)
               (Just _puRemoveExpiration)
               (Just _puUseDomainAdminAccess)
               (Just _puTransferOwnership)
diff --git a/gen/Network/Google/Resource/Drive/Replies/Create.hs b/gen/Network/Google/Resource/Drive/Replies/Create.hs
--- a/gen/Network/Google/Resource/Drive/Replies/Create.hs
+++ b/gen/Network/Google/Resource/Drive/Replies/Create.hs
@@ -57,12 +57,15 @@
 -- | Creates a new reply to a comment.
 --
 -- /See:/ 'repliesCreate' smart constructor.
-data RepliesCreate = RepliesCreate'
+data RepliesCreate =
+  RepliesCreate'
     { _rcPayload   :: !Reply
     , _rcFileId    :: !Text
     , _rcCommentId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RepliesCreate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -78,11 +81,12 @@
     -> Text -- ^ 'rcCommentId'
     -> RepliesCreate
 repliesCreate pRcPayload_ pRcFileId_ pRcCommentId_ =
-    RepliesCreate'
+  RepliesCreate'
     { _rcPayload = pRcPayload_
     , _rcFileId = pRcFileId_
     , _rcCommentId = pRcCommentId_
     }
+
 
 -- | Multipart request metadata.
 rcPayload :: Lens' RepliesCreate Reply
diff --git a/gen/Network/Google/Resource/Drive/Replies/Delete.hs b/gen/Network/Google/Resource/Drive/Replies/Delete.hs
--- a/gen/Network/Google/Resource/Drive/Replies/Delete.hs
+++ b/gen/Network/Google/Resource/Drive/Replies/Delete.hs
@@ -57,12 +57,15 @@
 -- | Deletes a reply.
 --
 -- /See:/ 'repliesDelete' smart constructor.
-data RepliesDelete = RepliesDelete'
+data RepliesDelete =
+  RepliesDelete'
     { _rdReplyId   :: !Text
     , _rdFileId    :: !Text
     , _rdCommentId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RepliesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -78,11 +81,12 @@
     -> Text -- ^ 'rdCommentId'
     -> RepliesDelete
 repliesDelete pRdReplyId_ pRdFileId_ pRdCommentId_ =
-    RepliesDelete'
+  RepliesDelete'
     { _rdReplyId = pRdReplyId_
     , _rdFileId = pRdFileId_
     , _rdCommentId = pRdCommentId_
     }
+
 
 -- | The ID of the reply.
 rdReplyId :: Lens' RepliesDelete Text
diff --git a/gen/Network/Google/Resource/Drive/Replies/Get.hs b/gen/Network/Google/Resource/Drive/Replies/Get.hs
--- a/gen/Network/Google/Resource/Drive/Replies/Get.hs
+++ b/gen/Network/Google/Resource/Drive/Replies/Get.hs
@@ -59,13 +59,16 @@
 -- | Gets a reply by ID.
 --
 -- /See:/ 'repliesGet' smart constructor.
-data RepliesGet = RepliesGet'
+data RepliesGet =
+  RepliesGet'
     { _rgReplyId        :: !Text
     , _rgFileId         :: !Text
     , _rgCommentId      :: !Text
     , _rgIncludeDeleted :: !Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RepliesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -83,12 +86,13 @@
     -> Text -- ^ 'rgCommentId'
     -> RepliesGet
 repliesGet pRgReplyId_ pRgFileId_ pRgCommentId_ =
-    RepliesGet'
+  RepliesGet'
     { _rgReplyId = pRgReplyId_
     , _rgFileId = pRgFileId_
     , _rgCommentId = pRgCommentId_
     , _rgIncludeDeleted = False
     }
+
 
 -- | The ID of the reply.
 rgReplyId :: Lens' RepliesGet Text
diff --git a/gen/Network/Google/Resource/Drive/Replies/List.hs b/gen/Network/Google/Resource/Drive/Replies/List.hs
--- a/gen/Network/Google/Resource/Drive/Replies/List.hs
+++ b/gen/Network/Google/Resource/Drive/Replies/List.hs
@@ -61,14 +61,17 @@
 -- | Lists a comment\'s replies.
 --
 -- /See:/ 'repliesList' smart constructor.
-data RepliesList = RepliesList'
+data RepliesList =
+  RepliesList'
     { _rlPageToken      :: !(Maybe Text)
     , _rlFileId         :: !Text
     , _rlCommentId      :: !Text
     , _rlPageSize       :: !(Textual Int32)
     , _rlIncludeDeleted :: !Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RepliesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -87,13 +90,14 @@
     -> Text -- ^ 'rlCommentId'
     -> RepliesList
 repliesList pRlFileId_ pRlCommentId_ =
-    RepliesList'
+  RepliesList'
     { _rlPageToken = Nothing
     , _rlFileId = pRlFileId_
     , _rlCommentId = pRlCommentId_
     , _rlPageSize = 20
     , _rlIncludeDeleted = False
     }
+
 
 -- | The token for continuing a previous list request on the next page. This
 -- should be set to the value of \'nextPageToken\' from the previous
diff --git a/gen/Network/Google/Resource/Drive/Replies/Update.hs b/gen/Network/Google/Resource/Drive/Replies/Update.hs
--- a/gen/Network/Google/Resource/Drive/Replies/Update.hs
+++ b/gen/Network/Google/Resource/Drive/Replies/Update.hs
@@ -59,13 +59,16 @@
 -- | Updates a reply with patch semantics.
 --
 -- /See:/ 'repliesUpdate' smart constructor.
-data RepliesUpdate = RepliesUpdate'
+data RepliesUpdate =
+  RepliesUpdate'
     { _ruPayload   :: !Reply
     , _ruReplyId   :: !Text
     , _ruFileId    :: !Text
     , _ruCommentId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RepliesUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -84,12 +87,13 @@
     -> Text -- ^ 'ruCommentId'
     -> RepliesUpdate
 repliesUpdate pRuPayload_ pRuReplyId_ pRuFileId_ pRuCommentId_ =
-    RepliesUpdate'
+  RepliesUpdate'
     { _ruPayload = pRuPayload_
     , _ruReplyId = pRuReplyId_
     , _ruFileId = pRuFileId_
     , _ruCommentId = pRuCommentId_
     }
+
 
 -- | Multipart request metadata.
 ruPayload :: Lens' RepliesUpdate Reply
diff --git a/gen/Network/Google/Resource/Drive/Revisions/Delete.hs b/gen/Network/Google/Resource/Drive/Revisions/Delete.hs
--- a/gen/Network/Google/Resource/Drive/Revisions/Delete.hs
+++ b/gen/Network/Google/Resource/Drive/Revisions/Delete.hs
@@ -20,8 +20,10 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Permanently deletes a revision. This method is only applicable to files
--- with binary content in Drive.
+-- Permanently deletes a file version. You can only delete revisions for
+-- files with binary content in Google Drive, like images or videos.
+-- Revisions for other files, like Google Docs or Sheets, and the last
+-- remaining file version can\'t be deleted.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.revisions.delete@.
 module Network.Google.Resource.Drive.Revisions.Delete
@@ -52,15 +54,20 @@
                Capture "revisionId" Text :>
                  QueryParam "alt" AltJSON :> Delete '[JSON] ()
 
--- | Permanently deletes a revision. This method is only applicable to files
--- with binary content in Drive.
+-- | Permanently deletes a file version. You can only delete revisions for
+-- files with binary content in Google Drive, like images or videos.
+-- Revisions for other files, like Google Docs or Sheets, and the last
+-- remaining file version can\'t be deleted.
 --
 -- /See:/ 'revisionsDelete' smart constructor.
-data RevisionsDelete = RevisionsDelete'
+data RevisionsDelete =
+  RevisionsDelete'
     { _rFileId     :: !Text
     , _rRevisionId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RevisionsDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -73,10 +80,8 @@
     -> Text -- ^ 'rRevisionId'
     -> RevisionsDelete
 revisionsDelete pRFileId_ pRRevisionId_ =
-    RevisionsDelete'
-    { _rFileId = pRFileId_
-    , _rRevisionId = pRRevisionId_
-    }
+  RevisionsDelete' {_rFileId = pRFileId_, _rRevisionId = pRRevisionId_}
+
 
 -- | The ID of the file.
 rFileId :: Lens' RevisionsDelete Text
diff --git a/gen/Network/Google/Resource/Drive/Revisions/Get.hs b/gen/Network/Google/Resource/Drive/Revisions/Get.hs
--- a/gen/Network/Google/Resource/Drive/Revisions/Get.hs
+++ b/gen/Network/Google/Resource/Drive/Revisions/Get.hs
@@ -66,12 +66,15 @@
 -- | Gets a revision\'s metadata or content by ID.
 --
 -- /See:/ 'revisionsGet' smart constructor.
-data RevisionsGet = RevisionsGet'
+data RevisionsGet =
+  RevisionsGet'
     { _rggAcknowledgeAbuse :: !Bool
     , _rggFileId           :: !Text
     , _rggRevisionId       :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RevisionsGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -86,11 +89,12 @@
     -> Text -- ^ 'rggRevisionId'
     -> RevisionsGet
 revisionsGet pRggFileId_ pRggRevisionId_ =
-    RevisionsGet'
+  RevisionsGet'
     { _rggAcknowledgeAbuse = False
     , _rggFileId = pRggFileId_
     , _rggRevisionId = pRggRevisionId_
     }
+
 
 -- | Whether the user is acknowledging the risk of downloading known malware
 -- or other abusive files. This is only applicable when alt=media.
diff --git a/gen/Network/Google/Resource/Drive/Revisions/List.hs b/gen/Network/Google/Resource/Drive/Revisions/List.hs
--- a/gen/Network/Google/Resource/Drive/Revisions/List.hs
+++ b/gen/Network/Google/Resource/Drive/Revisions/List.hs
@@ -56,12 +56,15 @@
 -- | Lists a file\'s revisions.
 --
 -- /See:/ 'revisionsList' smart constructor.
-data RevisionsList = RevisionsList'
+data RevisionsList =
+  RevisionsList'
     { _rllPageToken :: !(Maybe Text)
     , _rllFileId    :: !Text
     , _rllPageSize  :: !(Textual Int32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RevisionsList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -75,11 +78,9 @@
     :: Text -- ^ 'rllFileId'
     -> RevisionsList
 revisionsList pRllFileId_ =
-    RevisionsList'
-    { _rllPageToken = Nothing
-    , _rllFileId = pRllFileId_
-    , _rllPageSize = 200
-    }
+  RevisionsList'
+    {_rllPageToken = Nothing, _rllFileId = pRllFileId_, _rllPageSize = 200}
+
 
 -- | The token for continuing a previous list request on the next page. This
 -- should be set to the value of \'nextPageToken\' from the previous
diff --git a/gen/Network/Google/Resource/Drive/Revisions/Update.hs b/gen/Network/Google/Resource/Drive/Revisions/Update.hs
--- a/gen/Network/Google/Resource/Drive/Revisions/Update.hs
+++ b/gen/Network/Google/Resource/Drive/Revisions/Update.hs
@@ -56,12 +56,15 @@
 -- | Updates a revision with patch semantics.
 --
 -- /See:/ 'revisionsUpdate' smart constructor.
-data RevisionsUpdate = RevisionsUpdate'
+data RevisionsUpdate =
+  RevisionsUpdate'
     { _revPayload    :: !Revision
     , _revFileId     :: !Text
     , _revRevisionId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'RevisionsUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -77,11 +80,12 @@
     -> Text -- ^ 'revRevisionId'
     -> RevisionsUpdate
 revisionsUpdate pRevPayload_ pRevFileId_ pRevRevisionId_ =
-    RevisionsUpdate'
+  RevisionsUpdate'
     { _revPayload = pRevPayload_
     , _revFileId = pRevFileId_
     , _revRevisionId = pRevRevisionId_
     }
+
 
 -- | Multipart request metadata.
 revPayload :: Lens' RevisionsUpdate Revision
diff --git a/gen/Network/Google/Resource/Drive/Teamdrives/Create.hs b/gen/Network/Google/Resource/Drive/Teamdrives/Create.hs
--- a/gen/Network/Google/Resource/Drive/Teamdrives/Create.hs
+++ b/gen/Network/Google/Resource/Drive/Teamdrives/Create.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Creates a new Team Drive.
+-- Deprecated use drives.create instead.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.teamdrives.create@.
 module Network.Google.Resource.Drive.Teamdrives.Create
@@ -50,14 +50,17 @@
              QueryParam "alt" AltJSON :>
                ReqBody '[JSON] TeamDrive :> Post '[JSON] TeamDrive
 
--- | Creates a new Team Drive.
+-- | Deprecated use drives.create instead.
 --
 -- /See:/ 'teamdrivesCreate' smart constructor.
-data TeamdrivesCreate = TeamdrivesCreate'
+data TeamdrivesCreate =
+  TeamdrivesCreate'
     { _tcRequestId :: !Text
     , _tcPayload   :: !TeamDrive
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TeamdrivesCreate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -70,10 +73,8 @@
     -> TeamDrive -- ^ 'tcPayload'
     -> TeamdrivesCreate
 teamdrivesCreate pTcRequestId_ pTcPayload_ =
-    TeamdrivesCreate'
-    { _tcRequestId = pTcRequestId_
-    , _tcPayload = pTcPayload_
-    }
+  TeamdrivesCreate' {_tcRequestId = pTcRequestId_, _tcPayload = pTcPayload_}
+
 
 -- | An ID, such as a random UUID, which uniquely identifies this user\'s
 -- request for idempotent creation of a Team Drive. A repeated request by
diff --git a/gen/Network/Google/Resource/Drive/Teamdrives/Delete.hs b/gen/Network/Google/Resource/Drive/Teamdrives/Delete.hs
--- a/gen/Network/Google/Resource/Drive/Teamdrives/Delete.hs
+++ b/gen/Network/Google/Resource/Drive/Teamdrives/Delete.hs
@@ -20,8 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Permanently deletes a Team Drive for which the user is an organizer. The
--- Team Drive cannot contain any untrashed items.
+-- Deprecated use drives.delete instead.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.teamdrives.delete@.
 module Network.Google.Resource.Drive.Teamdrives.Delete
@@ -49,14 +48,16 @@
            Capture "teamDriveId" Text :>
              QueryParam "alt" AltJSON :> Delete '[JSON] ()
 
--- | Permanently deletes a Team Drive for which the user is an organizer. The
--- Team Drive cannot contain any untrashed items.
+-- | Deprecated use drives.delete instead.
 --
 -- /See:/ 'teamdrivesDelete' smart constructor.
-newtype TeamdrivesDelete = TeamdrivesDelete'
+newtype TeamdrivesDelete =
+  TeamdrivesDelete'
     { _tdTeamDriveId :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TeamdrivesDelete' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -66,9 +67,8 @@
     :: Text -- ^ 'tdTeamDriveId'
     -> TeamdrivesDelete
 teamdrivesDelete pTdTeamDriveId_ =
-    TeamdrivesDelete'
-    { _tdTeamDriveId = pTdTeamDriveId_
-    }
+  TeamdrivesDelete' {_tdTeamDriveId = pTdTeamDriveId_}
+
 
 -- | The ID of the Team Drive
 tdTeamDriveId :: Lens' TeamdrivesDelete Text
diff --git a/gen/Network/Google/Resource/Drive/Teamdrives/Get.hs b/gen/Network/Google/Resource/Drive/Teamdrives/Get.hs
--- a/gen/Network/Google/Resource/Drive/Teamdrives/Get.hs
+++ b/gen/Network/Google/Resource/Drive/Teamdrives/Get.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Gets a Team Drive\'s metadata by ID.
+-- Deprecated use drives.get instead.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.teamdrives.get@.
 module Network.Google.Resource.Drive.Teamdrives.Get
@@ -50,14 +50,17 @@
              QueryParam "useDomainAdminAccess" Bool :>
                QueryParam "alt" AltJSON :> Get '[JSON] TeamDrive
 
--- | Gets a Team Drive\'s metadata by ID.
+-- | Deprecated use drives.get instead.
 --
 -- /See:/ 'teamdrivesGet' smart constructor.
-data TeamdrivesGet = TeamdrivesGet'
+data TeamdrivesGet =
+  TeamdrivesGet'
     { _tgTeamDriveId          :: !Text
     , _tgUseDomainAdminAccess :: !Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TeamdrivesGet' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -69,10 +72,9 @@
     :: Text -- ^ 'tgTeamDriveId'
     -> TeamdrivesGet
 teamdrivesGet pTgTeamDriveId_ =
-    TeamdrivesGet'
-    { _tgTeamDriveId = pTgTeamDriveId_
-    , _tgUseDomainAdminAccess = False
-    }
+  TeamdrivesGet'
+    {_tgTeamDriveId = pTgTeamDriveId_, _tgUseDomainAdminAccess = False}
+
 
 -- | The ID of the Team Drive
 tgTeamDriveId :: Lens' TeamdrivesGet Text
diff --git a/gen/Network/Google/Resource/Drive/Teamdrives/List.hs b/gen/Network/Google/Resource/Drive/Teamdrives/List.hs
--- a/gen/Network/Google/Resource/Drive/Teamdrives/List.hs
+++ b/gen/Network/Google/Resource/Drive/Teamdrives/List.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Lists the user\'s Team Drives.
+-- Deprecated use drives.list instead.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.teamdrives.list@.
 module Network.Google.Resource.Drive.Teamdrives.List
@@ -54,16 +54,19 @@
                  QueryParam "pageSize" (Textual Int32) :>
                    QueryParam "alt" AltJSON :> Get '[JSON] TeamDriveList
 
--- | Lists the user\'s Team Drives.
+-- | Deprecated use drives.list instead.
 --
 -- /See:/ 'teamdrivesList' smart constructor.
-data TeamdrivesList = TeamdrivesList'
+data TeamdrivesList =
+  TeamdrivesList'
     { _tlQ                    :: !(Maybe Text)
     , _tlPageToken            :: !(Maybe Text)
     , _tlUseDomainAdminAccess :: !Bool
     , _tlPageSize             :: !(Textual Int32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TeamdrivesList' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -78,12 +81,13 @@
 teamdrivesList
     :: TeamdrivesList
 teamdrivesList =
-    TeamdrivesList'
+  TeamdrivesList'
     { _tlQ = Nothing
     , _tlPageToken = Nothing
     , _tlUseDomainAdminAccess = False
     , _tlPageSize = 10
     }
+
 
 -- | Query string for searching Team Drives.
 tlQ :: Lens' TeamdrivesList (Maybe Text)
diff --git a/gen/Network/Google/Resource/Drive/Teamdrives/Update.hs b/gen/Network/Google/Resource/Drive/Teamdrives/Update.hs
--- a/gen/Network/Google/Resource/Drive/Teamdrives/Update.hs
+++ b/gen/Network/Google/Resource/Drive/Teamdrives/Update.hs
@@ -20,7 +20,7 @@
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Updates a Team Drive\'s metadata
+-- Deprecated use drives.update instead
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.teamdrives.update@.
 module Network.Google.Resource.Drive.Teamdrives.Update
@@ -52,15 +52,18 @@
                QueryParam "alt" AltJSON :>
                  ReqBody '[JSON] TeamDrive :> Patch '[JSON] TeamDrive
 
--- | Updates a Team Drive\'s metadata
+-- | Deprecated use drives.update instead
 --
 -- /See:/ 'teamdrivesUpdate' smart constructor.
-data TeamdrivesUpdate = TeamdrivesUpdate'
+data TeamdrivesUpdate =
+  TeamdrivesUpdate'
     { _tuPayload              :: !TeamDrive
     , _tuTeamDriveId          :: !Text
     , _tuUseDomainAdminAccess :: !Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
+    }
+  deriving (Eq, Show, Data, Typeable, Generic)
 
+
 -- | Creates a value of 'TeamdrivesUpdate' with the minimum fields required to make a request.
 --
 -- Use one of the following lenses to modify other fields as desired:
@@ -75,11 +78,12 @@
     -> Text -- ^ 'tuTeamDriveId'
     -> TeamdrivesUpdate
 teamdrivesUpdate pTuPayload_ pTuTeamDriveId_ =
-    TeamdrivesUpdate'
+  TeamdrivesUpdate'
     { _tuPayload = pTuPayload_
     , _tuTeamDriveId = pTuTeamDriveId_
     , _tuUseDomainAdminAccess = False
     }
+
 
 -- | Multipart request metadata.
 tuPayload :: Lens' TeamdrivesUpdate TeamDrive
diff --git a/gogol-drive.cabal b/gogol-drive.cabal
--- a/gogol-drive.cabal
+++ b/gogol-drive.cabal
@@ -1,5 +1,5 @@
 name:                  gogol-drive
-version:               0.4.0
+version:               0.5.0
 synopsis:              Google Drive SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
@@ -46,6 +46,13 @@
         , Network.Google.Resource.Drive.Comments.Get
         , Network.Google.Resource.Drive.Comments.List
         , Network.Google.Resource.Drive.Comments.Update
+        , Network.Google.Resource.Drive.Drives.Create
+        , Network.Google.Resource.Drive.Drives.Delete
+        , Network.Google.Resource.Drive.Drives.Get
+        , Network.Google.Resource.Drive.Drives.Hide
+        , Network.Google.Resource.Drive.Drives.List
+        , Network.Google.Resource.Drive.Drives.Unhide
+        , Network.Google.Resource.Drive.Drives.Update
         , Network.Google.Resource.Drive.Files.Copy
         , Network.Google.Resource.Drive.Files.Create
         , Network.Google.Resource.Drive.Files.Delete
@@ -81,5 +88,5 @@
         , Network.Google.Drive.Types.Sum
 
     build-depends:
-          gogol-core == 0.4.0.*
+          gogol-core == 0.5.0.*
         , base       >= 4.7 && < 5
