diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -8,7 +8,7 @@
 
 ## Version
 
-`0.0.1`
+`0.1.0`
 
 
 ## Description
@@ -18,9 +18,9 @@
 
 ## Contribute
 
-For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/amazonka/issues).
+For any problems, comments, or feedback please create an issue [here on GitHub](https://github.com/brendanhay/gogol/issues).
 
-> _Note:_ this library is an auto-generated Haskell package. Please see `amazonka-gen` for more information.
+> _Note:_ this library is an auto-generated Haskell package. Please see `gogol-gen` for more information.
 
 
 ## Licence
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
@@ -7,13 +7,14 @@
 
 -- |
 -- Module      : Network.Google.Drive
--- Copyright   : (c) 2015 Brendan Hay
+-- 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)
 --
--- The API to interact with Drive.
+-- Manages files in Drive including uploading, downloading, searching,
+-- detecting changes, and updating sharing permissions.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference>
 module Network.Google.Drive
@@ -21,6 +22,16 @@
     -- * Service Configuration
       driveService
 
+    -- * OAuth Scopes
+    , driveMetadataReadOnlyScope
+    , drivePhotosReadOnlyScope
+    , driveAppDataScope
+    , driveReadOnlyScope
+    , driveScope
+    , driveFileScope
+    , driveMetadataScope
+    , driveScriptsScope
+
     -- * API Declaration
     , DriveAPI
 
@@ -29,14 +40,8 @@
     -- ** drive.about.get
     , module Network.Google.Resource.Drive.About.Get
 
-    -- ** drive.apps.get
-    , module Network.Google.Resource.Drive.Apps.Get
-
-    -- ** drive.apps.list
-    , module Network.Google.Resource.Drive.Apps.List
-
-    -- ** drive.changes.get
-    , module Network.Google.Resource.Drive.Changes.Get
+    -- ** drive.changes.getStartPageToken
+    , module Network.Google.Resource.Drive.Changes.GetStartPageToken
 
     -- ** drive.changes.list
     , module Network.Google.Resource.Drive.Changes.List
@@ -47,17 +52,8 @@
     -- ** drive.channels.stop
     , module Network.Google.Resource.Drive.Channels.Stop
 
-    -- ** drive.children.delete
-    , module Network.Google.Resource.Drive.Children.Delete
-
-    -- ** drive.children.get
-    , module Network.Google.Resource.Drive.Children.Get
-
-    -- ** drive.children.insert
-    , module Network.Google.Resource.Drive.Children.Insert
-
-    -- ** drive.children.list
-    , module Network.Google.Resource.Drive.Children.List
+    -- ** drive.comments.create
+    , module Network.Google.Resource.Drive.Comments.Create
 
     -- ** drive.comments.delete
     , module Network.Google.Resource.Drive.Comments.Delete
@@ -65,68 +61,44 @@
     -- ** drive.comments.get
     , module Network.Google.Resource.Drive.Comments.Get
 
-    -- ** drive.comments.insert
-    , module Network.Google.Resource.Drive.Comments.Insert
-
     -- ** drive.comments.list
     , module Network.Google.Resource.Drive.Comments.List
 
-    -- ** drive.comments.patch
-    , module Network.Google.Resource.Drive.Comments.Patch
-
     -- ** drive.comments.update
     , module Network.Google.Resource.Drive.Comments.Update
 
     -- ** drive.files.copy
     , module Network.Google.Resource.Drive.Files.Copy
 
+    -- ** drive.files.create
+    , module Network.Google.Resource.Drive.Files.Create
+
     -- ** drive.files.delete
     , module Network.Google.Resource.Drive.Files.Delete
 
     -- ** drive.files.emptyTrash
     , module Network.Google.Resource.Drive.Files.EmptyTrash
 
+    -- ** drive.files.export
+    , module Network.Google.Resource.Drive.Files.Export
+
     -- ** drive.files.generateIds
     , module Network.Google.Resource.Drive.Files.GenerateIds
 
     -- ** drive.files.get
     , module Network.Google.Resource.Drive.Files.Get
 
-    -- ** drive.files.insert
-    , module Network.Google.Resource.Drive.Files.Insert
-
     -- ** drive.files.list
     , module Network.Google.Resource.Drive.Files.List
 
-    -- ** drive.files.patch
-    , module Network.Google.Resource.Drive.Files.Patch
-
-    -- ** drive.files.touch
-    , module Network.Google.Resource.Drive.Files.Touch
-
-    -- ** drive.files.trash
-    , module Network.Google.Resource.Drive.Files.Trash
-
-    -- ** drive.files.untrash
-    , module Network.Google.Resource.Drive.Files.Untrash
-
     -- ** drive.files.update
     , module Network.Google.Resource.Drive.Files.Update
 
     -- ** drive.files.watch
     , module Network.Google.Resource.Drive.Files.Watch
 
-    -- ** drive.parents.delete
-    , module Network.Google.Resource.Drive.Parents.Delete
-
-    -- ** drive.parents.get
-    , module Network.Google.Resource.Drive.Parents.Get
-
-    -- ** drive.parents.insert
-    , module Network.Google.Resource.Drive.Parents.Insert
-
-    -- ** drive.parents.list
-    , module Network.Google.Resource.Drive.Parents.List
+    -- ** drive.permissions.create
+    , module Network.Google.Resource.Drive.Permissions.Create
 
     -- ** drive.permissions.delete
     , module Network.Google.Resource.Drive.Permissions.Delete
@@ -134,44 +106,14 @@
     -- ** drive.permissions.get
     , module Network.Google.Resource.Drive.Permissions.Get
 
-    -- ** drive.permissions.getIdForEmail
-    , module Network.Google.Resource.Drive.Permissions.GetIdForEmail
-
-    -- ** drive.permissions.insert
-    , module Network.Google.Resource.Drive.Permissions.Insert
-
     -- ** drive.permissions.list
     , module Network.Google.Resource.Drive.Permissions.List
 
-    -- ** drive.permissions.patch
-    , module Network.Google.Resource.Drive.Permissions.Patch
-
     -- ** drive.permissions.update
     , module Network.Google.Resource.Drive.Permissions.Update
 
-    -- ** drive.properties.delete
-    , module Network.Google.Resource.Drive.Properties.Delete
-
-    -- ** drive.properties.get
-    , module Network.Google.Resource.Drive.Properties.Get
-
-    -- ** drive.properties.insert
-    , module Network.Google.Resource.Drive.Properties.Insert
-
-    -- ** drive.properties.list
-    , module Network.Google.Resource.Drive.Properties.List
-
-    -- ** drive.properties.patch
-    , module Network.Google.Resource.Drive.Properties.Patch
-
-    -- ** drive.properties.update
-    , module Network.Google.Resource.Drive.Properties.Update
-
-    -- ** drive.realtime.get
-    , module Network.Google.Resource.Drive.Realtime.Get
-
-    -- ** drive.realtime.update
-    , module Network.Google.Resource.Drive.Realtime.Update
+    -- ** drive.replies.create
+    , module Network.Google.Resource.Drive.Replies.Create
 
     -- ** drive.replies.delete
     , module Network.Google.Resource.Drive.Replies.Delete
@@ -179,15 +121,9 @@
     -- ** drive.replies.get
     , module Network.Google.Resource.Drive.Replies.Get
 
-    -- ** drive.replies.insert
-    , module Network.Google.Resource.Drive.Replies.Insert
-
     -- ** drive.replies.list
     , module Network.Google.Resource.Drive.Replies.List
 
-    -- ** drive.replies.patch
-    , module Network.Google.Resource.Drive.Replies.Patch
-
     -- ** drive.replies.update
     , module Network.Google.Resource.Drive.Replies.Update
 
@@ -200,116 +136,74 @@
     -- ** drive.revisions.list
     , module Network.Google.Resource.Drive.Revisions.List
 
-    -- ** drive.revisions.patch
-    , module Network.Google.Resource.Drive.Revisions.Patch
-
     -- ** drive.revisions.update
     , module Network.Google.Resource.Drive.Revisions.Update
 
     -- * Types
 
-    -- ** CommentContext
-    , CommentContext
-    , commentContext
-    , ccValue
-    , ccType
-
-    -- ** AppIconsItem
-    , AppIconsItem
-    , appIconsItem
-    , aiiSize
-    , aiiCategory
-    , aiiIconURL
-
-    -- ** FilesInsertVisibility
-    , FilesInsertVisibility (..)
-
     -- ** FileList
     , FileList
     , fileList
-    , flEtag
     , flNextPageToken
-    , flNextLink
     , flKind
-    , flItems
-    , flSelfLink
-
-    -- ** ParentReference
-    , ParentReference
-    , parentReference
-    , prParentLink
-    , prIsRoot
-    , prKind
-    , prSelfLink
-    , prId
-
-    -- ** Property
-    , Property
-    , property
-    , pEtag
-    , pKind
-    , pValue
-    , pVisibility
-    , pSelfLink
-    , pKey
+    , flFiles
 
     -- ** FilesListCorpus
     , FilesListCorpus (..)
 
-    -- ** FileThumbnail
-    , FileThumbnail
-    , fileThumbnail
-    , ftImage
-    , ftMimeType
-
-    -- ** FilesListProjection
-    , FilesListProjection (..)
-
-    -- ** UserPicture
-    , UserPicture
-    , userPicture
-    , upURL
+    -- ** CommentQuotedFileContent
+    , CommentQuotedFileContent
+    , commentQuotedFileContent
+    , cqfcValue
+    , cqfcMimeType
 
-    -- ** FilesUpdateModifiedDateBehavior
-    , FilesUpdateModifiedDateBehavior (..)
+    -- ** AboutStorageQuota
+    , AboutStorageQuota
+    , aboutStorageQuota
+    , asqUsageInDriveTrash
+    , asqLimit
+    , asqUsage
+    , asqUsageInDrive
 
-    -- ** PropertyList
-    , PropertyList
-    , propertyList
-    , plEtag
-    , plKind
-    , plItems
-    , plSelfLink
+    -- ** Reply
+    , Reply
+    , reply
+    , rHTMLContent
+    , rModifiedTime
+    , rCreatedTime
+    , rKind
+    , rAction
+    , rContent
+    , rAuthor
+    , rId
+    , rDeleted
 
-    -- ** ChildList
-    , ChildList
-    , childList
-    , clEtag
-    , clNextPageToken
-    , clNextLink
-    , clKind
-    , clItems
-    , clSelfLink
+    -- ** AboutImportFormats
+    , AboutImportFormats
+    , aboutImportFormats
+    , aifAddtional
 
-    -- ** AppList
-    , AppList
-    , appList
-    , alDefaultAppIds
-    , alEtag
-    , alKind
-    , alItems
-    , alSelfLink
+    -- ** FileCapabilities
+    , FileCapabilities
+    , fileCapabilities
+    , fcCanComment
+    , fcCanEdit
+    , fcCanReadRevisions
+    , fcCanCopy
+    , fcCanShare
 
-    -- ** FileOpenWithLinks
-    , FileOpenWithLinks
-    , fileOpenWithLinks
-    , fowlAddtional
+    -- ** ReplyList
+    , ReplyList
+    , replyList
+    , rlNextPageToken
+    , rlKind
+    , rlReplies
 
-    -- ** AboutAdditionalRoleInfoItemRoleSetsItem
-    , AboutAdditionalRoleInfoItemRoleSetsItem
-    , aboutAdditionalRoleInfoItemRoleSetsItem
-    , aariirsiPrimaryRole
-    , aariirsiAdditionalRoles
+    -- ** FileContentHintsThumbnail
+    , FileContentHintsThumbnail
+    , fileContentHintsThumbnail
+    , fchtImage
+    , fchtMimeType
 
     -- ** Channel
     , Channel
@@ -325,15 +219,6 @@
     , cId
     , cType
 
-    -- ** CommentReplyList
-    , CommentReplyList
-    , commentReplyList
-    , crlNextPageToken
-    , crlNextLink
-    , crlKind
-    , crlItems
-    , crlSelfLink
-
     -- ** FileVideoMediaMetadata
     , FileVideoMediaMetadata
     , fileVideoMediaMetadata
@@ -341,159 +226,76 @@
     , fvmmWidth
     , fvmmDurationMillis
 
+    -- ** FileAppProperties
+    , FileAppProperties
+    , fileAppProperties
+    , fapAddtional
+
     -- ** Change
     , Change
     , change
+    , chaRemoved
+    , chaTime
     , chaKind
-    , chaSelfLink
-    , chaModificationDate
-    , chaId
-    , chaDeleted
     , chaFileId
     , chaFile
 
-    -- ** App
-    , App
-    , app
-    , aLongDescription
-    , aOpenURLTemplate
-    , aAuthorized
-    , aObjectType
-    , aSecondaryMimeTypes
-    , aCreateInFolderTemplate
-    , aKind
-    , aIcons
-    , aProductURL
-    , aUseByDefault
-    , aShortDescription
-    , aName
-    , aCreateURL
-    , aId
-    , aPrimaryFileExtensions
-    , aInstalled
-    , aSupportsCreate
-    , aPrimaryMimeTypes
-    , aHasDriveWideScope
-    , aProductId
-    , aSecondaryFileExtensions
-    , aSupportsMultiOpen
-    , aSupportsImport
-    , aSupportsOfflineCreate
-
-    -- ** ChildReference
-    , ChildReference
-    , childReference
-    , crChildLink
-    , crKind
-    , crSelfLink
-    , crId
-
-    -- ** FilesWatchProjection
-    , FilesWatchProjection (..)
-
-    -- ** AboutMaxUploadSizesItem
-    , AboutMaxUploadSizesItem
-    , aboutMaxUploadSizesItem
-    , amusiSize
-    , amusiType
-
-    -- ** CommentReply
-    , CommentReply
-    , commentReply
-    , comHTMLContent
-    , comKind
-    , comContent
-    , comCreatedDate
-    , comReplyId
-    , comAuthor
-    , comModifiedDate
-    , comDeleted
-    , comVerb
-
-    -- ** AboutQuotaBytesByServiceItem
-    , AboutQuotaBytesByServiceItem
-    , aboutQuotaBytesByServiceItem
-    , aqbbsiBytesUsed
-    , aqbbsiServiceName
+    -- ** AboutExportFormats
+    , AboutExportFormats
+    , aboutExportFormats
+    , aefAddtional
 
     -- ** User
     , User
     , user
-    , uIsAuthenticatedUser
+    , uPhotoLink
+    , uMe
     , uKind
-    , uPicture
     , uEmailAddress
     , uDisplayName
     , uPermissionId
 
-    -- ** AboutExportFormatsItem
-    , AboutExportFormatsItem
-    , aboutExportFormatsItem
-    , aefiTargets
-    , aefiSource
-
     -- ** ChangeList
     , ChangeList
     , changeList
-    , cllEtag
-    , cllNextPageToken
-    , cllNextLink
-    , cllKind
-    , cllItems
-    , cllSelfLink
-    , cllLargestChangeId
-
-    -- ** RevisionExportLinks
-    , RevisionExportLinks
-    , revisionExportLinks
-    , relAddtional
-
-    -- ** FileIndexableText
-    , FileIndexableText
-    , fileIndexableText
-    , fitText
+    , clNewStartPageToken
+    , clNextPageToken
+    , clChanges
+    , clKind
 
-    -- ** AboutFeaturesItem
-    , AboutFeaturesItem
-    , aboutFeaturesItem
-    , afiFeatureRate
-    , afiFeatureName
+    -- ** FileContentHints
+    , FileContentHints
+    , fileContentHints
+    , fchThumbnail
+    , fchIndexableText
 
     -- ** ChannelParams
     , ChannelParams
     , channelParams
     , cpAddtional
 
-    -- ** FilesPatchModifiedDateBehavior
-    , FilesPatchModifiedDateBehavior (..)
+    -- ** FileProperties
+    , FileProperties
+    , fileProperties
+    , fpAddtional
 
+    -- ** AboutMaxImportSizes
+    , AboutMaxImportSizes
+    , aboutMaxImportSizes
+    , amisAddtional
+
     -- ** About
     , About
     , about
-    , aboExportFormats
-    , aboRemainingChangeIds
-    , aboLanguageCode
-    , aboEtag
-    , aboImportFormats
-    , aboKind
-    , aboDomainSharingPolicy
-    , aboQuotaBytesUsedInTrash
-    , aboQuotaType
-    , aboMaxUploadSizes
-    , aboUser
-    , aboSelfLink
-    , aboName
-    , aboFeatures
-    , aboIsCurrentAppInstalled
-    , aboQuotaBytesTotal
-    , aboRootFolderId
-    , aboQuotaBytesUsed
-    , aboAdditionalRoleInfo
-    , aboFolderColorPalette
-    , aboPermissionId
-    , aboQuotaBytesUsedAggregate
-    , aboQuotaBytesByService
-    , aboLargestChangeId
+    , aExportFormats
+    , aMaxImportSizes
+    , aImportFormats
+    , aKind
+    , aAppInstalled
+    , aUser
+    , aStorageQuota
+    , aMaxUploadSize
+    , aFolderColorPalette
 
     -- ** FileImageMediaMetadataLocation
     , FileImageMediaMetadataLocation
@@ -502,11 +304,11 @@
     , fimmlAltitude
     , fimmlLongitude
 
-    -- ** AboutImportFormatsItem
-    , AboutImportFormatsItem
-    , aboutImportFormatsItem
-    , aifiTargets
-    , aifiSource
+    -- ** StartPageToken
+    , StartPageToken
+    , startPageToken
+    , sptKind
+    , sptStartPageToken
 
     -- ** FileImageMediaMetadata
     , FileImageMediaMetadata
@@ -516,6 +318,7 @@
     , fimmSubjectDistance
     , fimmMaxApertureValue
     , fimmIsoSpeed
+    , fimmTime
     , fimmLocation
     , fimmAperture
     , fimmFocalLength
@@ -524,7 +327,6 @@
     , fimmExposureTime
     , fimmCameraModel
     , fimmWhiteBalance
-    , fimmDate
     , fimmLens
     , fimmFlashUsed
     , fimmExposureBias
@@ -533,79 +335,50 @@
     , fimmSensor
     , fimmColorSpace
 
-    -- ** FileLabels
-    , FileLabels
-    , fileLabels
-    , flViewed
-    , flTrashed
-    , flStarred
-    , flHidden
-    , flRestricted
-
     -- ** Comment
     , Comment
     , comment
-    , ccStatus
-    , ccHTMLContent
-    , ccContext
-    , ccKind
-    , ccFileTitle
-    , ccAnchor
-    , ccContent
-    , ccReplies
-    , ccCreatedDate
-    , ccSelfLink
-    , ccAuthor
-    , ccModifiedDate
-    , ccDeleted
-    , ccFileId
-    , ccCommentId
+    , comHTMLContent
+    , comModifiedTime
+    , comCreatedTime
+    , comKind
+    , comResolved
+    , comQuotedFileContent
+    , comAnchor
+    , comContent
+    , comReplies
+    , comAuthor
+    , comId
+    , comDeleted
 
     -- ** Revision
     , Revision
     , revision
-    , rEtag
-    , rOriginalFilename
-    , rKind
-    , rPublishedLink
-    , rPinned
-    , rPublished
-    , rLastModifyingUser
-    , rFileSize
-    , rPublishAuto
-    , rMD5Checksum
-    , rMimeType
-    , rSelfLink
-    , rLastModifyingUserName
-    , rDownloadURL
-    , rExportLinks
-    , rPublishedOutsideDomain
-    , rId
-    , rModifiedDate
-
-    -- ** AboutAdditionalRoleInfoItem
-    , AboutAdditionalRoleInfoItem
-    , aboutAdditionalRoleInfoItem
-    , aariiRoleSets
-    , aariiType
+    , revModifiedTime
+    , revSize
+    , revOriginalFilename
+    , revKind
+    , revPublished
+    , revLastModifyingUser
+    , revPublishAuto
+    , revMD5Checksum
+    , revKeepForever
+    , revMimeType
+    , revPublishedOutsideDomain
+    , revId
 
     -- ** Permission
     , Permission
     , permission
-    , perPhotoLink
-    , perEtag
-    , perWithLink
-    , perKind
-    , perDomain
-    , perValue
-    , perAdditionalRoles
-    , perRole
-    , perSelfLink
-    , perName
-    , perAuthKey
-    , perEmailAddress
-    , perId
-    , perType
+    , pPhotoLink
+    , pKind
+    , pDomain
+    , pRole
+    , pEmailAddress
+    , pAllowFileDiscovery
+    , pDisplayName
+    , pId
+    , pType
 
     -- ** File
     , File
@@ -613,80 +386,48 @@
     , fOwnedByMe
     , fThumbnailLink
     , fFullFileExtension
-    , fThumbnail
-    , fMarkedViewedByMeDate
-    , fEtag
+    , fModifiedTime
+    , fModifiedByMeTime
     , fFileExtension
-    , fCanComment
+    , fViewedByMe
     , fOwners
-    , fOwnerNames
-    , fOpenWithLinks
+    , fViewedByMeTime
+    , fSize
+    , fTrashed
     , fWebViewLink
+    , fCreatedTime
     , fOriginalFilename
     , fKind
     , fLastModifyingUser
     , fIconLink
-    , fEmbedLink
-    , fFileSize
-    , fAppDataContents
     , fImageMediaMetadata
     , fExplicitlyTrashed
-    , fEditable
-    , fModifiedByMeDate
-    , fLastViewedByMeDate
     , fShared
     , fMD5Checksum
     , fFolderColorRgb
     , fMimeType
-    , fCreatedDate
-    , fSelfLink
-    , fLastModifyingUserName
-    , fShareable
-    , fDownloadURL
-    , fExportLinks
-    , fCopyable
+    , fIsAppAuthorized
+    , fName
     , fParents
-    , fSharedWithMeDate
+    , fStarred
     , fSpaces
     , fVersion
-    , fUserPermission
     , fWritersCanShare
-    , fDefaultOpenWithLink
     , fId
-    , fLabels
-    , fModifiedDate
     , fPermissions
     , fQuotaBytesUsed
-    , fTitle
-    , fAlternateLink
+    , fAppProperties
     , fVideoMediaMetadata
+    , fSharedWithMeTime
     , fHeadRevisionId
+    , fCapabilities
     , fDescription
+    , fViewersCanCopyContent
     , fSharingUser
     , fWebContentLink
+    , fContentHints
     , fProperties
-    , fIndexableText
 
-    -- ** PermissionId
-    , PermissionId
-    , permissionId
-    , piKind
-    , piId
-
-    -- ** FilesCopyVisibility
-    , FilesCopyVisibility (..)
-
-    -- ** FilesGetProjection
-    , FilesGetProjection (..)
-
-    -- ** ParentList
-    , ParentList
-    , parentList
-    , parEtag
-    , parKind
-    , parItems
-    , parSelfLink
-
     -- ** GeneratedIds
     , GeneratedIds
     , generatedIds
@@ -694,98 +435,61 @@
     , giKind
     , giIds
 
-    -- ** FileExportLinks
-    , FileExportLinks
-    , fileExportLinks
-    , felAddtional
-
     -- ** CommentList
     , CommentList
     , commentList
-    , comoNextPageToken
-    , comoNextLink
-    , comoKind
-    , comoItems
-    , comoSelfLink
+    , cllNextPageToken
+    , cllKind
+    , cllComments
 
     -- ** RevisionList
     , RevisionList
     , revisionList
-    , rlEtag
-    , rlKind
-    , rlItems
-    , rlSelfLink
+    , rllKind
+    , rllRevisions
 
     -- ** PermissionList
     , PermissionList
     , permissionList
-    , pllEtag
-    , pllKind
-    , pllItems
-    , pllSelfLink
+    , plKind
+    , plPermissions
     ) where
 
 import           Network.Google.Drive.Types
 import           Network.Google.Prelude
 import           Network.Google.Resource.Drive.About.Get
-import           Network.Google.Resource.Drive.Apps.Get
-import           Network.Google.Resource.Drive.Apps.List
-import           Network.Google.Resource.Drive.Changes.Get
+import           Network.Google.Resource.Drive.Changes.GetStartPageToken
 import           Network.Google.Resource.Drive.Changes.List
 import           Network.Google.Resource.Drive.Changes.Watch
 import           Network.Google.Resource.Drive.Channels.Stop
-import           Network.Google.Resource.Drive.Children.Delete
-import           Network.Google.Resource.Drive.Children.Get
-import           Network.Google.Resource.Drive.Children.Insert
-import           Network.Google.Resource.Drive.Children.List
+import           Network.Google.Resource.Drive.Comments.Create
 import           Network.Google.Resource.Drive.Comments.Delete
 import           Network.Google.Resource.Drive.Comments.Get
-import           Network.Google.Resource.Drive.Comments.Insert
 import           Network.Google.Resource.Drive.Comments.List
-import           Network.Google.Resource.Drive.Comments.Patch
 import           Network.Google.Resource.Drive.Comments.Update
 import           Network.Google.Resource.Drive.Files.Copy
+import           Network.Google.Resource.Drive.Files.Create
 import           Network.Google.Resource.Drive.Files.Delete
 import           Network.Google.Resource.Drive.Files.EmptyTrash
+import           Network.Google.Resource.Drive.Files.Export
 import           Network.Google.Resource.Drive.Files.GenerateIds
 import           Network.Google.Resource.Drive.Files.Get
-import           Network.Google.Resource.Drive.Files.Insert
 import           Network.Google.Resource.Drive.Files.List
-import           Network.Google.Resource.Drive.Files.Patch
-import           Network.Google.Resource.Drive.Files.Touch
-import           Network.Google.Resource.Drive.Files.Trash
-import           Network.Google.Resource.Drive.Files.Untrash
 import           Network.Google.Resource.Drive.Files.Update
 import           Network.Google.Resource.Drive.Files.Watch
-import           Network.Google.Resource.Drive.Parents.Delete
-import           Network.Google.Resource.Drive.Parents.Get
-import           Network.Google.Resource.Drive.Parents.Insert
-import           Network.Google.Resource.Drive.Parents.List
+import           Network.Google.Resource.Drive.Permissions.Create
 import           Network.Google.Resource.Drive.Permissions.Delete
 import           Network.Google.Resource.Drive.Permissions.Get
-import           Network.Google.Resource.Drive.Permissions.GetIdForEmail
-import           Network.Google.Resource.Drive.Permissions.Insert
 import           Network.Google.Resource.Drive.Permissions.List
-import           Network.Google.Resource.Drive.Permissions.Patch
 import           Network.Google.Resource.Drive.Permissions.Update
-import           Network.Google.Resource.Drive.Properties.Delete
-import           Network.Google.Resource.Drive.Properties.Get
-import           Network.Google.Resource.Drive.Properties.Insert
-import           Network.Google.Resource.Drive.Properties.List
-import           Network.Google.Resource.Drive.Properties.Patch
-import           Network.Google.Resource.Drive.Properties.Update
-import           Network.Google.Resource.Drive.Realtime.Get
-import           Network.Google.Resource.Drive.Realtime.Update
+import           Network.Google.Resource.Drive.Replies.Create
 import           Network.Google.Resource.Drive.Replies.Delete
 import           Network.Google.Resource.Drive.Replies.Get
-import           Network.Google.Resource.Drive.Replies.Insert
 import           Network.Google.Resource.Drive.Replies.List
-import           Network.Google.Resource.Drive.Replies.Patch
 import           Network.Google.Resource.Drive.Replies.Update
 import           Network.Google.Resource.Drive.Revisions.Delete
 import           Network.Google.Resource.Drive.Revisions.Get
 import           Network.Google.Resource.Drive.Revisions.List
-import           Network.Google.Resource.Drive.Revisions.Patch
 import           Network.Google.Resource.Drive.Revisions.Update
 
 {- $resources
@@ -794,62 +498,37 @@
 
 -- | Represents the entirety of the methods and resources available for the Drive API service.
 type DriveAPI =
-     AppsListResource :<|> AppsGetResource :<|>
-       ChangesListResource
-       :<|> ChangesGetResource
+     ChangesListResource :<|>
+       ChangesGetStartPageTokenResource
        :<|> ChangesWatchResource
        :<|> ChannelsStopResource
-       :<|> ChildrenInsertResource
-       :<|> ChildrenListResource
-       :<|> ChildrenGetResource
-       :<|> ChildrenDeleteResource
-       :<|> RepliesInsertResource
        :<|> RepliesListResource
-       :<|> RepliesPatchResource
        :<|> RepliesGetResource
+       :<|> RepliesCreateResource
        :<|> RepliesDeleteResource
        :<|> RepliesUpdateResource
-       :<|> ParentsInsertResource
-       :<|> ParentsListResource
-       :<|> ParentsGetResource
-       :<|> ParentsDeleteResource
-       :<|> RealtimeGetResource
-       :<|> RealtimeUpdateResource
        :<|> AboutGetResource
-       :<|> FilesInsertResource
+       :<|> FilesExportResource
        :<|> FilesListResource
        :<|> FilesCopyResource
-       :<|> FilesPatchResource
        :<|> FilesGetResource
        :<|> FilesEmptyTrashResource
-       :<|> FilesTrashResource
-       :<|> FilesUntrashResource
-       :<|> FilesTouchResource
+       :<|> FilesCreateResource
        :<|> FilesGenerateIdsResource
        :<|> FilesDeleteResource
        :<|> FilesUpdateResource
        :<|> FilesWatchResource
-       :<|> PermissionsGetIdForEmailResource
-       :<|> PermissionsInsertResource
        :<|> PermissionsListResource
-       :<|> PermissionsPatchResource
        :<|> PermissionsGetResource
+       :<|> PermissionsCreateResource
        :<|> PermissionsDeleteResource
        :<|> PermissionsUpdateResource
-       :<|> CommentsInsertResource
        :<|> CommentsListResource
-       :<|> CommentsPatchResource
        :<|> CommentsGetResource
+       :<|> CommentsCreateResource
        :<|> CommentsDeleteResource
        :<|> CommentsUpdateResource
        :<|> RevisionsListResource
-       :<|> RevisionsPatchResource
        :<|> RevisionsGetResource
        :<|> RevisionsDeleteResource
        :<|> RevisionsUpdateResource
-       :<|> PropertiesInsertResource
-       :<|> PropertiesListResource
-       :<|> PropertiesPatchResource
-       :<|> PropertiesGetResource
-       :<|> PropertiesDeleteResource
-       :<|> PropertiesUpdateResource
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
@@ -1,3 +1,4 @@
+{-# LANGUAGE DataKinds          #-}
 {-# LANGUAGE DeriveDataTypeable #-}
 {-# LANGUAGE DeriveGeneric      #-}
 {-# LANGUAGE NoImplicitPrelude  #-}
@@ -7,7 +8,7 @@
 
 -- |
 -- Module      : Network.Google.Drive.Types
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -19,118 +20,78 @@
       driveService
 
     -- * OAuth Scopes
-    , driveMetadataReadonlyScope
-    , driveAppsReadonlyScope
-    , drivePhotosReadonlyScope
-    , driveAppdataScope
-    , driveReadonlyScope
+    , driveMetadataReadOnlyScope
+    , drivePhotosReadOnlyScope
+    , driveAppDataScope
+    , driveReadOnlyScope
     , driveScope
     , driveFileScope
     , driveMetadataScope
     , driveScriptsScope
 
-    -- * CommentContext
-    , CommentContext
-    , commentContext
-    , ccValue
-    , ccType
-
-    -- * AppIconsItem
-    , AppIconsItem
-    , appIconsItem
-    , aiiSize
-    , aiiCategory
-    , aiiIconURL
-
-    -- * FilesInsertVisibility
-    , FilesInsertVisibility (..)
-
     -- * FileList
     , FileList
     , fileList
-    , flEtag
     , flNextPageToken
-    , flNextLink
     , flKind
-    , flItems
-    , flSelfLink
-
-    -- * ParentReference
-    , ParentReference
-    , parentReference
-    , prParentLink
-    , prIsRoot
-    , prKind
-    , prSelfLink
-    , prId
-
-    -- * Property
-    , Property
-    , property
-    , pEtag
-    , pKind
-    , pValue
-    , pVisibility
-    , pSelfLink
-    , pKey
+    , flFiles
 
     -- * FilesListCorpus
     , FilesListCorpus (..)
 
-    -- * FileThumbnail
-    , FileThumbnail
-    , fileThumbnail
-    , ftImage
-    , ftMimeType
-
-    -- * FilesListProjection
-    , FilesListProjection (..)
-
-    -- * UserPicture
-    , UserPicture
-    , userPicture
-    , upURL
+    -- * CommentQuotedFileContent
+    , CommentQuotedFileContent
+    , commentQuotedFileContent
+    , cqfcValue
+    , cqfcMimeType
 
-    -- * FilesUpdateModifiedDateBehavior
-    , FilesUpdateModifiedDateBehavior (..)
+    -- * AboutStorageQuota
+    , AboutStorageQuota
+    , aboutStorageQuota
+    , asqUsageInDriveTrash
+    , asqLimit
+    , asqUsage
+    , asqUsageInDrive
 
-    -- * PropertyList
-    , PropertyList
-    , propertyList
-    , plEtag
-    , plKind
-    , plItems
-    , plSelfLink
+    -- * Reply
+    , Reply
+    , reply
+    , rHTMLContent
+    , rModifiedTime
+    , rCreatedTime
+    , rKind
+    , rAction
+    , rContent
+    , rAuthor
+    , rId
+    , rDeleted
 
-    -- * ChildList
-    , ChildList
-    , childList
-    , clEtag
-    , clNextPageToken
-    , clNextLink
-    , clKind
-    , clItems
-    , clSelfLink
+    -- * AboutImportFormats
+    , AboutImportFormats
+    , aboutImportFormats
+    , aifAddtional
 
-    -- * AppList
-    , AppList
-    , appList
-    , alDefaultAppIds
-    , alEtag
-    , alKind
-    , alItems
-    , alSelfLink
+    -- * FileCapabilities
+    , FileCapabilities
+    , fileCapabilities
+    , fcCanComment
+    , fcCanEdit
+    , fcCanReadRevisions
+    , fcCanCopy
+    , fcCanShare
 
-    -- * FileOpenWithLinks
-    , FileOpenWithLinks
-    , fileOpenWithLinks
-    , fowlAddtional
+    -- * ReplyList
+    , ReplyList
+    , replyList
+    , rlNextPageToken
+    , rlKind
+    , rlReplies
 
-    -- * AboutAdditionalRoleInfoItemRoleSetsItem
-    , AboutAdditionalRoleInfoItemRoleSetsItem
-    , aboutAdditionalRoleInfoItemRoleSetsItem
-    , aariirsiPrimaryRole
-    , aariirsiAdditionalRoles
+    -- * FileContentHintsThumbnail
+    , FileContentHintsThumbnail
+    , fileContentHintsThumbnail
+    , fchtImage
+    , fchtMimeType
 
     -- * Channel
     , Channel
@@ -146,15 +107,6 @@
     , cId
     , cType
 
-    -- * CommentReplyList
-    , CommentReplyList
-    , commentReplyList
-    , crlNextPageToken
-    , crlNextLink
-    , crlKind
-    , crlItems
-    , crlSelfLink
-
     -- * FileVideoMediaMetadata
     , FileVideoMediaMetadata
     , fileVideoMediaMetadata
@@ -162,159 +114,76 @@
     , fvmmWidth
     , fvmmDurationMillis
 
+    -- * FileAppProperties
+    , FileAppProperties
+    , fileAppProperties
+    , fapAddtional
+
     -- * Change
     , Change
     , change
+    , chaRemoved
+    , chaTime
     , chaKind
-    , chaSelfLink
-    , chaModificationDate
-    , chaId
-    , chaDeleted
     , chaFileId
     , chaFile
 
-    -- * App
-    , App
-    , app
-    , aLongDescription
-    , aOpenURLTemplate
-    , aAuthorized
-    , aObjectType
-    , aSecondaryMimeTypes
-    , aCreateInFolderTemplate
-    , aKind
-    , aIcons
-    , aProductURL
-    , aUseByDefault
-    , aShortDescription
-    , aName
-    , aCreateURL
-    , aId
-    , aPrimaryFileExtensions
-    , aInstalled
-    , aSupportsCreate
-    , aPrimaryMimeTypes
-    , aHasDriveWideScope
-    , aProductId
-    , aSecondaryFileExtensions
-    , aSupportsMultiOpen
-    , aSupportsImport
-    , aSupportsOfflineCreate
-
-    -- * ChildReference
-    , ChildReference
-    , childReference
-    , crChildLink
-    , crKind
-    , crSelfLink
-    , crId
-
-    -- * FilesWatchProjection
-    , FilesWatchProjection (..)
-
-    -- * AboutMaxUploadSizesItem
-    , AboutMaxUploadSizesItem
-    , aboutMaxUploadSizesItem
-    , amusiSize
-    , amusiType
-
-    -- * CommentReply
-    , CommentReply
-    , commentReply
-    , comHTMLContent
-    , comKind
-    , comContent
-    , comCreatedDate
-    , comReplyId
-    , comAuthor
-    , comModifiedDate
-    , comDeleted
-    , comVerb
-
-    -- * AboutQuotaBytesByServiceItem
-    , AboutQuotaBytesByServiceItem
-    , aboutQuotaBytesByServiceItem
-    , aqbbsiBytesUsed
-    , aqbbsiServiceName
+    -- * AboutExportFormats
+    , AboutExportFormats
+    , aboutExportFormats
+    , aefAddtional
 
     -- * User
     , User
     , user
-    , uIsAuthenticatedUser
+    , uPhotoLink
+    , uMe
     , uKind
-    , uPicture
     , uEmailAddress
     , uDisplayName
     , uPermissionId
 
-    -- * AboutExportFormatsItem
-    , AboutExportFormatsItem
-    , aboutExportFormatsItem
-    , aefiTargets
-    , aefiSource
-
     -- * ChangeList
     , ChangeList
     , changeList
-    , cllEtag
-    , cllNextPageToken
-    , cllNextLink
-    , cllKind
-    , cllItems
-    , cllSelfLink
-    , cllLargestChangeId
-
-    -- * RevisionExportLinks
-    , RevisionExportLinks
-    , revisionExportLinks
-    , relAddtional
-
-    -- * FileIndexableText
-    , FileIndexableText
-    , fileIndexableText
-    , fitText
+    , clNewStartPageToken
+    , clNextPageToken
+    , clChanges
+    , clKind
 
-    -- * AboutFeaturesItem
-    , AboutFeaturesItem
-    , aboutFeaturesItem
-    , afiFeatureRate
-    , afiFeatureName
+    -- * FileContentHints
+    , FileContentHints
+    , fileContentHints
+    , fchThumbnail
+    , fchIndexableText
 
     -- * ChannelParams
     , ChannelParams
     , channelParams
     , cpAddtional
 
-    -- * FilesPatchModifiedDateBehavior
-    , FilesPatchModifiedDateBehavior (..)
+    -- * FileProperties
+    , FileProperties
+    , fileProperties
+    , fpAddtional
 
+    -- * AboutMaxImportSizes
+    , AboutMaxImportSizes
+    , aboutMaxImportSizes
+    , amisAddtional
+
     -- * About
     , About
     , about
-    , aboExportFormats
-    , aboRemainingChangeIds
-    , aboLanguageCode
-    , aboEtag
-    , aboImportFormats
-    , aboKind
-    , aboDomainSharingPolicy
-    , aboQuotaBytesUsedInTrash
-    , aboQuotaType
-    , aboMaxUploadSizes
-    , aboUser
-    , aboSelfLink
-    , aboName
-    , aboFeatures
-    , aboIsCurrentAppInstalled
-    , aboQuotaBytesTotal
-    , aboRootFolderId
-    , aboQuotaBytesUsed
-    , aboAdditionalRoleInfo
-    , aboFolderColorPalette
-    , aboPermissionId
-    , aboQuotaBytesUsedAggregate
-    , aboQuotaBytesByService
-    , aboLargestChangeId
+    , aExportFormats
+    , aMaxImportSizes
+    , aImportFormats
+    , aKind
+    , aAppInstalled
+    , aUser
+    , aStorageQuota
+    , aMaxUploadSize
+    , aFolderColorPalette
 
     -- * FileImageMediaMetadataLocation
     , FileImageMediaMetadataLocation
@@ -323,11 +192,11 @@
     , fimmlAltitude
     , fimmlLongitude
 
-    -- * AboutImportFormatsItem
-    , AboutImportFormatsItem
-    , aboutImportFormatsItem
-    , aifiTargets
-    , aifiSource
+    -- * StartPageToken
+    , StartPageToken
+    , startPageToken
+    , sptKind
+    , sptStartPageToken
 
     -- * FileImageMediaMetadata
     , FileImageMediaMetadata
@@ -337,6 +206,7 @@
     , fimmSubjectDistance
     , fimmMaxApertureValue
     , fimmIsoSpeed
+    , fimmTime
     , fimmLocation
     , fimmAperture
     , fimmFocalLength
@@ -345,7 +215,6 @@
     , fimmExposureTime
     , fimmCameraModel
     , fimmWhiteBalance
-    , fimmDate
     , fimmLens
     , fimmFlashUsed
     , fimmExposureBias
@@ -354,79 +223,50 @@
     , fimmSensor
     , fimmColorSpace
 
-    -- * FileLabels
-    , FileLabels
-    , fileLabels
-    , flViewed
-    , flTrashed
-    , flStarred
-    , flHidden
-    , flRestricted
-
     -- * Comment
     , Comment
     , comment
-    , ccStatus
-    , ccHTMLContent
-    , ccContext
-    , ccKind
-    , ccFileTitle
-    , ccAnchor
-    , ccContent
-    , ccReplies
-    , ccCreatedDate
-    , ccSelfLink
-    , ccAuthor
-    , ccModifiedDate
-    , ccDeleted
-    , ccFileId
-    , ccCommentId
+    , comHTMLContent
+    , comModifiedTime
+    , comCreatedTime
+    , comKind
+    , comResolved
+    , comQuotedFileContent
+    , comAnchor
+    , comContent
+    , comReplies
+    , comAuthor
+    , comId
+    , comDeleted
 
     -- * Revision
     , Revision
     , revision
-    , rEtag
-    , rOriginalFilename
-    , rKind
-    , rPublishedLink
-    , rPinned
-    , rPublished
-    , rLastModifyingUser
-    , rFileSize
-    , rPublishAuto
-    , rMD5Checksum
-    , rMimeType
-    , rSelfLink
-    , rLastModifyingUserName
-    , rDownloadURL
-    , rExportLinks
-    , rPublishedOutsideDomain
-    , rId
-    , rModifiedDate
-
-    -- * AboutAdditionalRoleInfoItem
-    , AboutAdditionalRoleInfoItem
-    , aboutAdditionalRoleInfoItem
-    , aariiRoleSets
-    , aariiType
+    , revModifiedTime
+    , revSize
+    , revOriginalFilename
+    , revKind
+    , revPublished
+    , revLastModifyingUser
+    , revPublishAuto
+    , revMD5Checksum
+    , revKeepForever
+    , revMimeType
+    , revPublishedOutsideDomain
+    , revId
 
     -- * Permission
     , Permission
     , permission
-    , perPhotoLink
-    , perEtag
-    , perWithLink
-    , perKind
-    , perDomain
-    , perValue
-    , perAdditionalRoles
-    , perRole
-    , perSelfLink
-    , perName
-    , perAuthKey
-    , perEmailAddress
-    , perId
-    , perType
+    , pPhotoLink
+    , pKind
+    , pDomain
+    , pRole
+    , pEmailAddress
+    , pAllowFileDiscovery
+    , pDisplayName
+    , pId
+    , pType
 
     -- * File
     , File
@@ -434,80 +274,48 @@
     , fOwnedByMe
     , fThumbnailLink
     , fFullFileExtension
-    , fThumbnail
-    , fMarkedViewedByMeDate
-    , fEtag
+    , fModifiedTime
+    , fModifiedByMeTime
     , fFileExtension
-    , fCanComment
+    , fViewedByMe
     , fOwners
-    , fOwnerNames
-    , fOpenWithLinks
+    , fViewedByMeTime
+    , fSize
+    , fTrashed
     , fWebViewLink
+    , fCreatedTime
     , fOriginalFilename
     , fKind
     , fLastModifyingUser
     , fIconLink
-    , fEmbedLink
-    , fFileSize
-    , fAppDataContents
     , fImageMediaMetadata
     , fExplicitlyTrashed
-    , fEditable
-    , fModifiedByMeDate
-    , fLastViewedByMeDate
     , fShared
     , fMD5Checksum
     , fFolderColorRgb
     , fMimeType
-    , fCreatedDate
-    , fSelfLink
-    , fLastModifyingUserName
-    , fShareable
-    , fDownloadURL
-    , fExportLinks
-    , fCopyable
+    , fIsAppAuthorized
+    , fName
     , fParents
-    , fSharedWithMeDate
+    , fStarred
     , fSpaces
     , fVersion
-    , fUserPermission
     , fWritersCanShare
-    , fDefaultOpenWithLink
     , fId
-    , fLabels
-    , fModifiedDate
     , fPermissions
     , fQuotaBytesUsed
-    , fTitle
-    , fAlternateLink
+    , fAppProperties
     , fVideoMediaMetadata
+    , fSharedWithMeTime
     , fHeadRevisionId
+    , fCapabilities
     , fDescription
+    , fViewersCanCopyContent
     , fSharingUser
     , fWebContentLink
+    , fContentHints
     , fProperties
-    , fIndexableText
 
-    -- * PermissionId
-    , PermissionId
-    , permissionId
-    , piKind
-    , piId
-
-    -- * FilesCopyVisibility
-    , FilesCopyVisibility (..)
-
-    -- * FilesGetProjection
-    , FilesGetProjection (..)
-
-    -- * ParentList
-    , ParentList
-    , parentList
-    , parEtag
-    , parKind
-    , parItems
-    , parSelfLink
-
     -- * GeneratedIds
     , GeneratedIds
     , generatedIds
@@ -515,80 +323,65 @@
     , giKind
     , giIds
 
-    -- * FileExportLinks
-    , FileExportLinks
-    , fileExportLinks
-    , felAddtional
-
     -- * CommentList
     , CommentList
     , commentList
-    , comoNextPageToken
-    , comoNextLink
-    , comoKind
-    , comoItems
-    , comoSelfLink
+    , cllNextPageToken
+    , cllKind
+    , cllComments
 
     -- * RevisionList
     , RevisionList
     , revisionList
-    , rlEtag
-    , rlKind
-    , rlItems
-    , rlSelfLink
+    , rllKind
+    , rllRevisions
 
     -- * PermissionList
     , PermissionList
     , permissionList
-    , pllEtag
-    , pllKind
-    , pllItems
-    , pllSelfLink
+    , plKind
+    , plPermissions
     ) where
 
 import           Network.Google.Drive.Types.Product
 import           Network.Google.Drive.Types.Sum
 import           Network.Google.Prelude
 
--- | Default request referring to version 'v2' of the Drive API. This contains the host and root path used as a starting point for constructing service requests.
-driveService :: Service
+-- | Default request referring to version 'v3' of the Drive API. This contains the host and root path used as a starting point for constructing service requests.
+driveService :: ServiceConfig
 driveService
-  = defaultService (ServiceId "drive:v2")
+  = defaultService (ServiceId "drive:v3")
       "www.googleapis.com"
 
 -- | View metadata for files in your Google Drive
-driveMetadataReadonlyScope :: OAuthScope
-driveMetadataReadonlyScope = "https://www.googleapis.com/auth/drive.metadata.readonly";
-
--- | View your Google Drive apps
-driveAppsReadonlyScope :: OAuthScope
-driveAppsReadonlyScope = "https://www.googleapis.com/auth/drive.apps.readonly";
+driveMetadataReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/drive.metadata.readonly"]
+driveMetadataReadOnlyScope = Proxy;
 
 -- | View the photos, videos and albums in your Google Photos
-drivePhotosReadonlyScope :: OAuthScope
-drivePhotosReadonlyScope = "https://www.googleapis.com/auth/drive.photos.readonly";
+drivePhotosReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/drive.photos.readonly"]
+drivePhotosReadOnlyScope = Proxy;
 
 -- | View and manage its own configuration data in your Google Drive
-driveAppdataScope :: OAuthScope
-driveAppdataScope = "https://www.googleapis.com/auth/drive.appdata";
+driveAppDataScope :: Proxy '["https://www.googleapis.com/auth/drive.appdata"]
+driveAppDataScope = Proxy;
 
 -- | View the files in your Google Drive
-driveReadonlyScope :: OAuthScope
-driveReadonlyScope = "https://www.googleapis.com/auth/drive.readonly";
+driveReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/drive.readonly"]
+driveReadOnlyScope = Proxy;
 
 -- | View and manage the files in your Google Drive
-driveScope :: OAuthScope
-driveScope = "https://www.googleapis.com/auth/drive";
+driveScope :: Proxy '["https://www.googleapis.com/auth/drive"]
+driveScope = Proxy;
 
 -- | View and manage Google Drive files and folders that you have opened or
 -- created with this app
-driveFileScope :: OAuthScope
-driveFileScope = "https://www.googleapis.com/auth/drive.file";
+driveFileScope :: Proxy '["https://www.googleapis.com/auth/drive.file"]
+driveFileScope = Proxy;
 
 -- | View and manage metadata of files in your Google Drive
-driveMetadataScope :: OAuthScope
-driveMetadataScope = "https://www.googleapis.com/auth/drive.metadata";
+driveMetadataScope :: Proxy '["https://www.googleapis.com/auth/drive.metadata"]
+driveMetadataScope = Proxy;
 
 -- | Modify your Google Apps Script scripts\' behavior
-driveScriptsScope :: OAuthScope
-driveScriptsScope = "https://www.googleapis.com/auth/drive.scripts";
+driveScriptsScope :: Proxy '["https://www.googleapis.com/auth/drive.scripts"]
+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
@@ -9,4823 +9,3001 @@
 
 -- |
 -- Module      : Network.Google.Drive.Types.Product
--- Copyright   : (c) 2015 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
-module Network.Google.Drive.Types.Product where
-
-import           Network.Google.Drive.Types.Sum
-import           Network.Google.Prelude
-
--- | The context of the file which is being commented on.
---
--- /See:/ 'commentContext' smart constructor.
-data CommentContext = CommentContext
-    { _ccValue :: !(Maybe Text)
-    , _ccType  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CommentContext' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccValue'
---
--- * 'ccType'
-commentContext
-    :: CommentContext
-commentContext =
-    CommentContext
-    { _ccValue = Nothing
-    , _ccType = Nothing
-    }
-
--- | Data representation of the segment of the file being commented on. In
--- the case of a text file for example, this would be the actual text that
--- the comment is about.
-ccValue :: Lens' CommentContext (Maybe Text)
-ccValue = lens _ccValue (\ s a -> s{_ccValue = a})
-
--- | The MIME type of the context snippet.
-ccType :: Lens' CommentContext (Maybe Text)
-ccType = lens _ccType (\ s a -> s{_ccType = a})
-
-instance FromJSON CommentContext where
-        parseJSON
-          = withObject "CommentContext"
-              (\ o ->
-                 CommentContext <$>
-                   (o .:? "value") <*> (o .:? "type"))
-
-instance ToJSON CommentContext where
-        toJSON CommentContext{..}
-          = object
-              (catMaybes
-                 [("value" .=) <$> _ccValue, ("type" .=) <$> _ccType])
-
---
--- /See:/ 'appIconsItem' smart constructor.
-data AppIconsItem = AppIconsItem
-    { _aiiSize     :: !(Maybe (Textual Int32))
-    , _aiiCategory :: !(Maybe Text)
-    , _aiiIconURL  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AppIconsItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aiiSize'
---
--- * 'aiiCategory'
---
--- * 'aiiIconURL'
-appIconsItem
-    :: AppIconsItem
-appIconsItem =
-    AppIconsItem
-    { _aiiSize = Nothing
-    , _aiiCategory = Nothing
-    , _aiiIconURL = Nothing
-    }
-
--- | Size of the icon. Represented as the maximum of the width and height.
-aiiSize :: Lens' AppIconsItem (Maybe Int32)
-aiiSize
-  = lens _aiiSize (\ s a -> s{_aiiSize = a}) .
-      mapping _Coerce
-
--- | Category of the icon. Allowed values are: - application - icon for the
--- application - document - icon for a file associated with the app -
--- documentShared - icon for a shared file associated with the app
-aiiCategory :: Lens' AppIconsItem (Maybe Text)
-aiiCategory
-  = lens _aiiCategory (\ s a -> s{_aiiCategory = a})
-
--- | URL for the icon.
-aiiIconURL :: Lens' AppIconsItem (Maybe Text)
-aiiIconURL
-  = lens _aiiIconURL (\ s a -> s{_aiiIconURL = a})
-
-instance FromJSON AppIconsItem where
-        parseJSON
-          = withObject "AppIconsItem"
-              (\ o ->
-                 AppIconsItem <$>
-                   (o .:? "size") <*> (o .:? "category") <*>
-                     (o .:? "iconUrl"))
-
-instance ToJSON AppIconsItem where
-        toJSON AppIconsItem{..}
-          = object
-              (catMaybes
-                 [("size" .=) <$> _aiiSize,
-                  ("category" .=) <$> _aiiCategory,
-                  ("iconUrl" .=) <$> _aiiIconURL])
-
--- | A list of files.
---
--- /See:/ 'fileList' smart constructor.
-data FileList = FileList
-    { _flEtag          :: !(Maybe Text)
-    , _flNextPageToken :: !(Maybe Text)
-    , _flNextLink      :: !(Maybe Text)
-    , _flKind          :: !Text
-    , _flItems         :: !(Maybe [File])
-    , _flSelfLink      :: !(Maybe Text)
-    } 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:
---
--- * 'flEtag'
---
--- * 'flNextPageToken'
---
--- * 'flNextLink'
---
--- * 'flKind'
---
--- * 'flItems'
---
--- * 'flSelfLink'
-fileList
-    :: FileList
-fileList =
-    FileList
-    { _flEtag = Nothing
-    , _flNextPageToken = Nothing
-    , _flNextLink = Nothing
-    , _flKind = "drive#fileList"
-    , _flItems = Nothing
-    , _flSelfLink = Nothing
-    }
-
--- | The ETag of the list.
-flEtag :: Lens' FileList (Maybe Text)
-flEtag = lens _flEtag (\ s a -> s{_flEtag = a})
-
--- | The page token for the next page of files.
-flNextPageToken :: Lens' FileList (Maybe Text)
-flNextPageToken
-  = lens _flNextPageToken
-      (\ s a -> s{_flNextPageToken = a})
-
--- | A link to the next page of files.
-flNextLink :: Lens' FileList (Maybe Text)
-flNextLink
-  = lens _flNextLink (\ s a -> s{_flNextLink = a})
-
--- | This is always drive#fileList.
-flKind :: Lens' FileList Text
-flKind = lens _flKind (\ s a -> s{_flKind = a})
-
--- | The actual list of files.
-flItems :: Lens' FileList [File]
-flItems
-  = lens _flItems (\ s a -> s{_flItems = a}) . _Default
-      . _Coerce
-
--- | A link back to this list.
-flSelfLink :: Lens' FileList (Maybe Text)
-flSelfLink
-  = lens _flSelfLink (\ s a -> s{_flSelfLink = a})
-
-instance FromJSON FileList where
-        parseJSON
-          = withObject "FileList"
-              (\ o ->
-                 FileList <$>
-                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
-                     (o .:? "nextLink")
-                     <*> (o .:? "kind" .!= "drive#fileList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink"))
-
-instance ToJSON FileList where
-        toJSON FileList{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _flEtag,
-                  ("nextPageToken" .=) <$> _flNextPageToken,
-                  ("nextLink" .=) <$> _flNextLink,
-                  Just ("kind" .= _flKind), ("items" .=) <$> _flItems,
-                  ("selfLink" .=) <$> _flSelfLink])
-
--- | A reference to a file\'s parent.
---
--- /See:/ 'parentReference' smart constructor.
-data ParentReference = ParentReference
-    { _prParentLink :: !(Maybe Text)
-    , _prIsRoot     :: !(Maybe Bool)
-    , _prKind       :: !Text
-    , _prSelfLink   :: !(Maybe Text)
-    , _prId         :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ParentReference' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'prParentLink'
---
--- * 'prIsRoot'
---
--- * 'prKind'
---
--- * 'prSelfLink'
---
--- * 'prId'
-parentReference
-    :: ParentReference
-parentReference =
-    ParentReference
-    { _prParentLink = Nothing
-    , _prIsRoot = Nothing
-    , _prKind = "drive#parentReference"
-    , _prSelfLink = Nothing
-    , _prId = Nothing
-    }
-
--- | A link to the parent.
-prParentLink :: Lens' ParentReference (Maybe Text)
-prParentLink
-  = lens _prParentLink (\ s a -> s{_prParentLink = a})
-
--- | Whether or not the parent is the root folder.
-prIsRoot :: Lens' ParentReference (Maybe Bool)
-prIsRoot = lens _prIsRoot (\ s a -> s{_prIsRoot = a})
-
--- | This is always drive#parentReference.
-prKind :: Lens' ParentReference Text
-prKind = lens _prKind (\ s a -> s{_prKind = a})
-
--- | A link back to this reference.
-prSelfLink :: Lens' ParentReference (Maybe Text)
-prSelfLink
-  = lens _prSelfLink (\ s a -> s{_prSelfLink = a})
-
--- | The ID of the parent.
-prId :: Lens' ParentReference (Maybe Text)
-prId = lens _prId (\ s a -> s{_prId = a})
-
-instance FromJSON ParentReference where
-        parseJSON
-          = withObject "ParentReference"
-              (\ o ->
-                 ParentReference <$>
-                   (o .:? "parentLink") <*> (o .:? "isRoot") <*>
-                     (o .:? "kind" .!= "drive#parentReference")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON ParentReference where
-        toJSON ParentReference{..}
-          = object
-              (catMaybes
-                 [("parentLink" .=) <$> _prParentLink,
-                  ("isRoot" .=) <$> _prIsRoot,
-                  Just ("kind" .= _prKind),
-                  ("selfLink" .=) <$> _prSelfLink,
-                  ("id" .=) <$> _prId])
-
--- | A key-value pair attached to a file that is either public or private to
--- an application. The following limits apply to file properties: - Maximum
--- of 100 properties total per file - Maximum of 30 private properties per
--- app - Maximum of 30 public properties - Maximum of 124 bytes size limit
--- on (key + value) string in UTF-8 encoding for a single property.
---
--- /See:/ 'property' smart constructor.
-data Property = Property
-    { _pEtag       :: !(Maybe Text)
-    , _pKind       :: !Text
-    , _pValue      :: !(Maybe Text)
-    , _pVisibility :: !(Maybe Text)
-    , _pSelfLink   :: !(Maybe Text)
-    , _pKey        :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Property' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pEtag'
---
--- * 'pKind'
---
--- * 'pValue'
---
--- * 'pVisibility'
---
--- * 'pSelfLink'
---
--- * 'pKey'
-property
-    :: Property
-property =
-    Property
-    { _pEtag = Nothing
-    , _pKind = "drive#property"
-    , _pValue = Nothing
-    , _pVisibility = Nothing
-    , _pSelfLink = Nothing
-    , _pKey = Nothing
-    }
-
--- | ETag of the property.
-pEtag :: Lens' Property (Maybe Text)
-pEtag = lens _pEtag (\ s a -> s{_pEtag = a})
-
--- | This is always drive#property.
-pKind :: Lens' Property Text
-pKind = lens _pKind (\ s a -> s{_pKind = a})
-
--- | The value of this property.
-pValue :: Lens' Property (Maybe Text)
-pValue = lens _pValue (\ s a -> s{_pValue = a})
-
--- | The visibility of this property.
-pVisibility :: Lens' Property (Maybe Text)
-pVisibility
-  = lens _pVisibility (\ s a -> s{_pVisibility = a})
-
--- | The link back to this property.
-pSelfLink :: Lens' Property (Maybe Text)
-pSelfLink
-  = lens _pSelfLink (\ s a -> s{_pSelfLink = a})
-
--- | The key of this property.
-pKey :: Lens' Property (Maybe Text)
-pKey = lens _pKey (\ s a -> s{_pKey = a})
-
-instance FromJSON Property where
-        parseJSON
-          = withObject "Property"
-              (\ o ->
-                 Property <$>
-                   (o .:? "etag") <*>
-                     (o .:? "kind" .!= "drive#property")
-                     <*> (o .:? "value")
-                     <*> (o .:? "visibility")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "key"))
-
-instance ToJSON Property where
-        toJSON Property{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _pEtag, Just ("kind" .= _pKind),
-                  ("value" .=) <$> _pValue,
-                  ("visibility" .=) <$> _pVisibility,
-                  ("selfLink" .=) <$> _pSelfLink,
-                  ("key" .=) <$> _pKey])
-
--- | Thumbnail for the file. Only accepted on upload and for files that are
--- not already thumbnailed by Google.
---
--- /See:/ 'fileThumbnail' smart constructor.
-data FileThumbnail = FileThumbnail
-    { _ftImage    :: !(Maybe (Textual Word8))
-    , _ftMimeType :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FileThumbnail' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ftImage'
---
--- * 'ftMimeType'
-fileThumbnail
-    :: FileThumbnail
-fileThumbnail =
-    FileThumbnail
-    { _ftImage = Nothing
-    , _ftMimeType = Nothing
-    }
-
--- | The URL-safe Base64 encoded bytes of the thumbnail image. It should
--- conform to RFC 4648 section 5.
-ftImage :: Lens' FileThumbnail (Maybe Word8)
-ftImage
-  = lens _ftImage (\ s a -> s{_ftImage = a}) .
-      mapping _Coerce
-
--- | The MIME type of the thumbnail.
-ftMimeType :: Lens' FileThumbnail (Maybe Text)
-ftMimeType
-  = lens _ftMimeType (\ s a -> s{_ftMimeType = a})
-
-instance FromJSON FileThumbnail where
-        parseJSON
-          = withObject "FileThumbnail"
-              (\ o ->
-                 FileThumbnail <$>
-                   (o .:? "image") <*> (o .:? "mimeType"))
-
-instance ToJSON FileThumbnail where
-        toJSON FileThumbnail{..}
-          = object
-              (catMaybes
-                 [("image" .=) <$> _ftImage,
-                  ("mimeType" .=) <$> _ftMimeType])
-
--- | The user\'s profile picture.
---
--- /See:/ 'userPicture' smart constructor.
-newtype UserPicture = UserPicture
-    { _upURL :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'UserPicture' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'upURL'
-userPicture
-    :: UserPicture
-userPicture =
-    UserPicture
-    { _upURL = Nothing
-    }
-
--- | A URL that points to a profile picture of this user.
-upURL :: Lens' UserPicture (Maybe Text)
-upURL = lens _upURL (\ s a -> s{_upURL = a})
-
-instance FromJSON UserPicture where
-        parseJSON
-          = withObject "UserPicture"
-              (\ o -> UserPicture <$> (o .:? "url"))
-
-instance ToJSON UserPicture where
-        toJSON UserPicture{..}
-          = object (catMaybes [("url" .=) <$> _upURL])
-
--- | A collection of properties, key-value pairs that are either public or
--- private to an application.
---
--- /See:/ 'propertyList' smart constructor.
-data PropertyList = PropertyList
-    { _plEtag     :: !(Maybe Text)
-    , _plKind     :: !Text
-    , _plItems    :: !(Maybe [Property])
-    , _plSelfLink :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PropertyList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'plEtag'
---
--- * 'plKind'
---
--- * 'plItems'
---
--- * 'plSelfLink'
-propertyList
-    :: PropertyList
-propertyList =
-    PropertyList
-    { _plEtag = Nothing
-    , _plKind = "drive#propertyList"
-    , _plItems = Nothing
-    , _plSelfLink = Nothing
-    }
-
--- | The ETag of the list.
-plEtag :: Lens' PropertyList (Maybe Text)
-plEtag = lens _plEtag (\ s a -> s{_plEtag = a})
-
--- | This is always drive#propertyList.
-plKind :: Lens' PropertyList Text
-plKind = lens _plKind (\ s a -> s{_plKind = a})
-
--- | The list of properties.
-plItems :: Lens' PropertyList [Property]
-plItems
-  = lens _plItems (\ s a -> s{_plItems = a}) . _Default
-      . _Coerce
-
--- | The link back to this list.
-plSelfLink :: Lens' PropertyList (Maybe Text)
-plSelfLink
-  = lens _plSelfLink (\ s a -> s{_plSelfLink = a})
-
-instance FromJSON PropertyList where
-        parseJSON
-          = withObject "PropertyList"
-              (\ o ->
-                 PropertyList <$>
-                   (o .:? "etag") <*>
-                     (o .:? "kind" .!= "drive#propertyList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink"))
-
-instance ToJSON PropertyList where
-        toJSON PropertyList{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _plEtag, Just ("kind" .= _plKind),
-                  ("items" .=) <$> _plItems,
-                  ("selfLink" .=) <$> _plSelfLink])
-
--- | A list of children of a file.
---
--- /See:/ 'childList' smart constructor.
-data ChildList = ChildList
-    { _clEtag          :: !(Maybe Text)
-    , _clNextPageToken :: !(Maybe Text)
-    , _clNextLink      :: !(Maybe Text)
-    , _clKind          :: !Text
-    , _clItems         :: !(Maybe [ChildReference])
-    , _clSelfLink      :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChildList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'clEtag'
---
--- * 'clNextPageToken'
---
--- * 'clNextLink'
---
--- * 'clKind'
---
--- * 'clItems'
---
--- * 'clSelfLink'
-childList
-    :: ChildList
-childList =
-    ChildList
-    { _clEtag = Nothing
-    , _clNextPageToken = Nothing
-    , _clNextLink = Nothing
-    , _clKind = "drive#childList"
-    , _clItems = Nothing
-    , _clSelfLink = Nothing
-    }
-
--- | The ETag of the list.
-clEtag :: Lens' ChildList (Maybe Text)
-clEtag = lens _clEtag (\ s a -> s{_clEtag = a})
-
--- | The page token for the next page of children.
-clNextPageToken :: Lens' ChildList (Maybe Text)
-clNextPageToken
-  = lens _clNextPageToken
-      (\ s a -> s{_clNextPageToken = a})
-
--- | A link to the next page of children.
-clNextLink :: Lens' ChildList (Maybe Text)
-clNextLink
-  = lens _clNextLink (\ s a -> s{_clNextLink = a})
-
--- | This is always drive#childList.
-clKind :: Lens' ChildList Text
-clKind = lens _clKind (\ s a -> s{_clKind = a})
-
--- | The actual list of children.
-clItems :: Lens' ChildList [ChildReference]
-clItems
-  = lens _clItems (\ s a -> s{_clItems = a}) . _Default
-      . _Coerce
-
--- | A link back to this list.
-clSelfLink :: Lens' ChildList (Maybe Text)
-clSelfLink
-  = lens _clSelfLink (\ s a -> s{_clSelfLink = a})
-
-instance FromJSON ChildList where
-        parseJSON
-          = withObject "ChildList"
-              (\ o ->
-                 ChildList <$>
-                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
-                     (o .:? "nextLink")
-                     <*> (o .:? "kind" .!= "drive#childList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink"))
-
-instance ToJSON ChildList where
-        toJSON ChildList{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _clEtag,
-                  ("nextPageToken" .=) <$> _clNextPageToken,
-                  ("nextLink" .=) <$> _clNextLink,
-                  Just ("kind" .= _clKind), ("items" .=) <$> _clItems,
-                  ("selfLink" .=) <$> _clSelfLink])
-
--- | A list of third-party applications which the user has installed or given
--- access to Google Drive.
---
--- /See:/ 'appList' smart constructor.
-data AppList = AppList
-    { _alDefaultAppIds :: !(Maybe [Text])
-    , _alEtag          :: !(Maybe Text)
-    , _alKind          :: !Text
-    , _alItems         :: !(Maybe [App])
-    , _alSelfLink      :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AppList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'alDefaultAppIds'
---
--- * 'alEtag'
---
--- * 'alKind'
---
--- * 'alItems'
---
--- * 'alSelfLink'
-appList
-    :: AppList
-appList =
-    AppList
-    { _alDefaultAppIds = Nothing
-    , _alEtag = Nothing
-    , _alKind = "drive#appList"
-    , _alItems = Nothing
-    , _alSelfLink = Nothing
-    }
-
--- | List of app IDs that the user has specified to use by default. The list
--- is in reverse-priority order (lowest to highest).
-alDefaultAppIds :: Lens' AppList [Text]
-alDefaultAppIds
-  = lens _alDefaultAppIds
-      (\ s a -> s{_alDefaultAppIds = a})
-      . _Default
-      . _Coerce
-
--- | The ETag of the list.
-alEtag :: Lens' AppList (Maybe Text)
-alEtag = lens _alEtag (\ s a -> s{_alEtag = a})
-
--- | This is always drive#appList.
-alKind :: Lens' AppList Text
-alKind = lens _alKind (\ s a -> s{_alKind = a})
-
--- | The actual list of apps.
-alItems :: Lens' AppList [App]
-alItems
-  = lens _alItems (\ s a -> s{_alItems = a}) . _Default
-      . _Coerce
-
--- | A link back to this list.
-alSelfLink :: Lens' AppList (Maybe Text)
-alSelfLink
-  = lens _alSelfLink (\ s a -> s{_alSelfLink = a})
-
-instance FromJSON AppList where
-        parseJSON
-          = withObject "AppList"
-              (\ o ->
-                 AppList <$>
-                   (o .:? "defaultAppIds" .!= mempty) <*> (o .:? "etag")
-                     <*> (o .:? "kind" .!= "drive#appList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink"))
-
-instance ToJSON AppList where
-        toJSON AppList{..}
-          = object
-              (catMaybes
-                 [("defaultAppIds" .=) <$> _alDefaultAppIds,
-                  ("etag" .=) <$> _alEtag, Just ("kind" .= _alKind),
-                  ("items" .=) <$> _alItems,
-                  ("selfLink" .=) <$> _alSelfLink])
-
--- | A map of the id of each of the user\'s apps to a link to open this file
--- with that app. Only populated when the drive.apps.readonly scope is
--- used.
---
--- /See:/ 'fileOpenWithLinks' smart constructor.
-newtype FileOpenWithLinks = FileOpenWithLinks
-    { _fowlAddtional :: HashMap Text Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FileOpenWithLinks' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fowlAddtional'
-fileOpenWithLinks
-    :: HashMap Text Text -- ^ 'fowlAddtional'
-    -> FileOpenWithLinks
-fileOpenWithLinks pFowlAddtional_ =
-    FileOpenWithLinks
-    { _fowlAddtional = _Coerce # pFowlAddtional_
-    }
-
-fowlAddtional :: Lens' FileOpenWithLinks (HashMap Text Text)
-fowlAddtional
-  = lens _fowlAddtional
-      (\ s a -> s{_fowlAddtional = a})
-      . _Coerce
-
-instance FromJSON FileOpenWithLinks where
-        parseJSON
-          = withObject "FileOpenWithLinks"
-              (\ o -> FileOpenWithLinks <$> (parseJSONObject o))
-
-instance ToJSON FileOpenWithLinks where
-        toJSON = toJSON . _fowlAddtional
-
---
--- /See:/ 'aboutAdditionalRoleInfoItemRoleSetsItem' smart constructor.
-data AboutAdditionalRoleInfoItemRoleSetsItem = AboutAdditionalRoleInfoItemRoleSetsItem
-    { _aariirsiPrimaryRole     :: !(Maybe Text)
-    , _aariirsiAdditionalRoles :: !(Maybe [Text])
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AboutAdditionalRoleInfoItemRoleSetsItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aariirsiPrimaryRole'
---
--- * 'aariirsiAdditionalRoles'
-aboutAdditionalRoleInfoItemRoleSetsItem
-    :: AboutAdditionalRoleInfoItemRoleSetsItem
-aboutAdditionalRoleInfoItemRoleSetsItem =
-    AboutAdditionalRoleInfoItemRoleSetsItem
-    { _aariirsiPrimaryRole = Nothing
-    , _aariirsiAdditionalRoles = Nothing
-    }
-
--- | A primary permission role.
-aariirsiPrimaryRole :: Lens' AboutAdditionalRoleInfoItemRoleSetsItem (Maybe Text)
-aariirsiPrimaryRole
-  = lens _aariirsiPrimaryRole
-      (\ s a -> s{_aariirsiPrimaryRole = a})
-
--- | The supported additional roles with the primary role.
-aariirsiAdditionalRoles :: Lens' AboutAdditionalRoleInfoItemRoleSetsItem [Text]
-aariirsiAdditionalRoles
-  = lens _aariirsiAdditionalRoles
-      (\ s a -> s{_aariirsiAdditionalRoles = a})
-      . _Default
-      . _Coerce
-
-instance FromJSON
-         AboutAdditionalRoleInfoItemRoleSetsItem where
-        parseJSON
-          = withObject
-              "AboutAdditionalRoleInfoItemRoleSetsItem"
-              (\ o ->
-                 AboutAdditionalRoleInfoItemRoleSetsItem <$>
-                   (o .:? "primaryRole") <*>
-                     (o .:? "additionalRoles" .!= mempty))
-
-instance ToJSON
-         AboutAdditionalRoleInfoItemRoleSetsItem where
-        toJSON AboutAdditionalRoleInfoItemRoleSetsItem{..}
-          = object
-              (catMaybes
-                 [("primaryRole" .=) <$> _aariirsiPrimaryRole,
-                  ("additionalRoles" .=) <$> _aariirsiAdditionalRoles])
-
--- | 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])
-
--- | A JSON representation of a list of replies to a comment on a file in
--- Google Drive.
---
--- /See:/ 'commentReplyList' smart constructor.
-data CommentReplyList = CommentReplyList
-    { _crlNextPageToken :: !(Maybe Text)
-    , _crlNextLink      :: !(Maybe Text)
-    , _crlKind          :: !Text
-    , _crlItems         :: !(Maybe [CommentReply])
-    , _crlSelfLink      :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CommentReplyList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'crlNextPageToken'
---
--- * 'crlNextLink'
---
--- * 'crlKind'
---
--- * 'crlItems'
---
--- * 'crlSelfLink'
-commentReplyList
-    :: CommentReplyList
-commentReplyList =
-    CommentReplyList
-    { _crlNextPageToken = Nothing
-    , _crlNextLink = Nothing
-    , _crlKind = "drive#commentReplyList"
-    , _crlItems = Nothing
-    , _crlSelfLink = Nothing
-    }
-
--- | The token to use to request the next page of results.
-crlNextPageToken :: Lens' CommentReplyList (Maybe Text)
-crlNextPageToken
-  = lens _crlNextPageToken
-      (\ s a -> s{_crlNextPageToken = a})
-
--- | A link to the next page of replies.
-crlNextLink :: Lens' CommentReplyList (Maybe Text)
-crlNextLink
-  = lens _crlNextLink (\ s a -> s{_crlNextLink = a})
-
--- | This is always drive#commentReplyList.
-crlKind :: Lens' CommentReplyList Text
-crlKind = lens _crlKind (\ s a -> s{_crlKind = a})
-
--- | List of reply.
-crlItems :: Lens' CommentReplyList [CommentReply]
-crlItems
-  = lens _crlItems (\ s a -> s{_crlItems = a}) .
-      _Default
-      . _Coerce
-
--- | A link back to this list.
-crlSelfLink :: Lens' CommentReplyList (Maybe Text)
-crlSelfLink
-  = lens _crlSelfLink (\ s a -> s{_crlSelfLink = a})
-
-instance FromJSON CommentReplyList where
-        parseJSON
-          = withObject "CommentReplyList"
-              (\ o ->
-                 CommentReplyList <$>
-                   (o .:? "nextPageToken") <*> (o .:? "nextLink") <*>
-                     (o .:? "kind" .!= "drive#commentReplyList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink"))
-
-instance ToJSON CommentReplyList where
-        toJSON CommentReplyList{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _crlNextPageToken,
-                  ("nextLink" .=) <$> _crlNextLink,
-                  Just ("kind" .= _crlKind),
-                  ("items" .=) <$> _crlItems,
-                  ("selfLink" .=) <$> _crlSelfLink])
-
--- | Metadata about video media. This will only be present for video types.
---
--- /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])
-
--- | Representation of a change to a file.
---
--- /See:/ 'change' smart constructor.
-data Change = Change
-    { _chaKind             :: !Text
-    , _chaSelfLink         :: !(Maybe Text)
-    , _chaModificationDate :: !(Maybe DateTime')
-    , _chaId               :: !(Maybe (Textual Int64))
-    , _chaDeleted          :: !(Maybe Bool)
-    , _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:
---
--- * 'chaKind'
---
--- * 'chaSelfLink'
---
--- * 'chaModificationDate'
---
--- * 'chaId'
---
--- * 'chaDeleted'
---
--- * 'chaFileId'
---
--- * 'chaFile'
-change
-    :: Change
-change =
-    Change
-    { _chaKind = "drive#change"
-    , _chaSelfLink = Nothing
-    , _chaModificationDate = Nothing
-    , _chaId = Nothing
-    , _chaDeleted = Nothing
-    , _chaFileId = Nothing
-    , _chaFile = Nothing
-    }
-
--- | This is always drive#change.
-chaKind :: Lens' Change Text
-chaKind = lens _chaKind (\ s a -> s{_chaKind = a})
-
--- | A link back to this change.
-chaSelfLink :: Lens' Change (Maybe Text)
-chaSelfLink
-  = lens _chaSelfLink (\ s a -> s{_chaSelfLink = a})
-
--- | The time of this modification.
-chaModificationDate :: Lens' Change (Maybe UTCTime)
-chaModificationDate
-  = lens _chaModificationDate
-      (\ s a -> s{_chaModificationDate = a})
-      . mapping _DateTime
-
--- | The ID of the change.
-chaId :: Lens' Change (Maybe Int64)
-chaId
-  = lens _chaId (\ s a -> s{_chaId = a}) .
-      mapping _Coerce
-
--- | Whether the file has been deleted.
-chaDeleted :: Lens' Change (Maybe Bool)
-chaDeleted
-  = lens _chaDeleted (\ s a -> s{_chaDeleted = a})
-
--- | The ID of the file associated with this change.
-chaFileId :: Lens' Change (Maybe Text)
-chaFileId
-  = lens _chaFileId (\ s a -> s{_chaFileId = a})
-
--- | The updated state of the file. Present if the file has not been deleted.
-chaFile :: Lens' Change (Maybe File)
-chaFile = lens _chaFile (\ s a -> s{_chaFile = a})
-
-instance FromJSON Change where
-        parseJSON
-          = withObject "Change"
-              (\ o ->
-                 Change <$>
-                   (o .:? "kind" .!= "drive#change") <*>
-                     (o .:? "selfLink")
-                     <*> (o .:? "modificationDate")
-                     <*> (o .:? "id")
-                     <*> (o .:? "deleted")
-                     <*> (o .:? "fileId")
-                     <*> (o .:? "file"))
-
-instance ToJSON Change where
-        toJSON Change{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _chaKind),
-                  ("selfLink" .=) <$> _chaSelfLink,
-                  ("modificationDate" .=) <$> _chaModificationDate,
-                  ("id" .=) <$> _chaId, ("deleted" .=) <$> _chaDeleted,
-                  ("fileId" .=) <$> _chaFileId,
-                  ("file" .=) <$> _chaFile])
-
--- | The apps resource provides a list of the apps that a user has installed,
--- with information about each app\'s supported MIME types, file
--- extensions, and other details.
---
--- /See:/ 'app' smart constructor.
-data App = App
-    { _aLongDescription         :: !(Maybe Text)
-    , _aOpenURLTemplate         :: !(Maybe Text)
-    , _aAuthorized              :: !(Maybe Bool)
-    , _aObjectType              :: !(Maybe Text)
-    , _aSecondaryMimeTypes      :: !(Maybe [Text])
-    , _aCreateInFolderTemplate  :: !(Maybe Text)
-    , _aKind                    :: !Text
-    , _aIcons                   :: !(Maybe [AppIconsItem])
-    , _aProductURL              :: !(Maybe Text)
-    , _aUseByDefault            :: !(Maybe Bool)
-    , _aShortDescription        :: !(Maybe Text)
-    , _aName                    :: !(Maybe Text)
-    , _aCreateURL               :: !(Maybe Text)
-    , _aId                      :: !(Maybe Text)
-    , _aPrimaryFileExtensions   :: !(Maybe [Text])
-    , _aInstalled               :: !(Maybe Bool)
-    , _aSupportsCreate          :: !(Maybe Bool)
-    , _aPrimaryMimeTypes        :: !(Maybe [Text])
-    , _aHasDriveWideScope       :: !(Maybe Bool)
-    , _aProductId               :: !(Maybe Text)
-    , _aSecondaryFileExtensions :: !(Maybe [Text])
-    , _aSupportsMultiOpen       :: !(Maybe Bool)
-    , _aSupportsImport          :: !(Maybe Bool)
-    , _aSupportsOfflineCreate   :: !(Maybe Bool)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'App' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aLongDescription'
---
--- * 'aOpenURLTemplate'
---
--- * 'aAuthorized'
---
--- * 'aObjectType'
---
--- * 'aSecondaryMimeTypes'
---
--- * 'aCreateInFolderTemplate'
---
--- * 'aKind'
---
--- * 'aIcons'
---
--- * 'aProductURL'
---
--- * 'aUseByDefault'
---
--- * 'aShortDescription'
---
--- * 'aName'
---
--- * 'aCreateURL'
---
--- * 'aId'
---
--- * 'aPrimaryFileExtensions'
---
--- * 'aInstalled'
---
--- * 'aSupportsCreate'
---
--- * 'aPrimaryMimeTypes'
---
--- * 'aHasDriveWideScope'
---
--- * 'aProductId'
---
--- * 'aSecondaryFileExtensions'
---
--- * 'aSupportsMultiOpen'
---
--- * 'aSupportsImport'
---
--- * 'aSupportsOfflineCreate'
-app
-    :: App
-app =
-    App
-    { _aLongDescription = Nothing
-    , _aOpenURLTemplate = Nothing
-    , _aAuthorized = Nothing
-    , _aObjectType = Nothing
-    , _aSecondaryMimeTypes = Nothing
-    , _aCreateInFolderTemplate = Nothing
-    , _aKind = "drive#app"
-    , _aIcons = Nothing
-    , _aProductURL = Nothing
-    , _aUseByDefault = Nothing
-    , _aShortDescription = Nothing
-    , _aName = Nothing
-    , _aCreateURL = Nothing
-    , _aId = Nothing
-    , _aPrimaryFileExtensions = Nothing
-    , _aInstalled = Nothing
-    , _aSupportsCreate = Nothing
-    , _aPrimaryMimeTypes = Nothing
-    , _aHasDriveWideScope = Nothing
-    , _aProductId = Nothing
-    , _aSecondaryFileExtensions = Nothing
-    , _aSupportsMultiOpen = Nothing
-    , _aSupportsImport = Nothing
-    , _aSupportsOfflineCreate = Nothing
-    }
-
--- | A long description of the app.
-aLongDescription :: Lens' App (Maybe Text)
-aLongDescription
-  = lens _aLongDescription
-      (\ s a -> s{_aLongDescription = a})
-
--- | The template url for opening files with this app. The template will
--- contain {ids} and\/or {exportIds} to be replaced by the actual file ids.
--- See Open Files for the full documentation.
-aOpenURLTemplate :: Lens' App (Maybe Text)
-aOpenURLTemplate
-  = lens _aOpenURLTemplate
-      (\ s a -> s{_aOpenURLTemplate = a})
-
--- | Whether the app is authorized to access data on the user\'s Drive.
-aAuthorized :: Lens' App (Maybe Bool)
-aAuthorized
-  = lens _aAuthorized (\ s a -> s{_aAuthorized = a})
-
--- | The type of object this app creates (e.g. Chart). If empty, the app name
--- should be used instead.
-aObjectType :: Lens' App (Maybe Text)
-aObjectType
-  = lens _aObjectType (\ s a -> s{_aObjectType = a})
-
--- | The list of secondary mime types.
-aSecondaryMimeTypes :: Lens' App [Text]
-aSecondaryMimeTypes
-  = lens _aSecondaryMimeTypes
-      (\ s a -> s{_aSecondaryMimeTypes = a})
-      . _Default
-      . _Coerce
-
--- | The template url to create a new file with this app in a given folder.
--- The template will contain {folderId} to be replaced by the folder to
--- create the new file in.
-aCreateInFolderTemplate :: Lens' App (Maybe Text)
-aCreateInFolderTemplate
-  = lens _aCreateInFolderTemplate
-      (\ s a -> s{_aCreateInFolderTemplate = a})
-
--- | This is always drive#app.
-aKind :: Lens' App Text
-aKind = lens _aKind (\ s a -> s{_aKind = a})
-
--- | The various icons for the app.
-aIcons :: Lens' App [AppIconsItem]
-aIcons
-  = lens _aIcons (\ s a -> s{_aIcons = a}) . _Default .
-      _Coerce
-
--- | A link to the product listing for this app.
-aProductURL :: Lens' App (Maybe Text)
-aProductURL
-  = lens _aProductURL (\ s a -> s{_aProductURL = a})
-
--- | Whether the app is selected as the default handler for the types it
--- supports.
-aUseByDefault :: Lens' App (Maybe Bool)
-aUseByDefault
-  = lens _aUseByDefault
-      (\ s a -> s{_aUseByDefault = a})
-
--- | A short description of the app.
-aShortDescription :: Lens' App (Maybe Text)
-aShortDescription
-  = lens _aShortDescription
-      (\ s a -> s{_aShortDescription = a})
-
--- | The name of the app.
-aName :: Lens' App (Maybe Text)
-aName = lens _aName (\ s a -> s{_aName = a})
-
--- | The url to create a new file with this app.
-aCreateURL :: Lens' App (Maybe Text)
-aCreateURL
-  = lens _aCreateURL (\ s a -> s{_aCreateURL = a})
-
--- | The ID of the app.
-aId :: Lens' App (Maybe Text)
-aId = lens _aId (\ s a -> s{_aId = a})
-
--- | The list of primary file extensions.
-aPrimaryFileExtensions :: Lens' App [Text]
-aPrimaryFileExtensions
-  = lens _aPrimaryFileExtensions
-      (\ s a -> s{_aPrimaryFileExtensions = a})
-      . _Default
-      . _Coerce
-
--- | Whether the app is installed.
-aInstalled :: Lens' App (Maybe Bool)
-aInstalled
-  = lens _aInstalled (\ s a -> s{_aInstalled = a})
-
--- | Whether this app supports creating new objects.
-aSupportsCreate :: Lens' App (Maybe Bool)
-aSupportsCreate
-  = lens _aSupportsCreate
-      (\ s a -> s{_aSupportsCreate = a})
-
--- | The list of primary mime types.
-aPrimaryMimeTypes :: Lens' App [Text]
-aPrimaryMimeTypes
-  = lens _aPrimaryMimeTypes
-      (\ s a -> s{_aPrimaryMimeTypes = a})
-      . _Default
-      . _Coerce
-
--- | Whether the app has drive-wide scope. An app with drive-wide scope can
--- access all files in the user\'s drive.
-aHasDriveWideScope :: Lens' App (Maybe Bool)
-aHasDriveWideScope
-  = lens _aHasDriveWideScope
-      (\ s a -> s{_aHasDriveWideScope = a})
-
--- | The ID of the product listing for this app.
-aProductId :: Lens' App (Maybe Text)
-aProductId
-  = lens _aProductId (\ s a -> s{_aProductId = a})
-
--- | The list of secondary file extensions.
-aSecondaryFileExtensions :: Lens' App [Text]
-aSecondaryFileExtensions
-  = lens _aSecondaryFileExtensions
-      (\ s a -> s{_aSecondaryFileExtensions = a})
-      . _Default
-      . _Coerce
-
--- | Whether this app supports opening more than one file.
-aSupportsMultiOpen :: Lens' App (Maybe Bool)
-aSupportsMultiOpen
-  = lens _aSupportsMultiOpen
-      (\ s a -> s{_aSupportsMultiOpen = a})
-
--- | Whether this app supports importing Google Docs.
-aSupportsImport :: Lens' App (Maybe Bool)
-aSupportsImport
-  = lens _aSupportsImport
-      (\ s a -> s{_aSupportsImport = a})
-
--- | Whether this app supports creating new files when offline.
-aSupportsOfflineCreate :: Lens' App (Maybe Bool)
-aSupportsOfflineCreate
-  = lens _aSupportsOfflineCreate
-      (\ s a -> s{_aSupportsOfflineCreate = a})
-
-instance FromJSON App where
-        parseJSON
-          = withObject "App"
-              (\ o ->
-                 App <$>
-                   (o .:? "longDescription") <*>
-                     (o .:? "openUrlTemplate")
-                     <*> (o .:? "authorized")
-                     <*> (o .:? "objectType")
-                     <*> (o .:? "secondaryMimeTypes" .!= mempty)
-                     <*> (o .:? "createInFolderTemplate")
-                     <*> (o .:? "kind" .!= "drive#app")
-                     <*> (o .:? "icons" .!= mempty)
-                     <*> (o .:? "productUrl")
-                     <*> (o .:? "useByDefault")
-                     <*> (o .:? "shortDescription")
-                     <*> (o .:? "name")
-                     <*> (o .:? "createUrl")
-                     <*> (o .:? "id")
-                     <*> (o .:? "primaryFileExtensions" .!= mempty)
-                     <*> (o .:? "installed")
-                     <*> (o .:? "supportsCreate")
-                     <*> (o .:? "primaryMimeTypes" .!= mempty)
-                     <*> (o .:? "hasDriveWideScope")
-                     <*> (o .:? "productId")
-                     <*> (o .:? "secondaryFileExtensions" .!= mempty)
-                     <*> (o .:? "supportsMultiOpen")
-                     <*> (o .:? "supportsImport")
-                     <*> (o .:? "supportsOfflineCreate"))
-
-instance ToJSON App where
-        toJSON App{..}
-          = object
-              (catMaybes
-                 [("longDescription" .=) <$> _aLongDescription,
-                  ("openUrlTemplate" .=) <$> _aOpenURLTemplate,
-                  ("authorized" .=) <$> _aAuthorized,
-                  ("objectType" .=) <$> _aObjectType,
-                  ("secondaryMimeTypes" .=) <$> _aSecondaryMimeTypes,
-                  ("createInFolderTemplate" .=) <$>
-                    _aCreateInFolderTemplate,
-                  Just ("kind" .= _aKind), ("icons" .=) <$> _aIcons,
-                  ("productUrl" .=) <$> _aProductURL,
-                  ("useByDefault" .=) <$> _aUseByDefault,
-                  ("shortDescription" .=) <$> _aShortDescription,
-                  ("name" .=) <$> _aName,
-                  ("createUrl" .=) <$> _aCreateURL, ("id" .=) <$> _aId,
-                  ("primaryFileExtensions" .=) <$>
-                    _aPrimaryFileExtensions,
-                  ("installed" .=) <$> _aInstalled,
-                  ("supportsCreate" .=) <$> _aSupportsCreate,
-                  ("primaryMimeTypes" .=) <$> _aPrimaryMimeTypes,
-                  ("hasDriveWideScope" .=) <$> _aHasDriveWideScope,
-                  ("productId" .=) <$> _aProductId,
-                  ("secondaryFileExtensions" .=) <$>
-                    _aSecondaryFileExtensions,
-                  ("supportsMultiOpen" .=) <$> _aSupportsMultiOpen,
-                  ("supportsImport" .=) <$> _aSupportsImport,
-                  ("supportsOfflineCreate" .=) <$>
-                    _aSupportsOfflineCreate])
-
--- | A reference to a folder\'s child.
---
--- /See:/ 'childReference' smart constructor.
-data ChildReference = ChildReference
-    { _crChildLink :: !(Maybe Text)
-    , _crKind      :: !Text
-    , _crSelfLink  :: !(Maybe Text)
-    , _crId        :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChildReference' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'crChildLink'
---
--- * 'crKind'
---
--- * 'crSelfLink'
---
--- * 'crId'
-childReference
-    :: ChildReference
-childReference =
-    ChildReference
-    { _crChildLink = Nothing
-    , _crKind = "drive#childReference"
-    , _crSelfLink = Nothing
-    , _crId = Nothing
-    }
-
--- | A link to the child.
-crChildLink :: Lens' ChildReference (Maybe Text)
-crChildLink
-  = lens _crChildLink (\ s a -> s{_crChildLink = a})
-
--- | This is always drive#childReference.
-crKind :: Lens' ChildReference Text
-crKind = lens _crKind (\ s a -> s{_crKind = a})
-
--- | A link back to this reference.
-crSelfLink :: Lens' ChildReference (Maybe Text)
-crSelfLink
-  = lens _crSelfLink (\ s a -> s{_crSelfLink = a})
-
--- | The ID of the child.
-crId :: Lens' ChildReference (Maybe Text)
-crId = lens _crId (\ s a -> s{_crId = a})
-
-instance FromJSON ChildReference where
-        parseJSON
-          = withObject "ChildReference"
-              (\ o ->
-                 ChildReference <$>
-                   (o .:? "childLink") <*>
-                     (o .:? "kind" .!= "drive#childReference")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "id"))
-
-instance ToJSON ChildReference where
-        toJSON ChildReference{..}
-          = object
-              (catMaybes
-                 [("childLink" .=) <$> _crChildLink,
-                  Just ("kind" .= _crKind),
-                  ("selfLink" .=) <$> _crSelfLink,
-                  ("id" .=) <$> _crId])
-
---
--- /See:/ 'aboutMaxUploadSizesItem' smart constructor.
-data AboutMaxUploadSizesItem = AboutMaxUploadSizesItem
-    { _amusiSize :: !(Maybe (Textual Int64))
-    , _amusiType :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AboutMaxUploadSizesItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'amusiSize'
---
--- * 'amusiType'
-aboutMaxUploadSizesItem
-    :: AboutMaxUploadSizesItem
-aboutMaxUploadSizesItem =
-    AboutMaxUploadSizesItem
-    { _amusiSize = Nothing
-    , _amusiType = Nothing
-    }
-
--- | The max upload size for this type.
-amusiSize :: Lens' AboutMaxUploadSizesItem (Maybe Int64)
-amusiSize
-  = lens _amusiSize (\ s a -> s{_amusiSize = a}) .
-      mapping _Coerce
-
--- | The file type.
-amusiType :: Lens' AboutMaxUploadSizesItem (Maybe Text)
-amusiType
-  = lens _amusiType (\ s a -> s{_amusiType = a})
-
-instance FromJSON AboutMaxUploadSizesItem where
-        parseJSON
-          = withObject "AboutMaxUploadSizesItem"
-              (\ o ->
-                 AboutMaxUploadSizesItem <$>
-                   (o .:? "size") <*> (o .:? "type"))
-
-instance ToJSON AboutMaxUploadSizesItem where
-        toJSON AboutMaxUploadSizesItem{..}
-          = object
-              (catMaybes
-                 [("size" .=) <$> _amusiSize,
-                  ("type" .=) <$> _amusiType])
-
--- | A JSON representation of a reply to a comment on a file in Google Drive.
---
--- /See:/ 'commentReply' smart constructor.
-data CommentReply = CommentReply
-    { _comHTMLContent  :: !(Maybe Text)
-    , _comKind         :: !Text
-    , _comContent      :: !(Maybe Text)
-    , _comCreatedDate  :: !(Maybe DateTime')
-    , _comReplyId      :: !(Maybe Text)
-    , _comAuthor       :: !(Maybe User)
-    , _comModifiedDate :: !(Maybe DateTime')
-    , _comDeleted      :: !(Maybe Bool)
-    , _comVerb         :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CommentReply' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'comHTMLContent'
---
--- * 'comKind'
---
--- * 'comContent'
---
--- * 'comCreatedDate'
---
--- * 'comReplyId'
---
--- * 'comAuthor'
---
--- * 'comModifiedDate'
---
--- * 'comDeleted'
---
--- * 'comVerb'
-commentReply
-    :: CommentReply
-commentReply =
-    CommentReply
-    { _comHTMLContent = Nothing
-    , _comKind = "drive#commentReply"
-    , _comContent = Nothing
-    , _comCreatedDate = Nothing
-    , _comReplyId = Nothing
-    , _comAuthor = Nothing
-    , _comModifiedDate = Nothing
-    , _comDeleted = Nothing
-    , _comVerb = Nothing
-    }
-
--- | HTML formatted content for this reply.
-comHTMLContent :: Lens' CommentReply (Maybe Text)
-comHTMLContent
-  = lens _comHTMLContent
-      (\ s a -> s{_comHTMLContent = a})
-
--- | This is always drive#commentReply.
-comKind :: Lens' CommentReply Text
-comKind = lens _comKind (\ s a -> s{_comKind = a})
-
--- | The plain text content used to create this reply. This is not HTML safe
--- and should only be used as a starting point to make edits to a reply\'s
--- content. This field is required on inserts if no verb is specified
--- (resolve\/reopen).
-comContent :: Lens' CommentReply (Maybe Text)
-comContent
-  = lens _comContent (\ s a -> s{_comContent = a})
-
--- | The date when this reply was first created.
-comCreatedDate :: Lens' CommentReply (Maybe UTCTime)
-comCreatedDate
-  = lens _comCreatedDate
-      (\ s a -> s{_comCreatedDate = a})
-      . mapping _DateTime
-
--- | The ID of the reply.
-comReplyId :: Lens' CommentReply (Maybe Text)
-comReplyId
-  = lens _comReplyId (\ s a -> s{_comReplyId = a})
-
--- | The user who wrote this reply.
-comAuthor :: Lens' CommentReply (Maybe User)
-comAuthor
-  = lens _comAuthor (\ s a -> s{_comAuthor = a})
-
--- | The date when this reply was last modified.
-comModifiedDate :: Lens' CommentReply (Maybe UTCTime)
-comModifiedDate
-  = lens _comModifiedDate
-      (\ s a -> s{_comModifiedDate = a})
-      . mapping _DateTime
-
--- | Whether this reply has been deleted. If a reply has been deleted the
--- content will be cleared and this will only represent a reply that once
--- existed.
-comDeleted :: Lens' CommentReply (Maybe Bool)
-comDeleted
-  = lens _comDeleted (\ s a -> s{_comDeleted = a})
-
--- | The action this reply performed to the parent comment. When creating a
--- new reply this is the action to be perform to the parent comment.
--- Possible values are: - \"resolve\" - To resolve a comment. - \"reopen\"
--- - To reopen (un-resolve) a comment.
-comVerb :: Lens' CommentReply (Maybe Text)
-comVerb = lens _comVerb (\ s a -> s{_comVerb = a})
-
-instance FromJSON CommentReply where
-        parseJSON
-          = withObject "CommentReply"
-              (\ o ->
-                 CommentReply <$>
-                   (o .:? "htmlContent") <*>
-                     (o .:? "kind" .!= "drive#commentReply")
-                     <*> (o .:? "content")
-                     <*> (o .:? "createdDate")
-                     <*> (o .:? "replyId")
-                     <*> (o .:? "author")
-                     <*> (o .:? "modifiedDate")
-                     <*> (o .:? "deleted")
-                     <*> (o .:? "verb"))
-
-instance ToJSON CommentReply where
-        toJSON CommentReply{..}
-          = object
-              (catMaybes
-                 [("htmlContent" .=) <$> _comHTMLContent,
-                  Just ("kind" .= _comKind),
-                  ("content" .=) <$> _comContent,
-                  ("createdDate" .=) <$> _comCreatedDate,
-                  ("replyId" .=) <$> _comReplyId,
-                  ("author" .=) <$> _comAuthor,
-                  ("modifiedDate" .=) <$> _comModifiedDate,
-                  ("deleted" .=) <$> _comDeleted,
-                  ("verb" .=) <$> _comVerb])
-
---
--- /See:/ 'aboutQuotaBytesByServiceItem' smart constructor.
-data AboutQuotaBytesByServiceItem = AboutQuotaBytesByServiceItem
-    { _aqbbsiBytesUsed   :: !(Maybe (Textual Int64))
-    , _aqbbsiServiceName :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AboutQuotaBytesByServiceItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aqbbsiBytesUsed'
---
--- * 'aqbbsiServiceName'
-aboutQuotaBytesByServiceItem
-    :: AboutQuotaBytesByServiceItem
-aboutQuotaBytesByServiceItem =
-    AboutQuotaBytesByServiceItem
-    { _aqbbsiBytesUsed = Nothing
-    , _aqbbsiServiceName = Nothing
-    }
-
--- | The storage quota bytes used by the service.
-aqbbsiBytesUsed :: Lens' AboutQuotaBytesByServiceItem (Maybe Int64)
-aqbbsiBytesUsed
-  = lens _aqbbsiBytesUsed
-      (\ s a -> s{_aqbbsiBytesUsed = a})
-      . mapping _Coerce
-
--- | The service\'s name, e.g. DRIVE, GMAIL, or PHOTOS.
-aqbbsiServiceName :: Lens' AboutQuotaBytesByServiceItem (Maybe Text)
-aqbbsiServiceName
-  = lens _aqbbsiServiceName
-      (\ s a -> s{_aqbbsiServiceName = a})
-
-instance FromJSON AboutQuotaBytesByServiceItem where
-        parseJSON
-          = withObject "AboutQuotaBytesByServiceItem"
-              (\ o ->
-                 AboutQuotaBytesByServiceItem <$>
-                   (o .:? "bytesUsed") <*> (o .:? "serviceName"))
-
-instance ToJSON AboutQuotaBytesByServiceItem where
-        toJSON AboutQuotaBytesByServiceItem{..}
-          = object
-              (catMaybes
-                 [("bytesUsed" .=) <$> _aqbbsiBytesUsed,
-                  ("serviceName" .=) <$> _aqbbsiServiceName])
-
--- | The JSON template for a user.
---
--- /See:/ 'user' smart constructor.
-data User = User
-    { _uIsAuthenticatedUser :: !(Maybe Bool)
-    , _uKind                :: !Text
-    , _uPicture             :: !(Maybe UserPicture)
-    , _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:
---
--- * 'uIsAuthenticatedUser'
---
--- * 'uKind'
---
--- * 'uPicture'
---
--- * 'uEmailAddress'
---
--- * 'uDisplayName'
---
--- * 'uPermissionId'
-user
-    :: User
-user =
-    User
-    { _uIsAuthenticatedUser = Nothing
-    , _uKind = "drive#user"
-    , _uPicture = Nothing
-    , _uEmailAddress = Nothing
-    , _uDisplayName = Nothing
-    , _uPermissionId = Nothing
-    }
-
--- | Whether this user is the same as the authenticated user for whom the
--- request was made.
-uIsAuthenticatedUser :: Lens' User (Maybe Bool)
-uIsAuthenticatedUser
-  = lens _uIsAuthenticatedUser
-      (\ s a -> s{_uIsAuthenticatedUser = a})
-
--- | This is always drive#user.
-uKind :: Lens' User Text
-uKind = lens _uKind (\ s a -> s{_uKind = a})
-
--- | The user\'s profile picture.
-uPicture :: Lens' User (Maybe UserPicture)
-uPicture = lens _uPicture (\ s a -> s{_uPicture = a})
-
--- | The email address of the user.
-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 the permissions collection.
-uPermissionId :: Lens' User (Maybe Text)
-uPermissionId
-  = lens _uPermissionId
-      (\ s a -> s{_uPermissionId = a})
-
-instance FromJSON User where
-        parseJSON
-          = withObject "User"
-              (\ o ->
-                 User <$>
-                   (o .:? "isAuthenticatedUser") <*>
-                     (o .:? "kind" .!= "drive#user")
-                     <*> (o .:? "picture")
-                     <*> (o .:? "emailAddress")
-                     <*> (o .:? "displayName")
-                     <*> (o .:? "permissionId"))
-
-instance ToJSON User where
-        toJSON User{..}
-          = object
-              (catMaybes
-                 [("isAuthenticatedUser" .=) <$>
-                    _uIsAuthenticatedUser,
-                  Just ("kind" .= _uKind),
-                  ("picture" .=) <$> _uPicture,
-                  ("emailAddress" .=) <$> _uEmailAddress,
-                  ("displayName" .=) <$> _uDisplayName,
-                  ("permissionId" .=) <$> _uPermissionId])
-
---
--- /See:/ 'aboutExportFormatsItem' smart constructor.
-data AboutExportFormatsItem = AboutExportFormatsItem
-    { _aefiTargets :: !(Maybe [Text])
-    , _aefiSource  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AboutExportFormatsItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aefiTargets'
---
--- * 'aefiSource'
-aboutExportFormatsItem
-    :: AboutExportFormatsItem
-aboutExportFormatsItem =
-    AboutExportFormatsItem
-    { _aefiTargets = Nothing
-    , _aefiSource = Nothing
-    }
-
--- | The possible content types to convert to.
-aefiTargets :: Lens' AboutExportFormatsItem [Text]
-aefiTargets
-  = lens _aefiTargets (\ s a -> s{_aefiTargets = a}) .
-      _Default
-      . _Coerce
-
--- | The content type to convert from.
-aefiSource :: Lens' AboutExportFormatsItem (Maybe Text)
-aefiSource
-  = lens _aefiSource (\ s a -> s{_aefiSource = a})
-
-instance FromJSON AboutExportFormatsItem where
-        parseJSON
-          = withObject "AboutExportFormatsItem"
-              (\ o ->
-                 AboutExportFormatsItem <$>
-                   (o .:? "targets" .!= mempty) <*> (o .:? "source"))
-
-instance ToJSON AboutExportFormatsItem where
-        toJSON AboutExportFormatsItem{..}
-          = object
-              (catMaybes
-                 [("targets" .=) <$> _aefiTargets,
-                  ("source" .=) <$> _aefiSource])
-
--- | A list of changes for a user.
---
--- /See:/ 'changeList' smart constructor.
-data ChangeList = ChangeList
-    { _cllEtag            :: !(Maybe Text)
-    , _cllNextPageToken   :: !(Maybe Text)
-    , _cllNextLink        :: !(Maybe Text)
-    , _cllKind            :: !Text
-    , _cllItems           :: !(Maybe [Change])
-    , _cllSelfLink        :: !(Maybe Text)
-    , _cllLargestChangeId :: !(Maybe (Textual Int64))
-    } 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:
---
--- * 'cllEtag'
---
--- * 'cllNextPageToken'
---
--- * 'cllNextLink'
---
--- * 'cllKind'
---
--- * 'cllItems'
---
--- * 'cllSelfLink'
---
--- * 'cllLargestChangeId'
-changeList
-    :: ChangeList
-changeList =
-    ChangeList
-    { _cllEtag = Nothing
-    , _cllNextPageToken = Nothing
-    , _cllNextLink = Nothing
-    , _cllKind = "drive#changeList"
-    , _cllItems = Nothing
-    , _cllSelfLink = Nothing
-    , _cllLargestChangeId = Nothing
-    }
-
--- | The ETag of the list.
-cllEtag :: Lens' ChangeList (Maybe Text)
-cllEtag = lens _cllEtag (\ s a -> s{_cllEtag = a})
-
--- | The page token for the next page of changes.
-cllNextPageToken :: Lens' ChangeList (Maybe Text)
-cllNextPageToken
-  = lens _cllNextPageToken
-      (\ s a -> s{_cllNextPageToken = a})
-
--- | A link to the next page of changes.
-cllNextLink :: Lens' ChangeList (Maybe Text)
-cllNextLink
-  = lens _cllNextLink (\ s a -> s{_cllNextLink = a})
-
--- | This is always drive#changeList.
-cllKind :: Lens' ChangeList Text
-cllKind = lens _cllKind (\ s a -> s{_cllKind = a})
-
--- | The actual list of changes.
-cllItems :: Lens' ChangeList [Change]
-cllItems
-  = lens _cllItems (\ s a -> s{_cllItems = a}) .
-      _Default
-      . _Coerce
-
--- | A link back to this list.
-cllSelfLink :: Lens' ChangeList (Maybe Text)
-cllSelfLink
-  = lens _cllSelfLink (\ s a -> s{_cllSelfLink = a})
-
--- | The current largest change ID.
-cllLargestChangeId :: Lens' ChangeList (Maybe Int64)
-cllLargestChangeId
-  = lens _cllLargestChangeId
-      (\ s a -> s{_cllLargestChangeId = a})
-      . mapping _Coerce
-
-instance FromJSON ChangeList where
-        parseJSON
-          = withObject "ChangeList"
-              (\ o ->
-                 ChangeList <$>
-                   (o .:? "etag") <*> (o .:? "nextPageToken") <*>
-                     (o .:? "nextLink")
-                     <*> (o .:? "kind" .!= "drive#changeList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "largestChangeId"))
-
-instance ToJSON ChangeList where
-        toJSON ChangeList{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _cllEtag,
-                  ("nextPageToken" .=) <$> _cllNextPageToken,
-                  ("nextLink" .=) <$> _cllNextLink,
-                  Just ("kind" .= _cllKind),
-                  ("items" .=) <$> _cllItems,
-                  ("selfLink" .=) <$> _cllSelfLink,
-                  ("largestChangeId" .=) <$> _cllLargestChangeId])
-
--- | 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
-
--- | Indexable text attributes for the file (can only be written)
---
--- /See:/ 'fileIndexableText' smart constructor.
-newtype FileIndexableText = FileIndexableText
-    { _fitText :: Maybe Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FileIndexableText' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fitText'
-fileIndexableText
-    :: FileIndexableText
-fileIndexableText =
-    FileIndexableText
-    { _fitText = Nothing
-    }
-
--- | The text to be indexed for this file.
-fitText :: Lens' FileIndexableText (Maybe Text)
-fitText = lens _fitText (\ s a -> s{_fitText = a})
-
-instance FromJSON FileIndexableText where
-        parseJSON
-          = withObject "FileIndexableText"
-              (\ o -> FileIndexableText <$> (o .:? "text"))
-
-instance ToJSON FileIndexableText where
-        toJSON FileIndexableText{..}
-          = object (catMaybes [("text" .=) <$> _fitText])
-
---
--- /See:/ 'aboutFeaturesItem' smart constructor.
-data AboutFeaturesItem = AboutFeaturesItem
-    { _afiFeatureRate :: !(Maybe (Textual Double))
-    , _afiFeatureName :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AboutFeaturesItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'afiFeatureRate'
---
--- * 'afiFeatureName'
-aboutFeaturesItem
-    :: AboutFeaturesItem
-aboutFeaturesItem =
-    AboutFeaturesItem
-    { _afiFeatureRate = Nothing
-    , _afiFeatureName = Nothing
-    }
-
--- | The request limit rate for this feature, in queries per second.
-afiFeatureRate :: Lens' AboutFeaturesItem (Maybe Double)
-afiFeatureRate
-  = lens _afiFeatureRate
-      (\ s a -> s{_afiFeatureRate = a})
-      . mapping _Coerce
-
--- | The name of the feature.
-afiFeatureName :: Lens' AboutFeaturesItem (Maybe Text)
-afiFeatureName
-  = lens _afiFeatureName
-      (\ s a -> s{_afiFeatureName = a})
-
-instance FromJSON AboutFeaturesItem where
-        parseJSON
-          = withObject "AboutFeaturesItem"
-              (\ o ->
-                 AboutFeaturesItem <$>
-                   (o .:? "featureRate") <*> (o .:? "featureName"))
-
-instance ToJSON AboutFeaturesItem where
-        toJSON AboutFeaturesItem{..}
-          = object
-              (catMaybes
-                 [("featureRate" .=) <$> _afiFeatureRate,
-                  ("featureName" .=) <$> _afiFeatureName])
-
--- | 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
-
--- | An item with user information and settings.
---
--- /See:/ 'about' smart constructor.
-data About = About
-    { _aboExportFormats           :: !(Maybe [AboutExportFormatsItem])
-    , _aboRemainingChangeIds      :: !(Maybe (Textual Int64))
-    , _aboLanguageCode            :: !(Maybe Text)
-    , _aboEtag                    :: !(Maybe Text)
-    , _aboImportFormats           :: !(Maybe [AboutImportFormatsItem])
-    , _aboKind                    :: !Text
-    , _aboDomainSharingPolicy     :: !(Maybe Text)
-    , _aboQuotaBytesUsedInTrash   :: !(Maybe (Textual Int64))
-    , _aboQuotaType               :: !(Maybe Text)
-    , _aboMaxUploadSizes          :: !(Maybe [AboutMaxUploadSizesItem])
-    , _aboUser                    :: !(Maybe User)
-    , _aboSelfLink                :: !(Maybe Text)
-    , _aboName                    :: !(Maybe Text)
-    , _aboFeatures                :: !(Maybe [AboutFeaturesItem])
-    , _aboIsCurrentAppInstalled   :: !(Maybe Bool)
-    , _aboQuotaBytesTotal         :: !(Maybe (Textual Int64))
-    , _aboRootFolderId            :: !(Maybe Text)
-    , _aboQuotaBytesUsed          :: !(Maybe (Textual Int64))
-    , _aboAdditionalRoleInfo      :: !(Maybe [AboutAdditionalRoleInfoItem])
-    , _aboFolderColorPalette      :: !(Maybe [Text])
-    , _aboPermissionId            :: !(Maybe Text)
-    , _aboQuotaBytesUsedAggregate :: !(Maybe (Textual Int64))
-    , _aboQuotaBytesByService     :: !(Maybe [AboutQuotaBytesByServiceItem])
-    , _aboLargestChangeId         :: !(Maybe (Textual Int64))
-    } 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:
---
--- * 'aboExportFormats'
---
--- * 'aboRemainingChangeIds'
---
--- * 'aboLanguageCode'
---
--- * 'aboEtag'
---
--- * 'aboImportFormats'
---
--- * 'aboKind'
---
--- * 'aboDomainSharingPolicy'
---
--- * 'aboQuotaBytesUsedInTrash'
---
--- * 'aboQuotaType'
---
--- * 'aboMaxUploadSizes'
---
--- * 'aboUser'
---
--- * 'aboSelfLink'
---
--- * 'aboName'
---
--- * 'aboFeatures'
---
--- * 'aboIsCurrentAppInstalled'
---
--- * 'aboQuotaBytesTotal'
---
--- * 'aboRootFolderId'
---
--- * 'aboQuotaBytesUsed'
---
--- * 'aboAdditionalRoleInfo'
---
--- * 'aboFolderColorPalette'
---
--- * 'aboPermissionId'
---
--- * 'aboQuotaBytesUsedAggregate'
---
--- * 'aboQuotaBytesByService'
---
--- * 'aboLargestChangeId'
-about
-    :: About
-about =
-    About
-    { _aboExportFormats = Nothing
-    , _aboRemainingChangeIds = Nothing
-    , _aboLanguageCode = Nothing
-    , _aboEtag = Nothing
-    , _aboImportFormats = Nothing
-    , _aboKind = "drive#about"
-    , _aboDomainSharingPolicy = Nothing
-    , _aboQuotaBytesUsedInTrash = Nothing
-    , _aboQuotaType = Nothing
-    , _aboMaxUploadSizes = Nothing
-    , _aboUser = Nothing
-    , _aboSelfLink = Nothing
-    , _aboName = Nothing
-    , _aboFeatures = Nothing
-    , _aboIsCurrentAppInstalled = Nothing
-    , _aboQuotaBytesTotal = Nothing
-    , _aboRootFolderId = Nothing
-    , _aboQuotaBytesUsed = Nothing
-    , _aboAdditionalRoleInfo = Nothing
-    , _aboFolderColorPalette = Nothing
-    , _aboPermissionId = Nothing
-    , _aboQuotaBytesUsedAggregate = Nothing
-    , _aboQuotaBytesByService = Nothing
-    , _aboLargestChangeId = Nothing
-    }
-
--- | The allowable export formats.
-aboExportFormats :: Lens' About [AboutExportFormatsItem]
-aboExportFormats
-  = lens _aboExportFormats
-      (\ s a -> s{_aboExportFormats = a})
-      . _Default
-      . _Coerce
-
--- | The number of remaining change ids.
-aboRemainingChangeIds :: Lens' About (Maybe Int64)
-aboRemainingChangeIds
-  = lens _aboRemainingChangeIds
-      (\ s a -> s{_aboRemainingChangeIds = a})
-      . mapping _Coerce
-
--- | The user\'s language or locale code, as defined by BCP 47, with some
--- extensions from Unicode\'s LDML format
--- (http:\/\/www.unicode.org\/reports\/tr35\/).
-aboLanguageCode :: Lens' About (Maybe Text)
-aboLanguageCode
-  = lens _aboLanguageCode
-      (\ s a -> s{_aboLanguageCode = a})
-
--- | The ETag of the item.
-aboEtag :: Lens' About (Maybe Text)
-aboEtag = lens _aboEtag (\ s a -> s{_aboEtag = a})
-
--- | The allowable import formats.
-aboImportFormats :: Lens' About [AboutImportFormatsItem]
-aboImportFormats
-  = lens _aboImportFormats
-      (\ s a -> s{_aboImportFormats = a})
-      . _Default
-      . _Coerce
-
--- | This is always drive#about.
-aboKind :: Lens' About Text
-aboKind = lens _aboKind (\ s a -> s{_aboKind = a})
-
--- | The domain sharing policy for the current user. Possible values are: -
--- allowed - allowedWithWarning - incomingOnly - disallowed
-aboDomainSharingPolicy :: Lens' About (Maybe Text)
-aboDomainSharingPolicy
-  = lens _aboDomainSharingPolicy
-      (\ s a -> s{_aboDomainSharingPolicy = a})
-
--- | The number of quota bytes used by trashed items.
-aboQuotaBytesUsedInTrash :: Lens' About (Maybe Int64)
-aboQuotaBytesUsedInTrash
-  = lens _aboQuotaBytesUsedInTrash
-      (\ s a -> s{_aboQuotaBytesUsedInTrash = a})
-      . mapping _Coerce
-
--- | The type of the user\'s storage quota. Possible values are: - LIMITED -
--- UNLIMITED
-aboQuotaType :: Lens' About (Maybe Text)
-aboQuotaType
-  = lens _aboQuotaType (\ s a -> s{_aboQuotaType = a})
-
--- | List of max upload sizes for each file type. The most specific type
--- takes precedence.
-aboMaxUploadSizes :: Lens' About [AboutMaxUploadSizesItem]
-aboMaxUploadSizes
-  = lens _aboMaxUploadSizes
-      (\ s a -> s{_aboMaxUploadSizes = a})
-      . _Default
-      . _Coerce
-
--- | The authenticated user.
-aboUser :: Lens' About (Maybe User)
-aboUser = lens _aboUser (\ s a -> s{_aboUser = a})
-
--- | A link back to this item.
-aboSelfLink :: Lens' About (Maybe Text)
-aboSelfLink
-  = lens _aboSelfLink (\ s a -> s{_aboSelfLink = a})
-
--- | The name of the current user.
-aboName :: Lens' About (Maybe Text)
-aboName = lens _aboName (\ s a -> s{_aboName = a})
-
--- | List of additional features enabled on this account.
-aboFeatures :: Lens' About [AboutFeaturesItem]
-aboFeatures
-  = lens _aboFeatures (\ s a -> s{_aboFeatures = a}) .
-      _Default
-      . _Coerce
-
--- | A boolean indicating whether the authenticated app is installed by the
--- authenticated user.
-aboIsCurrentAppInstalled :: Lens' About (Maybe Bool)
-aboIsCurrentAppInstalled
-  = lens _aboIsCurrentAppInstalled
-      (\ s a -> s{_aboIsCurrentAppInstalled = a})
-
--- | The total number of quota bytes.
-aboQuotaBytesTotal :: Lens' About (Maybe Int64)
-aboQuotaBytesTotal
-  = lens _aboQuotaBytesTotal
-      (\ s a -> s{_aboQuotaBytesTotal = a})
-      . mapping _Coerce
-
--- | The id of the root folder.
-aboRootFolderId :: Lens' About (Maybe Text)
-aboRootFolderId
-  = lens _aboRootFolderId
-      (\ s a -> s{_aboRootFolderId = a})
-
--- | The number of quota bytes used by Google Drive.
-aboQuotaBytesUsed :: Lens' About (Maybe Int64)
-aboQuotaBytesUsed
-  = lens _aboQuotaBytesUsed
-      (\ s a -> s{_aboQuotaBytesUsed = a})
-      . mapping _Coerce
-
--- | Information about supported additional roles per file type. The most
--- specific type takes precedence.
-aboAdditionalRoleInfo :: Lens' About [AboutAdditionalRoleInfoItem]
-aboAdditionalRoleInfo
-  = lens _aboAdditionalRoleInfo
-      (\ s a -> s{_aboAdditionalRoleInfo = a})
-      . _Default
-      . _Coerce
-
--- | The palette of allowable folder colors as RGB hex strings.
-aboFolderColorPalette :: Lens' About [Text]
-aboFolderColorPalette
-  = lens _aboFolderColorPalette
-      (\ s a -> s{_aboFolderColorPalette = a})
-      . _Default
-      . _Coerce
-
--- | The current user\'s ID as visible in the permissions collection.
-aboPermissionId :: Lens' About (Maybe Text)
-aboPermissionId
-  = lens _aboPermissionId
-      (\ s a -> s{_aboPermissionId = a})
-
--- | The number of quota bytes used by all Google apps (Drive, Picasa, etc.).
-aboQuotaBytesUsedAggregate :: Lens' About (Maybe Int64)
-aboQuotaBytesUsedAggregate
-  = lens _aboQuotaBytesUsedAggregate
-      (\ s a -> s{_aboQuotaBytesUsedAggregate = a})
-      . mapping _Coerce
-
--- | The amount of storage quota used by different Google services.
-aboQuotaBytesByService :: Lens' About [AboutQuotaBytesByServiceItem]
-aboQuotaBytesByService
-  = lens _aboQuotaBytesByService
-      (\ s a -> s{_aboQuotaBytesByService = a})
-      . _Default
-      . _Coerce
-
--- | The largest change id.
-aboLargestChangeId :: Lens' About (Maybe Int64)
-aboLargestChangeId
-  = lens _aboLargestChangeId
-      (\ s a -> s{_aboLargestChangeId = a})
-      . mapping _Coerce
-
-instance FromJSON About where
-        parseJSON
-          = withObject "About"
-              (\ o ->
-                 About <$>
-                   (o .:? "exportFormats" .!= mempty) <*>
-                     (o .:? "remainingChangeIds")
-                     <*> (o .:? "languageCode")
-                     <*> (o .:? "etag")
-                     <*> (o .:? "importFormats" .!= mempty)
-                     <*> (o .:? "kind" .!= "drive#about")
-                     <*> (o .:? "domainSharingPolicy")
-                     <*> (o .:? "quotaBytesUsedInTrash")
-                     <*> (o .:? "quotaType")
-                     <*> (o .:? "maxUploadSizes" .!= mempty)
-                     <*> (o .:? "user")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "features" .!= mempty)
-                     <*> (o .:? "isCurrentAppInstalled")
-                     <*> (o .:? "quotaBytesTotal")
-                     <*> (o .:? "rootFolderId")
-                     <*> (o .:? "quotaBytesUsed")
-                     <*> (o .:? "additionalRoleInfo" .!= mempty)
-                     <*> (o .:? "folderColorPalette" .!= mempty)
-                     <*> (o .:? "permissionId")
-                     <*> (o .:? "quotaBytesUsedAggregate")
-                     <*> (o .:? "quotaBytesByService" .!= mempty)
-                     <*> (o .:? "largestChangeId"))
-
-instance ToJSON About where
-        toJSON About{..}
-          = object
-              (catMaybes
-                 [("exportFormats" .=) <$> _aboExportFormats,
-                  ("remainingChangeIds" .=) <$> _aboRemainingChangeIds,
-                  ("languageCode" .=) <$> _aboLanguageCode,
-                  ("etag" .=) <$> _aboEtag,
-                  ("importFormats" .=) <$> _aboImportFormats,
-                  Just ("kind" .= _aboKind),
-                  ("domainSharingPolicy" .=) <$>
-                    _aboDomainSharingPolicy,
-                  ("quotaBytesUsedInTrash" .=) <$>
-                    _aboQuotaBytesUsedInTrash,
-                  ("quotaType" .=) <$> _aboQuotaType,
-                  ("maxUploadSizes" .=) <$> _aboMaxUploadSizes,
-                  ("user" .=) <$> _aboUser,
-                  ("selfLink" .=) <$> _aboSelfLink,
-                  ("name" .=) <$> _aboName,
-                  ("features" .=) <$> _aboFeatures,
-                  ("isCurrentAppInstalled" .=) <$>
-                    _aboIsCurrentAppInstalled,
-                  ("quotaBytesTotal" .=) <$> _aboQuotaBytesTotal,
-                  ("rootFolderId" .=) <$> _aboRootFolderId,
-                  ("quotaBytesUsed" .=) <$> _aboQuotaBytesUsed,
-                  ("additionalRoleInfo" .=) <$> _aboAdditionalRoleInfo,
-                  ("folderColorPalette" .=) <$> _aboFolderColorPalette,
-                  ("permissionId" .=) <$> _aboPermissionId,
-                  ("quotaBytesUsedAggregate" .=) <$>
-                    _aboQuotaBytesUsedAggregate,
-                  ("quotaBytesByService" .=) <$>
-                    _aboQuotaBytesByService,
-                  ("largestChangeId" .=) <$> _aboLargestChangeId])
-
--- | 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:/ 'aboutImportFormatsItem' smart constructor.
-data AboutImportFormatsItem = AboutImportFormatsItem
-    { _aifiTargets :: !(Maybe [Text])
-    , _aifiSource  :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AboutImportFormatsItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aifiTargets'
---
--- * 'aifiSource'
-aboutImportFormatsItem
-    :: AboutImportFormatsItem
-aboutImportFormatsItem =
-    AboutImportFormatsItem
-    { _aifiTargets = Nothing
-    , _aifiSource = Nothing
-    }
-
--- | The possible content types to convert to.
-aifiTargets :: Lens' AboutImportFormatsItem [Text]
-aifiTargets
-  = lens _aifiTargets (\ s a -> s{_aifiTargets = a}) .
-      _Default
-      . _Coerce
-
--- | The imported file\'s content type to convert from.
-aifiSource :: Lens' AboutImportFormatsItem (Maybe Text)
-aifiSource
-  = lens _aifiSource (\ s a -> s{_aifiSource = a})
-
-instance FromJSON AboutImportFormatsItem where
-        parseJSON
-          = withObject "AboutImportFormatsItem"
-              (\ o ->
-                 AboutImportFormatsItem <$>
-                   (o .:? "targets" .!= mempty) <*> (o .:? "source"))
-
-instance ToJSON AboutImportFormatsItem where
-        toJSON AboutImportFormatsItem{..}
-          = object
-              (catMaybes
-                 [("targets" .=) <$> _aifiTargets,
-                  ("source" .=) <$> _aifiSource])
-
--- | Metadata about image media. This will only be present for image types,
--- and its contents will depend on what can be parsed from the image
--- content.
---
--- /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))
-    , _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)
-    , _fimmDate             :: !(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'
---
--- * 'fimmLocation'
---
--- * 'fimmAperture'
---
--- * 'fimmFocalLength'
---
--- * 'fimmCameraMake'
---
--- * 'fimmWidth'
---
--- * 'fimmExposureTime'
---
--- * 'fimmCameraModel'
---
--- * 'fimmWhiteBalance'
---
--- * 'fimmDate'
---
--- * 'fimmLens'
---
--- * 'fimmFlashUsed'
---
--- * 'fimmExposureBias'
---
--- * 'fimmMeteringMode'
---
--- * 'fimmExposureMode'
---
--- * 'fimmSensor'
---
--- * 'fimmColorSpace'
-fileImageMediaMetadata
-    :: FileImageMediaMetadata
-fileImageMediaMetadata =
-    FileImageMediaMetadata
-    { _fimmRotation = Nothing
-    , _fimmHeight = Nothing
-    , _fimmSubjectDistance = Nothing
-    , _fimmMaxApertureValue = Nothing
-    , _fimmIsoSpeed = Nothing
-    , _fimmLocation = Nothing
-    , _fimmAperture = Nothing
-    , _fimmFocalLength = Nothing
-    , _fimmCameraMake = Nothing
-    , _fimmWidth = Nothing
-    , _fimmExposureTime = Nothing
-    , _fimmCameraModel = Nothing
-    , _fimmWhiteBalance = Nothing
-    , _fimmDate = 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
-
--- | 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 date and time the photo was taken (EXIF format timestamp).
-fimmDate :: Lens' FileImageMediaMetadata (Maybe Text)
-fimmDate = lens _fimmDate (\ s a -> s{_fimmDate = 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 .:? "location")
-                     <*> (o .:? "aperture")
-                     <*> (o .:? "focalLength")
-                     <*> (o .:? "cameraMake")
-                     <*> (o .:? "width")
-                     <*> (o .:? "exposureTime")
-                     <*> (o .:? "cameraModel")
-                     <*> (o .:? "whiteBalance")
-                     <*> (o .:? "date")
-                     <*> (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,
-                  ("location" .=) <$> _fimmLocation,
-                  ("aperture" .=) <$> _fimmAperture,
-                  ("focalLength" .=) <$> _fimmFocalLength,
-                  ("cameraMake" .=) <$> _fimmCameraMake,
-                  ("width" .=) <$> _fimmWidth,
-                  ("exposureTime" .=) <$> _fimmExposureTime,
-                  ("cameraModel" .=) <$> _fimmCameraModel,
-                  ("whiteBalance" .=) <$> _fimmWhiteBalance,
-                  ("date" .=) <$> _fimmDate, ("lens" .=) <$> _fimmLens,
-                  ("flashUsed" .=) <$> _fimmFlashUsed,
-                  ("exposureBias" .=) <$> _fimmExposureBias,
-                  ("meteringMode" .=) <$> _fimmMeteringMode,
-                  ("exposureMode" .=) <$> _fimmExposureMode,
-                  ("sensor" .=) <$> _fimmSensor,
-                  ("colorSpace" .=) <$> _fimmColorSpace])
-
--- | A group of labels for the file.
---
--- /See:/ 'fileLabels' smart constructor.
-data FileLabels = FileLabels
-    { _flViewed     :: !(Maybe Bool)
-    , _flTrashed    :: !(Maybe Bool)
-    , _flStarred    :: !(Maybe Bool)
-    , _flHidden     :: !(Maybe Bool)
-    , _flRestricted :: !(Maybe Bool)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FileLabels' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'flViewed'
---
--- * 'flTrashed'
---
--- * 'flStarred'
---
--- * 'flHidden'
---
--- * 'flRestricted'
-fileLabels
-    :: FileLabels
-fileLabels =
-    FileLabels
-    { _flViewed = Nothing
-    , _flTrashed = Nothing
-    , _flStarred = Nothing
-    , _flHidden = Nothing
-    , _flRestricted = Nothing
-    }
-
--- | Whether this file has been viewed by this user.
-flViewed :: Lens' FileLabels (Maybe Bool)
-flViewed = lens _flViewed (\ s a -> s{_flViewed = a})
-
--- | Whether this file has been trashed. This label applies to all users
--- accessing the file; however, only owners are allowed to see and untrash
--- files.
-flTrashed :: Lens' FileLabels (Maybe Bool)
-flTrashed
-  = lens _flTrashed (\ s a -> s{_flTrashed = a})
-
--- | Whether this file is starred by the user.
-flStarred :: Lens' FileLabels (Maybe Bool)
-flStarred
-  = lens _flStarred (\ s a -> s{_flStarred = a})
-
--- | Deprecated.
-flHidden :: Lens' FileLabels (Maybe Bool)
-flHidden = lens _flHidden (\ s a -> s{_flHidden = a})
-
--- | Whether viewers and commenters are prevented from downloading, printing,
--- and copying this file.
-flRestricted :: Lens' FileLabels (Maybe Bool)
-flRestricted
-  = lens _flRestricted (\ s a -> s{_flRestricted = a})
-
-instance FromJSON FileLabels where
-        parseJSON
-          = withObject "FileLabels"
-              (\ o ->
-                 FileLabels <$>
-                   (o .:? "viewed") <*> (o .:? "trashed") <*>
-                     (o .:? "starred")
-                     <*> (o .:? "hidden")
-                     <*> (o .:? "restricted"))
-
-instance ToJSON FileLabels where
-        toJSON FileLabels{..}
-          = object
-              (catMaybes
-                 [("viewed" .=) <$> _flViewed,
-                  ("trashed" .=) <$> _flTrashed,
-                  ("starred" .=) <$> _flStarred,
-                  ("hidden" .=) <$> _flHidden,
-                  ("restricted" .=) <$> _flRestricted])
-
--- | A JSON representation of a comment on a file in Google Drive.
---
--- /See:/ 'comment' smart constructor.
-data Comment = Comment
-    { _ccStatus       :: !(Maybe Text)
-    , _ccHTMLContent  :: !(Maybe Text)
-    , _ccContext      :: !(Maybe CommentContext)
-    , _ccKind         :: !Text
-    , _ccFileTitle    :: !(Maybe Text)
-    , _ccAnchor       :: !(Maybe Text)
-    , _ccContent      :: !(Maybe Text)
-    , _ccReplies      :: !(Maybe [CommentReply])
-    , _ccCreatedDate  :: !(Maybe DateTime')
-    , _ccSelfLink     :: !(Maybe Text)
-    , _ccAuthor       :: !(Maybe User)
-    , _ccModifiedDate :: !(Maybe DateTime')
-    , _ccDeleted      :: !(Maybe Bool)
-    , _ccFileId       :: !(Maybe Text)
-    , _ccCommentId    :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'Comment' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ccStatus'
---
--- * 'ccHTMLContent'
---
--- * 'ccContext'
---
--- * 'ccKind'
---
--- * 'ccFileTitle'
---
--- * 'ccAnchor'
---
--- * 'ccContent'
---
--- * 'ccReplies'
---
--- * 'ccCreatedDate'
---
--- * 'ccSelfLink'
---
--- * 'ccAuthor'
---
--- * 'ccModifiedDate'
---
--- * 'ccDeleted'
---
--- * 'ccFileId'
---
--- * 'ccCommentId'
-comment
-    :: Comment
-comment =
-    Comment
-    { _ccStatus = Nothing
-    , _ccHTMLContent = Nothing
-    , _ccContext = Nothing
-    , _ccKind = "drive#comment"
-    , _ccFileTitle = Nothing
-    , _ccAnchor = Nothing
-    , _ccContent = Nothing
-    , _ccReplies = Nothing
-    , _ccCreatedDate = Nothing
-    , _ccSelfLink = Nothing
-    , _ccAuthor = Nothing
-    , _ccModifiedDate = Nothing
-    , _ccDeleted = Nothing
-    , _ccFileId = Nothing
-    , _ccCommentId = Nothing
-    }
-
--- | The status of this comment. Status can be changed by posting a reply to
--- a comment with the desired status. - \"open\" - The comment is still
--- open. - \"resolved\" - The comment has been resolved by one of its
--- replies.
-ccStatus :: Lens' Comment (Maybe Text)
-ccStatus = lens _ccStatus (\ s a -> s{_ccStatus = a})
-
--- | HTML formatted content for this comment.
-ccHTMLContent :: Lens' Comment (Maybe Text)
-ccHTMLContent
-  = lens _ccHTMLContent
-      (\ s a -> s{_ccHTMLContent = a})
-
--- | The context of the file which is being commented on.
-ccContext :: Lens' Comment (Maybe CommentContext)
-ccContext
-  = lens _ccContext (\ s a -> s{_ccContext = a})
-
--- | This is always drive#comment.
-ccKind :: Lens' Comment Text
-ccKind = lens _ccKind (\ s a -> s{_ccKind = a})
-
--- | The title of the file which this comment is addressing.
-ccFileTitle :: Lens' Comment (Maybe Text)
-ccFileTitle
-  = lens _ccFileTitle (\ s a -> s{_ccFileTitle = a})
-
--- | A region of the document represented as a JSON string. See anchor
--- documentation for details on how to define and interpret anchor
--- properties.
-ccAnchor :: Lens' Comment (Maybe Text)
-ccAnchor = lens _ccAnchor (\ s a -> s{_ccAnchor = a})
-
--- | The plain text content used to create this comment. This is not HTML
--- safe and should only be used as a starting point to make edits to a
--- comment\'s content.
-ccContent :: Lens' Comment (Maybe Text)
-ccContent
-  = lens _ccContent (\ s a -> s{_ccContent = a})
-
--- | Replies to this post.
-ccReplies :: Lens' Comment [CommentReply]
-ccReplies
-  = lens _ccReplies (\ s a -> s{_ccReplies = a}) .
-      _Default
-      . _Coerce
-
--- | The date when this comment was first created.
-ccCreatedDate :: Lens' Comment (Maybe UTCTime)
-ccCreatedDate
-  = lens _ccCreatedDate
-      (\ s a -> s{_ccCreatedDate = a})
-      . mapping _DateTime
-
--- | A link back to this comment.
-ccSelfLink :: Lens' Comment (Maybe Text)
-ccSelfLink
-  = lens _ccSelfLink (\ s a -> s{_ccSelfLink = a})
-
--- | The user who wrote this comment.
-ccAuthor :: Lens' Comment (Maybe User)
-ccAuthor = lens _ccAuthor (\ s a -> s{_ccAuthor = a})
-
--- | The date when this comment or any of its replies were last modified.
-ccModifiedDate :: Lens' Comment (Maybe UTCTime)
-ccModifiedDate
-  = lens _ccModifiedDate
-      (\ s a -> s{_ccModifiedDate = a})
-      . mapping _DateTime
-
--- | Whether this comment has been deleted. If a comment has been deleted the
--- content will be cleared and this will only represent a comment that once
--- existed.
-ccDeleted :: Lens' Comment (Maybe Bool)
-ccDeleted
-  = lens _ccDeleted (\ s a -> s{_ccDeleted = a})
-
--- | The file which this comment is addressing.
-ccFileId :: Lens' Comment (Maybe Text)
-ccFileId = lens _ccFileId (\ s a -> s{_ccFileId = a})
-
--- | The ID of the comment.
-ccCommentId :: Lens' Comment (Maybe Text)
-ccCommentId
-  = lens _ccCommentId (\ s a -> s{_ccCommentId = a})
-
-instance FromJSON Comment where
-        parseJSON
-          = withObject "Comment"
-              (\ o ->
-                 Comment <$>
-                   (o .:? "status") <*> (o .:? "htmlContent") <*>
-                     (o .:? "context")
-                     <*> (o .:? "kind" .!= "drive#comment")
-                     <*> (o .:? "fileTitle")
-                     <*> (o .:? "anchor")
-                     <*> (o .:? "content")
-                     <*> (o .:? "replies" .!= mempty)
-                     <*> (o .:? "createdDate")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "author")
-                     <*> (o .:? "modifiedDate")
-                     <*> (o .:? "deleted")
-                     <*> (o .:? "fileId")
-                     <*> (o .:? "commentId"))
-
-instance ToJSON Comment where
-        toJSON Comment{..}
-          = object
-              (catMaybes
-                 [("status" .=) <$> _ccStatus,
-                  ("htmlContent" .=) <$> _ccHTMLContent,
-                  ("context" .=) <$> _ccContext,
-                  Just ("kind" .= _ccKind),
-                  ("fileTitle" .=) <$> _ccFileTitle,
-                  ("anchor" .=) <$> _ccAnchor,
-                  ("content" .=) <$> _ccContent,
-                  ("replies" .=) <$> _ccReplies,
-                  ("createdDate" .=) <$> _ccCreatedDate,
-                  ("selfLink" .=) <$> _ccSelfLink,
-                  ("author" .=) <$> _ccAuthor,
-                  ("modifiedDate" .=) <$> _ccModifiedDate,
-                  ("deleted" .=) <$> _ccDeleted,
-                  ("fileId" .=) <$> _ccFileId,
-                  ("commentId" .=) <$> _ccCommentId])
-
--- | A revision of a file.
---
--- /See:/ 'revision' smart constructor.
-data Revision = Revision
-    { _rEtag                   :: !(Maybe Text)
-    , _rOriginalFilename       :: !(Maybe Text)
-    , _rKind                   :: !Text
-    , _rPublishedLink          :: !(Maybe Text)
-    , _rPinned                 :: !(Maybe Bool)
-    , _rPublished              :: !(Maybe Bool)
-    , _rLastModifyingUser      :: !(Maybe User)
-    , _rFileSize               :: !(Maybe (Textual Int64))
-    , _rPublishAuto            :: !(Maybe Bool)
-    , _rMD5Checksum            :: !(Maybe Text)
-    , _rMimeType               :: !(Maybe Text)
-    , _rSelfLink               :: !(Maybe Text)
-    , _rLastModifyingUserName  :: !(Maybe Text)
-    , _rDownloadURL            :: !(Maybe Text)
-    , _rExportLinks            :: !(Maybe RevisionExportLinks)
-    , _rPublishedOutsideDomain :: !(Maybe Bool)
-    , _rId                     :: !(Maybe Text)
-    , _rModifiedDate           :: !(Maybe DateTime')
-    } 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:
---
--- * 'rEtag'
---
--- * 'rOriginalFilename'
---
--- * 'rKind'
---
--- * 'rPublishedLink'
---
--- * 'rPinned'
---
--- * 'rPublished'
---
--- * 'rLastModifyingUser'
---
--- * 'rFileSize'
---
--- * 'rPublishAuto'
---
--- * 'rMD5Checksum'
---
--- * 'rMimeType'
---
--- * 'rSelfLink'
---
--- * 'rLastModifyingUserName'
---
--- * 'rDownloadURL'
---
--- * 'rExportLinks'
---
--- * 'rPublishedOutsideDomain'
---
--- * 'rId'
---
--- * 'rModifiedDate'
-revision
-    :: Revision
-revision =
-    Revision
-    { _rEtag = Nothing
-    , _rOriginalFilename = Nothing
-    , _rKind = "drive#revision"
-    , _rPublishedLink = Nothing
-    , _rPinned = Nothing
-    , _rPublished = Nothing
-    , _rLastModifyingUser = Nothing
-    , _rFileSize = Nothing
-    , _rPublishAuto = Nothing
-    , _rMD5Checksum = Nothing
-    , _rMimeType = Nothing
-    , _rSelfLink = Nothing
-    , _rLastModifyingUserName = Nothing
-    , _rDownloadURL = Nothing
-    , _rExportLinks = Nothing
-    , _rPublishedOutsideDomain = Nothing
-    , _rId = Nothing
-    , _rModifiedDate = Nothing
-    }
-
--- | The ETag of the revision.
-rEtag :: Lens' Revision (Maybe Text)
-rEtag = lens _rEtag (\ s a -> s{_rEtag = a})
-
--- | The original filename when this revision was created. This will only be
--- populated on files with content stored in Drive.
-rOriginalFilename :: Lens' Revision (Maybe Text)
-rOriginalFilename
-  = lens _rOriginalFilename
-      (\ s a -> s{_rOriginalFilename = a})
-
--- | This is always drive#revision.
-rKind :: Lens' Revision Text
-rKind = lens _rKind (\ s a -> s{_rKind = a})
-
--- | A link to the published revision.
-rPublishedLink :: Lens' Revision (Maybe Text)
-rPublishedLink
-  = lens _rPublishedLink
-      (\ s a -> s{_rPublishedLink = a})
-
--- | Whether this revision is pinned to prevent automatic purging. This will
--- only be populated and can only be modified on files with content stored
--- in Drive which are not Google Docs. Revisions can also be pinned when
--- they are created through the drive.files.insert\/update\/copy by using
--- the pinned query parameter.
-rPinned :: Lens' Revision (Maybe Bool)
-rPinned = lens _rPinned (\ s a -> s{_rPinned = a})
-
--- | Whether this revision is published. This is only populated and can only
--- be modified for Google Docs.
-rPublished :: Lens' Revision (Maybe Bool)
-rPublished
-  = lens _rPublished (\ s a -> s{_rPublished = a})
-
--- | The last user to modify this revision.
-rLastModifyingUser :: Lens' Revision (Maybe User)
-rLastModifyingUser
-  = lens _rLastModifyingUser
-      (\ s a -> s{_rLastModifyingUser = a})
-
--- | The size of the revision in bytes. This will only be populated on files
--- with content stored in Drive.
-rFileSize :: Lens' Revision (Maybe Int64)
-rFileSize
-  = lens _rFileSize (\ s a -> s{_rFileSize = a}) .
-      mapping _Coerce
-
--- | Whether subsequent revisions will be automatically republished. This is
--- only populated and can only be modified for Google Docs.
-rPublishAuto :: Lens' Revision (Maybe Bool)
-rPublishAuto
-  = lens _rPublishAuto (\ s a -> s{_rPublishAuto = a})
-
--- | An MD5 checksum for the content of this revision. This will only be
--- populated on files with content stored in Drive.
-rMD5Checksum :: Lens' Revision (Maybe Text)
-rMD5Checksum
-  = lens _rMD5Checksum (\ s a -> s{_rMD5Checksum = a})
-
--- | The MIME type of the revision.
-rMimeType :: Lens' Revision (Maybe Text)
-rMimeType
-  = lens _rMimeType (\ s a -> s{_rMimeType = a})
-
--- | A link back to this revision.
-rSelfLink :: Lens' Revision (Maybe Text)
-rSelfLink
-  = lens _rSelfLink (\ s a -> s{_rSelfLink = a})
-
--- | Name of the last user to modify this revision.
-rLastModifyingUserName :: Lens' Revision (Maybe Text)
-rLastModifyingUserName
-  = lens _rLastModifyingUserName
-      (\ s a -> s{_rLastModifyingUserName = a})
-
--- | Short term download URL for the file. This will only be populated on
--- files with content stored in Drive.
-rDownloadURL :: Lens' Revision (Maybe Text)
-rDownloadURL
-  = lens _rDownloadURL (\ s a -> s{_rDownloadURL = a})
-
--- | Links for exporting Google Docs to specific formats.
-rExportLinks :: Lens' Revision (Maybe RevisionExportLinks)
-rExportLinks
-  = lens _rExportLinks (\ s a -> s{_rExportLinks = a})
-
--- | Whether this revision is published outside the domain. This is only
--- populated and can only be modified for Google Docs.
-rPublishedOutsideDomain :: Lens' Revision (Maybe Bool)
-rPublishedOutsideDomain
-  = lens _rPublishedOutsideDomain
-      (\ s a -> s{_rPublishedOutsideDomain = a})
-
--- | The ID of the revision.
-rId :: Lens' Revision (Maybe Text)
-rId = lens _rId (\ s a -> s{_rId = a})
-
--- | Last time this revision was modified (formatted RFC 3339 timestamp).
-rModifiedDate :: Lens' Revision (Maybe UTCTime)
-rModifiedDate
-  = lens _rModifiedDate
-      (\ s a -> s{_rModifiedDate = a})
-      . mapping _DateTime
-
-instance FromJSON Revision where
-        parseJSON
-          = withObject "Revision"
-              (\ o ->
-                 Revision <$>
-                   (o .:? "etag") <*> (o .:? "originalFilename") <*>
-                     (o .:? "kind" .!= "drive#revision")
-                     <*> (o .:? "publishedLink")
-                     <*> (o .:? "pinned")
-                     <*> (o .:? "published")
-                     <*> (o .:? "lastModifyingUser")
-                     <*> (o .:? "fileSize")
-                     <*> (o .:? "publishAuto")
-                     <*> (o .:? "md5Checksum")
-                     <*> (o .:? "mimeType")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "lastModifyingUserName")
-                     <*> (o .:? "downloadUrl")
-                     <*> (o .:? "exportLinks")
-                     <*> (o .:? "publishedOutsideDomain")
-                     <*> (o .:? "id")
-                     <*> (o .:? "modifiedDate"))
-
-instance ToJSON Revision where
-        toJSON Revision{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _rEtag,
-                  ("originalFilename" .=) <$> _rOriginalFilename,
-                  Just ("kind" .= _rKind),
-                  ("publishedLink" .=) <$> _rPublishedLink,
-                  ("pinned" .=) <$> _rPinned,
-                  ("published" .=) <$> _rPublished,
-                  ("lastModifyingUser" .=) <$> _rLastModifyingUser,
-                  ("fileSize" .=) <$> _rFileSize,
-                  ("publishAuto" .=) <$> _rPublishAuto,
-                  ("md5Checksum" .=) <$> _rMD5Checksum,
-                  ("mimeType" .=) <$> _rMimeType,
-                  ("selfLink" .=) <$> _rSelfLink,
-                  ("lastModifyingUserName" .=) <$>
-                    _rLastModifyingUserName,
-                  ("downloadUrl" .=) <$> _rDownloadURL,
-                  ("exportLinks" .=) <$> _rExportLinks,
-                  ("publishedOutsideDomain" .=) <$>
-                    _rPublishedOutsideDomain,
-                  ("id" .=) <$> _rId,
-                  ("modifiedDate" .=) <$> _rModifiedDate])
-
---
--- /See:/ 'aboutAdditionalRoleInfoItem' smart constructor.
-data AboutAdditionalRoleInfoItem = AboutAdditionalRoleInfoItem
-    { _aariiRoleSets :: !(Maybe [AboutAdditionalRoleInfoItemRoleSetsItem])
-    , _aariiType     :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AboutAdditionalRoleInfoItem' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'aariiRoleSets'
---
--- * 'aariiType'
-aboutAdditionalRoleInfoItem
-    :: AboutAdditionalRoleInfoItem
-aboutAdditionalRoleInfoItem =
-    AboutAdditionalRoleInfoItem
-    { _aariiRoleSets = Nothing
-    , _aariiType = Nothing
-    }
-
--- | The supported additional roles per primary role.
-aariiRoleSets :: Lens' AboutAdditionalRoleInfoItem [AboutAdditionalRoleInfoItemRoleSetsItem]
-aariiRoleSets
-  = lens _aariiRoleSets
-      (\ s a -> s{_aariiRoleSets = a})
-      . _Default
-      . _Coerce
-
--- | The content type that this additional role info applies to.
-aariiType :: Lens' AboutAdditionalRoleInfoItem (Maybe Text)
-aariiType
-  = lens _aariiType (\ s a -> s{_aariiType = a})
-
-instance FromJSON AboutAdditionalRoleInfoItem where
-        parseJSON
-          = withObject "AboutAdditionalRoleInfoItem"
-              (\ o ->
-                 AboutAdditionalRoleInfoItem <$>
-                   (o .:? "roleSets" .!= mempty) <*> (o .:? "type"))
-
-instance ToJSON AboutAdditionalRoleInfoItem where
-        toJSON AboutAdditionalRoleInfoItem{..}
-          = object
-              (catMaybes
-                 [("roleSets" .=) <$> _aariiRoleSets,
-                  ("type" .=) <$> _aariiType])
-
--- | A permission for a file.
---
--- /See:/ 'permission' smart constructor.
-data Permission = Permission
-    { _perPhotoLink       :: !(Maybe Text)
-    , _perEtag            :: !(Maybe Text)
-    , _perWithLink        :: !(Maybe Bool)
-    , _perKind            :: !Text
-    , _perDomain          :: !(Maybe Text)
-    , _perValue           :: !(Maybe Text)
-    , _perAdditionalRoles :: !(Maybe [Text])
-    , _perRole            :: !(Maybe Text)
-    , _perSelfLink        :: !(Maybe Text)
-    , _perName            :: !(Maybe Text)
-    , _perAuthKey         :: !(Maybe Text)
-    , _perEmailAddress    :: !(Maybe Text)
-    , _perId              :: !(Maybe Text)
-    , _perType            :: !(Maybe Text)
-    } 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:
---
--- * 'perPhotoLink'
---
--- * 'perEtag'
---
--- * 'perWithLink'
---
--- * 'perKind'
---
--- * 'perDomain'
---
--- * 'perValue'
---
--- * 'perAdditionalRoles'
---
--- * 'perRole'
---
--- * 'perSelfLink'
---
--- * 'perName'
---
--- * 'perAuthKey'
---
--- * 'perEmailAddress'
---
--- * 'perId'
---
--- * 'perType'
-permission
-    :: Permission
-permission =
-    Permission
-    { _perPhotoLink = Nothing
-    , _perEtag = Nothing
-    , _perWithLink = Nothing
-    , _perKind = "drive#permission"
-    , _perDomain = Nothing
-    , _perValue = Nothing
-    , _perAdditionalRoles = Nothing
-    , _perRole = Nothing
-    , _perSelfLink = Nothing
-    , _perName = Nothing
-    , _perAuthKey = Nothing
-    , _perEmailAddress = Nothing
-    , _perId = Nothing
-    , _perType = Nothing
-    }
-
--- | A link to the profile photo, if available.
-perPhotoLink :: Lens' Permission (Maybe Text)
-perPhotoLink
-  = lens _perPhotoLink (\ s a -> s{_perPhotoLink = a})
-
--- | The ETag of the permission.
-perEtag :: Lens' Permission (Maybe Text)
-perEtag = lens _perEtag (\ s a -> s{_perEtag = a})
-
--- | Whether the link is required for this permission.
-perWithLink :: Lens' Permission (Maybe Bool)
-perWithLink
-  = lens _perWithLink (\ s a -> s{_perWithLink = a})
-
--- | This is always drive#permission.
-perKind :: Lens' Permission Text
-perKind = lens _perKind (\ s a -> s{_perKind = a})
-
--- | The domain name of the entity this permission refers to. This is an
--- output-only field which is present when the permission type is user,
--- group or domain.
-perDomain :: Lens' Permission (Maybe Text)
-perDomain
-  = lens _perDomain (\ s a -> s{_perDomain = a})
-
--- | The email address or domain name for the entity. This is used during
--- inserts and is not populated in responses. When making a
--- drive.permissions.insert request, exactly one of the id or value fields
--- must be specified.
-perValue :: Lens' Permission (Maybe Text)
-perValue = lens _perValue (\ s a -> s{_perValue = a})
-
--- | Additional roles for this user. Only commenter is currently allowed.
-perAdditionalRoles :: Lens' Permission [Text]
-perAdditionalRoles
-  = lens _perAdditionalRoles
-      (\ s a -> s{_perAdditionalRoles = a})
-      . _Default
-      . _Coerce
-
--- | The primary role for this user. Allowed values are: - owner - reader -
--- writer
-perRole :: Lens' Permission (Maybe Text)
-perRole = lens _perRole (\ s a -> s{_perRole = a})
-
--- | A link back to this permission.
-perSelfLink :: Lens' Permission (Maybe Text)
-perSelfLink
-  = lens _perSelfLink (\ s a -> s{_perSelfLink = a})
-
--- | The name for this permission.
-perName :: Lens' Permission (Maybe Text)
-perName = lens _perName (\ s a -> s{_perName = a})
-
--- | The authkey parameter required for this permission.
-perAuthKey :: Lens' Permission (Maybe Text)
-perAuthKey
-  = lens _perAuthKey (\ s a -> s{_perAuthKey = a})
-
--- | The email address of the user or group this permission refers to. This
--- is an output-only field which is present when the permission type is
--- user or group.
-perEmailAddress :: Lens' Permission (Maybe Text)
-perEmailAddress
-  = lens _perEmailAddress
-      (\ s a -> s{_perEmailAddress = a})
-
--- | The ID of the user this permission refers to, and identical to the
--- permissionId in the About and Files resources. When making a
--- drive.permissions.insert request, exactly one of the id or value fields
--- must be specified.
-perId :: Lens' Permission (Maybe Text)
-perId = lens _perId (\ s a -> s{_perId = a})
-
--- | The account type. Allowed values are: - user - group - domain - anyone
-perType :: Lens' Permission (Maybe Text)
-perType = lens _perType (\ s a -> s{_perType = a})
-
-instance FromJSON Permission where
-        parseJSON
-          = withObject "Permission"
-              (\ o ->
-                 Permission <$>
-                   (o .:? "photoLink") <*> (o .:? "etag") <*>
-                     (o .:? "withLink")
-                     <*> (o .:? "kind" .!= "drive#permission")
-                     <*> (o .:? "domain")
-                     <*> (o .:? "value")
-                     <*> (o .:? "additionalRoles" .!= mempty)
-                     <*> (o .:? "role")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "name")
-                     <*> (o .:? "authKey")
-                     <*> (o .:? "emailAddress")
-                     <*> (o .:? "id")
-                     <*> (o .:? "type"))
-
-instance ToJSON Permission where
-        toJSON Permission{..}
-          = object
-              (catMaybes
-                 [("photoLink" .=) <$> _perPhotoLink,
-                  ("etag" .=) <$> _perEtag,
-                  ("withLink" .=) <$> _perWithLink,
-                  Just ("kind" .= _perKind),
-                  ("domain" .=) <$> _perDomain,
-                  ("value" .=) <$> _perValue,
-                  ("additionalRoles" .=) <$> _perAdditionalRoles,
-                  ("role" .=) <$> _perRole,
-                  ("selfLink" .=) <$> _perSelfLink,
-                  ("name" .=) <$> _perName,
-                  ("authKey" .=) <$> _perAuthKey,
-                  ("emailAddress" .=) <$> _perEmailAddress,
-                  ("id" .=) <$> _perId, ("type" .=) <$> _perType])
-
--- | The metadata for a file.
---
--- /See:/ 'file' smart constructor.
-data File = File
-    { _fOwnedByMe             :: !(Maybe Bool)
-    , _fThumbnailLink         :: !(Maybe Text)
-    , _fFullFileExtension     :: !(Maybe Text)
-    , _fThumbnail             :: !(Maybe FileThumbnail)
-    , _fMarkedViewedByMeDate  :: !(Maybe DateTime')
-    , _fEtag                  :: !(Maybe Text)
-    , _fFileExtension         :: !(Maybe Text)
-    , _fCanComment            :: !(Maybe Bool)
-    , _fOwners                :: !(Maybe [User])
-    , _fOwnerNames            :: !(Maybe [Text])
-    , _fOpenWithLinks         :: !(Maybe FileOpenWithLinks)
-    , _fWebViewLink           :: !(Maybe Text)
-    , _fOriginalFilename      :: !(Maybe Text)
-    , _fKind                  :: !Text
-    , _fLastModifyingUser     :: !(Maybe User)
-    , _fIconLink              :: !(Maybe Text)
-    , _fEmbedLink             :: !(Maybe Text)
-    , _fFileSize              :: !(Maybe (Textual Int64))
-    , _fAppDataContents       :: !(Maybe Bool)
-    , _fImageMediaMetadata    :: !(Maybe FileImageMediaMetadata)
-    , _fExplicitlyTrashed     :: !(Maybe Bool)
-    , _fEditable              :: !(Maybe Bool)
-    , _fModifiedByMeDate      :: !(Maybe DateTime')
-    , _fLastViewedByMeDate    :: !(Maybe DateTime')
-    , _fShared                :: !(Maybe Bool)
-    , _fMD5Checksum           :: !(Maybe Text)
-    , _fFolderColorRgb        :: !(Maybe Text)
-    , _fMimeType              :: !(Maybe Text)
-    , _fCreatedDate           :: !(Maybe DateTime')
-    , _fSelfLink              :: !(Maybe Text)
-    , _fLastModifyingUserName :: !(Maybe Text)
-    , _fShareable             :: !(Maybe Bool)
-    , _fDownloadURL           :: !(Maybe Text)
-    , _fExportLinks           :: !(Maybe FileExportLinks)
-    , _fCopyable              :: !(Maybe Bool)
-    , _fParents               :: !(Maybe [ParentReference])
-    , _fSharedWithMeDate      :: !(Maybe DateTime')
-    , _fSpaces                :: !(Maybe [Text])
-    , _fVersion               :: !(Maybe (Textual Int64))
-    , _fUserPermission        :: !(Maybe Permission)
-    , _fWritersCanShare       :: !(Maybe Bool)
-    , _fDefaultOpenWithLink   :: !(Maybe Text)
-    , _fId                    :: !(Maybe Text)
-    , _fLabels                :: !(Maybe FileLabels)
-    , _fModifiedDate          :: !(Maybe DateTime')
-    , _fPermissions           :: !(Maybe [Permission])
-    , _fQuotaBytesUsed        :: !(Maybe (Textual Int64))
-    , _fTitle                 :: !(Maybe Text)
-    , _fAlternateLink         :: !(Maybe Text)
-    , _fVideoMediaMetadata    :: !(Maybe FileVideoMediaMetadata)
-    , _fHeadRevisionId        :: !(Maybe Text)
-    , _fDescription           :: !(Maybe Text)
-    , _fSharingUser           :: !(Maybe User)
-    , _fWebContentLink        :: !(Maybe Text)
-    , _fProperties            :: !(Maybe [Property])
-    , _fIndexableText         :: !(Maybe FileIndexableText)
-    } 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'
---
--- * 'fThumbnail'
---
--- * 'fMarkedViewedByMeDate'
---
--- * 'fEtag'
---
--- * 'fFileExtension'
---
--- * 'fCanComment'
---
--- * 'fOwners'
---
--- * 'fOwnerNames'
---
--- * 'fOpenWithLinks'
---
--- * 'fWebViewLink'
---
--- * 'fOriginalFilename'
---
--- * 'fKind'
---
--- * 'fLastModifyingUser'
---
--- * 'fIconLink'
---
--- * 'fEmbedLink'
---
--- * 'fFileSize'
---
--- * 'fAppDataContents'
---
--- * 'fImageMediaMetadata'
---
--- * 'fExplicitlyTrashed'
---
--- * 'fEditable'
---
--- * 'fModifiedByMeDate'
---
--- * 'fLastViewedByMeDate'
---
--- * 'fShared'
---
--- * 'fMD5Checksum'
---
--- * 'fFolderColorRgb'
---
--- * 'fMimeType'
---
--- * 'fCreatedDate'
---
--- * 'fSelfLink'
---
--- * 'fLastModifyingUserName'
---
--- * 'fShareable'
---
--- * 'fDownloadURL'
---
--- * 'fExportLinks'
---
--- * 'fCopyable'
---
--- * 'fParents'
---
--- * 'fSharedWithMeDate'
---
--- * 'fSpaces'
---
--- * 'fVersion'
---
--- * 'fUserPermission'
---
--- * 'fWritersCanShare'
---
--- * 'fDefaultOpenWithLink'
---
--- * 'fId'
---
--- * 'fLabels'
---
--- * 'fModifiedDate'
---
--- * 'fPermissions'
---
--- * 'fQuotaBytesUsed'
---
--- * 'fTitle'
---
--- * 'fAlternateLink'
---
--- * 'fVideoMediaMetadata'
---
--- * 'fHeadRevisionId'
---
--- * 'fDescription'
---
--- * 'fSharingUser'
---
--- * 'fWebContentLink'
---
--- * 'fProperties'
---
--- * 'fIndexableText'
-file
-    :: File
-file =
-    File
-    { _fOwnedByMe = Nothing
-    , _fThumbnailLink = Nothing
-    , _fFullFileExtension = Nothing
-    , _fThumbnail = Nothing
-    , _fMarkedViewedByMeDate = Nothing
-    , _fEtag = Nothing
-    , _fFileExtension = Nothing
-    , _fCanComment = Nothing
-    , _fOwners = Nothing
-    , _fOwnerNames = Nothing
-    , _fOpenWithLinks = Nothing
-    , _fWebViewLink = Nothing
-    , _fOriginalFilename = Nothing
-    , _fKind = "drive#file"
-    , _fLastModifyingUser = Nothing
-    , _fIconLink = Nothing
-    , _fEmbedLink = Nothing
-    , _fFileSize = Nothing
-    , _fAppDataContents = Nothing
-    , _fImageMediaMetadata = Nothing
-    , _fExplicitlyTrashed = Nothing
-    , _fEditable = Nothing
-    , _fModifiedByMeDate = Nothing
-    , _fLastViewedByMeDate = Nothing
-    , _fShared = Nothing
-    , _fMD5Checksum = Nothing
-    , _fFolderColorRgb = Nothing
-    , _fMimeType = Nothing
-    , _fCreatedDate = Nothing
-    , _fSelfLink = Nothing
-    , _fLastModifyingUserName = Nothing
-    , _fShareable = Nothing
-    , _fDownloadURL = Nothing
-    , _fExportLinks = Nothing
-    , _fCopyable = Nothing
-    , _fParents = Nothing
-    , _fSharedWithMeDate = Nothing
-    , _fSpaces = Nothing
-    , _fVersion = Nothing
-    , _fUserPermission = Nothing
-    , _fWritersCanShare = Nothing
-    , _fDefaultOpenWithLink = Nothing
-    , _fId = Nothing
-    , _fLabels = Nothing
-    , _fModifiedDate = Nothing
-    , _fPermissions = Nothing
-    , _fQuotaBytesUsed = Nothing
-    , _fTitle = Nothing
-    , _fAlternateLink = Nothing
-    , _fVideoMediaMetadata = Nothing
-    , _fHeadRevisionId = Nothing
-    , _fDescription = Nothing
-    , _fSharingUser = Nothing
-    , _fWebContentLink = Nothing
-    , _fProperties = Nothing
-    , _fIndexableText = Nothing
-    }
-
--- | Whether the file is owned by the current user.
-fOwnedByMe :: Lens' File (Maybe Bool)
-fOwnedByMe
-  = lens _fOwnedByMe (\ s a -> s{_fOwnedByMe = a})
-
--- | A short-lived link to the file\'s thumbnail. Typically lasts on the
--- order of hours.
-fThumbnailLink :: Lens' File (Maybe Text)
-fThumbnailLink
-  = lens _fThumbnailLink
-      (\ s a -> s{_fThumbnailLink = a})
-
--- | The full file extension; extracted from the title. May contain multiple
--- concatenated extensions, such as \"tar.gz\". Removing an extension from
--- the title does not clear this field; however, changing the extension on
--- the title does update this field. This field is only populated for files
--- with content stored in Drive; it is not populated for Google Docs or
--- shortcut files.
-fFullFileExtension :: Lens' File (Maybe Text)
-fFullFileExtension
-  = lens _fFullFileExtension
-      (\ s a -> s{_fFullFileExtension = a})
-
--- | Thumbnail for the file. Only accepted on upload and for files that are
--- not already thumbnailed by Google.
-fThumbnail :: Lens' File (Maybe FileThumbnail)
-fThumbnail
-  = lens _fThumbnail (\ s a -> s{_fThumbnail = a})
-
--- | Deprecated.
-fMarkedViewedByMeDate :: Lens' File (Maybe UTCTime)
-fMarkedViewedByMeDate
-  = lens _fMarkedViewedByMeDate
-      (\ s a -> s{_fMarkedViewedByMeDate = a})
-      . mapping _DateTime
-
--- | ETag of the file.
-fEtag :: Lens' File (Maybe Text)
-fEtag = lens _fEtag (\ s a -> s{_fEtag = a})
-
--- | The final component of fullFileExtension with trailing text that does
--- not appear to be part of the extension removed. This field is only
--- populated for files with content stored in Drive; it is not populated
--- for Google Docs or shortcut files.
-fFileExtension :: Lens' File (Maybe Text)
-fFileExtension
-  = lens _fFileExtension
-      (\ s a -> s{_fFileExtension = a})
-
--- | Whether the current user can comment on the file.
-fCanComment :: Lens' File (Maybe Bool)
-fCanComment
-  = lens _fCanComment (\ s a -> s{_fCanComment = a})
-
--- | The owner(s) of this file.
-fOwners :: Lens' File [User]
-fOwners
-  = lens _fOwners (\ s a -> s{_fOwners = a}) . _Default
-      . _Coerce
-
--- | Name(s) of the owner(s) of this file.
-fOwnerNames :: Lens' File [Text]
-fOwnerNames
-  = lens _fOwnerNames (\ s a -> s{_fOwnerNames = a}) .
-      _Default
-      . _Coerce
-
--- | A map of the id of each of the user\'s apps to a link to open this file
--- with that app. Only populated when the drive.apps.readonly scope is
--- used.
-fOpenWithLinks :: Lens' File (Maybe FileOpenWithLinks)
-fOpenWithLinks
-  = lens _fOpenWithLinks
-      (\ s a -> s{_fOpenWithLinks = a})
-
--- | A link only available on public folders for viewing their static web
--- assets (HTML, CSS, JS, etc) via Google Drive\'s Website Hosting.
-fWebViewLink :: Lens' File (Maybe Text)
-fWebViewLink
-  = lens _fWebViewLink (\ s a -> s{_fWebViewLink = a})
-
--- | The original filename if the file was uploaded manually, or the original
--- title if the file was inserted through the API. Note that renames of the
--- title will not change the original filename. This field is only
--- populated for files with content stored in Drive; it is not populated
--- for Google Docs or shortcut files.
-fOriginalFilename :: Lens' File (Maybe Text)
-fOriginalFilename
-  = lens _fOriginalFilename
-      (\ s a -> s{_fOriginalFilename = a})
-
--- | The type of file. This is always drive#file.
-fKind :: Lens' File Text
-fKind = lens _fKind (\ s a -> s{_fKind = a})
-
--- | The last user to modify this file.
-fLastModifyingUser :: Lens' File (Maybe User)
-fLastModifyingUser
-  = lens _fLastModifyingUser
-      (\ s a -> s{_fLastModifyingUser = a})
-
--- | A link to the file\'s icon.
-fIconLink :: Lens' File (Maybe Text)
-fIconLink
-  = lens _fIconLink (\ s a -> s{_fIconLink = a})
-
--- | A link for embedding the file.
-fEmbedLink :: Lens' File (Maybe Text)
-fEmbedLink
-  = lens _fEmbedLink (\ s a -> s{_fEmbedLink = a})
-
--- | The size of the file in bytes. This field is only populated for files
--- with content stored in Drive; it is not populated for Google Docs or
--- shortcut files.
-fFileSize :: Lens' File (Maybe Int64)
-fFileSize
-  = lens _fFileSize (\ s a -> s{_fFileSize = a}) .
-      mapping _Coerce
-
--- | Whether this file is in the Application Data folder.
-fAppDataContents :: Lens' File (Maybe Bool)
-fAppDataContents
-  = lens _fAppDataContents
-      (\ s a -> s{_fAppDataContents = a})
-
--- | Metadata about image media. This will only be present for image types,
--- and its contents will depend on what can be parsed from the image
--- content.
-fImageMediaMetadata :: Lens' File (Maybe FileImageMediaMetadata)
-fImageMediaMetadata
-  = lens _fImageMediaMetadata
-      (\ s a -> s{_fImageMediaMetadata = a})
-
--- | Whether this file has been explicitly trashed, as opposed to recursively
--- trashed.
-fExplicitlyTrashed :: Lens' File (Maybe Bool)
-fExplicitlyTrashed
-  = lens _fExplicitlyTrashed
-      (\ s a -> s{_fExplicitlyTrashed = a})
-
--- | Whether the file can be edited by the current user.
-fEditable :: Lens' File (Maybe Bool)
-fEditable
-  = lens _fEditable (\ s a -> s{_fEditable = a})
-
--- | Last time this file was modified by the user (formatted RFC 3339
--- timestamp). Note that setting modifiedDate will also update the
--- modifiedByMe date for the user which set the date.
-fModifiedByMeDate :: Lens' File (Maybe UTCTime)
-fModifiedByMeDate
-  = lens _fModifiedByMeDate
-      (\ s a -> s{_fModifiedByMeDate = a})
-      . mapping _DateTime
-
--- | Last time this file was viewed by the user (formatted RFC 3339
--- timestamp).
-fLastViewedByMeDate :: Lens' File (Maybe UTCTime)
-fLastViewedByMeDate
-  = lens _fLastViewedByMeDate
-      (\ s a -> s{_fLastViewedByMeDate = a})
-      . mapping _DateTime
-
--- | Whether the file has been shared.
-fShared :: Lens' File (Maybe Bool)
-fShared = lens _fShared (\ s a -> s{_fShared = a})
-
--- | An MD5 checksum for the content of this file. This field is only
--- populated for files with content stored in Drive; it is not populated
--- for Google Docs or shortcut files.
-fMD5Checksum :: Lens' File (Maybe Text)
-fMD5Checksum
-  = lens _fMD5Checksum (\ s a -> s{_fMD5Checksum = a})
-
--- | Folder color as an RGB hex string if the file is a folder. The list of
--- supported colors is available in the folderColorPalette field of the
--- About resource. If an unsupported color is specified, it will be changed
--- to the closest color in the palette.
-fFolderColorRgb :: Lens' File (Maybe Text)
-fFolderColorRgb
-  = lens _fFolderColorRgb
-      (\ s a -> s{_fFolderColorRgb = a})
-
--- | The MIME type of the file. This is only mutable on update when uploading
--- new content. This field can be left blank, and the mimetype will be
--- determined from the uploaded content\'s MIME type.
-fMimeType :: Lens' File (Maybe Text)
-fMimeType
-  = lens _fMimeType (\ s a -> s{_fMimeType = a})
-
--- | Create time for this file (formatted RFC 3339 timestamp).
-fCreatedDate :: Lens' File (Maybe UTCTime)
-fCreatedDate
-  = lens _fCreatedDate (\ s a -> s{_fCreatedDate = a})
-      . mapping _DateTime
-
--- | A link back to this file.
-fSelfLink :: Lens' File (Maybe Text)
-fSelfLink
-  = lens _fSelfLink (\ s a -> s{_fSelfLink = a})
-
--- | Name of the last user to modify this file.
-fLastModifyingUserName :: Lens' File (Maybe Text)
-fLastModifyingUserName
-  = lens _fLastModifyingUserName
-      (\ s a -> s{_fLastModifyingUserName = a})
-
--- | Whether the file\'s sharing settings can be modified by the current
--- user.
-fShareable :: Lens' File (Maybe Bool)
-fShareable
-  = lens _fShareable (\ s a -> s{_fShareable = a})
-
-fDownloadURL :: Lens' File (Maybe Text)
-fDownloadURL
-  = lens _fDownloadURL (\ s a -> s{_fDownloadURL = a})
-
--- | Links for exporting Google Docs to specific formats.
-fExportLinks :: Lens' File (Maybe FileExportLinks)
-fExportLinks
-  = lens _fExportLinks (\ s a -> s{_fExportLinks = a})
-
--- | Whether the file can be copied by the current user.
-fCopyable :: Lens' File (Maybe Bool)
-fCopyable
-  = lens _fCopyable (\ s a -> s{_fCopyable = a})
-
--- | Collection of parent folders which contain this file. Setting this field
--- will put the file in all of the provided folders. On insert, if no
--- folders are provided, the file will be placed in the default root
--- folder.
-fParents :: Lens' File [ParentReference]
-fParents
-  = lens _fParents (\ s a -> s{_fParents = a}) .
-      _Default
-      . _Coerce
-
--- | Time at which this file was shared with the user (formatted RFC 3339
--- timestamp).
-fSharedWithMeDate :: Lens' File (Maybe UTCTime)
-fSharedWithMeDate
-  = lens _fSharedWithMeDate
-      (\ s a -> s{_fSharedWithMeDate = a})
-      . mapping _DateTime
-
--- | The list of spaces which contain the file. 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 requesting user.
-fVersion :: Lens' File (Maybe Int64)
-fVersion
-  = lens _fVersion (\ s a -> s{_fVersion = a}) .
-      mapping _Coerce
-
--- | The permissions for the authenticated user on this file.
-fUserPermission :: Lens' File (Maybe Permission)
-fUserPermission
-  = lens _fUserPermission
-      (\ s a -> s{_fUserPermission = a})
-
--- | Whether writers can share the document with other users.
-fWritersCanShare :: Lens' File (Maybe Bool)
-fWritersCanShare
-  = lens _fWritersCanShare
-      (\ s a -> s{_fWritersCanShare = a})
-
--- | A link to open this file with the user\'s default app for this file.
--- Only populated when the drive.apps.readonly scope is used.
-fDefaultOpenWithLink :: Lens' File (Maybe Text)
-fDefaultOpenWithLink
-  = lens _fDefaultOpenWithLink
-      (\ s a -> s{_fDefaultOpenWithLink = a})
-
--- | The ID of the file.
-fId :: Lens' File (Maybe Text)
-fId = lens _fId (\ s a -> s{_fId = a})
-
--- | A group of labels for the file.
-fLabels :: Lens' File (Maybe FileLabels)
-fLabels = lens _fLabels (\ s a -> s{_fLabels = a})
-
--- | Last time this file was modified by anyone (formatted RFC 3339
--- timestamp). This is only mutable on update when the setModifiedDate
--- parameter is set.
-fModifiedDate :: Lens' File (Maybe UTCTime)
-fModifiedDate
-  = lens _fModifiedDate
-      (\ s a -> s{_fModifiedDate = a})
-      . mapping _DateTime
-
--- | The list of permissions for users with access to this file.
-fPermissions :: Lens' File [Permission]
-fPermissions
-  = lens _fPermissions (\ s a -> s{_fPermissions = a})
-      . _Default
-      . _Coerce
-
--- | The number of quota bytes used by this file.
-fQuotaBytesUsed :: Lens' File (Maybe Int64)
-fQuotaBytesUsed
-  = lens _fQuotaBytesUsed
-      (\ s a -> s{_fQuotaBytesUsed = a})
-      . mapping _Coerce
-
--- | The title of this file.
-fTitle :: Lens' File (Maybe Text)
-fTitle = lens _fTitle (\ s a -> s{_fTitle = a})
-
--- | A link for opening the file in a relevant Google editor or viewer.
-fAlternateLink :: Lens' File (Maybe Text)
-fAlternateLink
-  = lens _fAlternateLink
-      (\ s a -> s{_fAlternateLink = a})
-
--- | Metadata about video media. This will only be present for video types.
-fVideoMediaMetadata :: Lens' File (Maybe FileVideoMediaMetadata)
-fVideoMediaMetadata
-  = lens _fVideoMediaMetadata
-      (\ s a -> s{_fVideoMediaMetadata = a})
-
--- | The ID of the file\'s head revision. This field is only populated for
--- files with content stored in Drive; it is not populated for Google Docs
--- or shortcut files.
-fHeadRevisionId :: Lens' File (Maybe Text)
-fHeadRevisionId
-  = lens _fHeadRevisionId
-      (\ s a -> s{_fHeadRevisionId = a})
-
--- | A short description of the file.
-fDescription :: Lens' File (Maybe Text)
-fDescription
-  = lens _fDescription (\ s a -> s{_fDescription = a})
-
--- | User that shared the item with the current user, if available.
-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 using cookie
--- based authentication. In cases where the content is shared publicly, the
--- content can be downloaded without any credentials.
-fWebContentLink :: Lens' File (Maybe Text)
-fWebContentLink
-  = lens _fWebContentLink
-      (\ s a -> s{_fWebContentLink = a})
-
--- | The list of properties.
-fProperties :: Lens' File [Property]
-fProperties
-  = lens _fProperties (\ s a -> s{_fProperties = a}) .
-      _Default
-      . _Coerce
-
--- | Indexable text attributes for the file (can only be written)
-fIndexableText :: Lens' File (Maybe FileIndexableText)
-fIndexableText
-  = lens _fIndexableText
-      (\ s a -> s{_fIndexableText = a})
-
-instance FromJSON File where
-        parseJSON
-          = withObject "File"
-              (\ o ->
-                 File <$>
-                   (o .:? "ownedByMe") <*> (o .:? "thumbnailLink") <*>
-                     (o .:? "fullFileExtension")
-                     <*> (o .:? "thumbnail")
-                     <*> (o .:? "markedViewedByMeDate")
-                     <*> (o .:? "etag")
-                     <*> (o .:? "fileExtension")
-                     <*> (o .:? "canComment")
-                     <*> (o .:? "owners" .!= mempty)
-                     <*> (o .:? "ownerNames" .!= mempty)
-                     <*> (o .:? "openWithLinks")
-                     <*> (o .:? "webViewLink")
-                     <*> (o .:? "originalFilename")
-                     <*> (o .:? "kind" .!= "drive#file")
-                     <*> (o .:? "lastModifyingUser")
-                     <*> (o .:? "iconLink")
-                     <*> (o .:? "embedLink")
-                     <*> (o .:? "fileSize")
-                     <*> (o .:? "appDataContents")
-                     <*> (o .:? "imageMediaMetadata")
-                     <*> (o .:? "explicitlyTrashed")
-                     <*> (o .:? "editable")
-                     <*> (o .:? "modifiedByMeDate")
-                     <*> (o .:? "lastViewedByMeDate")
-                     <*> (o .:? "shared")
-                     <*> (o .:? "md5Checksum")
-                     <*> (o .:? "folderColorRgb")
-                     <*> (o .:? "mimeType")
-                     <*> (o .:? "createdDate")
-                     <*> (o .:? "selfLink")
-                     <*> (o .:? "lastModifyingUserName")
-                     <*> (o .:? "shareable")
-                     <*> (o .:? "downloadUrl")
-                     <*> (o .:? "exportLinks")
-                     <*> (o .:? "copyable")
-                     <*> (o .:? "parents" .!= mempty)
-                     <*> (o .:? "sharedWithMeDate")
-                     <*> (o .:? "spaces" .!= mempty)
-                     <*> (o .:? "version")
-                     <*> (o .:? "userPermission")
-                     <*> (o .:? "writersCanShare")
-                     <*> (o .:? "defaultOpenWithLink")
-                     <*> (o .:? "id")
-                     <*> (o .:? "labels")
-                     <*> (o .:? "modifiedDate")
-                     <*> (o .:? "permissions" .!= mempty)
-                     <*> (o .:? "quotaBytesUsed")
-                     <*> (o .:? "title")
-                     <*> (o .:? "alternateLink")
-                     <*> (o .:? "videoMediaMetadata")
-                     <*> (o .:? "headRevisionId")
-                     <*> (o .:? "description")
-                     <*> (o .:? "sharingUser")
-                     <*> (o .:? "webContentLink")
-                     <*> (o .:? "properties" .!= mempty)
-                     <*> (o .:? "indexableText"))
-
-instance ToJSON File where
-        toJSON File{..}
-          = object
-              (catMaybes
-                 [("ownedByMe" .=) <$> _fOwnedByMe,
-                  ("thumbnailLink" .=) <$> _fThumbnailLink,
-                  ("fullFileExtension" .=) <$> _fFullFileExtension,
-                  ("thumbnail" .=) <$> _fThumbnail,
-                  ("markedViewedByMeDate" .=) <$>
-                    _fMarkedViewedByMeDate,
-                  ("etag" .=) <$> _fEtag,
-                  ("fileExtension" .=) <$> _fFileExtension,
-                  ("canComment" .=) <$> _fCanComment,
-                  ("owners" .=) <$> _fOwners,
-                  ("ownerNames" .=) <$> _fOwnerNames,
-                  ("openWithLinks" .=) <$> _fOpenWithLinks,
-                  ("webViewLink" .=) <$> _fWebViewLink,
-                  ("originalFilename" .=) <$> _fOriginalFilename,
-                  Just ("kind" .= _fKind),
-                  ("lastModifyingUser" .=) <$> _fLastModifyingUser,
-                  ("iconLink" .=) <$> _fIconLink,
-                  ("embedLink" .=) <$> _fEmbedLink,
-                  ("fileSize" .=) <$> _fFileSize,
-                  ("appDataContents" .=) <$> _fAppDataContents,
-                  ("imageMediaMetadata" .=) <$> _fImageMediaMetadata,
-                  ("explicitlyTrashed" .=) <$> _fExplicitlyTrashed,
-                  ("editable" .=) <$> _fEditable,
-                  ("modifiedByMeDate" .=) <$> _fModifiedByMeDate,
-                  ("lastViewedByMeDate" .=) <$> _fLastViewedByMeDate,
-                  ("shared" .=) <$> _fShared,
-                  ("md5Checksum" .=) <$> _fMD5Checksum,
-                  ("folderColorRgb" .=) <$> _fFolderColorRgb,
-                  ("mimeType" .=) <$> _fMimeType,
-                  ("createdDate" .=) <$> _fCreatedDate,
-                  ("selfLink" .=) <$> _fSelfLink,
-                  ("lastModifyingUserName" .=) <$>
-                    _fLastModifyingUserName,
-                  ("shareable" .=) <$> _fShareable,
-                  ("downloadUrl" .=) <$> _fDownloadURL,
-                  ("exportLinks" .=) <$> _fExportLinks,
-                  ("copyable" .=) <$> _fCopyable,
-                  ("parents" .=) <$> _fParents,
-                  ("sharedWithMeDate" .=) <$> _fSharedWithMeDate,
-                  ("spaces" .=) <$> _fSpaces,
-                  ("version" .=) <$> _fVersion,
-                  ("userPermission" .=) <$> _fUserPermission,
-                  ("writersCanShare" .=) <$> _fWritersCanShare,
-                  ("defaultOpenWithLink" .=) <$> _fDefaultOpenWithLink,
-                  ("id" .=) <$> _fId, ("labels" .=) <$> _fLabels,
-                  ("modifiedDate" .=) <$> _fModifiedDate,
-                  ("permissions" .=) <$> _fPermissions,
-                  ("quotaBytesUsed" .=) <$> _fQuotaBytesUsed,
-                  ("title" .=) <$> _fTitle,
-                  ("alternateLink" .=) <$> _fAlternateLink,
-                  ("videoMediaMetadata" .=) <$> _fVideoMediaMetadata,
-                  ("headRevisionId" .=) <$> _fHeadRevisionId,
-                  ("description" .=) <$> _fDescription,
-                  ("sharingUser" .=) <$> _fSharingUser,
-                  ("webContentLink" .=) <$> _fWebContentLink,
-                  ("properties" .=) <$> _fProperties,
-                  ("indexableText" .=) <$> _fIndexableText])
-
--- | An ID for a user or group as seen in Permission items.
---
--- /See:/ 'permissionId' smart constructor.
-data PermissionId = PermissionId
-    { _piKind :: !Text
-    , _piId   :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PermissionId' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'piKind'
---
--- * 'piId'
-permissionId
-    :: PermissionId
-permissionId =
-    PermissionId
-    { _piKind = "drive#permissionId"
-    , _piId = Nothing
-    }
-
--- | This is always drive#permissionId.
-piKind :: Lens' PermissionId Text
-piKind = lens _piKind (\ s a -> s{_piKind = a})
-
--- | The permission ID.
-piId :: Lens' PermissionId (Maybe Text)
-piId = lens _piId (\ s a -> s{_piId = a})
-
-instance FromJSON PermissionId where
-        parseJSON
-          = withObject "PermissionId"
-              (\ o ->
-                 PermissionId <$>
-                   (o .:? "kind" .!= "drive#permissionId") <*>
-                     (o .:? "id"))
-
-instance ToJSON PermissionId where
-        toJSON PermissionId{..}
-          = object
-              (catMaybes
-                 [Just ("kind" .= _piKind), ("id" .=) <$> _piId])
-
--- | A list of a file\'s parents.
---
--- /See:/ 'parentList' smart constructor.
-data ParentList = ParentList
-    { _parEtag     :: !(Maybe Text)
-    , _parKind     :: !Text
-    , _parItems    :: !(Maybe [ParentReference])
-    , _parSelfLink :: !(Maybe Text)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ParentList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'parEtag'
---
--- * 'parKind'
---
--- * 'parItems'
---
--- * 'parSelfLink'
-parentList
-    :: ParentList
-parentList =
-    ParentList
-    { _parEtag = Nothing
-    , _parKind = "drive#parentList"
-    , _parItems = Nothing
-    , _parSelfLink = Nothing
-    }
-
--- | The ETag of the list.
-parEtag :: Lens' ParentList (Maybe Text)
-parEtag = lens _parEtag (\ s a -> s{_parEtag = a})
-
--- | This is always drive#parentList.
-parKind :: Lens' ParentList Text
-parKind = lens _parKind (\ s a -> s{_parKind = a})
-
--- | The actual list of parents.
-parItems :: Lens' ParentList [ParentReference]
-parItems
-  = lens _parItems (\ s a -> s{_parItems = a}) .
-      _Default
-      . _Coerce
-
--- | A link back to this list.
-parSelfLink :: Lens' ParentList (Maybe Text)
-parSelfLink
-  = lens _parSelfLink (\ s a -> s{_parSelfLink = a})
-
-instance FromJSON ParentList where
-        parseJSON
-          = withObject "ParentList"
-              (\ o ->
-                 ParentList <$>
-                   (o .:? "etag") <*>
-                     (o .:? "kind" .!= "drive#parentList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink"))
-
-instance ToJSON ParentList where
-        toJSON ParentList{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _parEtag, Just ("kind" .= _parKind),
-                  ("items" .=) <$> _parItems,
-                  ("selfLink" .=) <$> _parSelfLink])
-
--- | A list of generated IDs which can be provided in insert 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})
-
--- | This is always 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 JSON representation of a list of comments on a file in Google Drive.
---
--- /See:/ 'commentList' smart constructor.
-data CommentList = CommentList
-    { _comoNextPageToken :: !(Maybe Text)
-    , _comoNextLink      :: !(Maybe Text)
-    , _comoKind          :: !Text
-    , _comoItems         :: !(Maybe [Comment])
-    , _comoSelfLink      :: !(Maybe Text)
-    } 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:
---
--- * 'comoNextPageToken'
---
--- * 'comoNextLink'
---
--- * 'comoKind'
---
--- * 'comoItems'
---
--- * 'comoSelfLink'
-commentList
-    :: CommentList
-commentList =
-    CommentList
-    { _comoNextPageToken = Nothing
-    , _comoNextLink = Nothing
-    , _comoKind = "drive#commentList"
-    , _comoItems = Nothing
-    , _comoSelfLink = Nothing
-    }
-
--- | The token to use to request the next page of results.
-comoNextPageToken :: Lens' CommentList (Maybe Text)
-comoNextPageToken
-  = lens _comoNextPageToken
-      (\ s a -> s{_comoNextPageToken = a})
-
--- | A link to the next page of comments.
-comoNextLink :: Lens' CommentList (Maybe Text)
-comoNextLink
-  = lens _comoNextLink (\ s a -> s{_comoNextLink = a})
-
--- | This is always drive#commentList.
-comoKind :: Lens' CommentList Text
-comoKind = lens _comoKind (\ s a -> s{_comoKind = a})
-
--- | List of comments.
-comoItems :: Lens' CommentList [Comment]
-comoItems
-  = lens _comoItems (\ s a -> s{_comoItems = a}) .
-      _Default
-      . _Coerce
-
--- | A link back to this list.
-comoSelfLink :: Lens' CommentList (Maybe Text)
-comoSelfLink
-  = lens _comoSelfLink (\ s a -> s{_comoSelfLink = a})
-
-instance FromJSON CommentList where
-        parseJSON
-          = withObject "CommentList"
-              (\ o ->
-                 CommentList <$>
-                   (o .:? "nextPageToken") <*> (o .:? "nextLink") <*>
-                     (o .:? "kind" .!= "drive#commentList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink"))
-
-instance ToJSON CommentList where
-        toJSON CommentList{..}
-          = object
-              (catMaybes
-                 [("nextPageToken" .=) <$> _comoNextPageToken,
-                  ("nextLink" .=) <$> _comoNextLink,
-                  Just ("kind" .= _comoKind),
-                  ("items" .=) <$> _comoItems,
-                  ("selfLink" .=) <$> _comoSelfLink])
-
--- | A list of revisions of a file.
---
--- /See:/ 'revisionList' smart constructor.
-data RevisionList = RevisionList
-    { _rlEtag     :: !(Maybe Text)
-    , _rlKind     :: !Text
-    , _rlItems    :: !(Maybe [Revision])
-    , _rlSelfLink :: !(Maybe Text)
-    } 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:
---
--- * 'rlEtag'
---
--- * 'rlKind'
---
--- * 'rlItems'
---
--- * 'rlSelfLink'
-revisionList
-    :: RevisionList
-revisionList =
-    RevisionList
-    { _rlEtag = Nothing
-    , _rlKind = "drive#revisionList"
-    , _rlItems = Nothing
-    , _rlSelfLink = Nothing
-    }
-
--- | The ETag of the list.
-rlEtag :: Lens' RevisionList (Maybe Text)
-rlEtag = lens _rlEtag (\ s a -> s{_rlEtag = a})
-
--- | This is always drive#revisionList.
-rlKind :: Lens' RevisionList Text
-rlKind = lens _rlKind (\ s a -> s{_rlKind = a})
-
--- | The actual list of revisions.
-rlItems :: Lens' RevisionList [Revision]
-rlItems
-  = lens _rlItems (\ s a -> s{_rlItems = a}) . _Default
-      . _Coerce
-
--- | A link back to this list.
-rlSelfLink :: Lens' RevisionList (Maybe Text)
-rlSelfLink
-  = lens _rlSelfLink (\ s a -> s{_rlSelfLink = a})
-
-instance FromJSON RevisionList where
-        parseJSON
-          = withObject "RevisionList"
-              (\ o ->
-                 RevisionList <$>
-                   (o .:? "etag") <*>
-                     (o .:? "kind" .!= "drive#revisionList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink"))
-
-instance ToJSON RevisionList where
-        toJSON RevisionList{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _rlEtag, Just ("kind" .= _rlKind),
-                  ("items" .=) <$> _rlItems,
-                  ("selfLink" .=) <$> _rlSelfLink])
-
--- | A list of permissions associated with a file.
---
--- /See:/ 'permissionList' smart constructor.
-data PermissionList = PermissionList
-    { _pllEtag     :: !(Maybe Text)
-    , _pllKind     :: !Text
-    , _pllItems    :: !(Maybe [Permission])
-    , _pllSelfLink :: !(Maybe Text)
-    } 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:
---
--- * 'pllEtag'
---
--- * 'pllKind'
---
--- * 'pllItems'
---
--- * 'pllSelfLink'
-permissionList
-    :: PermissionList
-permissionList =
-    PermissionList
-    { _pllEtag = Nothing
-    , _pllKind = "drive#permissionList"
-    , _pllItems = Nothing
-    , _pllSelfLink = Nothing
-    }
-
--- | The ETag of the list.
-pllEtag :: Lens' PermissionList (Maybe Text)
-pllEtag = lens _pllEtag (\ s a -> s{_pllEtag = a})
-
--- | This is always drive#permissionList.
-pllKind :: Lens' PermissionList Text
-pllKind = lens _pllKind (\ s a -> s{_pllKind = a})
-
--- | The actual list of permissions.
-pllItems :: Lens' PermissionList [Permission]
-pllItems
-  = lens _pllItems (\ s a -> s{_pllItems = a}) .
-      _Default
-      . _Coerce
-
--- | A link back to this list.
-pllSelfLink :: Lens' PermissionList (Maybe Text)
-pllSelfLink
-  = lens _pllSelfLink (\ s a -> s{_pllSelfLink = a})
-
-instance FromJSON PermissionList where
-        parseJSON
-          = withObject "PermissionList"
-              (\ o ->
-                 PermissionList <$>
-                   (o .:? "etag") <*>
-                     (o .:? "kind" .!= "drive#permissionList")
-                     <*> (o .:? "items" .!= mempty)
-                     <*> (o .:? "selfLink"))
-
-instance ToJSON PermissionList where
-        toJSON PermissionList{..}
-          = object
-              (catMaybes
-                 [("etag" .=) <$> _pllEtag, Just ("kind" .= _pllKind),
-                  ("items" .=) <$> _pllItems,
-                  ("selfLink" .=) <$> _pllSelfLink])
+-- Copyright   : (c) 2015-2016 Brendan Hay
+-- License     : Mozilla Public License, v. 2.0.
+-- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
+-- Stability   : auto-generated
+-- Portability : non-portable (GHC extensions)
+--
+module Network.Google.Drive.Types.Product where
+
+import           Network.Google.Drive.Types.Sum
+import           Network.Google.Prelude
+
+-- | A list of files.
+--
+-- /See:/ 'fileList' smart constructor.
+data FileList = FileList'
+    { _flNextPageToken :: !(Maybe Text)
+    , _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'
+--
+-- * 'flKind'
+--
+-- * 'flFiles'
+fileList
+    :: FileList
+fileList =
+    FileList'
+    { _flNextPageToken = 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.
+flNextPageToken :: Lens' FileList (Maybe Text)
+flNextPageToken
+  = lens _flNextPageToken
+      (\ s a -> s{_flNextPageToken = a})
+
+-- | This is always drive#fileList.
+flKind :: Lens' FileList Text
+flKind = lens _flKind (\ s a -> s{_flKind = a})
+
+-- | The page of files.
+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 .:? "kind" .!= "drive#fileList")
+                     <*> (o .:? "files" .!= mempty))
+
+instance ToJSON FileList where
+        toJSON FileList'{..}
+          = object
+              (catMaybes
+                 [("nextPageToken" .=) <$> _flNextPageToken,
+                  Just ("kind" .= _flKind), ("files" .=) <$> _flFiles])
+
+-- | 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
+
+-- | This is always 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 the file.
+--
+-- /See:/ 'fileCapabilities' smart constructor.
+data FileCapabilities = FileCapabilities'
+    { _fcCanComment       :: !(Maybe Bool)
+    , _fcCanEdit          :: !(Maybe Bool)
+    , _fcCanReadRevisions :: !(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:
+--
+-- * 'fcCanComment'
+--
+-- * 'fcCanEdit'
+--
+-- * 'fcCanReadRevisions'
+--
+-- * 'fcCanCopy'
+--
+-- * 'fcCanShare'
+fileCapabilities
+    :: FileCapabilities
+fileCapabilities =
+    FileCapabilities'
+    { _fcCanComment = Nothing
+    , _fcCanEdit = Nothing
+    , _fcCanReadRevisions = Nothing
+    , _fcCanCopy = Nothing
+    , _fcCanShare = Nothing
+    }
+
+-- | Whether the user can comment on the file.
+fcCanComment :: Lens' FileCapabilities (Maybe Bool)
+fcCanComment
+  = lens _fcCanComment (\ s a -> s{_fcCanComment = a})
+
+-- | Whether the user can edit the file\'s content.
+fcCanEdit :: Lens' FileCapabilities (Maybe Bool)
+fcCanEdit
+  = lens _fcCanEdit (\ s a -> s{_fcCanEdit = a})
+
+-- | Whether the current user has read access to the Revisions resource of
+-- the file.
+fcCanReadRevisions :: Lens' FileCapabilities (Maybe Bool)
+fcCanReadRevisions
+  = lens _fcCanReadRevisions
+      (\ s a -> s{_fcCanReadRevisions = a})
+
+-- | Whether the user can copy the file.
+fcCanCopy :: Lens' FileCapabilities (Maybe Bool)
+fcCanCopy
+  = lens _fcCanCopy (\ s a -> s{_fcCanCopy = a})
+
+-- | Whether the user can modify the file\'s permissions and sharing
+-- settings.
+fcCanShare :: Lens' FileCapabilities (Maybe Bool)
+fcCanShare
+  = lens _fcCanShare (\ s a -> s{_fcCanShare = a})
+
+instance FromJSON FileCapabilities where
+        parseJSON
+          = withObject "FileCapabilities"
+              (\ o ->
+                 FileCapabilities' <$>
+                   (o .:? "canComment") <*> (o .:? "canEdit") <*>
+                     (o .:? "canReadRevisions")
+                     <*> (o .:? "canCopy")
+                     <*> (o .:? "canShare"))
+
+instance ToJSON FileCapabilities where
+        toJSON FileCapabilities'{..}
+          = object
+              (catMaybes
+                 [("canComment" .=) <$> _fcCanComment,
+                  ("canEdit" .=) <$> _fcCanEdit,
+                  ("canReadRevisions" .=) <$> _fcCanReadRevisions,
+                  ("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.
+rlNextPageToken :: Lens' ReplyList (Maybe Text)
+rlNextPageToken
+  = lens _rlNextPageToken
+      (\ s a -> s{_rlNextPageToken = a})
+
+-- | This is always drive#replyList.
+rlKind :: Lens' ReplyList Text
+rlKind = lens _rlKind (\ s a -> s{_rlKind = a})
+
+-- | The page of replies.
+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 Base64)
+    , _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 _Base64
+
+-- | 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])
+
+-- | 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])
+
+-- | 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.
+--
+-- /See:/ 'change' smart constructor.
+data Change = Change'
+    { _chaRemoved :: !(Maybe Bool)
+    , _chaTime    :: !(Maybe DateTime')
+    , _chaKind    :: !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'
+--
+-- * 'chaFileId'
+--
+-- * 'chaFile'
+change
+    :: Change
+change =
+    Change'
+    { _chaRemoved = Nothing
+    , _chaTime = Nothing
+    , _chaKind = "drive#change"
+    , _chaFileId = Nothing
+    , _chaFile = Nothing
+    }
+
+-- | Whether the file has been removed from the view of the changes list, for
+-- example by deletion or lost 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
+
+-- | This is always drive#change.
+chaKind :: Lens' Change Text
+chaKind = lens _chaKind (\ s a -> s{_chaKind = 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 file has not been removed.
+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 .:? "fileId")
+                     <*> (o .:? "file"))
+
+instance ToJSON Change where
+        toJSON Change'{..}
+          = object
+              (catMaybes
+                 [("removed" .=) <$> _chaRemoved,
+                  ("time" .=) <$> _chaTime, Just ("kind" .= _chaKind),
+                  ("fileId" .=) <$> _chaFileId,
+                  ("file" .=) <$> _chaFile])
+
+-- | 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})
+
+-- | This is always 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 current changes list has been reached.
+clNextPageToken :: Lens' ChangeList (Maybe Text)
+clNextPageToken
+  = lens _clNextPageToken
+      (\ s a -> s{_clNextPageToken = a})
+
+-- | The page of changes.
+clChanges :: Lens' ChangeList [Change]
+clChanges
+  = lens _clChanges (\ s a -> s{_clChanges = a}) .
+      _Default
+      . _Coerce
+
+-- | This is always 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)])
+
+-- | 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)
+    , _aImportFormats      :: !(Maybe AboutImportFormats)
+    , _aKind               :: !Text
+    , _aAppInstalled       :: !(Maybe Bool)
+    , _aUser               :: !(Maybe User)
+    , _aStorageQuota       :: !(Maybe AboutStorageQuota)
+    , _aMaxUploadSize      :: !(Maybe (Textual Int64))
+    , _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'
+--
+-- * 'aImportFormats'
+--
+-- * 'aKind'
+--
+-- * 'aAppInstalled'
+--
+-- * 'aUser'
+--
+-- * 'aStorageQuota'
+--
+-- * 'aMaxUploadSize'
+--
+-- * 'aFolderColorPalette'
+about
+    :: About
+about =
+    About'
+    { _aExportFormats = Nothing
+    , _aMaxImportSizes = Nothing
+    , _aImportFormats = Nothing
+    , _aKind = "drive#about"
+    , _aAppInstalled = Nothing
+    , _aUser = Nothing
+    , _aStorageQuota = Nothing
+    , _aMaxUploadSize = 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})
+
+-- | 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})
+
+-- | This is always 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
+
+-- | 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 .:? "importFormats")
+                     <*> (o .:? "kind" .!= "drive#about")
+                     <*> (o .:? "appInstalled")
+                     <*> (o .:? "user")
+                     <*> (o .:? "storageQuota")
+                     <*> (o .:? "maxUploadSize")
+                     <*> (o .:? "folderColorPalette" .!= mempty))
+
+instance ToJSON About where
+        toJSON About'{..}
+          = object
+              (catMaybes
+                 [("exportFormats" .=) <$> _aExportFormats,
+                  ("maxImportSizes" .=) <$> _aMaxImportSizes,
+                  ("importFormats" .=) <$> _aImportFormats,
+                  Just ("kind" .= _aKind),
+                  ("appInstalled" .=) <$> _aAppInstalled,
+                  ("user" .=) <$> _aUser,
+                  ("storageQuota" .=) <$> _aStorageQuota,
+                  ("maxUploadSize" .=) <$> _aMaxUploadSize,
+                  ("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
+    }
+
+-- | This is always 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
+
+-- | This is always 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)
+    , _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'
+--
+-- * '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
+    , _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})
+
+-- | This is always 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})
+
+-- | 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 .:? "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,
+                  ("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)
+    , _pKind               :: !Text
+    , _pDomain             :: !(Maybe Text)
+    , _pRole               :: !(Maybe Text)
+    , _pEmailAddress       :: !(Maybe Text)
+    , _pAllowFileDiscovery :: !(Maybe Bool)
+    , _pDisplayName        :: !(Maybe Text)
+    , _pId                 :: !(Maybe Text)
+    , _pType               :: !(Maybe Text)
+    } 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'
+--
+-- * 'pKind'
+--
+-- * 'pDomain'
+--
+-- * 'pRole'
+--
+-- * 'pEmailAddress'
+--
+-- * 'pAllowFileDiscovery'
+--
+-- * 'pDisplayName'
+--
+-- * 'pId'
+--
+-- * 'pType'
+permission
+    :: Permission
+permission =
+    Permission'
+    { _pPhotoLink = Nothing
+    , _pKind = "drive#permission"
+    , _pDomain = Nothing
+    , _pRole = Nothing
+    , _pEmailAddress = Nothing
+    , _pAllowFileDiscovery = Nothing
+    , _pDisplayName = Nothing
+    , _pId = Nothing
+    , _pType = Nothing
+    }
+
+-- | A link to the user\'s profile photo, if available.
+pPhotoLink :: Lens' Permission (Maybe Text)
+pPhotoLink
+  = lens _pPhotoLink (\ s a -> s{_pPhotoLink = a})
+
+-- | This is always 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. Valid values are: - owner - 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})
+
+-- | 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})
+
+instance FromJSON Permission where
+        parseJSON
+          = withObject "Permission"
+              (\ o ->
+                 Permission' <$>
+                   (o .:? "photoLink") <*>
+                     (o .:? "kind" .!= "drive#permission")
+                     <*> (o .:? "domain")
+                     <*> (o .:? "role")
+                     <*> (o .:? "emailAddress")
+                     <*> (o .:? "allowFileDiscovery")
+                     <*> (o .:? "displayName")
+                     <*> (o .:? "id")
+                     <*> (o .:? "type"))
+
+instance ToJSON Permission where
+        toJSON Permission'{..}
+          = object
+              (catMaybes
+                 [("photoLink" .=) <$> _pPhotoLink,
+                  Just ("kind" .= _pKind), ("domain" .=) <$> _pDomain,
+                  ("role" .=) <$> _pRole,
+                  ("emailAddress" .=) <$> _pEmailAddress,
+                  ("allowFileDiscovery" .=) <$> _pAllowFileDiscovery,
+                  ("displayName" .=) <$> _pDisplayName,
+                  ("id" .=) <$> _pId, ("type" .=) <$> _pType])
+
+-- | 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')
+    , _fSize                  :: !(Maybe (Textual Int64))
+    , _fTrashed               :: !(Maybe Bool)
+    , _fWebViewLink           :: !(Maybe Text)
+    , _fCreatedTime           :: !(Maybe DateTime')
+    , _fOriginalFilename      :: !(Maybe Text)
+    , _fKind                  :: !Text
+    , _fLastModifyingUser     :: !(Maybe User)
+    , _fIconLink              :: !(Maybe Text)
+    , _fImageMediaMetadata    :: !(Maybe FileImageMediaMetadata)
+    , _fExplicitlyTrashed     :: !(Maybe Bool)
+    , _fShared                :: !(Maybe Bool)
+    , _fMD5Checksum           :: !(Maybe Text)
+    , _fFolderColorRgb        :: !(Maybe Text)
+    , _fMimeType              :: !(Maybe Text)
+    , _fIsAppAuthorized       :: !(Maybe Bool)
+    , _fName                  :: !(Maybe Text)
+    , _fParents               :: !(Maybe [Text])
+    , _fStarred               :: !(Maybe Bool)
+    , _fSpaces                :: !(Maybe [Text])
+    , _fVersion               :: !(Maybe (Textual Int64))
+    , _fWritersCanShare       :: !(Maybe Bool)
+    , _fId                    :: !(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'
+--
+-- * 'fSize'
+--
+-- * 'fTrashed'
+--
+-- * 'fWebViewLink'
+--
+-- * 'fCreatedTime'
+--
+-- * 'fOriginalFilename'
+--
+-- * 'fKind'
+--
+-- * 'fLastModifyingUser'
+--
+-- * 'fIconLink'
+--
+-- * 'fImageMediaMetadata'
+--
+-- * 'fExplicitlyTrashed'
+--
+-- * 'fShared'
+--
+-- * 'fMD5Checksum'
+--
+-- * 'fFolderColorRgb'
+--
+-- * 'fMimeType'
+--
+-- * 'fIsAppAuthorized'
+--
+-- * 'fName'
+--
+-- * 'fParents'
+--
+-- * 'fStarred'
+--
+-- * 'fSpaces'
+--
+-- * 'fVersion'
+--
+-- * 'fWritersCanShare'
+--
+-- * 'fId'
+--
+-- * '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
+    , _fSize = Nothing
+    , _fTrashed = Nothing
+    , _fWebViewLink = Nothing
+    , _fCreatedTime = Nothing
+    , _fOriginalFilename = Nothing
+    , _fKind = "drive#file"
+    , _fLastModifyingUser = Nothing
+    , _fIconLink = Nothing
+    , _fImageMediaMetadata = Nothing
+    , _fExplicitlyTrashed = Nothing
+    , _fShared = Nothing
+    , _fMD5Checksum = Nothing
+    , _fFolderColorRgb = Nothing
+    , _fMimeType = Nothing
+    , _fIsAppAuthorized = Nothing
+    , _fName = Nothing
+    , _fParents = Nothing
+    , _fStarred = Nothing
+    , _fSpaces = Nothing
+    , _fVersion = Nothing
+    , _fWritersCanShare = Nothing
+    , _fId = 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.
+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.
+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.
+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
+
+-- | 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 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})
+
+-- | This is always 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})
+
+-- | 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.
+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})
+
+-- | 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})
+
+-- | The name of the file. This is not necessarily unique within a folder.
+fName :: Lens' File (Maybe Text)
+fName = lens _fName (\ s a -> s{_fName = 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 My
+-- Drive folder. Update requests must use the addParents and removeParents
+-- parameters to modify the values.
+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 users with only writer permission can modify the file\'s
+-- permissions.
+fWritersCanShare :: Lens' File (Maybe Bool)
+fWritersCanShare
+  = lens _fWritersCanShare
+      (\ s a -> s{_fWritersCanShare = a})
+
+-- | The ID of the file.
+fId :: Lens' File (Maybe Text)
+fId = lens _fId (\ s a -> s{_fId = a})
+
+-- | The full list of permissions for the file. This is only available if the
+-- requesting user can share the file.
+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 the file.
+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})
+
+-- | Whether users with only reader or commenter permission can copy the
+-- file\'s content. This affects copy, download, and print operations.
+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 .:? "size")
+                     <*> (o .:? "trashed")
+                     <*> (o .:? "webViewLink")
+                     <*> (o .:? "createdTime")
+                     <*> (o .:? "originalFilename")
+                     <*> (o .:? "kind" .!= "drive#file")
+                     <*> (o .:? "lastModifyingUser")
+                     <*> (o .:? "iconLink")
+                     <*> (o .:? "imageMediaMetadata")
+                     <*> (o .:? "explicitlyTrashed")
+                     <*> (o .:? "shared")
+                     <*> (o .:? "md5Checksum")
+                     <*> (o .:? "folderColorRgb")
+                     <*> (o .:? "mimeType")
+                     <*> (o .:? "isAppAuthorized")
+                     <*> (o .:? "name")
+                     <*> (o .:? "parents" .!= mempty)
+                     <*> (o .:? "starred")
+                     <*> (o .:? "spaces" .!= mempty)
+                     <*> (o .:? "version")
+                     <*> (o .:? "writersCanShare")
+                     <*> (o .:? "id")
+                     <*> (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,
+                  ("size" .=) <$> _fSize, ("trashed" .=) <$> _fTrashed,
+                  ("webViewLink" .=) <$> _fWebViewLink,
+                  ("createdTime" .=) <$> _fCreatedTime,
+                  ("originalFilename" .=) <$> _fOriginalFilename,
+                  Just ("kind" .= _fKind),
+                  ("lastModifyingUser" .=) <$> _fLastModifyingUser,
+                  ("iconLink" .=) <$> _fIconLink,
+                  ("imageMediaMetadata" .=) <$> _fImageMediaMetadata,
+                  ("explicitlyTrashed" .=) <$> _fExplicitlyTrashed,
+                  ("shared" .=) <$> _fShared,
+                  ("md5Checksum" .=) <$> _fMD5Checksum,
+                  ("folderColorRgb" .=) <$> _fFolderColorRgb,
+                  ("mimeType" .=) <$> _fMimeType,
+                  ("isAppAuthorized" .=) <$> _fIsAppAuthorized,
+                  ("name" .=) <$> _fName, ("parents" .=) <$> _fParents,
+                  ("starred" .=) <$> _fStarred,
+                  ("spaces" .=) <$> _fSpaces,
+                  ("version" .=) <$> _fVersion,
+                  ("writersCanShare" .=) <$> _fWritersCanShare,
+                  ("id" .=) <$> _fId,
+                  ("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])
+
+-- | 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})
+
+-- | This is always 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])
+
+-- | 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.
+cllNextPageToken :: Lens' CommentList (Maybe Text)
+cllNextPageToken
+  = lens _cllNextPageToken
+      (\ s a -> s{_cllNextPageToken = a})
+
+-- | This is always drive#commentList.
+cllKind :: Lens' CommentList Text
+cllKind = lens _cllKind (\ s a -> s{_cllKind = a})
+
+-- | The page of comments.
+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'
+    { _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:
+--
+-- * 'rllKind'
+--
+-- * 'rllRevisions'
+revisionList
+    :: RevisionList
+revisionList =
+    RevisionList'
+    { _rllKind = "drive#revisionList"
+    , _rllRevisions = Nothing
+    }
+
+-- | This is always drive#revisionList.
+rllKind :: Lens' RevisionList Text
+rllKind = lens _rllKind (\ s a -> s{_rllKind = a})
+
+-- | The full list of revisions.
+rllRevisions :: Lens' RevisionList [Revision]
+rllRevisions
+  = lens _rllRevisions (\ s a -> s{_rllRevisions = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON RevisionList where
+        parseJSON
+          = withObject "RevisionList"
+              (\ o ->
+                 RevisionList' <$>
+                   (o .:? "kind" .!= "drive#revisionList") <*>
+                     (o .:? "revisions" .!= mempty))
+
+instance ToJSON RevisionList where
+        toJSON RevisionList'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _rllKind),
+                  ("revisions" .=) <$> _rllRevisions])
+
+-- | A list of permissions for a file.
+--
+-- /See:/ 'permissionList' smart constructor.
+data PermissionList = PermissionList'
+    { _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:
+--
+-- * 'plKind'
+--
+-- * 'plPermissions'
+permissionList
+    :: PermissionList
+permissionList =
+    PermissionList'
+    { _plKind = "drive#permissionList"
+    , _plPermissions = Nothing
+    }
+
+-- | This is always drive#permissionList.
+plKind :: Lens' PermissionList Text
+plKind = lens _plKind (\ s a -> s{_plKind = a})
+
+-- | The full list of permissions.
+plPermissions :: Lens' PermissionList [Permission]
+plPermissions
+  = lens _plPermissions
+      (\ s a -> s{_plPermissions = a})
+      . _Default
+      . _Coerce
+
+instance FromJSON PermissionList where
+        parseJSON
+          = withObject "PermissionList"
+              (\ o ->
+                 PermissionList' <$>
+                   (o .:? "kind" .!= "drive#permissionList") <*>
+                     (o .:? "permissions" .!= mempty))
+
+instance ToJSON PermissionList where
+        toJSON PermissionList'{..}
+          = object
+              (catMaybes
+                 [Just ("kind" .= _plKind),
+                  ("permissions" .=) <$> _plPermissions])
diff --git a/gen/Network/Google/Drive/Types/Sum.hs b/gen/Network/Google/Drive/Types/Sum.hs
--- a/gen/Network/Google/Drive/Types/Sum.hs
+++ b/gen/Network/Google/Drive/Types/Sum.hs
@@ -8,7 +8,7 @@
 
 -- |
 -- Module      : Network.Google.Drive.Types.Sum
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -18,288 +18,31 @@
 
 import           Network.Google.Prelude
 
--- | The visibility of the new file. This parameter is only relevant when
--- convert=false.
-data FilesInsertVisibility
-    = Default
-      -- ^ @DEFAULT@
-      -- The visibility of the new file is determined by the user\'s default
-      -- visibility\/sharing policies.
-    | Private
-      -- ^ @PRIVATE@
-      -- The new file will be visible to only the owner.
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
-
-instance Hashable FilesInsertVisibility
-
-instance FromText FilesInsertVisibility where
-    fromText = \case
-        "DEFAULT" -> Just Default
-        "PRIVATE" -> Just Private
-        _ -> Nothing
-
-instance ToText FilesInsertVisibility where
-    toText = \case
-        Default -> "DEFAULT"
-        Private -> "PRIVATE"
-
-instance FromJSON FilesInsertVisibility where
-    parseJSON = parseJSONText "FilesInsertVisibility"
-
-instance ToJSON FilesInsertVisibility where
-    toJSON = toJSONText
-
--- | The body of items (files\/documents) to which the query applies.
+-- | The source of files to list.
 data FilesListCorpus
-    = FLCDefault
-      -- ^ @DEFAULT@
-      -- The items that the user has accessed.
-    | FLCDomain
-      -- ^ @DOMAIN@
-      -- Items shared to the user\'s domain.
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
+    = FLCDomain
+      -- ^ @domain@
+      -- Files shared to the user\'s domain.
+    | FLCUser
+      -- ^ @user@
+      -- Files owned by or shared to the user.
+      deriving (Eq, Ord, Enum, Read, Show, Data, Typeable, Generic)
 
 instance Hashable FilesListCorpus
 
-instance FromText FilesListCorpus where
-    fromText = \case
-        "DEFAULT" -> Just FLCDefault
-        "DOMAIN" -> Just FLCDomain
-        _ -> Nothing
+instance FromHttpApiData FilesListCorpus where
+    parseQueryParam = \case
+        "domain" -> Right FLCDomain
+        "user" -> Right FLCUser
+        x -> Left ("Unable to parse FilesListCorpus from: " <> x)
 
-instance ToText FilesListCorpus where
-    toText = \case
-        FLCDefault -> "DEFAULT"
-        FLCDomain -> "DOMAIN"
+instance ToHttpApiData FilesListCorpus where
+    toQueryParam = \case
+        FLCDomain -> "domain"
+        FLCUser -> "user"
 
 instance FromJSON FilesListCorpus where
     parseJSON = parseJSONText "FilesListCorpus"
 
 instance ToJSON FilesListCorpus where
-    toJSON = toJSONText
-
--- | This parameter is deprecated and has no function.
-data FilesListProjection
-    = Basic
-      -- ^ @BASIC@
-      -- Deprecated
-    | Full
-      -- ^ @FULL@
-      -- Deprecated
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
-
-instance Hashable FilesListProjection
-
-instance FromText FilesListProjection where
-    fromText = \case
-        "BASIC" -> Just Basic
-        "FULL" -> Just Full
-        _ -> Nothing
-
-instance ToText FilesListProjection where
-    toText = \case
-        Basic -> "BASIC"
-        Full -> "FULL"
-
-instance FromJSON FilesListProjection where
-    parseJSON = parseJSONText "FilesListProjection"
-
-instance ToJSON FilesListProjection where
-    toJSON = toJSONText
-
--- | Determines the behavior in which modifiedDate is updated. This overrides
--- setModifiedDate.
-data FilesUpdateModifiedDateBehavior
-    = FromBody
-      -- ^ @fromBody@
-      -- Set modifiedDate to the value provided in the body of the request. No
-      -- change if no value was provided.
-    | FromBodyIfNeeded
-      -- ^ @fromBodyIfNeeded@
-      -- Set modifiedDate to the value provided in the body of the request
-      -- depending on other contents of the update.
-    | FromBodyOrNow
-      -- ^ @fromBodyOrNow@
-      -- Set modifiedDate to the value provided in the body of the request, or to
-      -- the current time if no value was provided.
-    | NoChange
-      -- ^ @noChange@
-      -- Maintain the previous value of modifiedDate.
-    | Now
-      -- ^ @now@
-      -- Set modifiedDate to the current time.
-    | NowIfNeeded
-      -- ^ @nowIfNeeded@
-      -- Set modifiedDate to the current time depending on contents of the
-      -- update.
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
-
-instance Hashable FilesUpdateModifiedDateBehavior
-
-instance FromText FilesUpdateModifiedDateBehavior where
-    fromText = \case
-        "fromBody" -> Just FromBody
-        "fromBodyIfNeeded" -> Just FromBodyIfNeeded
-        "fromBodyOrNow" -> Just FromBodyOrNow
-        "noChange" -> Just NoChange
-        "now" -> Just Now
-        "nowIfNeeded" -> Just NowIfNeeded
-        _ -> Nothing
-
-instance ToText FilesUpdateModifiedDateBehavior where
-    toText = \case
-        FromBody -> "fromBody"
-        FromBodyIfNeeded -> "fromBodyIfNeeded"
-        FromBodyOrNow -> "fromBodyOrNow"
-        NoChange -> "noChange"
-        Now -> "now"
-        NowIfNeeded -> "nowIfNeeded"
-
-instance FromJSON FilesUpdateModifiedDateBehavior where
-    parseJSON = parseJSONText "FilesUpdateModifiedDateBehavior"
-
-instance ToJSON FilesUpdateModifiedDateBehavior where
-    toJSON = toJSONText
-
--- | This parameter is deprecated and has no function.
-data FilesWatchProjection
-    = FWPBasic
-      -- ^ @BASIC@
-      -- Deprecated
-    | FWPFull
-      -- ^ @FULL@
-      -- Deprecated
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
-
-instance Hashable FilesWatchProjection
-
-instance FromText FilesWatchProjection where
-    fromText = \case
-        "BASIC" -> Just FWPBasic
-        "FULL" -> Just FWPFull
-        _ -> Nothing
-
-instance ToText FilesWatchProjection where
-    toText = \case
-        FWPBasic -> "BASIC"
-        FWPFull -> "FULL"
-
-instance FromJSON FilesWatchProjection where
-    parseJSON = parseJSONText "FilesWatchProjection"
-
-instance ToJSON FilesWatchProjection where
-    toJSON = toJSONText
-
--- | Determines the behavior in which modifiedDate is updated. This overrides
--- setModifiedDate.
-data FilesPatchModifiedDateBehavior
-    = FPMDBFromBody
-      -- ^ @fromBody@
-      -- Set modifiedDate to the value provided in the body of the request. No
-      -- change if no value was provided.
-    | FPMDBFromBodyIfNeeded
-      -- ^ @fromBodyIfNeeded@
-      -- Set modifiedDate to the value provided in the body of the request
-      -- depending on other contents of the update.
-    | FPMDBFromBodyOrNow
-      -- ^ @fromBodyOrNow@
-      -- Set modifiedDate to the value provided in the body of the request, or to
-      -- the current time if no value was provided.
-    | FPMDBNoChange
-      -- ^ @noChange@
-      -- Maintain the previous value of modifiedDate.
-    | FPMDBNow
-      -- ^ @now@
-      -- Set modifiedDate to the current time.
-    | FPMDBNowIfNeeded
-      -- ^ @nowIfNeeded@
-      -- Set modifiedDate to the current time depending on contents of the
-      -- update.
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
-
-instance Hashable FilesPatchModifiedDateBehavior
-
-instance FromText FilesPatchModifiedDateBehavior where
-    fromText = \case
-        "fromBody" -> Just FPMDBFromBody
-        "fromBodyIfNeeded" -> Just FPMDBFromBodyIfNeeded
-        "fromBodyOrNow" -> Just FPMDBFromBodyOrNow
-        "noChange" -> Just FPMDBNoChange
-        "now" -> Just FPMDBNow
-        "nowIfNeeded" -> Just FPMDBNowIfNeeded
-        _ -> Nothing
-
-instance ToText FilesPatchModifiedDateBehavior where
-    toText = \case
-        FPMDBFromBody -> "fromBody"
-        FPMDBFromBodyIfNeeded -> "fromBodyIfNeeded"
-        FPMDBFromBodyOrNow -> "fromBodyOrNow"
-        FPMDBNoChange -> "noChange"
-        FPMDBNow -> "now"
-        FPMDBNowIfNeeded -> "nowIfNeeded"
-
-instance FromJSON FilesPatchModifiedDateBehavior where
-    parseJSON = parseJSONText "FilesPatchModifiedDateBehavior"
-
-instance ToJSON FilesPatchModifiedDateBehavior where
-    toJSON = toJSONText
-
--- | The visibility of the new file. This parameter is only relevant when the
--- source is not a native Google Doc and convert=false.
-data FilesCopyVisibility
-    = FCVDefault
-      -- ^ @DEFAULT@
-      -- The visibility of the new file is determined by the user\'s default
-      -- visibility\/sharing policies.
-    | FCVPrivate
-      -- ^ @PRIVATE@
-      -- The new file will be visible to only the owner.
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
-
-instance Hashable FilesCopyVisibility
-
-instance FromText FilesCopyVisibility where
-    fromText = \case
-        "DEFAULT" -> Just FCVDefault
-        "PRIVATE" -> Just FCVPrivate
-        _ -> Nothing
-
-instance ToText FilesCopyVisibility where
-    toText = \case
-        FCVDefault -> "DEFAULT"
-        FCVPrivate -> "PRIVATE"
-
-instance FromJSON FilesCopyVisibility where
-    parseJSON = parseJSONText "FilesCopyVisibility"
-
-instance ToJSON FilesCopyVisibility where
-    toJSON = toJSONText
-
--- | This parameter is deprecated and has no function.
-data FilesGetProjection
-    = FGPBasic
-      -- ^ @BASIC@
-      -- Deprecated
-    | FGPFull
-      -- ^ @FULL@
-      -- Deprecated
-      deriving (Eq,Ord,Enum,Read,Show,Data,Typeable,Generic)
-
-instance Hashable FilesGetProjection
-
-instance FromText FilesGetProjection where
-    fromText = \case
-        "BASIC" -> Just FGPBasic
-        "FULL" -> Just FGPFull
-        _ -> Nothing
-
-instance ToText FilesGetProjection where
-    toText = \case
-        FGPBasic -> "BASIC"
-        FGPFull -> "FULL"
-
-instance FromJSON FilesGetProjection where
-    parseJSON = parseJSONText "FilesGetProjection"
-
-instance ToJSON FilesGetProjection where
     toJSON = toJSONText
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
@@ -14,14 +14,14 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.About.Get
--- Copyright   : (c) 2015 Brendan Hay
+-- 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 the information about the current user along with Drive API
--- settings
+-- Gets information about the user, the user\'s Drive, and system
+-- capabilities.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.about.get@.
 module Network.Google.Resource.Drive.About.Get
@@ -33,10 +33,6 @@
     , aboutGet
     , AboutGet
 
-    -- * Request Lenses
-    , agIncludeSubscribed
-    , agStartChangeId
-    , agMaxChangeIdCount
     ) where
 
 import           Network.Google.Drive.Types
@@ -46,72 +42,36 @@
 -- 'AboutGet' request conforms to.
 type AboutGetResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "about" :>
-           QueryParam "includeSubscribed" Bool :>
-             QueryParam "startChangeId" (Textual Int64) :>
-               QueryParam "maxChangeIdCount" (Textual Int64) :>
-                 QueryParam "alt" AltJSON :> Get '[JSON] About
+           QueryParam "alt" AltJSON :> Get '[JSON] About
 
--- | Gets the information about the current user along with Drive API
--- settings
+-- | Gets information about the user, the user\'s Drive, and system
+-- capabilities.
 --
 -- /See:/ 'aboutGet' smart constructor.
-data AboutGet = AboutGet
-    { _agIncludeSubscribed :: !Bool
-    , _agStartChangeId     :: !(Maybe (Textual Int64))
-    , _agMaxChangeIdCount  :: !(Textual Int64)
-    } deriving (Eq,Show,Data,Typeable,Generic)
+data AboutGet =
+    AboutGet'
+    deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'AboutGet' with the minimum fields required to make a request.
 --
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'agIncludeSubscribed'
---
--- * 'agStartChangeId'
---
--- * 'agMaxChangeIdCount'
 aboutGet
     :: AboutGet
-aboutGet =
-    AboutGet
-    { _agIncludeSubscribed = True
-    , _agStartChangeId = Nothing
-    , _agMaxChangeIdCount = 1
-    }
-
--- | When calculating the number of remaining change IDs, whether to include
--- public files the user has opened and shared files. When set to false,
--- this counts only change IDs for owned files and any shared or public
--- files that the user has explicitly added to a folder they own.
-agIncludeSubscribed :: Lens' AboutGet Bool
-agIncludeSubscribed
-  = lens _agIncludeSubscribed
-      (\ s a -> s{_agIncludeSubscribed = a})
-
--- | Change ID to start counting from when calculating number of remaining
--- change IDs
-agStartChangeId :: Lens' AboutGet (Maybe Int64)
-agStartChangeId
-  = lens _agStartChangeId
-      (\ s a -> s{_agStartChangeId = a})
-      . mapping _Coerce
-
--- | Maximum number of remaining change IDs to count
-agMaxChangeIdCount :: Lens' AboutGet Int64
-agMaxChangeIdCount
-  = lens _agMaxChangeIdCount
-      (\ s a -> s{_agMaxChangeIdCount = a})
-      . _Coerce
+aboutGet = AboutGet'
 
 instance GoogleRequest AboutGet where
         type Rs AboutGet = About
-        requestClient AboutGet{..}
-          = go (Just _agIncludeSubscribed) _agStartChangeId
-              (Just _agMaxChangeIdCount)
-              (Just AltJSON)
-              driveService
+        type Scopes AboutGet =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.appdata",
+               "https://www.googleapis.com/auth/drive.file",
+               "https://www.googleapis.com/auth/drive.metadata",
+               "https://www.googleapis.com/auth/drive.metadata.readonly",
+               "https://www.googleapis.com/auth/drive.photos.readonly",
+               "https://www.googleapis.com/auth/drive.readonly"]
+        requestClient AboutGet'{}
+          = go (Just AltJSON) driveService
           where go
                   = buildClient (Proxy :: Proxy AboutGetResource)
                       mempty
diff --git a/gen/Network/Google/Resource/Drive/Apps/Get.hs b/gen/Network/Google/Resource/Drive/Apps/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Apps/Get.hs
+++ /dev/null
@@ -1,80 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Apps.Get
--- Copyright   : (c) 2015 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 specific app.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.apps.get@.
-module Network.Google.Resource.Drive.Apps.Get
-    (
-    -- * REST Resource
-      AppsGetResource
-
-    -- * Creating a Request
-    , appsGet
-    , AppsGet
-
-    -- * Request Lenses
-    , agAppId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.apps.get@ method which the
--- 'AppsGet' request conforms to.
-type AppsGetResource =
-     "drive" :>
-       "v2" :>
-         "apps" :>
-           Capture "appId" Text :>
-             QueryParam "alt" AltJSON :> Get '[JSON] App
-
--- | Gets a specific app.
---
--- /See:/ 'appsGet' smart constructor.
-newtype AppsGet = AppsGet
-    { _agAppId :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AppsGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'agAppId'
-appsGet
-    :: Text -- ^ 'agAppId'
-    -> AppsGet
-appsGet pAgAppId_ =
-    AppsGet
-    { _agAppId = pAgAppId_
-    }
-
--- | The ID of the app.
-agAppId :: Lens' AppsGet Text
-agAppId = lens _agAppId (\ s a -> s{_agAppId = a})
-
-instance GoogleRequest AppsGet where
-        type Rs AppsGet = App
-        requestClient AppsGet{..}
-          = go _agAppId (Just AltJSON) driveService
-          where go
-                  = buildClient (Proxy :: Proxy AppsGetResource) mempty
diff --git a/gen/Network/Google/Resource/Drive/Apps/List.hs b/gen/Network/Google/Resource/Drive/Apps/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Apps/List.hs
+++ /dev/null
@@ -1,117 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Apps.List
--- Copyright   : (c) 2015 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 a user\'s installed apps.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.apps.list@.
-module Network.Google.Resource.Drive.Apps.List
-    (
-    -- * REST Resource
-      AppsListResource
-
-    -- * Creating a Request
-    , appsList
-    , AppsList
-
-    -- * Request Lenses
-    , alLanguageCode
-    , alAppFilterExtensions
-    , alAppFilterMimeTypes
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.apps.list@ method which the
--- 'AppsList' request conforms to.
-type AppsListResource =
-     "drive" :>
-       "v2" :>
-         "apps" :>
-           QueryParam "languageCode" Text :>
-             QueryParam "appFilterExtensions" Text :>
-               QueryParam "appFilterMimeTypes" Text :>
-                 QueryParam "alt" AltJSON :> Get '[JSON] AppList
-
--- | Lists a user\'s installed apps.
---
--- /See:/ 'appsList' smart constructor.
-data AppsList = AppsList
-    { _alLanguageCode        :: !(Maybe Text)
-    , _alAppFilterExtensions :: !Text
-    , _alAppFilterMimeTypes  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'AppsList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'alLanguageCode'
---
--- * 'alAppFilterExtensions'
---
--- * 'alAppFilterMimeTypes'
-appsList
-    :: AppsList
-appsList =
-    AppsList
-    { _alLanguageCode = Nothing
-    , _alAppFilterExtensions = ""
-    , _alAppFilterMimeTypes = ""
-    }
-
--- | A language or locale code, as defined by BCP 47, with some extensions
--- from Unicode\'s LDML format (http:\/\/www.unicode.org\/reports\/tr35\/).
-alLanguageCode :: Lens' AppsList (Maybe Text)
-alLanguageCode
-  = lens _alLanguageCode
-      (\ s a -> s{_alLanguageCode = a})
-
--- | A comma-separated list of file extensions for open with filtering. All
--- apps within the given app query scope which can open any of the given
--- file extensions will be included in the response. If appFilterMimeTypes
--- are provided as well, the result is a union of the two resulting app
--- lists.
-alAppFilterExtensions :: Lens' AppsList Text
-alAppFilterExtensions
-  = lens _alAppFilterExtensions
-      (\ s a -> s{_alAppFilterExtensions = a})
-
--- | A comma-separated list of MIME types for open with filtering. All apps
--- within the given app query scope which can open any of the given MIME
--- types will be included in the response. If appFilterExtensions are
--- provided as well, the result is a union of the two resulting app lists.
-alAppFilterMimeTypes :: Lens' AppsList Text
-alAppFilterMimeTypes
-  = lens _alAppFilterMimeTypes
-      (\ s a -> s{_alAppFilterMimeTypes = a})
-
-instance GoogleRequest AppsList where
-        type Rs AppsList = AppList
-        requestClient AppsList{..}
-          = go _alLanguageCode (Just _alAppFilterExtensions)
-              (Just _alAppFilterMimeTypes)
-              (Just AltJSON)
-              driveService
-          where go
-                  = buildClient (Proxy :: Proxy AppsListResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Changes/Get.hs b/gen/Network/Google/Resource/Drive/Changes/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Changes/Get.hs
+++ /dev/null
@@ -1,82 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Changes.Get
--- Copyright   : (c) 2015 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 specific change.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.changes.get@.
-module Network.Google.Resource.Drive.Changes.Get
-    (
-    -- * REST Resource
-      ChangesGetResource
-
-    -- * Creating a Request
-    , changesGet
-    , ChangesGet
-
-    -- * Request Lenses
-    , cgChangeId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.changes.get@ method which the
--- 'ChangesGet' request conforms to.
-type ChangesGetResource =
-     "drive" :>
-       "v2" :>
-         "changes" :>
-           Capture "changeId" Text :>
-             QueryParam "alt" AltJSON :> Get '[JSON] Change
-
--- | Gets a specific change.
---
--- /See:/ 'changesGet' smart constructor.
-newtype ChangesGet = ChangesGet
-    { _cgChangeId :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChangesGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cgChangeId'
-changesGet
-    :: Text -- ^ 'cgChangeId'
-    -> ChangesGet
-changesGet pCgChangeId_ =
-    ChangesGet
-    { _cgChangeId = pCgChangeId_
-    }
-
--- | The ID of the change.
-cgChangeId :: Lens' ChangesGet Text
-cgChangeId
-  = lens _cgChangeId (\ s a -> s{_cgChangeId = a})
-
-instance GoogleRequest ChangesGet where
-        type Rs ChangesGet = Change
-        requestClient ChangesGet{..}
-          = go _cgChangeId (Just AltJSON) driveService
-          where go
-                  = buildClient (Proxy :: Proxy ChangesGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Changes/GetStartPageToken.hs b/gen/Network/Google/Resource/Drive/Changes/GetStartPageToken.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Drive/Changes/GetStartPageToken.hs
@@ -0,0 +1,78 @@
+{-# 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.Changes.GetStartPageToken
+-- 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 the starting pageToken for listing future changes.
+--
+-- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.changes.getStartPageToken@.
+module Network.Google.Resource.Drive.Changes.GetStartPageToken
+    (
+    -- * REST Resource
+      ChangesGetStartPageTokenResource
+
+    -- * Creating a Request
+    , changesGetStartPageToken
+    , ChangesGetStartPageToken
+
+    ) where
+
+import           Network.Google.Drive.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @drive.changes.getStartPageToken@ method which the
+-- 'ChangesGetStartPageToken' request conforms to.
+type ChangesGetStartPageTokenResource =
+     "drive" :>
+       "v3" :>
+         "changes" :>
+           "startPageToken" :>
+             QueryParam "alt" AltJSON :>
+               Get '[JSON] StartPageToken
+
+-- | Gets the starting pageToken for listing future changes.
+--
+-- /See:/ 'changesGetStartPageToken' smart constructor.
+data ChangesGetStartPageToken =
+    ChangesGetStartPageToken'
+    deriving (Eq,Show,Data,Typeable,Generic)
+
+-- | Creates a value of 'ChangesGetStartPageToken' with the minimum fields required to make a request.
+--
+changesGetStartPageToken
+    :: ChangesGetStartPageToken
+changesGetStartPageToken = ChangesGetStartPageToken'
+
+instance GoogleRequest ChangesGetStartPageToken where
+        type Rs ChangesGetStartPageToken = StartPageToken
+        type Scopes ChangesGetStartPageToken =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.appdata",
+               "https://www.googleapis.com/auth/drive.file",
+               "https://www.googleapis.com/auth/drive.metadata",
+               "https://www.googleapis.com/auth/drive.metadata.readonly",
+               "https://www.googleapis.com/auth/drive.photos.readonly",
+               "https://www.googleapis.com/auth/drive.readonly"]
+        requestClient ChangesGetStartPageToken'{}
+          = go (Just AltJSON) driveService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy ChangesGetStartPageTokenResource)
+                      mempty
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
@@ -14,13 +14,13 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Changes.List
--- Copyright   : (c) 2015 Brendan Hay
+-- 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 changes for a user.
+-- Lists changes for a user.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.changes.list@.
 module Network.Google.Resource.Drive.Changes.List
@@ -33,12 +33,11 @@
     , ChangesList
 
     -- * Request Lenses
-    , clIncludeSubscribed
-    , clStartChangeId
+    , clRestrictToMyDrive
     , clSpaces
     , clPageToken
-    , clMaxResults
-    , clIncludeDeleted
+    , clPageSize
+    , clIncludeRemoved
     ) where
 
 import           Network.Google.Drive.Types
@@ -48,100 +47,99 @@
 -- 'ChangesList' request conforms to.
 type ChangesListResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "changes" :>
-           QueryParam "includeSubscribed" Bool :>
-             QueryParam "startChangeId" (Textual Int64) :>
+           QueryParam "pageToken" Text :>
+             QueryParam "restrictToMyDrive" Bool :>
                QueryParam "spaces" Text :>
-                 QueryParam "pageToken" Text :>
-                   QueryParam "maxResults" (Textual Int32) :>
-                     QueryParam "includeDeleted" Bool :>
-                       QueryParam "alt" AltJSON :> Get '[JSON] ChangeList
+                 QueryParam "pageSize" (Textual Int32) :>
+                   QueryParam "includeRemoved" Bool :>
+                     QueryParam "alt" AltJSON :> Get '[JSON] ChangeList
 
--- | Lists the changes for a user.
+-- | Lists changes for a user.
 --
 -- /See:/ 'changesList' smart constructor.
-data ChangesList = ChangesList
-    { _clIncludeSubscribed :: !Bool
-    , _clStartChangeId     :: !(Maybe (Textual Int64))
-    , _clSpaces            :: !(Maybe Text)
-    , _clPageToken         :: !(Maybe Text)
-    , _clMaxResults        :: !(Textual Int32)
-    , _clIncludeDeleted    :: !Bool
+data ChangesList = ChangesList'
+    { _clRestrictToMyDrive :: !Bool
+    , _clSpaces            :: !Text
+    , _clPageToken         :: !Text
+    , _clPageSize          :: !(Textual Int32)
+    , _clIncludeRemoved    :: !Bool
     } 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:
 --
--- * 'clIncludeSubscribed'
---
--- * 'clStartChangeId'
+-- * 'clRestrictToMyDrive'
 --
 -- * 'clSpaces'
 --
 -- * 'clPageToken'
 --
--- * 'clMaxResults'
+-- * 'clPageSize'
 --
--- * 'clIncludeDeleted'
+-- * 'clIncludeRemoved'
 changesList
-    :: ChangesList
-changesList =
-    ChangesList
-    { _clIncludeSubscribed = True
-    , _clStartChangeId = Nothing
-    , _clSpaces = Nothing
-    , _clPageToken = Nothing
-    , _clMaxResults = 100
-    , _clIncludeDeleted = True
+    :: Text -- ^ 'clPageToken'
+    -> ChangesList
+changesList pClPageToken_ =
+    ChangesList'
+    { _clRestrictToMyDrive = False
+    , _clSpaces = "drive"
+    , _clPageToken = pClPageToken_
+    , _clPageSize = 100
+    , _clIncludeRemoved = True
     }
 
--- | Whether to include public files the user has opened and shared files.
--- When set to false, the list only includes owned files plus any shared or
--- public files the user has explicitly added to a folder they own.
-clIncludeSubscribed :: Lens' ChangesList Bool
-clIncludeSubscribed
-  = lens _clIncludeSubscribed
-      (\ s a -> s{_clIncludeSubscribed = a})
-
--- | Change ID to start listing changes from.
-clStartChangeId :: Lens' ChangesList (Maybe Int64)
-clStartChangeId
-  = lens _clStartChangeId
-      (\ s a -> s{_clStartChangeId = a})
-      . mapping _Coerce
+-- | Whether to restrict the results to changes inside the My Drive
+-- hierarchy. This omits changes to files such as those in the Application
+-- Data folder or shared files which have not been added to My Drive.
+clRestrictToMyDrive :: Lens' ChangesList Bool
+clRestrictToMyDrive
+  = lens _clRestrictToMyDrive
+      (\ s a -> s{_clRestrictToMyDrive = a})
 
--- | A comma-separated list of spaces to query. Supported values are
--- \'drive\', \'appDataFolder\' and \'photos\'.
-clSpaces :: Lens' ChangesList (Maybe Text)
+-- | A comma-separated list of spaces to query within the user corpus.
+-- Supported values are \'drive\', \'appDataFolder\' and \'photos\'.
+clSpaces :: Lens' ChangesList Text
 clSpaces = lens _clSpaces (\ s a -> s{_clSpaces = a})
 
--- | Page token for changes.
-clPageToken :: Lens' ChangesList (Maybe Text)
+-- | 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.
+clPageToken :: Lens' ChangesList Text
 clPageToken
   = lens _clPageToken (\ s a -> s{_clPageToken = a})
 
--- | Maximum number of changes to return.
-clMaxResults :: Lens' ChangesList Int32
-clMaxResults
-  = lens _clMaxResults (\ s a -> s{_clMaxResults = a})
-      . _Coerce
+-- | The maximum number of changes to return per page.
+clPageSize :: Lens' ChangesList Int32
+clPageSize
+  = lens _clPageSize (\ s a -> s{_clPageSize = a}) .
+      _Coerce
 
--- | Whether to include deleted items.
-clIncludeDeleted :: Lens' ChangesList Bool
-clIncludeDeleted
-  = lens _clIncludeDeleted
-      (\ s a -> s{_clIncludeDeleted = a})
+-- | Whether to include changes indicating that items have left the view of
+-- the changes list, for example by deletion or lost access.
+clIncludeRemoved :: Lens' ChangesList Bool
+clIncludeRemoved
+  = lens _clIncludeRemoved
+      (\ s a -> s{_clIncludeRemoved = a})
 
 instance GoogleRequest ChangesList where
         type Rs ChangesList = ChangeList
-        requestClient ChangesList{..}
-          = go (Just _clIncludeSubscribed) _clStartChangeId
-              _clSpaces
-              _clPageToken
-              (Just _clMaxResults)
-              (Just _clIncludeDeleted)
+        type Scopes ChangesList =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.appdata",
+               "https://www.googleapis.com/auth/drive.file",
+               "https://www.googleapis.com/auth/drive.metadata",
+               "https://www.googleapis.com/auth/drive.metadata.readonly",
+               "https://www.googleapis.com/auth/drive.photos.readonly",
+               "https://www.googleapis.com/auth/drive.readonly"]
+        requestClient ChangesList'{..}
+          = go (Just _clPageToken) (Just _clRestrictToMyDrive)
+              (Just _clSpaces)
+              (Just _clPageSize)
+              (Just _clIncludeRemoved)
               (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
@@ -14,13 +14,13 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Changes.Watch
--- Copyright   : (c) 2015 Brendan Hay
+-- 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)
 --
--- Subscribe to changes for a user.
+-- Subscribes to changes for a user.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.changes.watch@.
 module Network.Google.Resource.Drive.Changes.Watch
@@ -33,13 +33,12 @@
     , ChangesWatch
 
     -- * Request Lenses
-    , cwIncludeSubscribed
-    , cwStartChangeId
     , cwPayload
+    , cwRestrictToMyDrive
     , cwSpaces
     , cwPageToken
-    , cwMaxResults
-    , cwIncludeDeleted
+    , cwPageSize
+    , cwIncludeRemoved
     ) where
 
 import           Network.Google.Drive.Types
@@ -49,112 +48,111 @@
 -- 'ChangesWatch' request conforms to.
 type ChangesWatchResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "changes" :>
            "watch" :>
-             QueryParam "includeSubscribed" Bool :>
-               QueryParam "startChangeId" (Textual Int64) :>
+             QueryParam "pageToken" Text :>
+               QueryParam "restrictToMyDrive" Bool :>
                  QueryParam "spaces" Text :>
-                   QueryParam "pageToken" Text :>
-                     QueryParam "maxResults" (Textual Int32) :>
-                       QueryParam "includeDeleted" Bool :>
-                         QueryParam "alt" AltJSON :>
-                           ReqBody '[JSON] Channel :> Post '[JSON] Channel
+                   QueryParam "pageSize" (Textual Int32) :>
+                     QueryParam "includeRemoved" Bool :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] Channel :> Post '[JSON] Channel
 
--- | Subscribe to changes for a user.
+-- | Subscribes to changes for a user.
 --
 -- /See:/ 'changesWatch' smart constructor.
-data ChangesWatch = ChangesWatch
-    { _cwIncludeSubscribed :: !Bool
-    , _cwStartChangeId     :: !(Maybe (Textual Int64))
-    , _cwPayload           :: !Channel
-    , _cwSpaces            :: !(Maybe Text)
-    , _cwPageToken         :: !(Maybe Text)
-    , _cwMaxResults        :: !(Textual Int32)
-    , _cwIncludeDeleted    :: !Bool
+data ChangesWatch = ChangesWatch'
+    { _cwPayload           :: !Channel
+    , _cwRestrictToMyDrive :: !Bool
+    , _cwSpaces            :: !Text
+    , _cwPageToken         :: !Text
+    , _cwPageSize          :: !(Textual Int32)
+    , _cwIncludeRemoved    :: !Bool
     } 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:
 --
--- * 'cwIncludeSubscribed'
---
--- * 'cwStartChangeId'
---
 -- * 'cwPayload'
 --
+-- * 'cwRestrictToMyDrive'
+--
 -- * 'cwSpaces'
 --
 -- * 'cwPageToken'
 --
--- * 'cwMaxResults'
+-- * 'cwPageSize'
 --
--- * 'cwIncludeDeleted'
+-- * 'cwIncludeRemoved'
 changesWatch
     :: Channel -- ^ 'cwPayload'
+    -> Text -- ^ 'cwPageToken'
     -> ChangesWatch
-changesWatch pCwPayload_ =
-    ChangesWatch
-    { _cwIncludeSubscribed = True
-    , _cwStartChangeId = Nothing
-    , _cwPayload = pCwPayload_
-    , _cwSpaces = Nothing
-    , _cwPageToken = Nothing
-    , _cwMaxResults = 100
-    , _cwIncludeDeleted = True
+changesWatch pCwPayload_ pCwPageToken_ =
+    ChangesWatch'
+    { _cwPayload = pCwPayload_
+    , _cwRestrictToMyDrive = False
+    , _cwSpaces = "drive"
+    , _cwPageToken = pCwPageToken_
+    , _cwPageSize = 100
+    , _cwIncludeRemoved = True
     }
 
--- | Whether to include public files the user has opened and shared files.
--- When set to false, the list only includes owned files plus any shared or
--- public files the user has explicitly added to a folder they own.
-cwIncludeSubscribed :: Lens' ChangesWatch Bool
-cwIncludeSubscribed
-  = lens _cwIncludeSubscribed
-      (\ s a -> s{_cwIncludeSubscribed = a})
-
--- | Change ID to start listing changes from.
-cwStartChangeId :: Lens' ChangesWatch (Maybe Int64)
-cwStartChangeId
-  = lens _cwStartChangeId
-      (\ s a -> s{_cwStartChangeId = a})
-      . mapping _Coerce
-
 -- | Multipart request metadata.
 cwPayload :: Lens' ChangesWatch Channel
 cwPayload
   = lens _cwPayload (\ s a -> s{_cwPayload = a})
 
--- | A comma-separated list of spaces to query. Supported values are
--- \'drive\', \'appDataFolder\' and \'photos\'.
-cwSpaces :: Lens' ChangesWatch (Maybe Text)
+-- | Whether to restrict the results to changes inside the My Drive
+-- hierarchy. This omits changes to files such as those in the Application
+-- Data folder or shared files which have not been added to My Drive.
+cwRestrictToMyDrive :: Lens' ChangesWatch Bool
+cwRestrictToMyDrive
+  = lens _cwRestrictToMyDrive
+      (\ s a -> s{_cwRestrictToMyDrive = a})
+
+-- | A comma-separated list of spaces to query within the user corpus.
+-- Supported values are \'drive\', \'appDataFolder\' and \'photos\'.
+cwSpaces :: Lens' ChangesWatch Text
 cwSpaces = lens _cwSpaces (\ s a -> s{_cwSpaces = a})
 
--- | Page token for changes.
-cwPageToken :: Lens' ChangesWatch (Maybe Text)
+-- | 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.
+cwPageToken :: Lens' ChangesWatch Text
 cwPageToken
   = lens _cwPageToken (\ s a -> s{_cwPageToken = a})
 
--- | Maximum number of changes to return.
-cwMaxResults :: Lens' ChangesWatch Int32
-cwMaxResults
-  = lens _cwMaxResults (\ s a -> s{_cwMaxResults = a})
-      . _Coerce
+-- | The maximum number of changes to return per page.
+cwPageSize :: Lens' ChangesWatch Int32
+cwPageSize
+  = lens _cwPageSize (\ s a -> s{_cwPageSize = a}) .
+      _Coerce
 
--- | Whether to include deleted items.
-cwIncludeDeleted :: Lens' ChangesWatch Bool
-cwIncludeDeleted
-  = lens _cwIncludeDeleted
-      (\ s a -> s{_cwIncludeDeleted = a})
+-- | Whether to include changes indicating that items have left the view of
+-- the changes list, for example by deletion or lost access.
+cwIncludeRemoved :: Lens' ChangesWatch Bool
+cwIncludeRemoved
+  = lens _cwIncludeRemoved
+      (\ s a -> s{_cwIncludeRemoved = a})
 
 instance GoogleRequest ChangesWatch where
         type Rs ChangesWatch = Channel
-        requestClient ChangesWatch{..}
-          = go (Just _cwIncludeSubscribed) _cwStartChangeId
-              _cwSpaces
-              _cwPageToken
-              (Just _cwMaxResults)
-              (Just _cwIncludeDeleted)
+        type Scopes ChangesWatch =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.appdata",
+               "https://www.googleapis.com/auth/drive.file",
+               "https://www.googleapis.com/auth/drive.metadata",
+               "https://www.googleapis.com/auth/drive.metadata.readonly",
+               "https://www.googleapis.com/auth/drive.photos.readonly",
+               "https://www.googleapis.com/auth/drive.readonly"]
+        requestClient ChangesWatch'{..}
+          = go (Just _cwPageToken) (Just _cwRestrictToMyDrive)
+              (Just _cwSpaces)
+              (Just _cwPageSize)
+              (Just _cwIncludeRemoved)
               (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
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Channels.Stop
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -43,7 +43,7 @@
 -- 'ChannelsStop' request conforms to.
 type ChannelsStopResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "channels" :>
            "stop" :>
              QueryParam "alt" AltJSON :>
@@ -52,7 +52,7 @@
 -- | Stop watching resources through this channel
 --
 -- /See:/ 'channelsStop' smart constructor.
-newtype ChannelsStop = ChannelsStop
+newtype ChannelsStop = ChannelsStop'
     { _csPayload :: Channel
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -65,7 +65,7 @@
     :: Channel -- ^ 'csPayload'
     -> ChannelsStop
 channelsStop pCsPayload_ =
-    ChannelsStop
+    ChannelsStop'
     { _csPayload = pCsPayload_
     }
 
@@ -76,7 +76,15 @@
 
 instance GoogleRequest ChannelsStop where
         type Rs ChannelsStop = ()
-        requestClient ChannelsStop{..}
+        type Scopes ChannelsStop =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.appdata",
+               "https://www.googleapis.com/auth/drive.file",
+               "https://www.googleapis.com/auth/drive.metadata",
+               "https://www.googleapis.com/auth/drive.metadata.readonly",
+               "https://www.googleapis.com/auth/drive.photos.readonly",
+               "https://www.googleapis.com/auth/drive.readonly"]
+        requestClient ChannelsStop'{..}
           = go (Just AltJSON) _csPayload driveService
           where go
                   = buildClient (Proxy :: Proxy ChannelsStopResource)
diff --git a/gen/Network/Google/Resource/Drive/Children/Delete.hs b/gen/Network/Google/Resource/Drive/Children/Delete.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Children/Delete.hs
+++ /dev/null
@@ -1,96 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Children.Delete
--- Copyright   : (c) 2015 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)
---
--- Removes a child from a folder.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.children.delete@.
-module Network.Google.Resource.Drive.Children.Delete
-    (
-    -- * REST Resource
-      ChildrenDeleteResource
-
-    -- * Creating a Request
-    , childrenDelete
-    , ChildrenDelete
-
-    -- * Request Lenses
-    , cdFolderId
-    , cdChildId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.children.delete@ method which the
--- 'ChildrenDelete' request conforms to.
-type ChildrenDeleteResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "folderId" Text :>
-             "children" :>
-               Capture "childId" Text :>
-                 QueryParam "alt" AltJSON :> Delete '[JSON] ()
-
--- | Removes a child from a folder.
---
--- /See:/ 'childrenDelete' smart constructor.
-data ChildrenDelete = ChildrenDelete
-    { _cdFolderId :: !Text
-    , _cdChildId  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChildrenDelete' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cdFolderId'
---
--- * 'cdChildId'
-childrenDelete
-    :: Text -- ^ 'cdFolderId'
-    -> Text -- ^ 'cdChildId'
-    -> ChildrenDelete
-childrenDelete pCdFolderId_ pCdChildId_ =
-    ChildrenDelete
-    { _cdFolderId = pCdFolderId_
-    , _cdChildId = pCdChildId_
-    }
-
--- | The ID of the folder.
-cdFolderId :: Lens' ChildrenDelete Text
-cdFolderId
-  = lens _cdFolderId (\ s a -> s{_cdFolderId = a})
-
--- | The ID of the child.
-cdChildId :: Lens' ChildrenDelete Text
-cdChildId
-  = lens _cdChildId (\ s a -> s{_cdChildId = a})
-
-instance GoogleRequest ChildrenDelete where
-        type Rs ChildrenDelete = ()
-        requestClient ChildrenDelete{..}
-          = go _cdFolderId _cdChildId (Just AltJSON)
-              driveService
-          where go
-                  = buildClient (Proxy :: Proxy ChildrenDeleteResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Children/Get.hs b/gen/Network/Google/Resource/Drive/Children/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Children/Get.hs
+++ /dev/null
@@ -1,97 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Children.Get
--- Copyright   : (c) 2015 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 specific child reference.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.children.get@.
-module Network.Google.Resource.Drive.Children.Get
-    (
-    -- * REST Resource
-      ChildrenGetResource
-
-    -- * Creating a Request
-    , childrenGet
-    , ChildrenGet
-
-    -- * Request Lenses
-    , cgFolderId
-    , cgChildId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.children.get@ method which the
--- 'ChildrenGet' request conforms to.
-type ChildrenGetResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "folderId" Text :>
-             "children" :>
-               Capture "childId" Text :>
-                 QueryParam "alt" AltJSON :>
-                   Get '[JSON] ChildReference
-
--- | Gets a specific child reference.
---
--- /See:/ 'childrenGet' smart constructor.
-data ChildrenGet = ChildrenGet
-    { _cgFolderId :: !Text
-    , _cgChildId  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChildrenGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cgFolderId'
---
--- * 'cgChildId'
-childrenGet
-    :: Text -- ^ 'cgFolderId'
-    -> Text -- ^ 'cgChildId'
-    -> ChildrenGet
-childrenGet pCgFolderId_ pCgChildId_ =
-    ChildrenGet
-    { _cgFolderId = pCgFolderId_
-    , _cgChildId = pCgChildId_
-    }
-
--- | The ID of the folder.
-cgFolderId :: Lens' ChildrenGet Text
-cgFolderId
-  = lens _cgFolderId (\ s a -> s{_cgFolderId = a})
-
--- | The ID of the child.
-cgChildId :: Lens' ChildrenGet Text
-cgChildId
-  = lens _cgChildId (\ s a -> s{_cgChildId = a})
-
-instance GoogleRequest ChildrenGet where
-        type Rs ChildrenGet = ChildReference
-        requestClient ChildrenGet{..}
-          = go _cgFolderId _cgChildId (Just AltJSON)
-              driveService
-          where go
-                  = buildClient (Proxy :: Proxy ChildrenGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Children/Insert.hs b/gen/Network/Google/Resource/Drive/Children/Insert.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Children/Insert.hs
+++ /dev/null
@@ -1,97 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Children.Insert
--- Copyright   : (c) 2015 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)
---
--- Inserts a file into a folder.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.children.insert@.
-module Network.Google.Resource.Drive.Children.Insert
-    (
-    -- * REST Resource
-      ChildrenInsertResource
-
-    -- * Creating a Request
-    , childrenInsert
-    , ChildrenInsert
-
-    -- * Request Lenses
-    , ciFolderId
-    , ciPayload
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.children.insert@ method which the
--- 'ChildrenInsert' request conforms to.
-type ChildrenInsertResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "folderId" Text :>
-             "children" :>
-               QueryParam "alt" AltJSON :>
-                 ReqBody '[JSON] ChildReference :>
-                   Post '[JSON] ChildReference
-
--- | Inserts a file into a folder.
---
--- /See:/ 'childrenInsert' smart constructor.
-data ChildrenInsert = ChildrenInsert
-    { _ciFolderId :: !Text
-    , _ciPayload  :: !ChildReference
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChildrenInsert' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ciFolderId'
---
--- * 'ciPayload'
-childrenInsert
-    :: Text -- ^ 'ciFolderId'
-    -> ChildReference -- ^ 'ciPayload'
-    -> ChildrenInsert
-childrenInsert pCiFolderId_ pCiPayload_ =
-    ChildrenInsert
-    { _ciFolderId = pCiFolderId_
-    , _ciPayload = pCiPayload_
-    }
-
--- | The ID of the folder.
-ciFolderId :: Lens' ChildrenInsert Text
-ciFolderId
-  = lens _ciFolderId (\ s a -> s{_ciFolderId = a})
-
--- | Multipart request metadata.
-ciPayload :: Lens' ChildrenInsert ChildReference
-ciPayload
-  = lens _ciPayload (\ s a -> s{_ciPayload = a})
-
-instance GoogleRequest ChildrenInsert where
-        type Rs ChildrenInsert = ChildReference
-        requestClient ChildrenInsert{..}
-          = go _ciFolderId (Just AltJSON) _ciPayload
-              driveService
-          where go
-                  = buildClient (Proxy :: Proxy ChildrenInsertResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Children/List.hs b/gen/Network/Google/Resource/Drive/Children/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Children/List.hs
+++ /dev/null
@@ -1,136 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Children.List
--- Copyright   : (c) 2015 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 a folder\'s children.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.children.list@.
-module Network.Google.Resource.Drive.Children.List
-    (
-    -- * REST Resource
-      ChildrenListResource
-
-    -- * Creating a Request
-    , childrenList
-    , ChildrenList
-
-    -- * Request Lenses
-    , cOrderBy
-    , cFolderId
-    , cQ
-    , cPageToken
-    , cMaxResults
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.children.list@ method which the
--- 'ChildrenList' request conforms to.
-type ChildrenListResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "folderId" Text :>
-             "children" :>
-               QueryParam "orderBy" Text :>
-                 QueryParam "q" Text :>
-                   QueryParam "pageToken" Text :>
-                     QueryParam "maxResults" (Textual Int32) :>
-                       QueryParam "alt" AltJSON :> Get '[JSON] ChildList
-
--- | Lists a folder\'s children.
---
--- /See:/ 'childrenList' smart constructor.
-data ChildrenList = ChildrenList
-    { _cOrderBy    :: !(Maybe Text)
-    , _cFolderId   :: !Text
-    , _cQ          :: !(Maybe Text)
-    , _cPageToken  :: !(Maybe Text)
-    , _cMaxResults :: !(Textual Int32)
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ChildrenList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cOrderBy'
---
--- * 'cFolderId'
---
--- * 'cQ'
---
--- * 'cPageToken'
---
--- * 'cMaxResults'
-childrenList
-    :: Text -- ^ 'cFolderId'
-    -> ChildrenList
-childrenList pCFolderId_ =
-    ChildrenList
-    { _cOrderBy = Nothing
-    , _cFolderId = pCFolderId_
-    , _cQ = Nothing
-    , _cPageToken = Nothing
-    , _cMaxResults = 100
-    }
-
--- | A comma-separated list of sort keys. Valid keys are \'createdDate\',
--- \'folder\', \'lastViewedByMeDate\', \'modifiedByMeDate\',
--- \'modifiedDate\', \'quotaBytesUsed\', \'recency\', \'sharedWithMeDate\',
--- \'starred\', and \'title\'. Each key sorts ascending by default, but may
--- be reversed with the \'desc\' modifier. Example usage:
--- ?orderBy=folder,modifiedDate desc,title. Please note that there is a
--- current limitation for users with approximately one million files in
--- which the requested sort order is ignored.
-cOrderBy :: Lens' ChildrenList (Maybe Text)
-cOrderBy = lens _cOrderBy (\ s a -> s{_cOrderBy = a})
-
--- | The ID of the folder.
-cFolderId :: Lens' ChildrenList Text
-cFolderId
-  = lens _cFolderId (\ s a -> s{_cFolderId = a})
-
--- | Query string for searching children.
-cQ :: Lens' ChildrenList (Maybe Text)
-cQ = lens _cQ (\ s a -> s{_cQ = a})
-
--- | Page token for children.
-cPageToken :: Lens' ChildrenList (Maybe Text)
-cPageToken
-  = lens _cPageToken (\ s a -> s{_cPageToken = a})
-
--- | Maximum number of children to return.
-cMaxResults :: Lens' ChildrenList Int32
-cMaxResults
-  = lens _cMaxResults (\ s a -> s{_cMaxResults = a}) .
-      _Coerce
-
-instance GoogleRequest ChildrenList where
-        type Rs ChildrenList = ChildList
-        requestClient ChildrenList{..}
-          = go _cFolderId _cOrderBy _cQ _cPageToken
-              (Just _cMaxResults)
-              (Just AltJSON)
-              driveService
-          where go
-                  = buildClient (Proxy :: Proxy ChildrenListResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Comments/Create.hs b/gen/Network/Google/Resource/Drive/Comments/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Drive/Comments/Create.hs
@@ -0,0 +1,97 @@
+{-# 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.Comments.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 comment on a file.
+--
+-- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.comments.create@.
+module Network.Google.Resource.Drive.Comments.Create
+    (
+    -- * REST Resource
+      CommentsCreateResource
+
+    -- * Creating a Request
+    , commentsCreate
+    , CommentsCreate
+
+    -- * Request Lenses
+    , ccPayload
+    , ccFileId
+    ) where
+
+import           Network.Google.Drive.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @drive.comments.create@ method which the
+-- 'CommentsCreate' request conforms to.
+type CommentsCreateResource =
+     "drive" :>
+       "v3" :>
+         "files" :>
+           Capture "fileId" Text :>
+             "comments" :>
+               QueryParam "alt" AltJSON :>
+                 ReqBody '[JSON] Comment :> Post '[JSON] Comment
+
+-- | Creates a new comment on a file.
+--
+-- /See:/ 'commentsCreate' smart constructor.
+data CommentsCreate = CommentsCreate'
+    { _ccPayload :: !Comment
+    , _ccFileId  :: !Text
+    } 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:
+--
+-- * 'ccPayload'
+--
+-- * 'ccFileId'
+commentsCreate
+    :: Comment -- ^ 'ccPayload'
+    -> Text -- ^ 'ccFileId'
+    -> CommentsCreate
+commentsCreate pCcPayload_ pCcFileId_ =
+    CommentsCreate'
+    { _ccPayload = pCcPayload_
+    , _ccFileId = pCcFileId_
+    }
+
+-- | Multipart request metadata.
+ccPayload :: Lens' CommentsCreate Comment
+ccPayload
+  = lens _ccPayload (\ s a -> s{_ccPayload = a})
+
+-- | The ID of the file.
+ccFileId :: Lens' CommentsCreate Text
+ccFileId = lens _ccFileId (\ s a -> s{_ccFileId = a})
+
+instance GoogleRequest CommentsCreate where
+        type Rs CommentsCreate = Comment
+        type Scopes CommentsCreate =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.file"]
+        requestClient CommentsCreate'{..}
+          = go _ccFileId (Just AltJSON) _ccPayload driveService
+          where go
+                  = buildClient (Proxy :: Proxy CommentsCreateResource)
+                      mempty
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
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Comments.Delete
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -44,7 +44,7 @@
 -- 'CommentsDelete' request conforms to.
 type CommentsDeleteResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            Capture "fileId" Text :>
              "comments" :>
@@ -54,7 +54,7 @@
 -- | Deletes a comment.
 --
 -- /See:/ 'commentsDelete' smart constructor.
-data CommentsDelete = CommentsDelete
+data CommentsDelete = CommentsDelete'
     { _cdFileId    :: !Text
     , _cdCommentId :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -71,7 +71,7 @@
     -> Text -- ^ 'cdCommentId'
     -> CommentsDelete
 commentsDelete pCdFileId_ pCdCommentId_ =
-    CommentsDelete
+    CommentsDelete'
     { _cdFileId = pCdFileId_
     , _cdCommentId = pCdCommentId_
     }
@@ -87,7 +87,10 @@
 
 instance GoogleRequest CommentsDelete where
         type Rs CommentsDelete = ()
-        requestClient CommentsDelete{..}
+        type Scopes CommentsDelete =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.file"]
+        requestClient CommentsDelete'{..}
           = go _cdFileId _cdCommentId (Just AltJSON)
               driveService
           where go
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
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Comments.Get
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -45,7 +45,7 @@
 -- 'CommentsGet' request conforms to.
 type CommentsGetResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            Capture "fileId" Text :>
              "comments" :>
@@ -56,7 +56,7 @@
 -- | Gets a comment by ID.
 --
 -- /See:/ 'commentsGet' smart constructor.
-data CommentsGet = CommentsGet
+data CommentsGet = CommentsGet'
     { _cgFileId         :: !Text
     , _cgCommentId      :: !Text
     , _cgIncludeDeleted :: !Bool
@@ -76,7 +76,7 @@
     -> Text -- ^ 'cgCommentId'
     -> CommentsGet
 commentsGet pCgFileId_ pCgCommentId_ =
-    CommentsGet
+    CommentsGet'
     { _cgFileId = pCgFileId_
     , _cgCommentId = pCgCommentId_
     , _cgIncludeDeleted = False
@@ -91,8 +91,8 @@
 cgCommentId
   = lens _cgCommentId (\ s a -> s{_cgCommentId = a})
 
--- | If set, this will succeed when retrieving a deleted comment, and will
--- include any deleted replies.
+-- | Whether to return deleted comments. Deleted comments will not include
+-- their original content.
 cgIncludeDeleted :: Lens' CommentsGet Bool
 cgIncludeDeleted
   = lens _cgIncludeDeleted
@@ -100,7 +100,11 @@
 
 instance GoogleRequest CommentsGet where
         type Rs CommentsGet = Comment
-        requestClient CommentsGet{..}
+        type Scopes CommentsGet =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.file",
+               "https://www.googleapis.com/auth/drive.readonly"]
+        requestClient CommentsGet'{..}
           = go _cgFileId _cgCommentId (Just _cgIncludeDeleted)
               (Just AltJSON)
               driveService
diff --git a/gen/Network/Google/Resource/Drive/Comments/Insert.hs b/gen/Network/Google/Resource/Drive/Comments/Insert.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Comments/Insert.hs
+++ /dev/null
@@ -1,96 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Comments.Insert
--- Copyright   : (c) 2015 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 comment on the given file.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.comments.insert@.
-module Network.Google.Resource.Drive.Comments.Insert
-    (
-    -- * REST Resource
-      CommentsInsertResource
-
-    -- * Creating a Request
-    , commentsInsert
-    , CommentsInsert
-
-    -- * Request Lenses
-    , comPayload
-    , comFileId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.comments.insert@ method which the
--- 'CommentsInsert' request conforms to.
-type CommentsInsertResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "comments" :>
-               QueryParam "alt" AltJSON :>
-                 ReqBody '[JSON] Comment :> Post '[JSON] Comment
-
--- | Creates a new comment on the given file.
---
--- /See:/ 'commentsInsert' smart constructor.
-data CommentsInsert = CommentsInsert
-    { _comPayload :: !Comment
-    , _comFileId  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CommentsInsert' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'comPayload'
---
--- * 'comFileId'
-commentsInsert
-    :: Comment -- ^ 'comPayload'
-    -> Text -- ^ 'comFileId'
-    -> CommentsInsert
-commentsInsert pComPayload_ pComFileId_ =
-    CommentsInsert
-    { _comPayload = pComPayload_
-    , _comFileId = pComFileId_
-    }
-
--- | Multipart request metadata.
-comPayload :: Lens' CommentsInsert Comment
-comPayload
-  = lens _comPayload (\ s a -> s{_comPayload = a})
-
--- | The ID of the file.
-comFileId :: Lens' CommentsInsert Text
-comFileId
-  = lens _comFileId (\ s a -> s{_comFileId = a})
-
-instance GoogleRequest CommentsInsert where
-        type Rs CommentsInsert = Comment
-        requestClient CommentsInsert{..}
-          = go _comFileId (Just AltJSON) _comPayload
-              driveService
-          where go
-                  = buildClient (Proxy :: Proxy CommentsInsertResource)
-                      mempty
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
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Comments.List
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -33,11 +33,11 @@
     , CommentsList
 
     -- * Request Lenses
-    , cllUpdatedMin
-    , cllPageToken
-    , cllFileId
-    , cllMaxResults
-    , cllIncludeDeleted
+    , cStartModifiedTime
+    , cPageToken
+    , cFileId
+    , cPageSize
+    , cIncludeDeleted
     ) where
 
 import           Network.Google.Drive.Types
@@ -47,92 +47,93 @@
 -- 'CommentsList' request conforms to.
 type CommentsListResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            Capture "fileId" Text :>
              "comments" :>
-               QueryParam "updatedMin" Text :>
+               QueryParam "startModifiedTime" Text :>
                  QueryParam "pageToken" Text :>
-                   QueryParam "maxResults" (Textual Int32) :>
+                   QueryParam "pageSize" (Textual Int32) :>
                      QueryParam "includeDeleted" Bool :>
                        QueryParam "alt" AltJSON :> Get '[JSON] CommentList
 
 -- | Lists a file\'s comments.
 --
 -- /See:/ 'commentsList' smart constructor.
-data CommentsList = CommentsList
-    { _cllUpdatedMin     :: !(Maybe Text)
-    , _cllPageToken      :: !(Maybe Text)
-    , _cllFileId         :: !Text
-    , _cllMaxResults     :: !(Textual Int32)
-    , _cllIncludeDeleted :: !Bool
+data CommentsList = CommentsList'
+    { _cStartModifiedTime :: !(Maybe Text)
+    , _cPageToken         :: !(Maybe Text)
+    , _cFileId            :: !Text
+    , _cPageSize          :: !(Textual Int32)
+    , _cIncludeDeleted    :: !Bool
     } 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:
 --
--- * 'cllUpdatedMin'
+-- * 'cStartModifiedTime'
 --
--- * 'cllPageToken'
+-- * 'cPageToken'
 --
--- * 'cllFileId'
+-- * 'cFileId'
 --
--- * 'cllMaxResults'
+-- * 'cPageSize'
 --
--- * 'cllIncludeDeleted'
+-- * 'cIncludeDeleted'
 commentsList
-    :: Text -- ^ 'cllFileId'
+    :: Text -- ^ 'cFileId'
     -> CommentsList
-commentsList pCllFileId_ =
-    CommentsList
-    { _cllUpdatedMin = Nothing
-    , _cllPageToken = Nothing
-    , _cllFileId = pCllFileId_
-    , _cllMaxResults = 20
-    , _cllIncludeDeleted = False
+commentsList pCFileId_ =
+    CommentsList'
+    { _cStartModifiedTime = Nothing
+    , _cPageToken = Nothing
+    , _cFileId = pCFileId_
+    , _cPageSize = 20
+    , _cIncludeDeleted = False
     }
 
--- | Only discussions that were updated after this timestamp will be
--- returned. Formatted as an RFC 3339 timestamp.
-cllUpdatedMin :: Lens' CommentsList (Maybe Text)
-cllUpdatedMin
-  = lens _cllUpdatedMin
-      (\ s a -> s{_cllUpdatedMin = a})
+-- | The minimum value of \'modifiedTime\' for the result comments (RFC 3339
+-- date-time).
+cStartModifiedTime :: Lens' CommentsList (Maybe Text)
+cStartModifiedTime
+  = lens _cStartModifiedTime
+      (\ s a -> s{_cStartModifiedTime = a})
 
--- | The continuation token, used to page through large result sets. To get
--- the next page of results, set this parameter to the value of
--- \"nextPageToken\" from the previous response.
-cllPageToken :: Lens' CommentsList (Maybe Text)
-cllPageToken
-  = lens _cllPageToken (\ s a -> s{_cllPageToken = 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.
+cPageToken :: Lens' CommentsList (Maybe Text)
+cPageToken
+  = lens _cPageToken (\ s a -> s{_cPageToken = a})
 
 -- | The ID of the file.
-cllFileId :: Lens' CommentsList Text
-cllFileId
-  = lens _cllFileId (\ s a -> s{_cllFileId = a})
+cFileId :: Lens' CommentsList Text
+cFileId = lens _cFileId (\ s a -> s{_cFileId = a})
 
--- | The maximum number of discussions to include in the response, used for
--- paging.
-cllMaxResults :: Lens' CommentsList Int32
-cllMaxResults
-  = lens _cllMaxResults
-      (\ s a -> s{_cllMaxResults = a})
-      . _Coerce
+-- | The maximum number of comments to return per page.
+cPageSize :: Lens' CommentsList Int32
+cPageSize
+  = lens _cPageSize (\ s a -> s{_cPageSize = a}) .
+      _Coerce
 
--- | If set, all comments and replies, including deleted comments and replies
--- (with content stripped) will be returned.
-cllIncludeDeleted :: Lens' CommentsList Bool
-cllIncludeDeleted
-  = lens _cllIncludeDeleted
-      (\ s a -> s{_cllIncludeDeleted = a})
+-- | Whether to include deleted comments. Deleted comments will not include
+-- their original content.
+cIncludeDeleted :: Lens' CommentsList Bool
+cIncludeDeleted
+  = lens _cIncludeDeleted
+      (\ s a -> s{_cIncludeDeleted = a})
 
 instance GoogleRequest CommentsList where
         type Rs CommentsList = CommentList
-        requestClient CommentsList{..}
-          = go _cllFileId _cllUpdatedMin _cllPageToken
-              (Just _cllMaxResults)
-              (Just _cllIncludeDeleted)
+        type Scopes CommentsList =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.file",
+               "https://www.googleapis.com/auth/drive.readonly"]
+        requestClient CommentsList'{..}
+          = go _cFileId _cStartModifiedTime _cPageToken
+              (Just _cPageSize)
+              (Just _cIncludeDeleted)
               (Just AltJSON)
               driveService
           where go
diff --git a/gen/Network/Google/Resource/Drive/Comments/Patch.hs b/gen/Network/Google/Resource/Drive/Comments/Patch.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Comments/Patch.hs
+++ /dev/null
@@ -1,107 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Comments.Patch
--- Copyright   : (c) 2015 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 an existing comment. This method supports patch semantics.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.comments.patch@.
-module Network.Google.Resource.Drive.Comments.Patch
-    (
-    -- * REST Resource
-      CommentsPatchResource
-
-    -- * Creating a Request
-    , commentsPatch
-    , CommentsPatch
-
-    -- * Request Lenses
-    , cpPayload
-    , cpFileId
-    , cpCommentId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.comments.patch@ method which the
--- 'CommentsPatch' request conforms to.
-type CommentsPatchResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "comments" :>
-               Capture "commentId" Text :>
-                 QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] Comment :> Patch '[JSON] Comment
-
--- | Updates an existing comment. This method supports patch semantics.
---
--- /See:/ 'commentsPatch' smart constructor.
-data CommentsPatch = CommentsPatch
-    { _cpPayload   :: !Comment
-    , _cpFileId    :: !Text
-    , _cpCommentId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'CommentsPatch' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'cpPayload'
---
--- * 'cpFileId'
---
--- * 'cpCommentId'
-commentsPatch
-    :: Comment -- ^ 'cpPayload'
-    -> Text -- ^ 'cpFileId'
-    -> Text -- ^ 'cpCommentId'
-    -> CommentsPatch
-commentsPatch pCpPayload_ pCpFileId_ pCpCommentId_ =
-    CommentsPatch
-    { _cpPayload = pCpPayload_
-    , _cpFileId = pCpFileId_
-    , _cpCommentId = pCpCommentId_
-    }
-
--- | Multipart request metadata.
-cpPayload :: Lens' CommentsPatch Comment
-cpPayload
-  = lens _cpPayload (\ s a -> s{_cpPayload = a})
-
--- | The ID of the file.
-cpFileId :: Lens' CommentsPatch Text
-cpFileId = lens _cpFileId (\ s a -> s{_cpFileId = a})
-
--- | The ID of the comment.
-cpCommentId :: Lens' CommentsPatch Text
-cpCommentId
-  = lens _cpCommentId (\ s a -> s{_cpCommentId = a})
-
-instance GoogleRequest CommentsPatch where
-        type Rs CommentsPatch = Comment
-        requestClient CommentsPatch{..}
-          = go _cpFileId _cpCommentId (Just AltJSON) _cpPayload
-              driveService
-          where go
-                  = buildClient (Proxy :: Proxy CommentsPatchResource)
-                      mempty
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
@@ -14,13 +14,13 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Comments.Update
--- Copyright   : (c) 2015 Brendan Hay
+-- 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 an existing comment.
+-- Updates a comment with patch semantics.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.comments.update@.
 module Network.Google.Resource.Drive.Comments.Update
@@ -45,18 +45,18 @@
 -- 'CommentsUpdate' request conforms to.
 type CommentsUpdateResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            Capture "fileId" Text :>
              "comments" :>
                Capture "commentId" Text :>
                  QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] Comment :> Put '[JSON] Comment
+                   ReqBody '[JSON] Comment :> Patch '[JSON] Comment
 
--- | Updates an existing comment.
+-- | Updates a comment with patch semantics.
 --
 -- /See:/ 'commentsUpdate' smart constructor.
-data CommentsUpdate = CommentsUpdate
+data CommentsUpdate = CommentsUpdate'
     { _cuPayload   :: !Comment
     , _cuFileId    :: !Text
     , _cuCommentId :: !Text
@@ -77,7 +77,7 @@
     -> Text -- ^ 'cuCommentId'
     -> CommentsUpdate
 commentsUpdate pCuPayload_ pCuFileId_ pCuCommentId_ =
-    CommentsUpdate
+    CommentsUpdate'
     { _cuPayload = pCuPayload_
     , _cuFileId = pCuFileId_
     , _cuCommentId = pCuCommentId_
@@ -99,7 +99,10 @@
 
 instance GoogleRequest CommentsUpdate where
         type Rs CommentsUpdate = Comment
-        requestClient CommentsUpdate{..}
+        type Scopes CommentsUpdate =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.file"]
+        requestClient CommentsUpdate'{..}
           = go _cuFileId _cuCommentId (Just AltJSON) _cuPayload
               driveService
           where go
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
@@ -14,13 +14,14 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Files.Copy
--- Copyright   : (c) 2015 Brendan Hay
+-- 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 copy of the specified file.
+-- Creates a copy of a file and applies any requested updates with patch
+-- semantics.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.files.copy@.
 module Network.Google.Resource.Drive.Files.Copy
@@ -33,15 +34,11 @@
     , FilesCopy
 
     -- * Request Lenses
-    , fcPinned
-    , fcVisibility
-    , fcTimedTextLanguage
-    , fcPayload
-    , fcTimedTextTrackName
-    , fcOCRLanguage
-    , fcConvert
-    , fcFileId
-    , fcOCR
+    , fPayload
+    , fOCRLanguage
+    , fKeepRevisionForever
+    , fIgnoreDefaultVisibility
+    , fFileId
     ) where
 
 import           Network.Google.Drive.Types
@@ -51,132 +48,97 @@
 -- 'FilesCopy' request conforms to.
 type FilesCopyResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            Capture "fileId" Text :>
              "copy" :>
-               QueryParam "pinned" Bool :>
-                 QueryParam "visibility" FilesCopyVisibility :>
-                   QueryParam "timedTextLanguage" Text :>
-                     QueryParam "timedTextTrackName" Text :>
-                       QueryParam "ocrLanguage" Text :>
-                         QueryParam "convert" Bool :>
-                           QueryParam "ocr" Bool :>
-                             QueryParam "alt" AltJSON :>
-                               ReqBody '[JSON] File :> Post '[JSON] File
+               QueryParam "ocrLanguage" Text :>
+                 QueryParam "keepRevisionForever" Bool :>
+                   QueryParam "ignoreDefaultVisibility" Bool :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] File :> Post '[JSON] File
 
--- | Creates a copy of the specified file.
+-- | Creates a copy of a file and applies any requested updates with patch
+-- semantics.
 --
 -- /See:/ 'filesCopy' smart constructor.
-data FilesCopy = FilesCopy
-    { _fcPinned             :: !Bool
-    , _fcVisibility         :: !FilesCopyVisibility
-    , _fcTimedTextLanguage  :: !(Maybe Text)
-    , _fcPayload            :: !File
-    , _fcTimedTextTrackName :: !(Maybe Text)
-    , _fcOCRLanguage        :: !(Maybe Text)
-    , _fcConvert            :: !Bool
-    , _fcFileId             :: !Text
-    , _fcOCR                :: !Bool
+data FilesCopy = FilesCopy'
+    { _fPayload                 :: !File
+    , _fOCRLanguage             :: !(Maybe Text)
+    , _fKeepRevisionForever     :: !Bool
+    , _fIgnoreDefaultVisibility :: !Bool
+    , _fFileId                  :: !Text
     } 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:
 --
--- * 'fcPinned'
---
--- * 'fcVisibility'
---
--- * 'fcTimedTextLanguage'
---
--- * 'fcPayload'
---
--- * 'fcTimedTextTrackName'
+-- * 'fPayload'
 --
--- * 'fcOCRLanguage'
+-- * 'fOCRLanguage'
 --
--- * 'fcConvert'
+-- * 'fKeepRevisionForever'
 --
--- * 'fcFileId'
+-- * 'fIgnoreDefaultVisibility'
 --
--- * 'fcOCR'
+-- * 'fFileId'
 filesCopy
-    :: File -- ^ 'fcPayload'
-    -> Text -- ^ 'fcFileId'
+    :: File -- ^ 'fPayload'
+    -> Text -- ^ 'fFileId'
     -> FilesCopy
-filesCopy pFcPayload_ pFcFileId_ =
-    FilesCopy
-    { _fcPinned = False
-    , _fcVisibility = FCVDefault
-    , _fcTimedTextLanguage = Nothing
-    , _fcPayload = pFcPayload_
-    , _fcTimedTextTrackName = Nothing
-    , _fcOCRLanguage = Nothing
-    , _fcConvert = False
-    , _fcFileId = pFcFileId_
-    , _fcOCR = False
+filesCopy pFPayload_ pFFileId_ =
+    FilesCopy'
+    { _fPayload = pFPayload_
+    , _fOCRLanguage = Nothing
+    , _fKeepRevisionForever = False
+    , _fIgnoreDefaultVisibility = False
+    , _fFileId = pFFileId_
     }
 
--- | Whether to pin the head revision of the new copy. A file can have a
--- maximum of 200 pinned revisions.
-fcPinned :: Lens' FilesCopy Bool
-fcPinned = lens _fcPinned (\ s a -> s{_fcPinned = a})
-
--- | The visibility of the new file. This parameter is only relevant when the
--- source is not a native Google Doc and convert=false.
-fcVisibility :: Lens' FilesCopy FilesCopyVisibility
-fcVisibility
-  = lens _fcVisibility (\ s a -> s{_fcVisibility = a})
-
--- | The language of the timed text.
-fcTimedTextLanguage :: Lens' FilesCopy (Maybe Text)
-fcTimedTextLanguage
-  = lens _fcTimedTextLanguage
-      (\ s a -> s{_fcTimedTextLanguage = a})
-
 -- | Multipart request metadata.
-fcPayload :: Lens' FilesCopy File
-fcPayload
-  = lens _fcPayload (\ s a -> s{_fcPayload = a})
-
--- | The timed text track name.
-fcTimedTextTrackName :: Lens' FilesCopy (Maybe Text)
-fcTimedTextTrackName
-  = lens _fcTimedTextTrackName
-      (\ s a -> s{_fcTimedTextTrackName = a})
+fPayload :: Lens' FilesCopy File
+fPayload = lens _fPayload (\ s a -> s{_fPayload = a})
 
--- | If ocr is true, hints at the language to use. Valid values are BCP 47
--- codes.
-fcOCRLanguage :: Lens' FilesCopy (Maybe Text)
-fcOCRLanguage
-  = lens _fcOCRLanguage
-      (\ s a -> s{_fcOCRLanguage = a})
+-- | A language hint for OCR processing during image import (ISO 639-1 code).
+fOCRLanguage :: Lens' FilesCopy (Maybe Text)
+fOCRLanguage
+  = lens _fOCRLanguage (\ s a -> s{_fOCRLanguage = a})
 
--- | Whether to convert this file to the corresponding Google Docs format.
-fcConvert :: Lens' FilesCopy Bool
-fcConvert
-  = lens _fcConvert (\ s a -> s{_fcConvert = a})
+-- | Whether to set the \'keepForever\' field in the new head revision. This
+-- is only applicable to files with binary content in Drive.
+fKeepRevisionForever :: Lens' FilesCopy Bool
+fKeepRevisionForever
+  = lens _fKeepRevisionForever
+      (\ s a -> s{_fKeepRevisionForever = a})
 
--- | The ID of the file to copy.
-fcFileId :: Lens' FilesCopy Text
-fcFileId = lens _fcFileId (\ s a -> s{_fcFileId = 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
+-- behavior for the request. Permissions are still inherited from parent
+-- folders.
+fIgnoreDefaultVisibility :: Lens' FilesCopy Bool
+fIgnoreDefaultVisibility
+  = lens _fIgnoreDefaultVisibility
+      (\ s a -> s{_fIgnoreDefaultVisibility = a})
 
--- | Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.
-fcOCR :: Lens' FilesCopy Bool
-fcOCR = lens _fcOCR (\ s a -> s{_fcOCR = a})
+-- | The ID of the file.
+fFileId :: Lens' FilesCopy Text
+fFileId = lens _fFileId (\ s a -> s{_fFileId = a})
 
 instance GoogleRequest FilesCopy where
         type Rs FilesCopy = File
-        requestClient FilesCopy{..}
-          = go _fcFileId (Just _fcPinned) (Just _fcVisibility)
-              _fcTimedTextLanguage
-              _fcTimedTextTrackName
-              _fcOCRLanguage
-              (Just _fcConvert)
-              (Just _fcOCR)
+        type Scopes FilesCopy =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.appdata",
+               "https://www.googleapis.com/auth/drive.file",
+               "https://www.googleapis.com/auth/drive.photos.readonly"]
+        requestClient FilesCopy'{..}
+          = go _fFileId _fOCRLanguage
+              (Just _fKeepRevisionForever)
+              (Just _fIgnoreDefaultVisibility)
               (Just AltJSON)
-              _fcPayload
+              _fPayload
               driveService
           where go
                   = buildClient (Proxy :: Proxy FilesCopyResource)
diff --git a/gen/Network/Google/Resource/Drive/Files/Create.hs b/gen/Network/Google/Resource/Drive/Files/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Drive/Files/Create.hs
@@ -0,0 +1,176 @@
+{-# 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.Files.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 file.
+--
+-- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.files.create@.
+module Network.Google.Resource.Drive.Files.Create
+    (
+    -- * REST Resource
+      FilesCreateResource
+
+    -- * Creating a Request
+    , filesCreate
+    , FilesCreate
+
+    -- * Request Lenses
+    , fcPayload
+    , fcUseContentAsIndexableText
+    , fcOCRLanguage
+    , fcKeepRevisionForever
+    , fcIgnoreDefaultVisibility
+    ) where
+
+import           Network.Google.Drive.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @drive.files.create@ method which the
+-- 'FilesCreate' request conforms to.
+type FilesCreateResource =
+     "drive" :>
+       "v3" :>
+         "files" :>
+           QueryParam "useContentAsIndexableText" Bool :>
+             QueryParam "ocrLanguage" Text :>
+               QueryParam "keepRevisionForever" Bool :>
+                 QueryParam "ignoreDefaultVisibility" Bool :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] File :> Post '[JSON] File
+       :<|>
+       "upload" :>
+         "drive" :>
+           "v3" :>
+             "files" :>
+               QueryParam "useContentAsIndexableText" Bool :>
+                 QueryParam "ocrLanguage" Text :>
+                   QueryParam "keepRevisionForever" Bool :>
+                     QueryParam "ignoreDefaultVisibility" Bool :>
+                       QueryParam "alt" AltJSON :>
+                         QueryParam "uploadType" Multipart :>
+                           MultipartRelated '[JSON] File :> Post '[JSON] File
+
+-- | Creates a new file.
+--
+-- /See:/ 'filesCreate' smart constructor.
+data FilesCreate = FilesCreate'
+    { _fcPayload                   :: !File
+    , _fcUseContentAsIndexableText :: !Bool
+    , _fcOCRLanguage               :: !(Maybe Text)
+    , _fcKeepRevisionForever       :: !Bool
+    , _fcIgnoreDefaultVisibility   :: !Bool
+    } 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:
+--
+-- * 'fcPayload'
+--
+-- * 'fcUseContentAsIndexableText'
+--
+-- * 'fcOCRLanguage'
+--
+-- * 'fcKeepRevisionForever'
+--
+-- * 'fcIgnoreDefaultVisibility'
+filesCreate
+    :: File -- ^ 'fcPayload'
+    -> FilesCreate
+filesCreate pFcPayload_ =
+    FilesCreate'
+    { _fcPayload = pFcPayload_
+    , _fcUseContentAsIndexableText = False
+    , _fcOCRLanguage = Nothing
+    , _fcKeepRevisionForever = False
+    , _fcIgnoreDefaultVisibility = False
+    }
+
+-- | Multipart request metadata.
+fcPayload :: Lens' FilesCreate File
+fcPayload
+  = lens _fcPayload (\ s a -> s{_fcPayload = a})
+
+-- | Whether to use the uploaded content as indexable text.
+fcUseContentAsIndexableText :: Lens' FilesCreate Bool
+fcUseContentAsIndexableText
+  = lens _fcUseContentAsIndexableText
+      (\ s a -> s{_fcUseContentAsIndexableText = a})
+
+-- | A language hint for OCR processing during image import (ISO 639-1 code).
+fcOCRLanguage :: Lens' FilesCreate (Maybe Text)
+fcOCRLanguage
+  = lens _fcOCRLanguage
+      (\ 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.
+fcKeepRevisionForever :: Lens' FilesCreate Bool
+fcKeepRevisionForever
+  = lens _fcKeepRevisionForever
+      (\ s a -> s{_fcKeepRevisionForever = 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
+-- behavior for the request. Permissions are still inherited from parent
+-- folders.
+fcIgnoreDefaultVisibility :: Lens' FilesCreate Bool
+fcIgnoreDefaultVisibility
+  = lens _fcIgnoreDefaultVisibility
+      (\ s a -> s{_fcIgnoreDefaultVisibility = a})
+
+instance GoogleRequest FilesCreate where
+        type Rs FilesCreate = File
+        type Scopes FilesCreate =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.appdata",
+               "https://www.googleapis.com/auth/drive.file"]
+        requestClient FilesCreate'{..}
+          = go (Just _fcUseContentAsIndexableText)
+              _fcOCRLanguage
+              (Just _fcKeepRevisionForever)
+              (Just _fcIgnoreDefaultVisibility)
+              (Just AltJSON)
+              _fcPayload
+              driveService
+          where go :<|> _
+                  = buildClient (Proxy :: Proxy FilesCreateResource)
+                      mempty
+
+instance GoogleRequest (MediaUpload FilesCreate)
+         where
+        type Rs (MediaUpload FilesCreate) = File
+        type Scopes (MediaUpload FilesCreate) =
+             Scopes FilesCreate
+        requestClient (MediaUpload FilesCreate'{..} body)
+          = go (Just _fcUseContentAsIndexableText)
+              _fcOCRLanguage
+              (Just _fcKeepRevisionForever)
+              (Just _fcIgnoreDefaultVisibility)
+              (Just AltJSON)
+              (Just Multipart)
+              _fcPayload
+              body
+              driveService
+          where _ :<|> go
+                  = buildClient (Proxy :: Proxy FilesCreateResource)
+                      mempty
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
@@ -14,14 +14,15 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Files.Delete
--- Copyright   : (c) 2015 Brendan Hay
+-- 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 file by ID. Skips the trash. The currently
--- authenticated user must own the file.
+-- Permanently deletes a file owned by the user without moving it to the
+-- trash. 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
@@ -44,16 +45,17 @@
 -- 'FilesDelete' request conforms to.
 type FilesDeleteResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            Capture "fileId" Text :>
              QueryParam "alt" AltJSON :> Delete '[JSON] ()
 
--- | Permanently deletes a file by ID. Skips the trash. The currently
--- authenticated user must own the file.
+-- | Permanently deletes a file owned by the user without moving it to the
+-- trash. If the target is a folder, all descendants owned by the user are
+-- also deleted.
 --
 -- /See:/ 'filesDelete' smart constructor.
-newtype FilesDelete = FilesDelete
+newtype FilesDelete = FilesDelete'
     { _fdFileId :: Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -66,17 +68,21 @@
     :: Text -- ^ 'fdFileId'
     -> FilesDelete
 filesDelete pFdFileId_ =
-    FilesDelete
+    FilesDelete'
     { _fdFileId = pFdFileId_
     }
 
--- | The ID of the file to delete.
+-- | The ID of the file.
 fdFileId :: Lens' FilesDelete Text
 fdFileId = lens _fdFileId (\ s a -> s{_fdFileId = a})
 
 instance GoogleRequest FilesDelete where
         type Rs FilesDelete = ()
-        requestClient FilesDelete{..}
+        type Scopes FilesDelete =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.appdata",
+               "https://www.googleapis.com/auth/drive.file"]
+        requestClient FilesDelete'{..}
           = go _fdFileId (Just AltJSON) driveService
           where go
                   = buildClient (Proxy :: Proxy FilesDeleteResource)
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
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Files.EmptyTrash
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -41,7 +41,7 @@
 -- 'FilesEmptyTrash' request conforms to.
 type FilesEmptyTrashResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            "trash" :>
              QueryParam "alt" AltJSON :> Delete '[JSON] ()
@@ -50,18 +50,20 @@
 --
 -- /See:/ 'filesEmptyTrash' smart constructor.
 data FilesEmptyTrash =
-    FilesEmptyTrash
+    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
+filesEmptyTrash = FilesEmptyTrash'
 
 instance GoogleRequest FilesEmptyTrash where
         type Rs FilesEmptyTrash = ()
-        requestClient FilesEmptyTrash{}
+        type Scopes FilesEmptyTrash =
+             '["https://www.googleapis.com/auth/drive"]
+        requestClient FilesEmptyTrash'{}
           = go (Just AltJSON) driveService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Drive/Files/Export.hs b/gen/Network/Google/Resource/Drive/Files/Export.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Drive/Files/Export.hs
@@ -0,0 +1,122 @@
+{-# 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.Files.Export
+-- 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)
+--
+-- Exports a Google Doc to the requested MIME type and returns the exported
+-- content.
+--
+-- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.files.export@.
+module Network.Google.Resource.Drive.Files.Export
+    (
+    -- * REST Resource
+      FilesExportResource
+
+    -- * Creating a Request
+    , filesExport
+    , FilesExport
+
+    -- * Request Lenses
+    , feMimeType
+    , feFileId
+    ) where
+
+import           Network.Google.Drive.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @drive.files.export@ method which the
+-- 'FilesExport' request conforms to.
+type FilesExportResource =
+     "drive" :>
+       "v3" :>
+         "files" :>
+           Capture "fileId" Text :>
+             "export" :>
+               QueryParam "mimeType" Text :>
+                 QueryParam "alt" AltJSON :> Get '[JSON] ()
+       :<|>
+       "drive" :>
+         "v3" :>
+           "files" :>
+             Capture "fileId" Text :>
+               "export" :>
+                 QueryParam "mimeType" Text :>
+                   QueryParam "alt" AltMedia :>
+                     Get '[OctetStream] Stream
+
+-- | Exports a Google Doc to the requested MIME type and returns the exported
+-- content.
+--
+-- /See:/ 'filesExport' smart constructor.
+data FilesExport = FilesExport'
+    { _feMimeType :: !Text
+    , _feFileId   :: !Text
+    } 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:
+--
+-- * 'feMimeType'
+--
+-- * 'feFileId'
+filesExport
+    :: Text -- ^ 'feMimeType'
+    -> Text -- ^ 'feFileId'
+    -> FilesExport
+filesExport pFeMimeType_ pFeFileId_ =
+    FilesExport'
+    { _feMimeType = pFeMimeType_
+    , _feFileId = pFeFileId_
+    }
+
+-- | The MIME type of the format requested for this export.
+feMimeType :: Lens' FilesExport Text
+feMimeType
+  = lens _feMimeType (\ s a -> s{_feMimeType = a})
+
+-- | The ID of the file.
+feFileId :: Lens' FilesExport Text
+feFileId = lens _feFileId (\ s a -> s{_feFileId = a})
+
+instance GoogleRequest FilesExport where
+        type Rs FilesExport = ()
+        type Scopes FilesExport =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.file",
+               "https://www.googleapis.com/auth/drive.readonly"]
+        requestClient FilesExport'{..}
+          = go _feFileId (Just _feMimeType) (Just AltJSON)
+              driveService
+          where go :<|> _
+                  = buildClient (Proxy :: Proxy FilesExportResource)
+                      mempty
+
+instance GoogleRequest (MediaDownload FilesExport)
+         where
+        type Rs (MediaDownload FilesExport) = Stream
+        type Scopes (MediaDownload FilesExport) =
+             Scopes FilesExport
+        requestClient (MediaDownload FilesExport'{..})
+          = go _feFileId (Just _feMimeType) (Just AltMedia)
+              driveService
+          where _ :<|> go
+                  = buildClient (Proxy :: Proxy FilesExportResource)
+                      mempty
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
@@ -14,13 +14,13 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Files.GenerateIds
--- Copyright   : (c) 2015 Brendan Hay
+-- 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)
 --
--- Generates a set of file IDs which can be provided in insert requests.
+-- Generates a set of file IDs which can be provided in create requests.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.files.generateIds@.
 module Network.Google.Resource.Drive.Files.GenerateIds
@@ -34,7 +34,7 @@
 
     -- * Request Lenses
     , fgiSpace
-    , fgiMaxResults
+    , fgiCount
     ) where
 
 import           Network.Google.Drive.Types
@@ -44,19 +44,19 @@
 -- 'FilesGenerateIds' request conforms to.
 type FilesGenerateIdsResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            "generateIds" :>
              QueryParam "space" Text :>
-               QueryParam "maxResults" (Textual Int32) :>
+               QueryParam "count" (Textual Int32) :>
                  QueryParam "alt" AltJSON :> Get '[JSON] GeneratedIds
 
--- | Generates a set of file IDs which can be provided in insert requests.
+-- | Generates a set of file IDs which can be provided in create requests.
 --
 -- /See:/ 'filesGenerateIds' smart constructor.
-data FilesGenerateIds = FilesGenerateIds
-    { _fgiSpace      :: !Text
-    , _fgiMaxResults :: !(Textual Int32)
+data FilesGenerateIds = FilesGenerateIds'
+    { _fgiSpace :: !Text
+    , _fgiCount :: !(Textual Int32)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'FilesGenerateIds' with the minimum fields required to make a request.
@@ -65,13 +65,13 @@
 --
 -- * 'fgiSpace'
 --
--- * 'fgiMaxResults'
+-- * 'fgiCount'
 filesGenerateIds
     :: FilesGenerateIds
 filesGenerateIds =
-    FilesGenerateIds
+    FilesGenerateIds'
     { _fgiSpace = "drive"
-    , _fgiMaxResults = 10
+    , _fgiCount = 10
     }
 
 -- | The space in which the IDs can be used to create new files. Supported
@@ -79,18 +79,20 @@
 fgiSpace :: Lens' FilesGenerateIds Text
 fgiSpace = lens _fgiSpace (\ s a -> s{_fgiSpace = a})
 
--- | Maximum number of IDs to return.
-fgiMaxResults :: Lens' FilesGenerateIds Int32
-fgiMaxResults
-  = lens _fgiMaxResults
-      (\ s a -> s{_fgiMaxResults = a})
-      . _Coerce
+-- | The number of IDs to return.
+fgiCount :: Lens' FilesGenerateIds Int32
+fgiCount
+  = lens _fgiCount (\ s a -> s{_fgiCount = a}) .
+      _Coerce
 
 instance GoogleRequest FilesGenerateIds where
         type Rs FilesGenerateIds = GeneratedIds
-        requestClient FilesGenerateIds{..}
-          = go (Just _fgiSpace) (Just _fgiMaxResults)
-              (Just AltJSON)
+        type Scopes FilesGenerateIds =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.appdata",
+               "https://www.googleapis.com/auth/drive.file"]
+        requestClient FilesGenerateIds'{..}
+          = go (Just _fgiSpace) (Just _fgiCount) (Just AltJSON)
               driveService
           where go
                   = buildClient
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
@@ -14,13 +14,13 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Files.Get
--- Copyright   : (c) 2015 Brendan Hay
+-- 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 file\'s metadata by ID.
+-- Gets a file\'s metadata or content by ID.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.files.get@.
 module Network.Google.Resource.Drive.Files.Get
@@ -33,11 +33,8 @@
     , FilesGet
 
     -- * Request Lenses
-    , fgUpdateViewedDate
-    , fgProjection
     , fgAcknowledgeAbuse
     , fgFileId
-    , fgRevisionId
     ) where
 
 import           Network.Google.Drive.Types
@@ -47,98 +44,67 @@
 -- 'FilesGet' request conforms to.
 type FilesGetResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            Capture "fileId" Text :>
-             QueryParam "updateViewedDate" Bool :>
-               QueryParam "projection" FilesGetProjection :>
-                 QueryParam "acknowledgeAbuse" Bool :>
-                   QueryParam "revisionId" Text :>
-                     QueryParam "alt" AltJSON :> Get '[JSON] File
+             QueryParam "acknowledgeAbuse" Bool :>
+               QueryParam "alt" AltJSON :> Get '[JSON] File
        :<|>
        "drive" :>
-         "v2" :>
+         "v3" :>
            "files" :>
              Capture "fileId" Text :>
-               QueryParam "updateViewedDate" Bool :>
-                 QueryParam "projection" FilesGetProjection :>
-                   QueryParam "acknowledgeAbuse" Bool :>
-                     QueryParam "revisionId" Text :>
-                       QueryParam "alt" AltMedia :>
-                         Get '[OctetStream] Stream
+               QueryParam "acknowledgeAbuse" Bool :>
+                 QueryParam "alt" AltMedia :>
+                   Get '[OctetStream] Stream
 
--- | Gets a file\'s metadata by ID.
+-- | Gets a file\'s metadata or content by ID.
 --
 -- /See:/ 'filesGet' smart constructor.
-data FilesGet = FilesGet
-    { _fgUpdateViewedDate :: !Bool
-    , _fgProjection       :: !(Maybe FilesGetProjection)
-    , _fgAcknowledgeAbuse :: !Bool
+data FilesGet = FilesGet'
+    { _fgAcknowledgeAbuse :: !Bool
     , _fgFileId           :: !Text
-    , _fgRevisionId       :: !(Maybe Text)
     } 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:
 --
--- * 'fgUpdateViewedDate'
---
--- * 'fgProjection'
---
 -- * 'fgAcknowledgeAbuse'
 --
 -- * 'fgFileId'
---
--- * 'fgRevisionId'
 filesGet
     :: Text -- ^ 'fgFileId'
     -> FilesGet
 filesGet pFgFileId_ =
-    FilesGet
-    { _fgUpdateViewedDate = False
-    , _fgProjection = Nothing
-    , _fgAcknowledgeAbuse = False
+    FilesGet'
+    { _fgAcknowledgeAbuse = False
     , _fgFileId = pFgFileId_
-    , _fgRevisionId = Nothing
     }
 
--- | Deprecated: Use files.update with modifiedDateBehavior=noChange,
--- updateViewedDate=true and an empty request body.
-fgUpdateViewedDate :: Lens' FilesGet Bool
-fgUpdateViewedDate
-  = lens _fgUpdateViewedDate
-      (\ s a -> s{_fgUpdateViewedDate = a})
-
--- | This parameter is deprecated and has no function.
-fgProjection :: Lens' FilesGet (Maybe FilesGetProjection)
-fgProjection
-  = lens _fgProjection (\ s a -> s{_fgProjection = a})
-
 -- | Whether the user is acknowledging the risk of downloading known malware
--- or other abusive files.
+-- or other abusive files. This is only applicable when alt=media.
 fgAcknowledgeAbuse :: Lens' FilesGet Bool
 fgAcknowledgeAbuse
   = lens _fgAcknowledgeAbuse
       (\ s a -> s{_fgAcknowledgeAbuse = a})
 
--- | The ID for the file in question.
+-- | The ID of the file.
 fgFileId :: Lens' FilesGet Text
 fgFileId = lens _fgFileId (\ s a -> s{_fgFileId = a})
 
--- | Specifies the Revision ID that should be downloaded. Ignored unless
--- alt=media is specified.
-fgRevisionId :: Lens' FilesGet (Maybe Text)
-fgRevisionId
-  = lens _fgRevisionId (\ s a -> s{_fgRevisionId = a})
-
 instance GoogleRequest FilesGet where
         type Rs FilesGet = File
-        requestClient FilesGet{..}
-          = go _fgFileId (Just _fgUpdateViewedDate)
-              _fgProjection
-              (Just _fgAcknowledgeAbuse)
-              _fgRevisionId
+        type Scopes FilesGet =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.appdata",
+               "https://www.googleapis.com/auth/drive.file",
+               "https://www.googleapis.com/auth/drive.metadata",
+               "https://www.googleapis.com/auth/drive.metadata.readonly",
+               "https://www.googleapis.com/auth/drive.photos.readonly",
+               "https://www.googleapis.com/auth/drive.readonly"]
+        requestClient FilesGet'{..}
+          = go _fgFileId (Just _fgAcknowledgeAbuse)
               (Just AltJSON)
               driveService
           where go :<|> _
@@ -147,11 +113,10 @@
 
 instance GoogleRequest (MediaDownload FilesGet) where
         type Rs (MediaDownload FilesGet) = Stream
-        requestClient (MediaDownload FilesGet{..})
-          = go _fgFileId (Just _fgUpdateViewedDate)
-              _fgProjection
-              (Just _fgAcknowledgeAbuse)
-              _fgRevisionId
+        type Scopes (MediaDownload FilesGet) =
+             Scopes FilesGet
+        requestClient (MediaDownload FilesGet'{..})
+          = go _fgFileId (Just _fgAcknowledgeAbuse)
               (Just AltMedia)
               driveService
           where _ :<|> go
diff --git a/gen/Network/Google/Resource/Drive/Files/Insert.hs b/gen/Network/Google/Resource/Drive/Files/Insert.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Files/Insert.hs
+++ /dev/null
@@ -1,221 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Files.Insert
--- Copyright   : (c) 2015 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)
---
--- Insert a new file.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.files.insert@.
-module Network.Google.Resource.Drive.Files.Insert
-    (
-    -- * REST Resource
-      FilesInsertResource
-
-    -- * Creating a Request
-    , filesInsert
-    , FilesInsert
-
-    -- * Request Lenses
-    , fiPinned
-    , fiVisibility
-    , fiTimedTextLanguage
-    , fiPayload
-    , fiUseContentAsIndexableText
-    , fiTimedTextTrackName
-    , fiOCRLanguage
-    , fiConvert
-    , fiOCR
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.files.insert@ method which the
--- 'FilesInsert' request conforms to.
-type FilesInsertResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           QueryParam "pinned" Bool :>
-             QueryParam "visibility" FilesInsertVisibility :>
-               QueryParam "timedTextLanguage" Text :>
-                 QueryParam "useContentAsIndexableText" Bool :>
-                   QueryParam "timedTextTrackName" Text :>
-                     QueryParam "ocrLanguage" Text :>
-                       QueryParam "convert" Bool :>
-                         QueryParam "ocr" Bool :>
-                           QueryParam "alt" AltJSON :>
-                             ReqBody '[JSON] File :> Post '[JSON] File
-       :<|>
-       "upload" :>
-         "drive" :>
-           "v2" :>
-             "files" :>
-               QueryParam "pinned" Bool :>
-                 QueryParam "visibility" FilesInsertVisibility :>
-                   QueryParam "timedTextLanguage" Text :>
-                     QueryParam "useContentAsIndexableText" Bool :>
-                       QueryParam "timedTextTrackName" Text :>
-                         QueryParam "ocrLanguage" Text :>
-                           QueryParam "convert" Bool :>
-                             QueryParam "ocr" Bool :>
-                               QueryParam "alt" AltJSON :>
-                                 QueryParam "uploadType" AltMedia :>
-                                   MultipartRelated '[JSON] File RequestBody :>
-                                     Post '[JSON] File
-
--- | Insert a new file.
---
--- /See:/ 'filesInsert' smart constructor.
-data FilesInsert = FilesInsert
-    { _fiPinned                    :: !Bool
-    , _fiVisibility                :: !FilesInsertVisibility
-    , _fiTimedTextLanguage         :: !(Maybe Text)
-    , _fiPayload                   :: !File
-    , _fiUseContentAsIndexableText :: !Bool
-    , _fiTimedTextTrackName        :: !(Maybe Text)
-    , _fiOCRLanguage               :: !(Maybe Text)
-    , _fiConvert                   :: !Bool
-    , _fiOCR                       :: !Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FilesInsert' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fiPinned'
---
--- * 'fiVisibility'
---
--- * 'fiTimedTextLanguage'
---
--- * 'fiPayload'
---
--- * 'fiUseContentAsIndexableText'
---
--- * 'fiTimedTextTrackName'
---
--- * 'fiOCRLanguage'
---
--- * 'fiConvert'
---
--- * 'fiOCR'
-filesInsert
-    :: File -- ^ 'fiPayload'
-    -> FilesInsert
-filesInsert pFiPayload_ =
-    FilesInsert
-    { _fiPinned = False
-    , _fiVisibility = Default
-    , _fiTimedTextLanguage = Nothing
-    , _fiPayload = pFiPayload_
-    , _fiUseContentAsIndexableText = False
-    , _fiTimedTextTrackName = Nothing
-    , _fiOCRLanguage = Nothing
-    , _fiConvert = False
-    , _fiOCR = False
-    }
-
--- | Whether to pin the head revision of the uploaded file. A file can have a
--- maximum of 200 pinned revisions.
-fiPinned :: Lens' FilesInsert Bool
-fiPinned = lens _fiPinned (\ s a -> s{_fiPinned = a})
-
--- | The visibility of the new file. This parameter is only relevant when
--- convert=false.
-fiVisibility :: Lens' FilesInsert FilesInsertVisibility
-fiVisibility
-  = lens _fiVisibility (\ s a -> s{_fiVisibility = a})
-
--- | The language of the timed text.
-fiTimedTextLanguage :: Lens' FilesInsert (Maybe Text)
-fiTimedTextLanguage
-  = lens _fiTimedTextLanguage
-      (\ s a -> s{_fiTimedTextLanguage = a})
-
--- | Multipart request metadata.
-fiPayload :: Lens' FilesInsert File
-fiPayload
-  = lens _fiPayload (\ s a -> s{_fiPayload = a})
-
--- | Whether to use the content as indexable text.
-fiUseContentAsIndexableText :: Lens' FilesInsert Bool
-fiUseContentAsIndexableText
-  = lens _fiUseContentAsIndexableText
-      (\ s a -> s{_fiUseContentAsIndexableText = a})
-
--- | The timed text track name.
-fiTimedTextTrackName :: Lens' FilesInsert (Maybe Text)
-fiTimedTextTrackName
-  = lens _fiTimedTextTrackName
-      (\ s a -> s{_fiTimedTextTrackName = a})
-
--- | If ocr is true, hints at the language to use. Valid values are BCP 47
--- codes.
-fiOCRLanguage :: Lens' FilesInsert (Maybe Text)
-fiOCRLanguage
-  = lens _fiOCRLanguage
-      (\ s a -> s{_fiOCRLanguage = a})
-
--- | Whether to convert this file to the corresponding Google Docs format.
-fiConvert :: Lens' FilesInsert Bool
-fiConvert
-  = lens _fiConvert (\ s a -> s{_fiConvert = a})
-
--- | Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.
-fiOCR :: Lens' FilesInsert Bool
-fiOCR = lens _fiOCR (\ s a -> s{_fiOCR = a})
-
-instance GoogleRequest FilesInsert where
-        type Rs FilesInsert = File
-        requestClient FilesInsert{..}
-          = go (Just _fiPinned) (Just _fiVisibility)
-              _fiTimedTextLanguage
-              (Just _fiUseContentAsIndexableText)
-              _fiTimedTextTrackName
-              _fiOCRLanguage
-              (Just _fiConvert)
-              (Just _fiOCR)
-              (Just AltJSON)
-              _fiPayload
-              driveService
-          where go :<|> _
-                  = buildClient (Proxy :: Proxy FilesInsertResource)
-                      mempty
-
-instance GoogleRequest (MediaUpload FilesInsert)
-         where
-        type Rs (MediaUpload FilesInsert) = File
-        requestClient (MediaUpload FilesInsert{..} body)
-          = go (Just _fiPinned) (Just _fiVisibility)
-              _fiTimedTextLanguage
-              (Just _fiUseContentAsIndexableText)
-              _fiTimedTextTrackName
-              _fiOCRLanguage
-              (Just _fiConvert)
-              (Just _fiOCR)
-              (Just AltJSON)
-              (Just AltMedia)
-              _fiPayload
-              body
-              driveService
-          where _ :<|> go
-                  = buildClient (Proxy :: Proxy FilesInsertResource)
-                      mempty
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
@@ -14,13 +14,13 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Files.List
--- Copyright   : (c) 2015 Brendan Hay
+-- 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 files.
+-- Lists or searches files.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.files.list@.
 module Network.Google.Resource.Drive.Files.List
@@ -36,10 +36,9 @@
     , flOrderBy
     , flQ
     , flSpaces
-    , flProjection
     , flCorpus
     , flPageToken
-    , flMaxResults
+    , flPageSize
     ) where
 
 import           Network.Google.Drive.Types
@@ -49,28 +48,26 @@
 -- 'FilesList' request conforms to.
 type FilesListResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            QueryParam "orderBy" Text :>
              QueryParam "q" Text :>
                QueryParam "spaces" Text :>
-                 QueryParam "projection" FilesListProjection :>
-                   QueryParam "corpus" FilesListCorpus :>
-                     QueryParam "pageToken" Text :>
-                       QueryParam "maxResults" (Textual Int32) :>
-                         QueryParam "alt" AltJSON :> Get '[JSON] FileList
+                 QueryParam "corpus" FilesListCorpus :>
+                   QueryParam "pageToken" Text :>
+                     QueryParam "pageSize" (Textual Int32) :>
+                       QueryParam "alt" AltJSON :> Get '[JSON] FileList
 
--- | Lists the user\'s files.
+-- | Lists or searches files.
 --
 -- /See:/ 'filesList' smart constructor.
-data FilesList = FilesList
-    { _flOrderBy    :: !(Maybe Text)
-    , _flQ          :: !(Maybe Text)
-    , _flSpaces     :: !(Maybe Text)
-    , _flProjection :: !(Maybe FilesListProjection)
-    , _flCorpus     :: !(Maybe FilesListCorpus)
-    , _flPageToken  :: !(Maybe Text)
-    , _flMaxResults :: !(Textual Int32)
+data FilesList = FilesList'
+    { _flOrderBy   :: !(Maybe Text)
+    , _flQ         :: !(Maybe Text)
+    , _flSpaces    :: !Text
+    , _flCorpus    :: !FilesListCorpus
+    , _flPageToken :: !(Maybe Text)
+    , _flPageSize  :: !(Textual Int32)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'FilesList' with the minimum fields required to make a request.
@@ -83,74 +80,77 @@
 --
 -- * 'flSpaces'
 --
--- * 'flProjection'
---
 -- * 'flCorpus'
 --
 -- * 'flPageToken'
 --
--- * 'flMaxResults'
+-- * 'flPageSize'
 filesList
     :: FilesList
 filesList =
-    FilesList
+    FilesList'
     { _flOrderBy = Nothing
     , _flQ = Nothing
-    , _flSpaces = Nothing
-    , _flProjection = Nothing
-    , _flCorpus = Nothing
+    , _flSpaces = "drive"
+    , _flCorpus = FLCUser
     , _flPageToken = Nothing
-    , _flMaxResults = 100
+    , _flPageSize = 100
     }
 
--- | A comma-separated list of sort keys. Valid keys are \'createdDate\',
--- \'folder\', \'lastViewedByMeDate\', \'modifiedByMeDate\',
--- \'modifiedDate\', \'quotaBytesUsed\', \'recency\', \'sharedWithMeDate\',
--- \'starred\', and \'title\'. Each key sorts ascending by default, but may
--- be reversed with the \'desc\' modifier. Example usage:
--- ?orderBy=folder,modifiedDate desc,title. Please note that there is a
+-- | A comma-separated list of sort keys. Valid keys are \'createdTime\',
+-- \'folder\', \'modifiedByMeTime\', \'modifiedTime\', \'name\',
+-- \'quotaBytesUsed\', \'recency\', \'sharedWithMeTime\', \'starred\', and
+-- \'viewedByMeTime\'. Each key sorts ascending by default, but may be
+-- reversed with the \'desc\' modifier. Example usage:
+-- ?orderBy=folder,modifiedTime desc,name. Please note that there is a
 -- current limitation for users with approximately one million files in
 -- which the requested sort order is ignored.
 flOrderBy :: Lens' FilesList (Maybe Text)
 flOrderBy
   = lens _flOrderBy (\ s a -> s{_flOrderBy = a})
 
--- | Query string for searching files.
+-- | A query for filtering the file results. See the \"Search for Files\"
+-- guide for supported syntax.
 flQ :: Lens' FilesList (Maybe Text)
 flQ = lens _flQ (\ s a -> s{_flQ = a})
 
--- | A comma-separated list of spaces to query. Supported values are
--- \'drive\', \'appDataFolder\' and \'photos\'.
-flSpaces :: Lens' FilesList (Maybe Text)
+-- | A comma-separated list of spaces to query within the corpus. Supported
+-- values are \'drive\', \'appDataFolder\' and \'photos\'.
+flSpaces :: Lens' FilesList Text
 flSpaces = lens _flSpaces (\ s a -> s{_flSpaces = a})
 
--- | This parameter is deprecated and has no function.
-flProjection :: Lens' FilesList (Maybe FilesListProjection)
-flProjection
-  = lens _flProjection (\ s a -> s{_flProjection = a})
-
--- | The body of items (files\/documents) to which the query applies.
-flCorpus :: Lens' FilesList (Maybe FilesListCorpus)
+-- | The source of files to list.
+flCorpus :: Lens' FilesList FilesListCorpus
 flCorpus = lens _flCorpus (\ s a -> s{_flCorpus = a})
 
--- | Page token for files.
+-- | 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.
 flPageToken :: Lens' FilesList (Maybe Text)
 flPageToken
   = lens _flPageToken (\ s a -> s{_flPageToken = a})
 
--- | Maximum number of files to return.
-flMaxResults :: Lens' FilesList Int32
-flMaxResults
-  = lens _flMaxResults (\ s a -> s{_flMaxResults = a})
-      . _Coerce
+-- | The maximum number of files to return per page.
+flPageSize :: Lens' FilesList Int32
+flPageSize
+  = lens _flPageSize (\ s a -> s{_flPageSize = a}) .
+      _Coerce
 
 instance GoogleRequest FilesList where
         type Rs FilesList = FileList
-        requestClient FilesList{..}
-          = go _flOrderBy _flQ _flSpaces _flProjection
-              _flCorpus
+        type Scopes FilesList =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.appdata",
+               "https://www.googleapis.com/auth/drive.file",
+               "https://www.googleapis.com/auth/drive.metadata",
+               "https://www.googleapis.com/auth/drive.metadata.readonly",
+               "https://www.googleapis.com/auth/drive.photos.readonly",
+               "https://www.googleapis.com/auth/drive.readonly"]
+        requestClient FilesList'{..}
+          = go _flOrderBy _flQ (Just _flSpaces)
+              (Just _flCorpus)
               _flPageToken
-              (Just _flMaxResults)
+              (Just _flPageSize)
               (Just AltJSON)
               driveService
           where go
diff --git a/gen/Network/Google/Resource/Drive/Files/Patch.hs b/gen/Network/Google/Resource/Drive/Files/Patch.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Files/Patch.hs
+++ /dev/null
@@ -1,271 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Files.Patch
--- Copyright   : (c) 2015 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 file metadata and\/or content. This method supports patch
--- semantics.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.files.patch@.
-module Network.Google.Resource.Drive.Files.Patch
-    (
-    -- * REST Resource
-      FilesPatchResource
-
-    -- * Creating a Request
-    , filesPatch
-    , FilesPatch
-
-    -- * Request Lenses
-    , fpNewRevision
-    , fpPinned
-    , fpTimedTextLanguage
-    , fpPayload
-    , fpUpdateViewedDate
-    , fpRemoveParents
-    , fpModifiedDateBehavior
-    , fpUseContentAsIndexableText
-    , fpTimedTextTrackName
-    , fpOCRLanguage
-    , fpConvert
-    , fpSetModifiedDate
-    , fpFileId
-    , fpAddParents
-    , fpOCR
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.files.patch@ method which the
--- 'FilesPatch' request conforms to.
-type FilesPatchResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             QueryParam "newRevision" Bool :>
-               QueryParam "pinned" Bool :>
-                 QueryParam "timedTextLanguage" Text :>
-                   QueryParam "updateViewedDate" Bool :>
-                     QueryParam "removeParents" Text :>
-                       QueryParam "modifiedDateBehavior"
-                         FilesPatchModifiedDateBehavior
-                         :>
-                         QueryParam "useContentAsIndexableText" Bool :>
-                           QueryParam "timedTextTrackName" Text :>
-                             QueryParam "ocrLanguage" Text :>
-                               QueryParam "convert" Bool :>
-                                 QueryParam "setModifiedDate" Bool :>
-                                   QueryParam "addParents" Text :>
-                                     QueryParam "ocr" Bool :>
-                                       QueryParam "alt" AltJSON :>
-                                         ReqBody '[JSON] File :>
-                                           Patch '[JSON] File
-
--- | Updates file metadata and\/or content. This method supports patch
--- semantics.
---
--- /See:/ 'filesPatch' smart constructor.
-data FilesPatch = FilesPatch
-    { _fpNewRevision               :: !Bool
-    , _fpPinned                    :: !Bool
-    , _fpTimedTextLanguage         :: !(Maybe Text)
-    , _fpPayload                   :: !File
-    , _fpUpdateViewedDate          :: !Bool
-    , _fpRemoveParents             :: !(Maybe Text)
-    , _fpModifiedDateBehavior      :: !(Maybe FilesPatchModifiedDateBehavior)
-    , _fpUseContentAsIndexableText :: !Bool
-    , _fpTimedTextTrackName        :: !(Maybe Text)
-    , _fpOCRLanguage               :: !(Maybe Text)
-    , _fpConvert                   :: !Bool
-    , _fpSetModifiedDate           :: !Bool
-    , _fpFileId                    :: !Text
-    , _fpAddParents                :: !(Maybe Text)
-    , _fpOCR                       :: !Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FilesPatch' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fpNewRevision'
---
--- * 'fpPinned'
---
--- * 'fpTimedTextLanguage'
---
--- * 'fpPayload'
---
--- * 'fpUpdateViewedDate'
---
--- * 'fpRemoveParents'
---
--- * 'fpModifiedDateBehavior'
---
--- * 'fpUseContentAsIndexableText'
---
--- * 'fpTimedTextTrackName'
---
--- * 'fpOCRLanguage'
---
--- * 'fpConvert'
---
--- * 'fpSetModifiedDate'
---
--- * 'fpFileId'
---
--- * 'fpAddParents'
---
--- * 'fpOCR'
-filesPatch
-    :: File -- ^ 'fpPayload'
-    -> Text -- ^ 'fpFileId'
-    -> FilesPatch
-filesPatch pFpPayload_ pFpFileId_ =
-    FilesPatch
-    { _fpNewRevision = True
-    , _fpPinned = False
-    , _fpTimedTextLanguage = Nothing
-    , _fpPayload = pFpPayload_
-    , _fpUpdateViewedDate = True
-    , _fpRemoveParents = Nothing
-    , _fpModifiedDateBehavior = Nothing
-    , _fpUseContentAsIndexableText = False
-    , _fpTimedTextTrackName = Nothing
-    , _fpOCRLanguage = Nothing
-    , _fpConvert = False
-    , _fpSetModifiedDate = False
-    , _fpFileId = pFpFileId_
-    , _fpAddParents = Nothing
-    , _fpOCR = False
-    }
-
--- | Whether a blob upload should create a new revision. If false, the blob
--- data in the current head revision is replaced. If true or not set, a new
--- blob is created as head revision, and previous unpinned revisions are
--- preserved for a short period of time. Pinned revisions are stored
--- indefinitely, using additional storage quota, up to a maximum of 200
--- revisions. For details on how revisions are retained, see the Drive Help
--- Center.
-fpNewRevision :: Lens' FilesPatch Bool
-fpNewRevision
-  = lens _fpNewRevision
-      (\ s a -> s{_fpNewRevision = a})
-
--- | Whether to pin the new revision. A file can have a maximum of 200 pinned
--- revisions.
-fpPinned :: Lens' FilesPatch Bool
-fpPinned = lens _fpPinned (\ s a -> s{_fpPinned = a})
-
--- | The language of the timed text.
-fpTimedTextLanguage :: Lens' FilesPatch (Maybe Text)
-fpTimedTextLanguage
-  = lens _fpTimedTextLanguage
-      (\ s a -> s{_fpTimedTextLanguage = a})
-
--- | Multipart request metadata.
-fpPayload :: Lens' FilesPatch File
-fpPayload
-  = lens _fpPayload (\ s a -> s{_fpPayload = a})
-
--- | Whether to update the view date after successfully updating the file.
-fpUpdateViewedDate :: Lens' FilesPatch Bool
-fpUpdateViewedDate
-  = lens _fpUpdateViewedDate
-      (\ s a -> s{_fpUpdateViewedDate = a})
-
--- | Comma-separated list of parent IDs to remove.
-fpRemoveParents :: Lens' FilesPatch (Maybe Text)
-fpRemoveParents
-  = lens _fpRemoveParents
-      (\ s a -> s{_fpRemoveParents = a})
-
--- | Determines the behavior in which modifiedDate is updated. This overrides
--- setModifiedDate.
-fpModifiedDateBehavior :: Lens' FilesPatch (Maybe FilesPatchModifiedDateBehavior)
-fpModifiedDateBehavior
-  = lens _fpModifiedDateBehavior
-      (\ s a -> s{_fpModifiedDateBehavior = a})
-
--- | Whether to use the content as indexable text.
-fpUseContentAsIndexableText :: Lens' FilesPatch Bool
-fpUseContentAsIndexableText
-  = lens _fpUseContentAsIndexableText
-      (\ s a -> s{_fpUseContentAsIndexableText = a})
-
--- | The timed text track name.
-fpTimedTextTrackName :: Lens' FilesPatch (Maybe Text)
-fpTimedTextTrackName
-  = lens _fpTimedTextTrackName
-      (\ s a -> s{_fpTimedTextTrackName = a})
-
--- | If ocr is true, hints at the language to use. Valid values are BCP 47
--- codes.
-fpOCRLanguage :: Lens' FilesPatch (Maybe Text)
-fpOCRLanguage
-  = lens _fpOCRLanguage
-      (\ s a -> s{_fpOCRLanguage = a})
-
--- | This parameter is deprecated and has no function.
-fpConvert :: Lens' FilesPatch Bool
-fpConvert
-  = lens _fpConvert (\ s a -> s{_fpConvert = a})
-
--- | Whether to set the modified date with the supplied modified date.
-fpSetModifiedDate :: Lens' FilesPatch Bool
-fpSetModifiedDate
-  = lens _fpSetModifiedDate
-      (\ s a -> s{_fpSetModifiedDate = a})
-
--- | The ID of the file to update.
-fpFileId :: Lens' FilesPatch Text
-fpFileId = lens _fpFileId (\ s a -> s{_fpFileId = a})
-
--- | Comma-separated list of parent IDs to add.
-fpAddParents :: Lens' FilesPatch (Maybe Text)
-fpAddParents
-  = lens _fpAddParents (\ s a -> s{_fpAddParents = a})
-
--- | Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.
-fpOCR :: Lens' FilesPatch Bool
-fpOCR = lens _fpOCR (\ s a -> s{_fpOCR = a})
-
-instance GoogleRequest FilesPatch where
-        type Rs FilesPatch = File
-        requestClient FilesPatch{..}
-          = go _fpFileId (Just _fpNewRevision) (Just _fpPinned)
-              _fpTimedTextLanguage
-              (Just _fpUpdateViewedDate)
-              _fpRemoveParents
-              _fpModifiedDateBehavior
-              (Just _fpUseContentAsIndexableText)
-              _fpTimedTextTrackName
-              _fpOCRLanguage
-              (Just _fpConvert)
-              (Just _fpSetModifiedDate)
-              _fpAddParents
-              (Just _fpOCR)
-              (Just AltJSON)
-              _fpPayload
-              driveService
-          where go
-                  = buildClient (Proxy :: Proxy FilesPatchResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Files/Touch.hs b/gen/Network/Google/Resource/Drive/Files/Touch.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Files/Touch.hs
+++ /dev/null
@@ -1,82 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Files.Touch
--- Copyright   : (c) 2015 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)
---
--- Set the file\'s updated time to the current server time.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.files.touch@.
-module Network.Google.Resource.Drive.Files.Touch
-    (
-    -- * REST Resource
-      FilesTouchResource
-
-    -- * Creating a Request
-    , filesTouch
-    , FilesTouch
-
-    -- * Request Lenses
-    , ftFileId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.files.touch@ method which the
--- 'FilesTouch' request conforms to.
-type FilesTouchResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "touch" :>
-               QueryParam "alt" AltJSON :> Post '[JSON] File
-
--- | Set the file\'s updated time to the current server time.
---
--- /See:/ 'filesTouch' smart constructor.
-newtype FilesTouch = FilesTouch
-    { _ftFileId :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FilesTouch' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ftFileId'
-filesTouch
-    :: Text -- ^ 'ftFileId'
-    -> FilesTouch
-filesTouch pFtFileId_ =
-    FilesTouch
-    { _ftFileId = pFtFileId_
-    }
-
--- | The ID of the file to update.
-ftFileId :: Lens' FilesTouch Text
-ftFileId = lens _ftFileId (\ s a -> s{_ftFileId = a})
-
-instance GoogleRequest FilesTouch where
-        type Rs FilesTouch = File
-        requestClient FilesTouch{..}
-          = go _ftFileId (Just AltJSON) driveService
-          where go
-                  = buildClient (Proxy :: Proxy FilesTouchResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Files/Trash.hs b/gen/Network/Google/Resource/Drive/Files/Trash.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Files/Trash.hs
+++ /dev/null
@@ -1,85 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Files.Trash
--- Copyright   : (c) 2015 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)
---
--- Moves a file to the trash. The currently authenticated user must own the
--- file.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.files.trash@.
-module Network.Google.Resource.Drive.Files.Trash
-    (
-    -- * REST Resource
-      FilesTrashResource
-
-    -- * Creating a Request
-    , filesTrash
-    , FilesTrash
-
-    -- * Request Lenses
-    , filFileId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.files.trash@ method which the
--- 'FilesTrash' request conforms to.
-type FilesTrashResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "trash" :>
-               QueryParam "alt" AltJSON :> Post '[JSON] File
-
--- | Moves a file to the trash. The currently authenticated user must own the
--- file.
---
--- /See:/ 'filesTrash' smart constructor.
-newtype FilesTrash = FilesTrash
-    { _filFileId :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FilesTrash' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'filFileId'
-filesTrash
-    :: Text -- ^ 'filFileId'
-    -> FilesTrash
-filesTrash pFilFileId_ =
-    FilesTrash
-    { _filFileId = pFilFileId_
-    }
-
--- | The ID of the file to trash.
-filFileId :: Lens' FilesTrash Text
-filFileId
-  = lens _filFileId (\ s a -> s{_filFileId = a})
-
-instance GoogleRequest FilesTrash where
-        type Rs FilesTrash = File
-        requestClient FilesTrash{..}
-          = go _filFileId (Just AltJSON) driveService
-          where go
-                  = buildClient (Proxy :: Proxy FilesTrashResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Files/Untrash.hs b/gen/Network/Google/Resource/Drive/Files/Untrash.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Files/Untrash.hs
+++ /dev/null
@@ -1,82 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Files.Untrash
--- Copyright   : (c) 2015 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 file from the trash.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.files.untrash@.
-module Network.Google.Resource.Drive.Files.Untrash
-    (
-    -- * REST Resource
-      FilesUntrashResource
-
-    -- * Creating a Request
-    , filesUntrash
-    , FilesUntrash
-
-    -- * Request Lenses
-    , fFileId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.files.untrash@ method which the
--- 'FilesUntrash' request conforms to.
-type FilesUntrashResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "untrash" :>
-               QueryParam "alt" AltJSON :> Post '[JSON] File
-
--- | Restores a file from the trash.
---
--- /See:/ 'filesUntrash' smart constructor.
-newtype FilesUntrash = FilesUntrash
-    { _fFileId :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'FilesUntrash' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'fFileId'
-filesUntrash
-    :: Text -- ^ 'fFileId'
-    -> FilesUntrash
-filesUntrash pFFileId_ =
-    FilesUntrash
-    { _fFileId = pFFileId_
-    }
-
--- | The ID of the file to untrash.
-fFileId :: Lens' FilesUntrash Text
-fFileId = lens _fFileId (\ s a -> s{_fFileId = a})
-
-instance GoogleRequest FilesUntrash where
-        type Rs FilesUntrash = File
-        requestClient FilesUntrash{..}
-          = go _fFileId (Just AltJSON) driveService
-          where go
-                  = buildClient (Proxy :: Proxy FilesUntrashResource)
-                      mempty
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
@@ -14,13 +14,13 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Files.Update
--- Copyright   : (c) 2015 Brendan Hay
+-- 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 file metadata and\/or content.
+-- Updates a file\'s metadata and\/or content with patch semantics.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.files.update@.
 module Network.Google.Resource.Drive.Files.Update
@@ -33,21 +33,13 @@
     , FilesUpdate
 
     -- * Request Lenses
-    , fuNewRevision
-    , fuPinned
-    , fuTimedTextLanguage
     , fuPayload
-    , fuUpdateViewedDate
     , fuRemoveParents
-    , fuModifiedDateBehavior
     , fuUseContentAsIndexableText
-    , fuTimedTextTrackName
     , fuOCRLanguage
-    , fuConvert
-    , fuSetModifiedDate
+    , fuKeepRevisionForever
     , fuFileId
     , fuAddParents
-    , fuOCR
     ) where
 
 import           Network.Google.Drive.Types
@@ -57,236 +49,130 @@
 -- 'FilesUpdate' request conforms to.
 type FilesUpdateResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            Capture "fileId" Text :>
-             QueryParam "newRevision" Bool :>
-               QueryParam "pinned" Bool :>
-                 QueryParam "timedTextLanguage" Text :>
-                   QueryParam "updateViewedDate" Bool :>
-                     QueryParam "removeParents" Text :>
-                       QueryParam "modifiedDateBehavior"
-                         FilesUpdateModifiedDateBehavior
-                         :>
-                         QueryParam "useContentAsIndexableText" Bool :>
-                           QueryParam "timedTextTrackName" Text :>
-                             QueryParam "ocrLanguage" Text :>
-                               QueryParam "convert" Bool :>
-                                 QueryParam "setModifiedDate" Bool :>
-                                   QueryParam "addParents" Text :>
-                                     QueryParam "ocr" Bool :>
-                                       QueryParam "alt" AltJSON :>
-                                         ReqBody '[JSON] File :>
-                                           Put '[JSON] File
+             QueryParam "removeParents" Text :>
+               QueryParam "useContentAsIndexableText" Bool :>
+                 QueryParam "ocrLanguage" Text :>
+                   QueryParam "keepRevisionForever" Bool :>
+                     QueryParam "addParents" Text :>
+                       QueryParam "alt" AltJSON :>
+                         ReqBody '[JSON] File :> Patch '[JSON] File
        :<|>
        "upload" :>
          "drive" :>
-           "v2" :>
+           "v3" :>
              "files" :>
                Capture "fileId" Text :>
-                 QueryParam "newRevision" Bool :>
-                   QueryParam "pinned" Bool :>
-                     QueryParam "timedTextLanguage" Text :>
-                       QueryParam "updateViewedDate" Bool :>
-                         QueryParam "removeParents" Text :>
-                           QueryParam "modifiedDateBehavior"
-                             FilesUpdateModifiedDateBehavior
-                             :>
-                             QueryParam "useContentAsIndexableText" Bool :>
-                               QueryParam "timedTextTrackName" Text :>
-                                 QueryParam "ocrLanguage" Text :>
-                                   QueryParam "convert" Bool :>
-                                     QueryParam "setModifiedDate" Bool :>
-                                       QueryParam "addParents" Text :>
-                                         QueryParam "ocr" Bool :>
-                                           QueryParam "alt" AltJSON :>
-                                             QueryParam "uploadType" AltMedia :>
-                                               MultipartRelated '[JSON] File
-                                                 RequestBody
-                                                 :> Put '[JSON] File
+                 QueryParam "removeParents" Text :>
+                   QueryParam "useContentAsIndexableText" Bool :>
+                     QueryParam "ocrLanguage" Text :>
+                       QueryParam "keepRevisionForever" Bool :>
+                         QueryParam "addParents" Text :>
+                           QueryParam "alt" AltJSON :>
+                             QueryParam "uploadType" Multipart :>
+                               MultipartRelated '[JSON] File :>
+                                 Patch '[JSON] File
 
--- | Updates file metadata and\/or content.
+-- | Updates a file\'s metadata and\/or content with patch semantics.
 --
 -- /See:/ 'filesUpdate' smart constructor.
-data FilesUpdate = FilesUpdate
-    { _fuNewRevision               :: !Bool
-    , _fuPinned                    :: !Bool
-    , _fuTimedTextLanguage         :: !(Maybe Text)
-    , _fuPayload                   :: !File
-    , _fuUpdateViewedDate          :: !Bool
+data FilesUpdate = FilesUpdate'
+    { _fuPayload                   :: !File
     , _fuRemoveParents             :: !(Maybe Text)
-    , _fuModifiedDateBehavior      :: !(Maybe FilesUpdateModifiedDateBehavior)
     , _fuUseContentAsIndexableText :: !Bool
-    , _fuTimedTextTrackName        :: !(Maybe Text)
     , _fuOCRLanguage               :: !(Maybe Text)
-    , _fuConvert                   :: !Bool
-    , _fuSetModifiedDate           :: !Bool
+    , _fuKeepRevisionForever       :: !Bool
     , _fuFileId                    :: !Text
     , _fuAddParents                :: !(Maybe Text)
-    , _fuOCR                       :: !Bool
     } 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:
 --
--- * 'fuNewRevision'
---
--- * 'fuPinned'
---
--- * 'fuTimedTextLanguage'
---
 -- * 'fuPayload'
 --
--- * 'fuUpdateViewedDate'
---
 -- * 'fuRemoveParents'
 --
--- * 'fuModifiedDateBehavior'
---
 -- * 'fuUseContentAsIndexableText'
 --
--- * 'fuTimedTextTrackName'
---
 -- * 'fuOCRLanguage'
 --
--- * 'fuConvert'
---
--- * 'fuSetModifiedDate'
+-- * 'fuKeepRevisionForever'
 --
 -- * 'fuFileId'
 --
 -- * 'fuAddParents'
---
--- * 'fuOCR'
 filesUpdate
     :: File -- ^ 'fuPayload'
     -> Text -- ^ 'fuFileId'
     -> FilesUpdate
 filesUpdate pFuPayload_ pFuFileId_ =
-    FilesUpdate
-    { _fuNewRevision = True
-    , _fuPinned = False
-    , _fuTimedTextLanguage = Nothing
-    , _fuPayload = pFuPayload_
-    , _fuUpdateViewedDate = True
+    FilesUpdate'
+    { _fuPayload = pFuPayload_
     , _fuRemoveParents = Nothing
-    , _fuModifiedDateBehavior = Nothing
     , _fuUseContentAsIndexableText = False
-    , _fuTimedTextTrackName = Nothing
     , _fuOCRLanguage = Nothing
-    , _fuConvert = False
-    , _fuSetModifiedDate = False
+    , _fuKeepRevisionForever = False
     , _fuFileId = pFuFileId_
     , _fuAddParents = Nothing
-    , _fuOCR = False
     }
 
--- | Whether a blob upload should create a new revision. If false, the blob
--- data in the current head revision is replaced. If true or not set, a new
--- blob is created as head revision, and previous unpinned revisions are
--- preserved for a short period of time. Pinned revisions are stored
--- indefinitely, using additional storage quota, up to a maximum of 200
--- revisions. For details on how revisions are retained, see the Drive Help
--- Center.
-fuNewRevision :: Lens' FilesUpdate Bool
-fuNewRevision
-  = lens _fuNewRevision
-      (\ s a -> s{_fuNewRevision = a})
-
--- | Whether to pin the new revision. A file can have a maximum of 200 pinned
--- revisions.
-fuPinned :: Lens' FilesUpdate Bool
-fuPinned = lens _fuPinned (\ s a -> s{_fuPinned = a})
-
--- | The language of the timed text.
-fuTimedTextLanguage :: Lens' FilesUpdate (Maybe Text)
-fuTimedTextLanguage
-  = lens _fuTimedTextLanguage
-      (\ s a -> s{_fuTimedTextLanguage = a})
-
 -- | Multipart request metadata.
 fuPayload :: Lens' FilesUpdate File
 fuPayload
   = lens _fuPayload (\ s a -> s{_fuPayload = a})
 
--- | Whether to update the view date after successfully updating the file.
-fuUpdateViewedDate :: Lens' FilesUpdate Bool
-fuUpdateViewedDate
-  = lens _fuUpdateViewedDate
-      (\ s a -> s{_fuUpdateViewedDate = a})
-
--- | Comma-separated list of parent IDs to remove.
+-- | A comma-separated list of parent IDs to remove.
 fuRemoveParents :: Lens' FilesUpdate (Maybe Text)
 fuRemoveParents
   = lens _fuRemoveParents
       (\ s a -> s{_fuRemoveParents = a})
 
--- | Determines the behavior in which modifiedDate is updated. This overrides
--- setModifiedDate.
-fuModifiedDateBehavior :: Lens' FilesUpdate (Maybe FilesUpdateModifiedDateBehavior)
-fuModifiedDateBehavior
-  = lens _fuModifiedDateBehavior
-      (\ s a -> s{_fuModifiedDateBehavior = a})
-
--- | Whether to use the content as indexable text.
+-- | Whether to use the uploaded content as indexable text.
 fuUseContentAsIndexableText :: Lens' FilesUpdate Bool
 fuUseContentAsIndexableText
   = lens _fuUseContentAsIndexableText
       (\ s a -> s{_fuUseContentAsIndexableText = a})
 
--- | The timed text track name.
-fuTimedTextTrackName :: Lens' FilesUpdate (Maybe Text)
-fuTimedTextTrackName
-  = lens _fuTimedTextTrackName
-      (\ s a -> s{_fuTimedTextTrackName = a})
-
--- | If ocr is true, hints at the language to use. Valid values are BCP 47
--- codes.
+-- | A language hint for OCR processing during image import (ISO 639-1 code).
 fuOCRLanguage :: Lens' FilesUpdate (Maybe Text)
 fuOCRLanguage
   = lens _fuOCRLanguage
       (\ s a -> s{_fuOCRLanguage = a})
 
--- | This parameter is deprecated and has no function.
-fuConvert :: Lens' FilesUpdate Bool
-fuConvert
-  = lens _fuConvert (\ s a -> s{_fuConvert = a})
-
--- | Whether to set the modified date with the supplied modified date.
-fuSetModifiedDate :: Lens' FilesUpdate Bool
-fuSetModifiedDate
-  = lens _fuSetModifiedDate
-      (\ s a -> s{_fuSetModifiedDate = a})
+-- | Whether to set the \'keepForever\' field in the new head revision. This
+-- is only applicable to files with binary content in Drive.
+fuKeepRevisionForever :: Lens' FilesUpdate Bool
+fuKeepRevisionForever
+  = lens _fuKeepRevisionForever
+      (\ s a -> s{_fuKeepRevisionForever = a})
 
--- | The ID of the file to update.
+-- | The ID of the file.
 fuFileId :: Lens' FilesUpdate Text
 fuFileId = lens _fuFileId (\ s a -> s{_fuFileId = a})
 
--- | Comma-separated list of parent IDs to add.
+-- | A comma-separated list of parent IDs to add.
 fuAddParents :: Lens' FilesUpdate (Maybe Text)
 fuAddParents
   = lens _fuAddParents (\ s a -> s{_fuAddParents = a})
 
--- | Whether to attempt OCR on .jpg, .png, .gif, or .pdf uploads.
-fuOCR :: Lens' FilesUpdate Bool
-fuOCR = lens _fuOCR (\ s a -> s{_fuOCR = a})
-
 instance GoogleRequest FilesUpdate where
         type Rs FilesUpdate = File
-        requestClient FilesUpdate{..}
-          = go _fuFileId (Just _fuNewRevision) (Just _fuPinned)
-              _fuTimedTextLanguage
-              (Just _fuUpdateViewedDate)
-              _fuRemoveParents
-              _fuModifiedDateBehavior
+        type Scopes FilesUpdate =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.appdata",
+               "https://www.googleapis.com/auth/drive.file",
+               "https://www.googleapis.com/auth/drive.metadata",
+               "https://www.googleapis.com/auth/drive.scripts"]
+        requestClient FilesUpdate'{..}
+          = go _fuFileId _fuRemoveParents
               (Just _fuUseContentAsIndexableText)
-              _fuTimedTextTrackName
               _fuOCRLanguage
-              (Just _fuConvert)
-              (Just _fuSetModifiedDate)
+              (Just _fuKeepRevisionForever)
               _fuAddParents
-              (Just _fuOCR)
               (Just AltJSON)
               _fuPayload
               driveService
@@ -297,21 +183,16 @@
 instance GoogleRequest (MediaUpload FilesUpdate)
          where
         type Rs (MediaUpload FilesUpdate) = File
-        requestClient (MediaUpload FilesUpdate{..} body)
-          = go _fuFileId (Just _fuNewRevision) (Just _fuPinned)
-              _fuTimedTextLanguage
-              (Just _fuUpdateViewedDate)
-              _fuRemoveParents
-              _fuModifiedDateBehavior
+        type Scopes (MediaUpload FilesUpdate) =
+             Scopes FilesUpdate
+        requestClient (MediaUpload FilesUpdate'{..} body)
+          = go _fuFileId _fuRemoveParents
               (Just _fuUseContentAsIndexableText)
-              _fuTimedTextTrackName
               _fuOCRLanguage
-              (Just _fuConvert)
-              (Just _fuSetModifiedDate)
+              (Just _fuKeepRevisionForever)
               _fuAddParents
-              (Just _fuOCR)
               (Just AltJSON)
-              (Just AltMedia)
+              (Just Multipart)
               _fuPayload
               body
               driveService
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
@@ -14,13 +14,13 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Files.Watch
--- Copyright   : (c) 2015 Brendan Hay
+-- 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)
 --
--- Subscribe to changes on a file
+-- Subscribes to changes to a file
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.files.watch@.
 module Network.Google.Resource.Drive.Files.Watch
@@ -34,11 +34,8 @@
 
     -- * Request Lenses
     , fwPayload
-    , fwUpdateViewedDate
-    , fwProjection
     , fwAcknowledgeAbuse
     , fwFileId
-    , fwRevisionId
     ) where
 
 import           Network.Google.Drive.Types
@@ -48,39 +45,30 @@
 -- 'FilesWatch' request conforms to.
 type FilesWatchResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            Capture "fileId" Text :>
              "watch" :>
-               QueryParam "updateViewedDate" Bool :>
-                 QueryParam "projection" FilesWatchProjection :>
-                   QueryParam "acknowledgeAbuse" Bool :>
-                     QueryParam "revisionId" Text :>
-                       QueryParam "alt" AltJSON :>
-                         ReqBody '[JSON] Channel :> Post '[JSON] Channel
+               QueryParam "acknowledgeAbuse" Bool :>
+                 QueryParam "alt" AltJSON :>
+                   ReqBody '[JSON] Channel :> Post '[JSON] Channel
        :<|>
        "drive" :>
-         "v2" :>
+         "v3" :>
            "files" :>
              Capture "fileId" Text :>
                "watch" :>
-                 QueryParam "updateViewedDate" Bool :>
-                   QueryParam "projection" FilesWatchProjection :>
-                     QueryParam "acknowledgeAbuse" Bool :>
-                       QueryParam "revisionId" Text :>
-                         QueryParam "alt" AltMedia :>
-                           Post '[OctetStream] Stream
+                 QueryParam "acknowledgeAbuse" Bool :>
+                   QueryParam "alt" AltMedia :>
+                     Post '[OctetStream] Stream
 
--- | Subscribe to changes on a file
+-- | Subscribes to changes to a file
 --
 -- /See:/ 'filesWatch' smart constructor.
-data FilesWatch = FilesWatch
+data FilesWatch = FilesWatch'
     { _fwPayload          :: !Channel
-    , _fwUpdateViewedDate :: !Bool
-    , _fwProjection       :: !(Maybe FilesWatchProjection)
     , _fwAcknowledgeAbuse :: !Bool
     , _fwFileId           :: !Text
-    , _fwRevisionId       :: !(Maybe Text)
     } deriving (Eq,Show,Data,Typeable,Generic)
 
 -- | Creates a value of 'FilesWatch' with the minimum fields required to make a request.
@@ -89,27 +77,18 @@
 --
 -- * 'fwPayload'
 --
--- * 'fwUpdateViewedDate'
---
--- * 'fwProjection'
---
 -- * 'fwAcknowledgeAbuse'
 --
 -- * 'fwFileId'
---
--- * 'fwRevisionId'
 filesWatch
     :: Channel -- ^ 'fwPayload'
     -> Text -- ^ 'fwFileId'
     -> FilesWatch
 filesWatch pFwPayload_ pFwFileId_ =
-    FilesWatch
+    FilesWatch'
     { _fwPayload = pFwPayload_
-    , _fwUpdateViewedDate = False
-    , _fwProjection = Nothing
     , _fwAcknowledgeAbuse = False
     , _fwFileId = pFwFileId_
-    , _fwRevisionId = Nothing
     }
 
 -- | Multipart request metadata.
@@ -117,42 +96,29 @@
 fwPayload
   = lens _fwPayload (\ s a -> s{_fwPayload = a})
 
--- | Deprecated: Use files.update with modifiedDateBehavior=noChange,
--- updateViewedDate=true and an empty request body.
-fwUpdateViewedDate :: Lens' FilesWatch Bool
-fwUpdateViewedDate
-  = lens _fwUpdateViewedDate
-      (\ s a -> s{_fwUpdateViewedDate = a})
-
--- | This parameter is deprecated and has no function.
-fwProjection :: Lens' FilesWatch (Maybe FilesWatchProjection)
-fwProjection
-  = lens _fwProjection (\ s a -> s{_fwProjection = a})
-
 -- | Whether the user is acknowledging the risk of downloading known malware
--- or other abusive files.
+-- or other abusive files. This is only applicable when alt=media.
 fwAcknowledgeAbuse :: Lens' FilesWatch Bool
 fwAcknowledgeAbuse
   = lens _fwAcknowledgeAbuse
       (\ s a -> s{_fwAcknowledgeAbuse = a})
 
--- | The ID for the file in question.
+-- | The ID of the file.
 fwFileId :: Lens' FilesWatch Text
 fwFileId = lens _fwFileId (\ s a -> s{_fwFileId = a})
 
--- | Specifies the Revision ID that should be downloaded. Ignored unless
--- alt=media is specified.
-fwRevisionId :: Lens' FilesWatch (Maybe Text)
-fwRevisionId
-  = lens _fwRevisionId (\ s a -> s{_fwRevisionId = a})
-
 instance GoogleRequest FilesWatch where
         type Rs FilesWatch = Channel
-        requestClient FilesWatch{..}
-          = go _fwFileId (Just _fwUpdateViewedDate)
-              _fwProjection
-              (Just _fwAcknowledgeAbuse)
-              _fwRevisionId
+        type Scopes FilesWatch =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.appdata",
+               "https://www.googleapis.com/auth/drive.file",
+               "https://www.googleapis.com/auth/drive.metadata",
+               "https://www.googleapis.com/auth/drive.metadata.readonly",
+               "https://www.googleapis.com/auth/drive.photos.readonly",
+               "https://www.googleapis.com/auth/drive.readonly"]
+        requestClient FilesWatch'{..}
+          = go _fwFileId (Just _fwAcknowledgeAbuse)
               (Just AltJSON)
               _fwPayload
               driveService
@@ -163,11 +129,10 @@
 instance GoogleRequest (MediaDownload FilesWatch)
          where
         type Rs (MediaDownload FilesWatch) = Stream
-        requestClient (MediaDownload FilesWatch{..})
-          = go _fwFileId (Just _fwUpdateViewedDate)
-              _fwProjection
-              (Just _fwAcknowledgeAbuse)
-              _fwRevisionId
+        type Scopes (MediaDownload FilesWatch) =
+             Scopes FilesWatch
+        requestClient (MediaDownload FilesWatch'{..})
+          = go _fwFileId (Just _fwAcknowledgeAbuse)
               (Just AltMedia)
               driveService
           where _ :<|> go
diff --git a/gen/Network/Google/Resource/Drive/Parents/Delete.hs b/gen/Network/Google/Resource/Drive/Parents/Delete.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Parents/Delete.hs
+++ /dev/null
@@ -1,96 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Parents.Delete
--- Copyright   : (c) 2015 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)
---
--- Removes a parent from a file.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.parents.delete@.
-module Network.Google.Resource.Drive.Parents.Delete
-    (
-    -- * REST Resource
-      ParentsDeleteResource
-
-    -- * Creating a Request
-    , parentsDelete
-    , ParentsDelete
-
-    -- * Request Lenses
-    , pddFileId
-    , pddParentId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.parents.delete@ method which the
--- 'ParentsDelete' request conforms to.
-type ParentsDeleteResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "parents" :>
-               Capture "parentId" Text :>
-                 QueryParam "alt" AltJSON :> Delete '[JSON] ()
-
--- | Removes a parent from a file.
---
--- /See:/ 'parentsDelete' smart constructor.
-data ParentsDelete = ParentsDelete
-    { _pddFileId   :: !Text
-    , _pddParentId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ParentsDelete' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pddFileId'
---
--- * 'pddParentId'
-parentsDelete
-    :: Text -- ^ 'pddFileId'
-    -> Text -- ^ 'pddParentId'
-    -> ParentsDelete
-parentsDelete pPddFileId_ pPddParentId_ =
-    ParentsDelete
-    { _pddFileId = pPddFileId_
-    , _pddParentId = pPddParentId_
-    }
-
--- | The ID of the file.
-pddFileId :: Lens' ParentsDelete Text
-pddFileId
-  = lens _pddFileId (\ s a -> s{_pddFileId = a})
-
--- | The ID of the parent.
-pddParentId :: Lens' ParentsDelete Text
-pddParentId
-  = lens _pddParentId (\ s a -> s{_pddParentId = a})
-
-instance GoogleRequest ParentsDelete where
-        type Rs ParentsDelete = ()
-        requestClient ParentsDelete{..}
-          = go _pddFileId _pddParentId (Just AltJSON)
-              driveService
-          where go
-                  = buildClient (Proxy :: Proxy ParentsDeleteResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Parents/Get.hs b/gen/Network/Google/Resource/Drive/Parents/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Parents/Get.hs
+++ /dev/null
@@ -1,97 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Parents.Get
--- Copyright   : (c) 2015 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 specific parent reference.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.parents.get@.
-module Network.Google.Resource.Drive.Parents.Get
-    (
-    -- * REST Resource
-      ParentsGetResource
-
-    -- * Creating a Request
-    , parentsGet
-    , ParentsGet
-
-    -- * Request Lenses
-    , pg1FileId
-    , pg1ParentId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.parents.get@ method which the
--- 'ParentsGet' request conforms to.
-type ParentsGetResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "parents" :>
-               Capture "parentId" Text :>
-                 QueryParam "alt" AltJSON :>
-                   Get '[JSON] ParentReference
-
--- | Gets a specific parent reference.
---
--- /See:/ 'parentsGet' smart constructor.
-data ParentsGet = ParentsGet
-    { _pg1FileId   :: !Text
-    , _pg1ParentId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ParentsGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pg1FileId'
---
--- * 'pg1ParentId'
-parentsGet
-    :: Text -- ^ 'pg1FileId'
-    -> Text -- ^ 'pg1ParentId'
-    -> ParentsGet
-parentsGet pPg1FileId_ pPg1ParentId_ =
-    ParentsGet
-    { _pg1FileId = pPg1FileId_
-    , _pg1ParentId = pPg1ParentId_
-    }
-
--- | The ID of the file.
-pg1FileId :: Lens' ParentsGet Text
-pg1FileId
-  = lens _pg1FileId (\ s a -> s{_pg1FileId = a})
-
--- | The ID of the parent.
-pg1ParentId :: Lens' ParentsGet Text
-pg1ParentId
-  = lens _pg1ParentId (\ s a -> s{_pg1ParentId = a})
-
-instance GoogleRequest ParentsGet where
-        type Rs ParentsGet = ParentReference
-        requestClient ParentsGet{..}
-          = go _pg1FileId _pg1ParentId (Just AltJSON)
-              driveService
-          where go
-                  = buildClient (Proxy :: Proxy ParentsGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Parents/Insert.hs b/gen/Network/Google/Resource/Drive/Parents/Insert.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Parents/Insert.hs
+++ /dev/null
@@ -1,97 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Parents.Insert
--- Copyright   : (c) 2015 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Adds a parent folder for a file.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.parents.insert@.
-module Network.Google.Resource.Drive.Parents.Insert
-    (
-    -- * REST Resource
-      ParentsInsertResource
-
-    -- * Creating a Request
-    , parentsInsert
-    , ParentsInsert
-
-    -- * Request Lenses
-    , paraPayload
-    , paraFileId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.parents.insert@ method which the
--- 'ParentsInsert' request conforms to.
-type ParentsInsertResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "parents" :>
-               QueryParam "alt" AltJSON :>
-                 ReqBody '[JSON] ParentReference :>
-                   Post '[JSON] ParentReference
-
--- | Adds a parent folder for a file.
---
--- /See:/ 'parentsInsert' smart constructor.
-data ParentsInsert = ParentsInsert
-    { _paraPayload :: !ParentReference
-    , _paraFileId  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ParentsInsert' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'paraPayload'
---
--- * 'paraFileId'
-parentsInsert
-    :: ParentReference -- ^ 'paraPayload'
-    -> Text -- ^ 'paraFileId'
-    -> ParentsInsert
-parentsInsert pParaPayload_ pParaFileId_ =
-    ParentsInsert
-    { _paraPayload = pParaPayload_
-    , _paraFileId = pParaFileId_
-    }
-
--- | Multipart request metadata.
-paraPayload :: Lens' ParentsInsert ParentReference
-paraPayload
-  = lens _paraPayload (\ s a -> s{_paraPayload = a})
-
--- | The ID of the file.
-paraFileId :: Lens' ParentsInsert Text
-paraFileId
-  = lens _paraFileId (\ s a -> s{_paraFileId = a})
-
-instance GoogleRequest ParentsInsert where
-        type Rs ParentsInsert = ParentReference
-        requestClient ParentsInsert{..}
-          = go _paraFileId (Just AltJSON) _paraPayload
-              driveService
-          where go
-                  = buildClient (Proxy :: Proxy ParentsInsertResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Parents/List.hs b/gen/Network/Google/Resource/Drive/Parents/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Parents/List.hs
+++ /dev/null
@@ -1,83 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Parents.List
--- Copyright   : (c) 2015 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 a file\'s parents.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.parents.list@.
-module Network.Google.Resource.Drive.Parents.List
-    (
-    -- * REST Resource
-      ParentsListResource
-
-    -- * Creating a Request
-    , parentsList
-    , ParentsList
-
-    -- * Request Lenses
-    , parFileId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.parents.list@ method which the
--- 'ParentsList' request conforms to.
-type ParentsListResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "parents" :>
-               QueryParam "alt" AltJSON :> Get '[JSON] ParentList
-
--- | Lists a file\'s parents.
---
--- /See:/ 'parentsList' smart constructor.
-newtype ParentsList = ParentsList
-    { _parFileId :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'ParentsList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'parFileId'
-parentsList
-    :: Text -- ^ 'parFileId'
-    -> ParentsList
-parentsList pParFileId_ =
-    ParentsList
-    { _parFileId = pParFileId_
-    }
-
--- | The ID of the file.
-parFileId :: Lens' ParentsList Text
-parFileId
-  = lens _parFileId (\ s a -> s{_parFileId = a})
-
-instance GoogleRequest ParentsList where
-        type Rs ParentsList = ParentList
-        requestClient ParentsList{..}
-          = go _parFileId (Just AltJSON) driveService
-          where go
-                  = buildClient (Proxy :: Proxy ParentsListResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Permissions/Create.hs b/gen/Network/Google/Resource/Drive/Permissions/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Drive/Permissions/Create.hs
@@ -0,0 +1,143 @@
+{-# 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.Permissions.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 permission for a file.
+--
+-- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.permissions.create@.
+module Network.Google.Resource.Drive.Permissions.Create
+    (
+    -- * REST Resource
+      PermissionsCreateResource
+
+    -- * Creating a Request
+    , permissionsCreate
+    , PermissionsCreate
+
+    -- * Request Lenses
+    , pcSendNotificationEmail
+    , pcPayload
+    , pcEmailMessage
+    , pcTransferOwnership
+    , pcFileId
+    ) where
+
+import           Network.Google.Drive.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @drive.permissions.create@ method which the
+-- 'PermissionsCreate' request conforms to.
+type PermissionsCreateResource =
+     "drive" :>
+       "v3" :>
+         "files" :>
+           Capture "fileId" Text :>
+             "permissions" :>
+               QueryParam "sendNotificationEmail" Bool :>
+                 QueryParam "emailMessage" Text :>
+                   QueryParam "transferOwnership" Bool :>
+                     QueryParam "alt" AltJSON :>
+                       ReqBody '[JSON] Permission :> Post '[JSON] Permission
+
+-- | Creates a permission for a file.
+--
+-- /See:/ 'permissionsCreate' smart constructor.
+data PermissionsCreate = PermissionsCreate'
+    { _pcSendNotificationEmail :: !(Maybe Bool)
+    , _pcPayload               :: !Permission
+    , _pcEmailMessage          :: !(Maybe Text)
+    , _pcTransferOwnership     :: !Bool
+    , _pcFileId                :: !Text
+    } 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:
+--
+-- * 'pcSendNotificationEmail'
+--
+-- * 'pcPayload'
+--
+-- * 'pcEmailMessage'
+--
+-- * 'pcTransferOwnership'
+--
+-- * 'pcFileId'
+permissionsCreate
+    :: Permission -- ^ 'pcPayload'
+    -> Text -- ^ 'pcFileId'
+    -> PermissionsCreate
+permissionsCreate pPcPayload_ pPcFileId_ =
+    PermissionsCreate'
+    { _pcSendNotificationEmail = Nothing
+    , _pcPayload = pPcPayload_
+    , _pcEmailMessage = Nothing
+    , _pcTransferOwnership = False
+    , _pcFileId = pPcFileId_
+    }
+
+-- | 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.
+pcSendNotificationEmail :: Lens' PermissionsCreate (Maybe Bool)
+pcSendNotificationEmail
+  = lens _pcSendNotificationEmail
+      (\ s a -> s{_pcSendNotificationEmail = a})
+
+-- | Multipart request metadata.
+pcPayload :: Lens' PermissionsCreate Permission
+pcPayload
+  = lens _pcPayload (\ s a -> s{_pcPayload = a})
+
+-- | A custom message to include in the notification email.
+pcEmailMessage :: Lens' PermissionsCreate (Maybe Text)
+pcEmailMessage
+  = lens _pcEmailMessage
+      (\ s a -> s{_pcEmailMessage = a})
+
+-- | Whether to transfer ownership to the specified user and downgrade the
+-- current owner to a writer. This parameter is required as an
+-- acknowledgement of the side effect.
+pcTransferOwnership :: Lens' PermissionsCreate Bool
+pcTransferOwnership
+  = lens _pcTransferOwnership
+      (\ s a -> s{_pcTransferOwnership = a})
+
+-- | The ID of the file.
+pcFileId :: Lens' PermissionsCreate Text
+pcFileId = lens _pcFileId (\ s a -> s{_pcFileId = a})
+
+instance GoogleRequest PermissionsCreate where
+        type Rs PermissionsCreate = Permission
+        type Scopes PermissionsCreate =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.file"]
+        requestClient PermissionsCreate'{..}
+          = go _pcFileId _pcSendNotificationEmail
+              _pcEmailMessage
+              (Just _pcTransferOwnership)
+              (Just AltJSON)
+              _pcPayload
+              driveService
+          where go
+                  = buildClient
+                      (Proxy :: Proxy PermissionsCreateResource)
+                      mempty
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
@@ -14,13 +14,13 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Permissions.Delete
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Deletes a permission from a file.
+-- Deletes a permission.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.permissions.delete@.
 module Network.Google.Resource.Drive.Permissions.Delete
@@ -33,8 +33,8 @@
     , PermissionsDelete
 
     -- * Request Lenses
-    , pFileId
-    , pPermissionId
+    , pdFileId
+    , pdPermissionId
     ) where
 
 import           Network.Google.Drive.Types
@@ -44,52 +44,55 @@
 -- 'PermissionsDelete' request conforms to.
 type PermissionsDeleteResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            Capture "fileId" Text :>
              "permissions" :>
                Capture "permissionId" Text :>
                  QueryParam "alt" AltJSON :> Delete '[JSON] ()
 
--- | Deletes a permission from a file.
+-- | Deletes a permission.
 --
 -- /See:/ 'permissionsDelete' smart constructor.
-data PermissionsDelete = PermissionsDelete
-    { _pFileId       :: !Text
-    , _pPermissionId :: !Text
+data PermissionsDelete = PermissionsDelete'
+    { _pdFileId       :: !Text
+    , _pdPermissionId :: !Text
     } 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:
 --
--- * 'pFileId'
+-- * 'pdFileId'
 --
--- * 'pPermissionId'
+-- * 'pdPermissionId'
 permissionsDelete
-    :: Text -- ^ 'pFileId'
-    -> Text -- ^ 'pPermissionId'
+    :: Text -- ^ 'pdFileId'
+    -> Text -- ^ 'pdPermissionId'
     -> PermissionsDelete
-permissionsDelete pPFileId_ pPPermissionId_ =
-    PermissionsDelete
-    { _pFileId = pPFileId_
-    , _pPermissionId = pPPermissionId_
+permissionsDelete pPdFileId_ pPdPermissionId_ =
+    PermissionsDelete'
+    { _pdFileId = pPdFileId_
+    , _pdPermissionId = pPdPermissionId_
     }
 
--- | The ID for the file.
-pFileId :: Lens' PermissionsDelete Text
-pFileId = lens _pFileId (\ s a -> s{_pFileId = a})
+-- | The ID of the file.
+pdFileId :: Lens' PermissionsDelete Text
+pdFileId = lens _pdFileId (\ s a -> s{_pdFileId = a})
 
--- | The ID for the permission.
-pPermissionId :: Lens' PermissionsDelete Text
-pPermissionId
-  = lens _pPermissionId
-      (\ s a -> s{_pPermissionId = a})
+-- | The ID of the permission.
+pdPermissionId :: Lens' PermissionsDelete Text
+pdPermissionId
+  = lens _pdPermissionId
+      (\ s a -> s{_pdPermissionId = a})
 
 instance GoogleRequest PermissionsDelete where
         type Rs PermissionsDelete = ()
-        requestClient PermissionsDelete{..}
-          = go _pFileId _pPermissionId (Just AltJSON)
+        type Scopes PermissionsDelete =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.file"]
+        requestClient PermissionsDelete'{..}
+          = go _pdFileId _pdPermissionId (Just AltJSON)
               driveService
           where go
                   = buildClient
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
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Permissions.Get
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -33,8 +33,8 @@
     , PermissionsGet
 
     -- * Request Lenses
-    , pggFileId
-    , pggPermissionId
+    , pgFileId
+    , pgPermissionId
     ) where
 
 import           Network.Google.Drive.Types
@@ -44,7 +44,7 @@
 -- 'PermissionsGet' request conforms to.
 type PermissionsGetResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            Capture "fileId" Text :>
              "permissions" :>
@@ -54,43 +54,49 @@
 -- | Gets a permission by ID.
 --
 -- /See:/ 'permissionsGet' smart constructor.
-data PermissionsGet = PermissionsGet
-    { _pggFileId       :: !Text
-    , _pggPermissionId :: !Text
+data PermissionsGet = PermissionsGet'
+    { _pgFileId       :: !Text
+    , _pgPermissionId :: !Text
     } 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:
 --
--- * 'pggFileId'
+-- * 'pgFileId'
 --
--- * 'pggPermissionId'
+-- * 'pgPermissionId'
 permissionsGet
-    :: Text -- ^ 'pggFileId'
-    -> Text -- ^ 'pggPermissionId'
+    :: Text -- ^ 'pgFileId'
+    -> Text -- ^ 'pgPermissionId'
     -> PermissionsGet
-permissionsGet pPggFileId_ pPggPermissionId_ =
-    PermissionsGet
-    { _pggFileId = pPggFileId_
-    , _pggPermissionId = pPggPermissionId_
+permissionsGet pPgFileId_ pPgPermissionId_ =
+    PermissionsGet'
+    { _pgFileId = pPgFileId_
+    , _pgPermissionId = pPgPermissionId_
     }
 
--- | The ID for the file.
-pggFileId :: Lens' PermissionsGet Text
-pggFileId
-  = lens _pggFileId (\ s a -> s{_pggFileId = a})
+-- | The ID of the file.
+pgFileId :: Lens' PermissionsGet Text
+pgFileId = lens _pgFileId (\ s a -> s{_pgFileId = a})
 
--- | The ID for the permission.
-pggPermissionId :: Lens' PermissionsGet Text
-pggPermissionId
-  = lens _pggPermissionId
-      (\ s a -> s{_pggPermissionId = a})
+-- | The ID of the permission.
+pgPermissionId :: Lens' PermissionsGet Text
+pgPermissionId
+  = lens _pgPermissionId
+      (\ s a -> s{_pgPermissionId = a})
 
 instance GoogleRequest PermissionsGet where
         type Rs PermissionsGet = Permission
-        requestClient PermissionsGet{..}
-          = go _pggFileId _pggPermissionId (Just AltJSON)
+        type Scopes PermissionsGet =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.file",
+               "https://www.googleapis.com/auth/drive.metadata",
+               "https://www.googleapis.com/auth/drive.metadata.readonly",
+               "https://www.googleapis.com/auth/drive.photos.readonly",
+               "https://www.googleapis.com/auth/drive.readonly"]
+        requestClient PermissionsGet'{..}
+          = go _pgFileId _pgPermissionId (Just AltJSON)
               driveService
           where go
                   = buildClient (Proxy :: Proxy PermissionsGetResource)
diff --git a/gen/Network/Google/Resource/Drive/Permissions/GetIdForEmail.hs b/gen/Network/Google/Resource/Drive/Permissions/GetIdForEmail.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Permissions/GetIdForEmail.hs
+++ /dev/null
@@ -1,83 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Permissions.GetIdForEmail
--- Copyright   : (c) 2015 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Returns the permission ID for an email address.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.permissions.getIdForEmail@.
-module Network.Google.Resource.Drive.Permissions.GetIdForEmail
-    (
-    -- * REST Resource
-      PermissionsGetIdForEmailResource
-
-    -- * Creating a Request
-    , permissionsGetIdForEmail
-    , PermissionsGetIdForEmail
-
-    -- * Request Lenses
-    , pgifeEmail
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.permissions.getIdForEmail@ method which the
--- 'PermissionsGetIdForEmail' request conforms to.
-type PermissionsGetIdForEmailResource =
-     "drive" :>
-       "v2" :>
-         "permissionIds" :>
-           Capture "email" Text :>
-             QueryParam "alt" AltJSON :> Get '[JSON] PermissionId
-
--- | Returns the permission ID for an email address.
---
--- /See:/ 'permissionsGetIdForEmail' smart constructor.
-newtype PermissionsGetIdForEmail = PermissionsGetIdForEmail
-    { _pgifeEmail :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PermissionsGetIdForEmail' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pgifeEmail'
-permissionsGetIdForEmail
-    :: Text -- ^ 'pgifeEmail'
-    -> PermissionsGetIdForEmail
-permissionsGetIdForEmail pPgifeEmail_ =
-    PermissionsGetIdForEmail
-    { _pgifeEmail = pPgifeEmail_
-    }
-
--- | The email address for which to return a permission ID
-pgifeEmail :: Lens' PermissionsGetIdForEmail Text
-pgifeEmail
-  = lens _pgifeEmail (\ s a -> s{_pgifeEmail = a})
-
-instance GoogleRequest PermissionsGetIdForEmail where
-        type Rs PermissionsGetIdForEmail = PermissionId
-        requestClient PermissionsGetIdForEmail{..}
-          = go _pgifeEmail (Just AltJSON) driveService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy PermissionsGetIdForEmailResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Permissions/Insert.hs b/gen/Network/Google/Resource/Drive/Permissions/Insert.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Permissions/Insert.hs
+++ /dev/null
@@ -1,125 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Permissions.Insert
--- Copyright   : (c) 2015 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)
---
--- Inserts a permission for a file.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.permissions.insert@.
-module Network.Google.Resource.Drive.Permissions.Insert
-    (
-    -- * REST Resource
-      PermissionsInsertResource
-
-    -- * Creating a Request
-    , permissionsInsert
-    , PermissionsInsert
-
-    -- * Request Lenses
-    , piiPayload
-    , piiEmailMessage
-    , piiFileId
-    , piiSendNotificationEmails
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.permissions.insert@ method which the
--- 'PermissionsInsert' request conforms to.
-type PermissionsInsertResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "permissions" :>
-               QueryParam "emailMessage" Text :>
-                 QueryParam "sendNotificationEmails" Bool :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] Permission :> Post '[JSON] Permission
-
--- | Inserts a permission for a file.
---
--- /See:/ 'permissionsInsert' smart constructor.
-data PermissionsInsert = PermissionsInsert
-    { _piiPayload                :: !Permission
-    , _piiEmailMessage           :: !(Maybe Text)
-    , _piiFileId                 :: !Text
-    , _piiSendNotificationEmails :: !Bool
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PermissionsInsert' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'piiPayload'
---
--- * 'piiEmailMessage'
---
--- * 'piiFileId'
---
--- * 'piiSendNotificationEmails'
-permissionsInsert
-    :: Permission -- ^ 'piiPayload'
-    -> Text -- ^ 'piiFileId'
-    -> PermissionsInsert
-permissionsInsert pPiiPayload_ pPiiFileId_ =
-    PermissionsInsert
-    { _piiPayload = pPiiPayload_
-    , _piiEmailMessage = Nothing
-    , _piiFileId = pPiiFileId_
-    , _piiSendNotificationEmails = True
-    }
-
--- | Multipart request metadata.
-piiPayload :: Lens' PermissionsInsert Permission
-piiPayload
-  = lens _piiPayload (\ s a -> s{_piiPayload = a})
-
--- | A custom message to include in notification emails.
-piiEmailMessage :: Lens' PermissionsInsert (Maybe Text)
-piiEmailMessage
-  = lens _piiEmailMessage
-      (\ s a -> s{_piiEmailMessage = a})
-
--- | The ID for the file.
-piiFileId :: Lens' PermissionsInsert Text
-piiFileId
-  = lens _piiFileId (\ s a -> s{_piiFileId = a})
-
--- | Whether to send notification emails when sharing to users or groups.
--- This parameter is ignored and an email is sent if the role is owner.
-piiSendNotificationEmails :: Lens' PermissionsInsert Bool
-piiSendNotificationEmails
-  = lens _piiSendNotificationEmails
-      (\ s a -> s{_piiSendNotificationEmails = a})
-
-instance GoogleRequest PermissionsInsert where
-        type Rs PermissionsInsert = Permission
-        requestClient PermissionsInsert{..}
-          = go _piiFileId _piiEmailMessage
-              (Just _piiSendNotificationEmails)
-              (Just AltJSON)
-              _piiPayload
-              driveService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy PermissionsInsertResource)
-                      mempty
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
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Permissions.List
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -43,7 +43,7 @@
 -- 'PermissionsList' request conforms to.
 type PermissionsListResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            Capture "fileId" Text :>
              "permissions" :>
@@ -53,7 +53,7 @@
 -- | Lists a file\'s permissions.
 --
 -- /See:/ 'permissionsList' smart constructor.
-newtype PermissionsList = PermissionsList
+newtype PermissionsList = PermissionsList'
     { _plFileId :: Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -66,17 +66,24 @@
     :: Text -- ^ 'plFileId'
     -> PermissionsList
 permissionsList pPlFileId_ =
-    PermissionsList
+    PermissionsList'
     { _plFileId = pPlFileId_
     }
 
--- | The ID for the file.
+-- | The ID of the file.
 plFileId :: Lens' PermissionsList Text
 plFileId = lens _plFileId (\ s a -> s{_plFileId = a})
 
 instance GoogleRequest PermissionsList where
         type Rs PermissionsList = PermissionList
-        requestClient PermissionsList{..}
+        type Scopes PermissionsList =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.file",
+               "https://www.googleapis.com/auth/drive.metadata",
+               "https://www.googleapis.com/auth/drive.metadata.readonly",
+               "https://www.googleapis.com/auth/drive.photos.readonly",
+               "https://www.googleapis.com/auth/drive.readonly"]
+        requestClient PermissionsList'{..}
           = go _plFileId (Just AltJSON) driveService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Drive/Permissions/Patch.hs b/gen/Network/Google/Resource/Drive/Permissions/Patch.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Permissions/Patch.hs
+++ /dev/null
@@ -1,127 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Permissions.Patch
--- Copyright   : (c) 2015 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 a permission using patch semantics.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.permissions.patch@.
-module Network.Google.Resource.Drive.Permissions.Patch
-    (
-    -- * REST Resource
-      PermissionsPatchResource
-
-    -- * Creating a Request
-    , permissionsPatch
-    , PermissionsPatch
-
-    -- * Request Lenses
-    , pppPayload
-    , pppTransferOwnership
-    , pppFileId
-    , pppPermissionId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.permissions.patch@ method which the
--- 'PermissionsPatch' request conforms to.
-type PermissionsPatchResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "permissions" :>
-               Capture "permissionId" Text :>
-                 QueryParam "transferOwnership" Bool :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] Permission :>
-                       Patch '[JSON] Permission
-
--- | Updates a permission using patch semantics.
---
--- /See:/ 'permissionsPatch' smart constructor.
-data PermissionsPatch = PermissionsPatch
-    { _pppPayload           :: !Permission
-    , _pppTransferOwnership :: !Bool
-    , _pppFileId            :: !Text
-    , _pppPermissionId      :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PermissionsPatch' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pppPayload'
---
--- * 'pppTransferOwnership'
---
--- * 'pppFileId'
---
--- * 'pppPermissionId'
-permissionsPatch
-    :: Permission -- ^ 'pppPayload'
-    -> Text -- ^ 'pppFileId'
-    -> Text -- ^ 'pppPermissionId'
-    -> PermissionsPatch
-permissionsPatch pPppPayload_ pPppFileId_ pPppPermissionId_ =
-    PermissionsPatch
-    { _pppPayload = pPppPayload_
-    , _pppTransferOwnership = False
-    , _pppFileId = pPppFileId_
-    , _pppPermissionId = pPppPermissionId_
-    }
-
--- | Multipart request metadata.
-pppPayload :: Lens' PermissionsPatch Permission
-pppPayload
-  = lens _pppPayload (\ s a -> s{_pppPayload = a})
-
--- | Whether changing a role to \'owner\' downgrades the current owners to
--- writers. Does nothing if the specified role is not \'owner\'.
-pppTransferOwnership :: Lens' PermissionsPatch Bool
-pppTransferOwnership
-  = lens _pppTransferOwnership
-      (\ s a -> s{_pppTransferOwnership = a})
-
--- | The ID for the file.
-pppFileId :: Lens' PermissionsPatch Text
-pppFileId
-  = lens _pppFileId (\ s a -> s{_pppFileId = a})
-
--- | The ID for the permission.
-pppPermissionId :: Lens' PermissionsPatch Text
-pppPermissionId
-  = lens _pppPermissionId
-      (\ s a -> s{_pppPermissionId = a})
-
-instance GoogleRequest PermissionsPatch where
-        type Rs PermissionsPatch = Permission
-        requestClient PermissionsPatch{..}
-          = go _pppFileId _pppPermissionId
-              (Just _pppTransferOwnership)
-              (Just AltJSON)
-              _pppPayload
-              driveService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy PermissionsPatchResource)
-                      mempty
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
@@ -14,13 +14,13 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Permissions.Update
--- Copyright   : (c) 2015 Brendan Hay
+-- 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 a permission.
+-- Updates a permission with patch semantics.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.permissions.update@.
 module Network.Google.Resource.Drive.Permissions.Update
@@ -33,10 +33,10 @@
     , PermissionsUpdate
 
     -- * Request Lenses
-    , perPayload
-    , perTransferOwnership
-    , perFileId
-    , perPermissionId
+    , puPayload
+    , puTransferOwnership
+    , puFileId
+    , puPermissionId
     ) where
 
 import           Network.Google.Drive.Types
@@ -46,79 +46,83 @@
 -- 'PermissionsUpdate' request conforms to.
 type PermissionsUpdateResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            Capture "fileId" Text :>
              "permissions" :>
                Capture "permissionId" Text :>
                  QueryParam "transferOwnership" Bool :>
                    QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] Permission :> Put '[JSON] Permission
+                     ReqBody '[JSON] Permission :>
+                       Patch '[JSON] Permission
 
--- | Updates a permission.
+-- | Updates a permission with patch semantics.
 --
 -- /See:/ 'permissionsUpdate' smart constructor.
-data PermissionsUpdate = PermissionsUpdate
-    { _perPayload           :: !Permission
-    , _perTransferOwnership :: !Bool
-    , _perFileId            :: !Text
-    , _perPermissionId      :: !Text
+data PermissionsUpdate = PermissionsUpdate'
+    { _puPayload           :: !Permission
+    , _puTransferOwnership :: !Bool
+    , _puFileId            :: !Text
+    , _puPermissionId      :: !Text
     } 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:
 --
--- * 'perPayload'
+-- * 'puPayload'
 --
--- * 'perTransferOwnership'
+-- * 'puTransferOwnership'
 --
--- * 'perFileId'
+-- * 'puFileId'
 --
--- * 'perPermissionId'
+-- * 'puPermissionId'
 permissionsUpdate
-    :: Permission -- ^ 'perPayload'
-    -> Text -- ^ 'perFileId'
-    -> Text -- ^ 'perPermissionId'
+    :: Permission -- ^ 'puPayload'
+    -> Text -- ^ 'puFileId'
+    -> Text -- ^ 'puPermissionId'
     -> PermissionsUpdate
-permissionsUpdate pPerPayload_ pPerFileId_ pPerPermissionId_ =
-    PermissionsUpdate
-    { _perPayload = pPerPayload_
-    , _perTransferOwnership = False
-    , _perFileId = pPerFileId_
-    , _perPermissionId = pPerPermissionId_
+permissionsUpdate pPuPayload_ pPuFileId_ pPuPermissionId_ =
+    PermissionsUpdate'
+    { _puPayload = pPuPayload_
+    , _puTransferOwnership = False
+    , _puFileId = pPuFileId_
+    , _puPermissionId = pPuPermissionId_
     }
 
 -- | Multipart request metadata.
-perPayload :: Lens' PermissionsUpdate Permission
-perPayload
-  = lens _perPayload (\ s a -> s{_perPayload = a})
+puPayload :: Lens' PermissionsUpdate Permission
+puPayload
+  = lens _puPayload (\ s a -> s{_puPayload = a})
 
--- | Whether changing a role to \'owner\' downgrades the current owners to
--- writers. Does nothing if the specified role is not \'owner\'.
-perTransferOwnership :: Lens' PermissionsUpdate Bool
-perTransferOwnership
-  = lens _perTransferOwnership
-      (\ s a -> s{_perTransferOwnership = a})
+-- | Whether to transfer ownership to the specified user and downgrade the
+-- current owner to a writer. This parameter is required as an
+-- acknowledgement of the side effect.
+puTransferOwnership :: Lens' PermissionsUpdate Bool
+puTransferOwnership
+  = lens _puTransferOwnership
+      (\ s a -> s{_puTransferOwnership = a})
 
--- | The ID for the file.
-perFileId :: Lens' PermissionsUpdate Text
-perFileId
-  = lens _perFileId (\ s a -> s{_perFileId = a})
+-- | The ID of the file.
+puFileId :: Lens' PermissionsUpdate Text
+puFileId = lens _puFileId (\ s a -> s{_puFileId = a})
 
--- | The ID for the permission.
-perPermissionId :: Lens' PermissionsUpdate Text
-perPermissionId
-  = lens _perPermissionId
-      (\ s a -> s{_perPermissionId = a})
+-- | The ID of the permission.
+puPermissionId :: Lens' PermissionsUpdate Text
+puPermissionId
+  = lens _puPermissionId
+      (\ s a -> s{_puPermissionId = a})
 
 instance GoogleRequest PermissionsUpdate where
         type Rs PermissionsUpdate = Permission
-        requestClient PermissionsUpdate{..}
-          = go _perFileId _perPermissionId
-              (Just _perTransferOwnership)
+        type Scopes PermissionsUpdate =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.file"]
+        requestClient PermissionsUpdate'{..}
+          = go _puFileId _puPermissionId
+              (Just _puTransferOwnership)
               (Just AltJSON)
-              _perPayload
+              _puPayload
               driveService
           where go
                   = buildClient
diff --git a/gen/Network/Google/Resource/Drive/Properties/Delete.hs b/gen/Network/Google/Resource/Drive/Properties/Delete.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Properties/Delete.hs
+++ /dev/null
@@ -1,109 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Properties.Delete
--- Copyright   : (c) 2015 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Deletes a property.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.properties.delete@.
-module Network.Google.Resource.Drive.Properties.Delete
-    (
-    -- * REST Resource
-      PropertiesDeleteResource
-
-    -- * Creating a Request
-    , propertiesDelete
-    , PropertiesDelete
-
-    -- * Request Lenses
-    , pdPropertyKey
-    , pdVisibility
-    , pdFileId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.properties.delete@ method which the
--- 'PropertiesDelete' request conforms to.
-type PropertiesDeleteResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "properties" :>
-               Capture "propertyKey" Text :>
-                 QueryParam "visibility" Text :>
-                   QueryParam "alt" AltJSON :> Delete '[JSON] ()
-
--- | Deletes a property.
---
--- /See:/ 'propertiesDelete' smart constructor.
-data PropertiesDelete = PropertiesDelete
-    { _pdPropertyKey :: !Text
-    , _pdVisibility  :: !Text
-    , _pdFileId      :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PropertiesDelete' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pdPropertyKey'
---
--- * 'pdVisibility'
---
--- * 'pdFileId'
-propertiesDelete
-    :: Text -- ^ 'pdPropertyKey'
-    -> Text -- ^ 'pdFileId'
-    -> PropertiesDelete
-propertiesDelete pPdPropertyKey_ pPdFileId_ =
-    PropertiesDelete
-    { _pdPropertyKey = pPdPropertyKey_
-    , _pdVisibility = "private"
-    , _pdFileId = pPdFileId_
-    }
-
--- | The key of the property.
-pdPropertyKey :: Lens' PropertiesDelete Text
-pdPropertyKey
-  = lens _pdPropertyKey
-      (\ s a -> s{_pdPropertyKey = a})
-
--- | The visibility of the property.
-pdVisibility :: Lens' PropertiesDelete Text
-pdVisibility
-  = lens _pdVisibility (\ s a -> s{_pdVisibility = a})
-
--- | The ID of the file.
-pdFileId :: Lens' PropertiesDelete Text
-pdFileId = lens _pdFileId (\ s a -> s{_pdFileId = a})
-
-instance GoogleRequest PropertiesDelete where
-        type Rs PropertiesDelete = ()
-        requestClient PropertiesDelete{..}
-          = go _pdFileId _pdPropertyKey (Just _pdVisibility)
-              (Just AltJSON)
-              driveService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy PropertiesDeleteResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Properties/Get.hs b/gen/Network/Google/Resource/Drive/Properties/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Properties/Get.hs
+++ /dev/null
@@ -1,108 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Properties.Get
--- Copyright   : (c) 2015 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 property by its key.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.properties.get@.
-module Network.Google.Resource.Drive.Properties.Get
-    (
-    -- * REST Resource
-      PropertiesGetResource
-
-    -- * Creating a Request
-    , propertiesGet
-    , PropertiesGet
-
-    -- * Request Lenses
-    , pgPropertyKey
-    , pgVisibility
-    , pgFileId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.properties.get@ method which the
--- 'PropertiesGet' request conforms to.
-type PropertiesGetResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "properties" :>
-               Capture "propertyKey" Text :>
-                 QueryParam "visibility" Text :>
-                   QueryParam "alt" AltJSON :> Get '[JSON] Property
-
--- | Gets a property by its key.
---
--- /See:/ 'propertiesGet' smart constructor.
-data PropertiesGet = PropertiesGet
-    { _pgPropertyKey :: !Text
-    , _pgVisibility  :: !Text
-    , _pgFileId      :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PropertiesGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'pgPropertyKey'
---
--- * 'pgVisibility'
---
--- * 'pgFileId'
-propertiesGet
-    :: Text -- ^ 'pgPropertyKey'
-    -> Text -- ^ 'pgFileId'
-    -> PropertiesGet
-propertiesGet pPgPropertyKey_ pPgFileId_ =
-    PropertiesGet
-    { _pgPropertyKey = pPgPropertyKey_
-    , _pgVisibility = "private"
-    , _pgFileId = pPgFileId_
-    }
-
--- | The key of the property.
-pgPropertyKey :: Lens' PropertiesGet Text
-pgPropertyKey
-  = lens _pgPropertyKey
-      (\ s a -> s{_pgPropertyKey = a})
-
--- | The visibility of the property.
-pgVisibility :: Lens' PropertiesGet Text
-pgVisibility
-  = lens _pgVisibility (\ s a -> s{_pgVisibility = a})
-
--- | The ID of the file.
-pgFileId :: Lens' PropertiesGet Text
-pgFileId = lens _pgFileId (\ s a -> s{_pgFileId = a})
-
-instance GoogleRequest PropertiesGet where
-        type Rs PropertiesGet = Property
-        requestClient PropertiesGet{..}
-          = go _pgFileId _pgPropertyKey (Just _pgVisibility)
-              (Just AltJSON)
-              driveService
-          where go
-                  = buildClient (Proxy :: Proxy PropertiesGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Properties/Insert.hs b/gen/Network/Google/Resource/Drive/Properties/Insert.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Properties/Insert.hs
+++ /dev/null
@@ -1,95 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Properties.Insert
--- Copyright   : (c) 2015 Brendan Hay
--- License     : Mozilla Public License, v. 2.0.
--- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
--- Stability   : auto-generated
--- Portability : non-portable (GHC extensions)
---
--- Adds a property to a file.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.properties.insert@.
-module Network.Google.Resource.Drive.Properties.Insert
-    (
-    -- * REST Resource
-      PropertiesInsertResource
-
-    -- * Creating a Request
-    , propertiesInsert
-    , PropertiesInsert
-
-    -- * Request Lenses
-    , piPayload
-    , piFileId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.properties.insert@ method which the
--- 'PropertiesInsert' request conforms to.
-type PropertiesInsertResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "properties" :>
-               QueryParam "alt" AltJSON :>
-                 ReqBody '[JSON] Property :> Post '[JSON] Property
-
--- | Adds a property to a file.
---
--- /See:/ 'propertiesInsert' smart constructor.
-data PropertiesInsert = PropertiesInsert
-    { _piPayload :: !Property
-    , _piFileId  :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PropertiesInsert' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'piPayload'
---
--- * 'piFileId'
-propertiesInsert
-    :: Property -- ^ 'piPayload'
-    -> Text -- ^ 'piFileId'
-    -> PropertiesInsert
-propertiesInsert pPiPayload_ pPiFileId_ =
-    PropertiesInsert
-    { _piPayload = pPiPayload_
-    , _piFileId = pPiFileId_
-    }
-
--- | Multipart request metadata.
-piPayload :: Lens' PropertiesInsert Property
-piPayload
-  = lens _piPayload (\ s a -> s{_piPayload = a})
-
--- | The ID of the file.
-piFileId :: Lens' PropertiesInsert Text
-piFileId = lens _piFileId (\ s a -> s{_piFileId = a})
-
-instance GoogleRequest PropertiesInsert where
-        type Rs PropertiesInsert = Property
-        requestClient PropertiesInsert{..}
-          = go _piFileId (Just AltJSON) _piPayload driveService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy PropertiesInsertResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Properties/List.hs b/gen/Network/Google/Resource/Drive/Properties/List.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Properties/List.hs
+++ /dev/null
@@ -1,83 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Properties.List
--- Copyright   : (c) 2015 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 a file\'s properties.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.properties.list@.
-module Network.Google.Resource.Drive.Properties.List
-    (
-    -- * REST Resource
-      PropertiesListResource
-
-    -- * Creating a Request
-    , propertiesList
-    , PropertiesList
-
-    -- * Request Lenses
-    , proFileId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.properties.list@ method which the
--- 'PropertiesList' request conforms to.
-type PropertiesListResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "properties" :>
-               QueryParam "alt" AltJSON :> Get '[JSON] PropertyList
-
--- | Lists a file\'s properties.
---
--- /See:/ 'propertiesList' smart constructor.
-newtype PropertiesList = PropertiesList
-    { _proFileId :: Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PropertiesList' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'proFileId'
-propertiesList
-    :: Text -- ^ 'proFileId'
-    -> PropertiesList
-propertiesList pProFileId_ =
-    PropertiesList
-    { _proFileId = pProFileId_
-    }
-
--- | The ID of the file.
-proFileId :: Lens' PropertiesList Text
-proFileId
-  = lens _proFileId (\ s a -> s{_proFileId = a})
-
-instance GoogleRequest PropertiesList where
-        type Rs PropertiesList = PropertyList
-        requestClient PropertiesList{..}
-          = go _proFileId (Just AltJSON) driveService
-          where go
-                  = buildClient (Proxy :: Proxy PropertiesListResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Properties/Patch.hs b/gen/Network/Google/Resource/Drive/Properties/Patch.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Properties/Patch.hs
+++ /dev/null
@@ -1,122 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Properties.Patch
--- Copyright   : (c) 2015 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 a property. This method supports patch semantics.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.properties.patch@.
-module Network.Google.Resource.Drive.Properties.Patch
-    (
-    -- * REST Resource
-      PropertiesPatchResource
-
-    -- * Creating a Request
-    , propertiesPatch
-    , PropertiesPatch
-
-    -- * Request Lenses
-    , ppPropertyKey
-    , ppVisibility
-    , ppPayload
-    , ppFileId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.properties.patch@ method which the
--- 'PropertiesPatch' request conforms to.
-type PropertiesPatchResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "properties" :>
-               Capture "propertyKey" Text :>
-                 QueryParam "visibility" Text :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] Property :> Patch '[JSON] Property
-
--- | Updates a property. This method supports patch semantics.
---
--- /See:/ 'propertiesPatch' smart constructor.
-data PropertiesPatch = PropertiesPatch
-    { _ppPropertyKey :: !Text
-    , _ppVisibility  :: !Text
-    , _ppPayload     :: !Property
-    , _ppFileId      :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PropertiesPatch' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'ppPropertyKey'
---
--- * 'ppVisibility'
---
--- * 'ppPayload'
---
--- * 'ppFileId'
-propertiesPatch
-    :: Text -- ^ 'ppPropertyKey'
-    -> Property -- ^ 'ppPayload'
-    -> Text -- ^ 'ppFileId'
-    -> PropertiesPatch
-propertiesPatch pPpPropertyKey_ pPpPayload_ pPpFileId_ =
-    PropertiesPatch
-    { _ppPropertyKey = pPpPropertyKey_
-    , _ppVisibility = "private"
-    , _ppPayload = pPpPayload_
-    , _ppFileId = pPpFileId_
-    }
-
--- | The key of the property.
-ppPropertyKey :: Lens' PropertiesPatch Text
-ppPropertyKey
-  = lens _ppPropertyKey
-      (\ s a -> s{_ppPropertyKey = a})
-
--- | The visibility of the property.
-ppVisibility :: Lens' PropertiesPatch Text
-ppVisibility
-  = lens _ppVisibility (\ s a -> s{_ppVisibility = a})
-
--- | Multipart request metadata.
-ppPayload :: Lens' PropertiesPatch Property
-ppPayload
-  = lens _ppPayload (\ s a -> s{_ppPayload = a})
-
--- | The ID of the file.
-ppFileId :: Lens' PropertiesPatch Text
-ppFileId = lens _ppFileId (\ s a -> s{_ppFileId = a})
-
-instance GoogleRequest PropertiesPatch where
-        type Rs PropertiesPatch = Property
-        requestClient PropertiesPatch{..}
-          = go _ppFileId _ppPropertyKey (Just _ppVisibility)
-              (Just AltJSON)
-              _ppPayload
-              driveService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy PropertiesPatchResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Properties/Update.hs b/gen/Network/Google/Resource/Drive/Properties/Update.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Properties/Update.hs
+++ /dev/null
@@ -1,122 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Properties.Update
--- Copyright   : (c) 2015 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 a property.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.properties.update@.
-module Network.Google.Resource.Drive.Properties.Update
-    (
-    -- * REST Resource
-      PropertiesUpdateResource
-
-    -- * Creating a Request
-    , propertiesUpdate
-    , PropertiesUpdate
-
-    -- * Request Lenses
-    , puPropertyKey
-    , puVisibility
-    , puPayload
-    , puFileId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.properties.update@ method which the
--- 'PropertiesUpdate' request conforms to.
-type PropertiesUpdateResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "properties" :>
-               Capture "propertyKey" Text :>
-                 QueryParam "visibility" Text :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] Property :> Put '[JSON] Property
-
--- | Updates a property.
---
--- /See:/ 'propertiesUpdate' smart constructor.
-data PropertiesUpdate = PropertiesUpdate
-    { _puPropertyKey :: !Text
-    , _puVisibility  :: !Text
-    , _puPayload     :: !Property
-    , _puFileId      :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'PropertiesUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'puPropertyKey'
---
--- * 'puVisibility'
---
--- * 'puPayload'
---
--- * 'puFileId'
-propertiesUpdate
-    :: Text -- ^ 'puPropertyKey'
-    -> Property -- ^ 'puPayload'
-    -> Text -- ^ 'puFileId'
-    -> PropertiesUpdate
-propertiesUpdate pPuPropertyKey_ pPuPayload_ pPuFileId_ =
-    PropertiesUpdate
-    { _puPropertyKey = pPuPropertyKey_
-    , _puVisibility = "private"
-    , _puPayload = pPuPayload_
-    , _puFileId = pPuFileId_
-    }
-
--- | The key of the property.
-puPropertyKey :: Lens' PropertiesUpdate Text
-puPropertyKey
-  = lens _puPropertyKey
-      (\ s a -> s{_puPropertyKey = a})
-
--- | The visibility of the property.
-puVisibility :: Lens' PropertiesUpdate Text
-puVisibility
-  = lens _puVisibility (\ s a -> s{_puVisibility = a})
-
--- | Multipart request metadata.
-puPayload :: Lens' PropertiesUpdate Property
-puPayload
-  = lens _puPayload (\ s a -> s{_puPayload = a})
-
--- | The ID of the file.
-puFileId :: Lens' PropertiesUpdate Text
-puFileId = lens _puFileId (\ s a -> s{_puFileId = a})
-
-instance GoogleRequest PropertiesUpdate where
-        type Rs PropertiesUpdate = Property
-        requestClient PropertiesUpdate{..}
-          = go _puFileId _puPropertyKey (Just _puVisibility)
-              (Just AltJSON)
-              _puPayload
-              driveService
-          where go
-                  = buildClient
-                      (Proxy :: Proxy PropertiesUpdateResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Realtime/Get.hs b/gen/Network/Google/Resource/Drive/Realtime/Get.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Realtime/Get.hs
+++ /dev/null
@@ -1,119 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Realtime.Get
--- Copyright   : (c) 2015 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)
---
--- Exports the contents of the Realtime API data model associated with this
--- file as JSON.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.realtime.get@.
-module Network.Google.Resource.Drive.Realtime.Get
-    (
-    -- * REST Resource
-      RealtimeGetResource
-
-    -- * Creating a Request
-    , realtimeGet
-    , RealtimeGet
-
-    -- * Request Lenses
-    , rrFileId
-    , rrRevision
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.realtime.get@ method which the
--- 'RealtimeGet' request conforms to.
-type RealtimeGetResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "realtime" :>
-               QueryParam "revision" (Textual Int32) :>
-                 QueryParam "alt" AltJSON :> Get '[JSON] ()
-       :<|>
-       "drive" :>
-         "v2" :>
-           "files" :>
-             Capture "fileId" Text :>
-               "realtime" :>
-                 QueryParam "revision" (Textual Int32) :>
-                   QueryParam "alt" AltMedia :>
-                     Get '[OctetStream] Stream
-
--- | Exports the contents of the Realtime API data model associated with this
--- file as JSON.
---
--- /See:/ 'realtimeGet' smart constructor.
-data RealtimeGet = RealtimeGet
-    { _rrFileId   :: !Text
-    , _rrRevision :: !(Maybe (Textual Int32))
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RealtimeGet' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rrFileId'
---
--- * 'rrRevision'
-realtimeGet
-    :: Text -- ^ 'rrFileId'
-    -> RealtimeGet
-realtimeGet pRrFileId_ =
-    RealtimeGet
-    { _rrFileId = pRrFileId_
-    , _rrRevision = Nothing
-    }
-
--- | The ID of the file that the Realtime API data model is associated with.
-rrFileId :: Lens' RealtimeGet Text
-rrFileId = lens _rrFileId (\ s a -> s{_rrFileId = a})
-
--- | The revision of the Realtime API data model to export. Revisions start
--- at 1 (the initial empty data model) and are incremented with each
--- change. If this parameter is excluded, the most recent data model will
--- be returned.
-rrRevision :: Lens' RealtimeGet (Maybe Int32)
-rrRevision
-  = lens _rrRevision (\ s a -> s{_rrRevision = a}) .
-      mapping _Coerce
-
-instance GoogleRequest RealtimeGet where
-        type Rs RealtimeGet = ()
-        requestClient RealtimeGet{..}
-          = go _rrFileId _rrRevision (Just AltJSON)
-              driveService
-          where go :<|> _
-                  = buildClient (Proxy :: Proxy RealtimeGetResource)
-                      mempty
-
-instance GoogleRequest (MediaDownload RealtimeGet)
-         where
-        type Rs (MediaDownload RealtimeGet) = Stream
-        requestClient (MediaDownload RealtimeGet{..})
-          = go _rrFileId _rrRevision (Just AltMedia)
-              driveService
-          where _ :<|> go
-                  = buildClient (Proxy :: Proxy RealtimeGetResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Realtime/Update.hs b/gen/Network/Google/Resource/Drive/Realtime/Update.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Realtime/Update.hs
+++ /dev/null
@@ -1,125 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Realtime.Update
--- Copyright   : (c) 2015 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)
---
--- Overwrites the Realtime API data model associated with this file with
--- the provided JSON data model.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.realtime.update@.
-module Network.Google.Resource.Drive.Realtime.Update
-    (
-    -- * REST Resource
-      RealtimeUpdateResource
-
-    -- * Creating a Request
-    , realtimeUpdate
-    , RealtimeUpdate
-
-    -- * Request Lenses
-    , reaBaseRevision
-    , reaFileId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.realtime.update@ method which the
--- 'RealtimeUpdate' request conforms to.
-type RealtimeUpdateResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "realtime" :>
-               QueryParam "baseRevision" Text :>
-                 QueryParam "alt" AltJSON :> Put '[JSON] ()
-       :<|>
-       "upload" :>
-         "drive" :>
-           "v2" :>
-             "files" :>
-               Capture "fileId" Text :>
-                 "realtime" :>
-                   QueryParam "baseRevision" Text :>
-                     QueryParam "alt" AltJSON :>
-                       QueryParam "uploadType" AltMedia :>
-                         ReqBody '[OctetStream] RequestBody :> Put '[JSON] ()
-
--- | Overwrites the Realtime API data model associated with this file with
--- the provided JSON data model.
---
--- /See:/ 'realtimeUpdate' smart constructor.
-data RealtimeUpdate = RealtimeUpdate
-    { _reaBaseRevision :: !(Maybe Text)
-    , _reaFileId       :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RealtimeUpdate' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'reaBaseRevision'
---
--- * 'reaFileId'
-realtimeUpdate
-    :: Text -- ^ 'reaFileId'
-    -> RealtimeUpdate
-realtimeUpdate pReaFileId_ =
-    RealtimeUpdate
-    { _reaBaseRevision = Nothing
-    , _reaFileId = pReaFileId_
-    }
-
--- | The revision of the model to diff the uploaded model against. If set,
--- the uploaded model is diffed against the provided revision and those
--- differences are merged with any changes made to the model after the
--- provided revision. If not set, the uploaded model replaces the current
--- model on the server.
-reaBaseRevision :: Lens' RealtimeUpdate (Maybe Text)
-reaBaseRevision
-  = lens _reaBaseRevision
-      (\ s a -> s{_reaBaseRevision = a})
-
--- | The ID of the file that the Realtime API data model is associated with.
-reaFileId :: Lens' RealtimeUpdate Text
-reaFileId
-  = lens _reaFileId (\ s a -> s{_reaFileId = a})
-
-instance GoogleRequest RealtimeUpdate where
-        type Rs RealtimeUpdate = ()
-        requestClient RealtimeUpdate{..}
-          = go _reaFileId _reaBaseRevision (Just AltJSON)
-              driveService
-          where go :<|> _
-                  = buildClient (Proxy :: Proxy RealtimeUpdateResource)
-                      mempty
-
-instance GoogleRequest (MediaUpload RealtimeUpdate)
-         where
-        type Rs (MediaUpload RealtimeUpdate) = ()
-        requestClient (MediaUpload RealtimeUpdate{..} body)
-          = go _reaFileId _reaBaseRevision (Just AltJSON)
-              (Just AltMedia)
-              body
-              driveService
-          where _ :<|> go
-                  = buildClient (Proxy :: Proxy RealtimeUpdateResource)
-                      mempty
diff --git a/gen/Network/Google/Resource/Drive/Replies/Create.hs b/gen/Network/Google/Resource/Drive/Replies/Create.hs
new file mode 100644
--- /dev/null
+++ b/gen/Network/Google/Resource/Drive/Replies/Create.hs
@@ -0,0 +1,111 @@
+{-# 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.Replies.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 reply to a comment.
+--
+-- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.replies.create@.
+module Network.Google.Resource.Drive.Replies.Create
+    (
+    -- * REST Resource
+      RepliesCreateResource
+
+    -- * Creating a Request
+    , repliesCreate
+    , RepliesCreate
+
+    -- * Request Lenses
+    , rcPayload
+    , rcFileId
+    , rcCommentId
+    ) where
+
+import           Network.Google.Drive.Types
+import           Network.Google.Prelude
+
+-- | A resource alias for @drive.replies.create@ method which the
+-- 'RepliesCreate' request conforms to.
+type RepliesCreateResource =
+     "drive" :>
+       "v3" :>
+         "files" :>
+           Capture "fileId" Text :>
+             "comments" :>
+               Capture "commentId" Text :>
+                 "replies" :>
+                   QueryParam "alt" AltJSON :>
+                     ReqBody '[JSON] Reply :> Post '[JSON] Reply
+
+-- | Creates a new reply to a comment.
+--
+-- /See:/ 'repliesCreate' smart constructor.
+data RepliesCreate = RepliesCreate'
+    { _rcPayload   :: !Reply
+    , _rcFileId    :: !Text
+    , _rcCommentId :: !Text
+    } 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:
+--
+-- * 'rcPayload'
+--
+-- * 'rcFileId'
+--
+-- * 'rcCommentId'
+repliesCreate
+    :: Reply -- ^ 'rcPayload'
+    -> Text -- ^ 'rcFileId'
+    -> Text -- ^ 'rcCommentId'
+    -> RepliesCreate
+repliesCreate pRcPayload_ pRcFileId_ pRcCommentId_ =
+    RepliesCreate'
+    { _rcPayload = pRcPayload_
+    , _rcFileId = pRcFileId_
+    , _rcCommentId = pRcCommentId_
+    }
+
+-- | Multipart request metadata.
+rcPayload :: Lens' RepliesCreate Reply
+rcPayload
+  = lens _rcPayload (\ s a -> s{_rcPayload = a})
+
+-- | The ID of the file.
+rcFileId :: Lens' RepliesCreate Text
+rcFileId = lens _rcFileId (\ s a -> s{_rcFileId = a})
+
+-- | The ID of the comment.
+rcCommentId :: Lens' RepliesCreate Text
+rcCommentId
+  = lens _rcCommentId (\ s a -> s{_rcCommentId = a})
+
+instance GoogleRequest RepliesCreate where
+        type Rs RepliesCreate = Reply
+        type Scopes RepliesCreate =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.file"]
+        requestClient RepliesCreate'{..}
+          = go _rcFileId _rcCommentId (Just AltJSON) _rcPayload
+              driveService
+          where go
+                  = buildClient (Proxy :: Proxy RepliesCreateResource)
+                      mempty
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
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Replies.Delete
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -45,7 +45,7 @@
 -- 'RepliesDelete' request conforms to.
 type RepliesDeleteResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            Capture "fileId" Text :>
              "comments" :>
@@ -57,7 +57,7 @@
 -- | Deletes a reply.
 --
 -- /See:/ 'repliesDelete' smart constructor.
-data RepliesDelete = RepliesDelete
+data RepliesDelete = RepliesDelete'
     { _rdReplyId   :: !Text
     , _rdFileId    :: !Text
     , _rdCommentId :: !Text
@@ -78,7 +78,7 @@
     -> Text -- ^ 'rdCommentId'
     -> RepliesDelete
 repliesDelete pRdReplyId_ pRdFileId_ pRdCommentId_ =
-    RepliesDelete
+    RepliesDelete'
     { _rdReplyId = pRdReplyId_
     , _rdFileId = pRdFileId_
     , _rdCommentId = pRdCommentId_
@@ -100,7 +100,10 @@
 
 instance GoogleRequest RepliesDelete where
         type Rs RepliesDelete = ()
-        requestClient RepliesDelete{..}
+        type Scopes RepliesDelete =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.file"]
+        requestClient RepliesDelete'{..}
           = go _rdFileId _rdCommentId _rdReplyId (Just AltJSON)
               driveService
           where go
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
@@ -14,13 +14,13 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Replies.Get
--- Copyright   : (c) 2015 Brendan Hay
+-- 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 reply.
+-- Gets a reply by ID.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.replies.get@.
 module Network.Google.Resource.Drive.Replies.Get
@@ -46,7 +46,7 @@
 -- 'RepliesGet' request conforms to.
 type RepliesGetResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            Capture "fileId" Text :>
              "comments" :>
@@ -54,12 +54,12 @@
                  "replies" :>
                    Capture "replyId" Text :>
                      QueryParam "includeDeleted" Bool :>
-                       QueryParam "alt" AltJSON :> Get '[JSON] CommentReply
+                       QueryParam "alt" AltJSON :> Get '[JSON] Reply
 
--- | Gets a reply.
+-- | Gets a reply by ID.
 --
 -- /See:/ 'repliesGet' smart constructor.
-data RepliesGet = RepliesGet
+data RepliesGet = RepliesGet'
     { _rgReplyId        :: !Text
     , _rgFileId         :: !Text
     , _rgCommentId      :: !Text
@@ -83,7 +83,7 @@
     -> Text -- ^ 'rgCommentId'
     -> RepliesGet
 repliesGet pRgReplyId_ pRgFileId_ pRgCommentId_ =
-    RepliesGet
+    RepliesGet'
     { _rgReplyId = pRgReplyId_
     , _rgFileId = pRgFileId_
     , _rgCommentId = pRgCommentId_
@@ -104,15 +104,20 @@
 rgCommentId
   = lens _rgCommentId (\ s a -> s{_rgCommentId = a})
 
--- | If set, this will succeed when retrieving a deleted reply.
+-- | Whether to return deleted replies. Deleted replies will not include
+-- their original content.
 rgIncludeDeleted :: Lens' RepliesGet Bool
 rgIncludeDeleted
   = lens _rgIncludeDeleted
       (\ s a -> s{_rgIncludeDeleted = a})
 
 instance GoogleRequest RepliesGet where
-        type Rs RepliesGet = CommentReply
-        requestClient RepliesGet{..}
+        type Rs RepliesGet = Reply
+        type Scopes RepliesGet =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.file",
+               "https://www.googleapis.com/auth/drive.readonly"]
+        requestClient RepliesGet'{..}
           = go _rgFileId _rgCommentId _rgReplyId
               (Just _rgIncludeDeleted)
               (Just AltJSON)
diff --git a/gen/Network/Google/Resource/Drive/Replies/Insert.hs b/gen/Network/Google/Resource/Drive/Replies/Insert.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Replies/Insert.hs
+++ /dev/null
@@ -1,109 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Replies.Insert
--- Copyright   : (c) 2015 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 reply to the given comment.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.replies.insert@.
-module Network.Google.Resource.Drive.Replies.Insert
-    (
-    -- * REST Resource
-      RepliesInsertResource
-
-    -- * Creating a Request
-    , repliesInsert
-    , RepliesInsert
-
-    -- * Request Lenses
-    , riPayload
-    , riFileId
-    , riCommentId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.replies.insert@ method which the
--- 'RepliesInsert' request conforms to.
-type RepliesInsertResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "comments" :>
-               Capture "commentId" Text :>
-                 "replies" :>
-                   QueryParam "alt" AltJSON :>
-                     ReqBody '[JSON] CommentReply :>
-                       Post '[JSON] CommentReply
-
--- | Creates a new reply to the given comment.
---
--- /See:/ 'repliesInsert' smart constructor.
-data RepliesInsert = RepliesInsert
-    { _riPayload   :: !CommentReply
-    , _riFileId    :: !Text
-    , _riCommentId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RepliesInsert' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'riPayload'
---
--- * 'riFileId'
---
--- * 'riCommentId'
-repliesInsert
-    :: CommentReply -- ^ 'riPayload'
-    -> Text -- ^ 'riFileId'
-    -> Text -- ^ 'riCommentId'
-    -> RepliesInsert
-repliesInsert pRiPayload_ pRiFileId_ pRiCommentId_ =
-    RepliesInsert
-    { _riPayload = pRiPayload_
-    , _riFileId = pRiFileId_
-    , _riCommentId = pRiCommentId_
-    }
-
--- | Multipart request metadata.
-riPayload :: Lens' RepliesInsert CommentReply
-riPayload
-  = lens _riPayload (\ s a -> s{_riPayload = a})
-
--- | The ID of the file.
-riFileId :: Lens' RepliesInsert Text
-riFileId = lens _riFileId (\ s a -> s{_riFileId = a})
-
--- | The ID of the comment.
-riCommentId :: Lens' RepliesInsert Text
-riCommentId
-  = lens _riCommentId (\ s a -> s{_riCommentId = a})
-
-instance GoogleRequest RepliesInsert where
-        type Rs RepliesInsert = CommentReply
-        requestClient RepliesInsert{..}
-          = go _riFileId _riCommentId (Just AltJSON) _riPayload
-              driveService
-          where go
-                  = buildClient (Proxy :: Proxy RepliesInsertResource)
-                      mempty
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
@@ -14,13 +14,13 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Replies.List
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
 -- Portability : non-portable (GHC extensions)
 --
--- Lists all of the replies to a comment.
+-- Lists a comment\'s replies.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.replies.list@.
 module Network.Google.Resource.Drive.Replies.List
@@ -36,7 +36,7 @@
     , rlPageToken
     , rlFileId
     , rlCommentId
-    , rlMaxResults
+    , rlPageSize
     , rlIncludeDeleted
     ) where
 
@@ -47,26 +47,25 @@
 -- 'RepliesList' request conforms to.
 type RepliesListResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            Capture "fileId" Text :>
              "comments" :>
                Capture "commentId" Text :>
                  "replies" :>
                    QueryParam "pageToken" Text :>
-                     QueryParam "maxResults" (Textual Int32) :>
+                     QueryParam "pageSize" (Textual Int32) :>
                        QueryParam "includeDeleted" Bool :>
-                         QueryParam "alt" AltJSON :>
-                           Get '[JSON] CommentReplyList
+                         QueryParam "alt" AltJSON :> Get '[JSON] ReplyList
 
--- | Lists all of the replies to a comment.
+-- | Lists a comment\'s replies.
 --
 -- /See:/ 'repliesList' smart constructor.
-data RepliesList = RepliesList
+data RepliesList = RepliesList'
     { _rlPageToken      :: !(Maybe Text)
     , _rlFileId         :: !Text
     , _rlCommentId      :: !Text
-    , _rlMaxResults     :: !(Textual Int32)
+    , _rlPageSize       :: !(Textual Int32)
     , _rlIncludeDeleted :: !Bool
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -80,7 +79,7 @@
 --
 -- * 'rlCommentId'
 --
--- * 'rlMaxResults'
+-- * 'rlPageSize'
 --
 -- * 'rlIncludeDeleted'
 repliesList
@@ -88,17 +87,17 @@
     -> Text -- ^ 'rlCommentId'
     -> RepliesList
 repliesList pRlFileId_ pRlCommentId_ =
-    RepliesList
+    RepliesList'
     { _rlPageToken = Nothing
     , _rlFileId = pRlFileId_
     , _rlCommentId = pRlCommentId_
-    , _rlMaxResults = 20
+    , _rlPageSize = 20
     , _rlIncludeDeleted = False
     }
 
--- | The continuation token, used to page through large result sets. To get
--- the next page of results, set this parameter to the value of
--- \"nextPageToken\" from the previous response.
+-- | 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.
 rlPageToken :: Lens' RepliesList (Maybe Text)
 rlPageToken
   = lens _rlPageToken (\ s a -> s{_rlPageToken = a})
@@ -112,25 +111,28 @@
 rlCommentId
   = lens _rlCommentId (\ s a -> s{_rlCommentId = a})
 
--- | The maximum number of replies to include in the response, used for
--- paging.
-rlMaxResults :: Lens' RepliesList Int32
-rlMaxResults
-  = lens _rlMaxResults (\ s a -> s{_rlMaxResults = a})
-      . _Coerce
+-- | The maximum number of replies to return per page.
+rlPageSize :: Lens' RepliesList Int32
+rlPageSize
+  = lens _rlPageSize (\ s a -> s{_rlPageSize = a}) .
+      _Coerce
 
--- | If set, all replies, including deleted replies (with content stripped)
--- will be returned.
+-- | Whether to include deleted replies. Deleted replies will not include
+-- their original content.
 rlIncludeDeleted :: Lens' RepliesList Bool
 rlIncludeDeleted
   = lens _rlIncludeDeleted
       (\ s a -> s{_rlIncludeDeleted = a})
 
 instance GoogleRequest RepliesList where
-        type Rs RepliesList = CommentReplyList
-        requestClient RepliesList{..}
+        type Rs RepliesList = ReplyList
+        type Scopes RepliesList =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.file",
+               "https://www.googleapis.com/auth/drive.readonly"]
+        requestClient RepliesList'{..}
           = go _rlFileId _rlCommentId _rlPageToken
-              (Just _rlMaxResults)
+              (Just _rlPageSize)
               (Just _rlIncludeDeleted)
               (Just AltJSON)
               driveService
diff --git a/gen/Network/Google/Resource/Drive/Replies/Patch.hs b/gen/Network/Google/Resource/Drive/Replies/Patch.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Replies/Patch.hs
+++ /dev/null
@@ -1,122 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Replies.Patch
--- Copyright   : (c) 2015 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 an existing reply. This method supports patch semantics.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.replies.patch@.
-module Network.Google.Resource.Drive.Replies.Patch
-    (
-    -- * REST Resource
-      RepliesPatchResource
-
-    -- * Creating a Request
-    , repliesPatch
-    , RepliesPatch
-
-    -- * Request Lenses
-    , rpPayload
-    , rpReplyId
-    , rpFileId
-    , rpCommentId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.replies.patch@ method which the
--- 'RepliesPatch' request conforms to.
-type RepliesPatchResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "comments" :>
-               Capture "commentId" Text :>
-                 "replies" :>
-                   Capture "replyId" Text :>
-                     QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] CommentReply :>
-                         Patch '[JSON] CommentReply
-
--- | Updates an existing reply. This method supports patch semantics.
---
--- /See:/ 'repliesPatch' smart constructor.
-data RepliesPatch = RepliesPatch
-    { _rpPayload   :: !CommentReply
-    , _rpReplyId   :: !Text
-    , _rpFileId    :: !Text
-    , _rpCommentId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RepliesPatch' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rpPayload'
---
--- * 'rpReplyId'
---
--- * 'rpFileId'
---
--- * 'rpCommentId'
-repliesPatch
-    :: CommentReply -- ^ 'rpPayload'
-    -> Text -- ^ 'rpReplyId'
-    -> Text -- ^ 'rpFileId'
-    -> Text -- ^ 'rpCommentId'
-    -> RepliesPatch
-repliesPatch pRpPayload_ pRpReplyId_ pRpFileId_ pRpCommentId_ =
-    RepliesPatch
-    { _rpPayload = pRpPayload_
-    , _rpReplyId = pRpReplyId_
-    , _rpFileId = pRpFileId_
-    , _rpCommentId = pRpCommentId_
-    }
-
--- | Multipart request metadata.
-rpPayload :: Lens' RepliesPatch CommentReply
-rpPayload
-  = lens _rpPayload (\ s a -> s{_rpPayload = a})
-
--- | The ID of the reply.
-rpReplyId :: Lens' RepliesPatch Text
-rpReplyId
-  = lens _rpReplyId (\ s a -> s{_rpReplyId = a})
-
--- | The ID of the file.
-rpFileId :: Lens' RepliesPatch Text
-rpFileId = lens _rpFileId (\ s a -> s{_rpFileId = a})
-
--- | The ID of the comment.
-rpCommentId :: Lens' RepliesPatch Text
-rpCommentId
-  = lens _rpCommentId (\ s a -> s{_rpCommentId = a})
-
-instance GoogleRequest RepliesPatch where
-        type Rs RepliesPatch = CommentReply
-        requestClient RepliesPatch{..}
-          = go _rpFileId _rpCommentId _rpReplyId (Just AltJSON)
-              _rpPayload
-              driveService
-          where go
-                  = buildClient (Proxy :: Proxy RepliesPatchResource)
-                      mempty
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
@@ -14,13 +14,13 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Replies.Update
--- Copyright   : (c) 2015 Brendan Hay
+-- 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 an existing reply.
+-- Updates a reply with patch semantics.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.replies.update@.
 module Network.Google.Resource.Drive.Replies.Update
@@ -46,7 +46,7 @@
 -- 'RepliesUpdate' request conforms to.
 type RepliesUpdateResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            Capture "fileId" Text :>
              "comments" :>
@@ -54,14 +54,13 @@
                  "replies" :>
                    Capture "replyId" Text :>
                      QueryParam "alt" AltJSON :>
-                       ReqBody '[JSON] CommentReply :>
-                         Put '[JSON] CommentReply
+                       ReqBody '[JSON] Reply :> Patch '[JSON] Reply
 
--- | Updates an existing reply.
+-- | Updates a reply with patch semantics.
 --
 -- /See:/ 'repliesUpdate' smart constructor.
-data RepliesUpdate = RepliesUpdate
-    { _ruPayload   :: !CommentReply
+data RepliesUpdate = RepliesUpdate'
+    { _ruPayload   :: !Reply
     , _ruReplyId   :: !Text
     , _ruFileId    :: !Text
     , _ruCommentId :: !Text
@@ -79,13 +78,13 @@
 --
 -- * 'ruCommentId'
 repliesUpdate
-    :: CommentReply -- ^ 'ruPayload'
+    :: Reply -- ^ 'ruPayload'
     -> Text -- ^ 'ruReplyId'
     -> Text -- ^ 'ruFileId'
     -> Text -- ^ 'ruCommentId'
     -> RepliesUpdate
 repliesUpdate pRuPayload_ pRuReplyId_ pRuFileId_ pRuCommentId_ =
-    RepliesUpdate
+    RepliesUpdate'
     { _ruPayload = pRuPayload_
     , _ruReplyId = pRuReplyId_
     , _ruFileId = pRuFileId_
@@ -93,7 +92,7 @@
     }
 
 -- | Multipart request metadata.
-ruPayload :: Lens' RepliesUpdate CommentReply
+ruPayload :: Lens' RepliesUpdate Reply
 ruPayload
   = lens _ruPayload (\ s a -> s{_ruPayload = a})
 
@@ -112,8 +111,11 @@
   = lens _ruCommentId (\ s a -> s{_ruCommentId = a})
 
 instance GoogleRequest RepliesUpdate where
-        type Rs RepliesUpdate = CommentReply
-        requestClient RepliesUpdate{..}
+        type Rs RepliesUpdate = Reply
+        type Scopes RepliesUpdate =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.file"]
+        requestClient RepliesUpdate'{..}
           = go _ruFileId _ruCommentId _ruReplyId (Just AltJSON)
               _ruPayload
               driveService
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
@@ -14,13 +14,14 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Revisions.Delete
--- Copyright   : (c) 2015 Brendan Hay
+-- 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)
 --
--- Removes a revision.
+-- Permanently deletes a revision. This method is only applicable to files
+-- with binary content in Drive.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.revisions.delete@.
 module Network.Google.Resource.Drive.Revisions.Delete
@@ -44,17 +45,18 @@
 -- 'RevisionsDelete' request conforms to.
 type RevisionsDeleteResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            Capture "fileId" Text :>
              "revisions" :>
                Capture "revisionId" Text :>
                  QueryParam "alt" AltJSON :> Delete '[JSON] ()
 
--- | Removes a revision.
+-- | Permanently deletes a revision. This method is only applicable to files
+-- with binary content in Drive.
 --
 -- /See:/ 'revisionsDelete' smart constructor.
-data RevisionsDelete = RevisionsDelete
+data RevisionsDelete = RevisionsDelete'
     { _rFileId     :: !Text
     , _rRevisionId :: !Text
     } deriving (Eq,Show,Data,Typeable,Generic)
@@ -71,7 +73,7 @@
     -> Text -- ^ 'rRevisionId'
     -> RevisionsDelete
 revisionsDelete pRFileId_ pRRevisionId_ =
-    RevisionsDelete
+    RevisionsDelete'
     { _rFileId = pRFileId_
     , _rRevisionId = pRRevisionId_
     }
@@ -87,7 +89,11 @@
 
 instance GoogleRequest RevisionsDelete where
         type Rs RevisionsDelete = ()
-        requestClient RevisionsDelete{..}
+        type Scopes RevisionsDelete =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.appdata",
+               "https://www.googleapis.com/auth/drive.file"]
+        requestClient RevisionsDelete'{..}
           = go _rFileId _rRevisionId (Just AltJSON)
               driveService
           where go
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
@@ -14,13 +14,13 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Revisions.Get
--- Copyright   : (c) 2015 Brendan Hay
+-- 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 specific revision.
+-- Gets a revision\'s metadata or content by ID.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.revisions.get@.
 module Network.Google.Resource.Drive.Revisions.Get
@@ -33,6 +33,7 @@
     , RevisionsGet
 
     -- * Request Lenses
+    , rggAcknowledgeAbuse
     , rggFileId
     , rggRevisionId
     ) where
@@ -44,25 +45,39 @@
 -- 'RevisionsGet' request conforms to.
 type RevisionsGetResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            Capture "fileId" Text :>
              "revisions" :>
                Capture "revisionId" Text :>
-                 QueryParam "alt" AltJSON :> Get '[JSON] Revision
+                 QueryParam "acknowledgeAbuse" Bool :>
+                   QueryParam "alt" AltJSON :> Get '[JSON] Revision
+       :<|>
+       "drive" :>
+         "v3" :>
+           "files" :>
+             Capture "fileId" Text :>
+               "revisions" :>
+                 Capture "revisionId" Text :>
+                   QueryParam "acknowledgeAbuse" Bool :>
+                     QueryParam "alt" AltMedia :>
+                       Get '[OctetStream] Stream
 
--- | Gets a specific revision.
+-- | Gets a revision\'s metadata or content by ID.
 --
 -- /See:/ 'revisionsGet' smart constructor.
-data RevisionsGet = RevisionsGet
-    { _rggFileId     :: !Text
-    , _rggRevisionId :: !Text
+data RevisionsGet = RevisionsGet'
+    { _rggAcknowledgeAbuse :: !Bool
+    , _rggFileId           :: !Text
+    , _rggRevisionId       :: !Text
     } 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:
 --
+-- * 'rggAcknowledgeAbuse'
+--
 -- * 'rggFileId'
 --
 -- * 'rggRevisionId'
@@ -71,11 +86,19 @@
     -> Text -- ^ 'rggRevisionId'
     -> RevisionsGet
 revisionsGet pRggFileId_ pRggRevisionId_ =
-    RevisionsGet
-    { _rggFileId = pRggFileId_
+    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.
+rggAcknowledgeAbuse :: Lens' RevisionsGet Bool
+rggAcknowledgeAbuse
+  = lens _rggAcknowledgeAbuse
+      (\ s a -> s{_rggAcknowledgeAbuse = a})
+
 -- | The ID of the file.
 rggFileId :: Lens' RevisionsGet Text
 rggFileId
@@ -89,9 +112,33 @@
 
 instance GoogleRequest RevisionsGet where
         type Rs RevisionsGet = Revision
-        requestClient RevisionsGet{..}
-          = go _rggFileId _rggRevisionId (Just AltJSON)
+        type Scopes RevisionsGet =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.appdata",
+               "https://www.googleapis.com/auth/drive.file",
+               "https://www.googleapis.com/auth/drive.metadata",
+               "https://www.googleapis.com/auth/drive.metadata.readonly",
+               "https://www.googleapis.com/auth/drive.photos.readonly",
+               "https://www.googleapis.com/auth/drive.readonly"]
+        requestClient RevisionsGet'{..}
+          = go _rggFileId _rggRevisionId
+              (Just _rggAcknowledgeAbuse)
+              (Just AltJSON)
               driveService
-          where go
+          where go :<|> _
+                  = buildClient (Proxy :: Proxy RevisionsGetResource)
+                      mempty
+
+instance GoogleRequest (MediaDownload RevisionsGet)
+         where
+        type Rs (MediaDownload RevisionsGet) = Stream
+        type Scopes (MediaDownload RevisionsGet) =
+             Scopes RevisionsGet
+        requestClient (MediaDownload RevisionsGet'{..})
+          = go _rggFileId _rggRevisionId
+              (Just _rggAcknowledgeAbuse)
+              (Just AltMedia)
+              driveService
+          where _ :<|> go
                   = buildClient (Proxy :: Proxy RevisionsGetResource)
                       mempty
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
@@ -14,7 +14,7 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Revisions.List
--- Copyright   : (c) 2015 Brendan Hay
+-- Copyright   : (c) 2015-2016 Brendan Hay
 -- License     : Mozilla Public License, v. 2.0.
 -- Maintainer  : Brendan Hay <brendan.g.hay@gmail.com>
 -- Stability   : auto-generated
@@ -43,7 +43,7 @@
 -- 'RevisionsList' request conforms to.
 type RevisionsListResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            Capture "fileId" Text :>
              "revisions" :>
@@ -52,7 +52,7 @@
 -- | Lists a file\'s revisions.
 --
 -- /See:/ 'revisionsList' smart constructor.
-newtype RevisionsList = RevisionsList
+newtype RevisionsList = RevisionsList'
     { _rllFileId :: Text
     } deriving (Eq,Show,Data,Typeable,Generic)
 
@@ -65,7 +65,7 @@
     :: Text -- ^ 'rllFileId'
     -> RevisionsList
 revisionsList pRllFileId_ =
-    RevisionsList
+    RevisionsList'
     { _rllFileId = pRllFileId_
     }
 
@@ -76,7 +76,15 @@
 
 instance GoogleRequest RevisionsList where
         type Rs RevisionsList = RevisionList
-        requestClient RevisionsList{..}
+        type Scopes RevisionsList =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.appdata",
+               "https://www.googleapis.com/auth/drive.file",
+               "https://www.googleapis.com/auth/drive.metadata",
+               "https://www.googleapis.com/auth/drive.metadata.readonly",
+               "https://www.googleapis.com/auth/drive.photos.readonly",
+               "https://www.googleapis.com/auth/drive.readonly"]
+        requestClient RevisionsList'{..}
           = go _rllFileId (Just AltJSON) driveService
           where go
                   = buildClient (Proxy :: Proxy RevisionsListResource)
diff --git a/gen/Network/Google/Resource/Drive/Revisions/Patch.hs b/gen/Network/Google/Resource/Drive/Revisions/Patch.hs
deleted file mode 100644
--- a/gen/Network/Google/Resource/Drive/Revisions/Patch.hs
+++ /dev/null
@@ -1,110 +0,0 @@
-{-# LANGUAGE DataKinds          #-}
-{-# LANGUAGE DeriveDataTypeable #-}
-{-# LANGUAGE DeriveGeneric      #-}
-{-# LANGUAGE FlexibleInstances  #-}
-{-# LANGUAGE NoImplicitPrelude  #-}
-{-# LANGUAGE OverloadedStrings  #-}
-{-# LANGUAGE RecordWildCards    #-}
-{-# LANGUAGE TypeFamilies       #-}
-{-# LANGUAGE TypeOperators      #-}
-
-{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
-{-# OPTIONS_GHC -fno-warn-unused-binds      #-}
-{-# OPTIONS_GHC -fno-warn-unused-imports    #-}
-
--- |
--- Module      : Network.Google.Resource.Drive.Revisions.Patch
--- Copyright   : (c) 2015 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 a revision. This method supports patch semantics.
---
--- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.revisions.patch@.
-module Network.Google.Resource.Drive.Revisions.Patch
-    (
-    -- * REST Resource
-      RevisionsPatchResource
-
-    -- * Creating a Request
-    , revisionsPatch
-    , RevisionsPatch
-
-    -- * Request Lenses
-    , rppPayload
-    , rppFileId
-    , rppRevisionId
-    ) where
-
-import           Network.Google.Drive.Types
-import           Network.Google.Prelude
-
--- | A resource alias for @drive.revisions.patch@ method which the
--- 'RevisionsPatch' request conforms to.
-type RevisionsPatchResource =
-     "drive" :>
-       "v2" :>
-         "files" :>
-           Capture "fileId" Text :>
-             "revisions" :>
-               Capture "revisionId" Text :>
-                 QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] Revision :> Patch '[JSON] Revision
-
--- | Updates a revision. This method supports patch semantics.
---
--- /See:/ 'revisionsPatch' smart constructor.
-data RevisionsPatch = RevisionsPatch
-    { _rppPayload    :: !Revision
-    , _rppFileId     :: !Text
-    , _rppRevisionId :: !Text
-    } deriving (Eq,Show,Data,Typeable,Generic)
-
--- | Creates a value of 'RevisionsPatch' with the minimum fields required to make a request.
---
--- Use one of the following lenses to modify other fields as desired:
---
--- * 'rppPayload'
---
--- * 'rppFileId'
---
--- * 'rppRevisionId'
-revisionsPatch
-    :: Revision -- ^ 'rppPayload'
-    -> Text -- ^ 'rppFileId'
-    -> Text -- ^ 'rppRevisionId'
-    -> RevisionsPatch
-revisionsPatch pRppPayload_ pRppFileId_ pRppRevisionId_ =
-    RevisionsPatch
-    { _rppPayload = pRppPayload_
-    , _rppFileId = pRppFileId_
-    , _rppRevisionId = pRppRevisionId_
-    }
-
--- | Multipart request metadata.
-rppPayload :: Lens' RevisionsPatch Revision
-rppPayload
-  = lens _rppPayload (\ s a -> s{_rppPayload = a})
-
--- | The ID for the file.
-rppFileId :: Lens' RevisionsPatch Text
-rppFileId
-  = lens _rppFileId (\ s a -> s{_rppFileId = a})
-
--- | The ID for the revision.
-rppRevisionId :: Lens' RevisionsPatch Text
-rppRevisionId
-  = lens _rppRevisionId
-      (\ s a -> s{_rppRevisionId = a})
-
-instance GoogleRequest RevisionsPatch where
-        type Rs RevisionsPatch = Revision
-        requestClient RevisionsPatch{..}
-          = go _rppFileId _rppRevisionId (Just AltJSON)
-              _rppPayload
-              driveService
-          where go
-                  = buildClient (Proxy :: Proxy RevisionsPatchResource)
-                      mempty
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
@@ -14,13 +14,13 @@
 
 -- |
 -- Module      : Network.Google.Resource.Drive.Revisions.Update
--- Copyright   : (c) 2015 Brendan Hay
+-- 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 a revision.
+-- Updates a revision with patch semantics.
 --
 -- /See:/ <https://developers.google.com/drive/ Drive API Reference> for @drive.revisions.update@.
 module Network.Google.Resource.Drive.Revisions.Update
@@ -45,18 +45,18 @@
 -- 'RevisionsUpdate' request conforms to.
 type RevisionsUpdateResource =
      "drive" :>
-       "v2" :>
+       "v3" :>
          "files" :>
            Capture "fileId" Text :>
              "revisions" :>
                Capture "revisionId" Text :>
                  QueryParam "alt" AltJSON :>
-                   ReqBody '[JSON] Revision :> Put '[JSON] Revision
+                   ReqBody '[JSON] Revision :> Patch '[JSON] Revision
 
--- | Updates a revision.
+-- | Updates a revision with patch semantics.
 --
 -- /See:/ 'revisionsUpdate' smart constructor.
-data RevisionsUpdate = RevisionsUpdate
+data RevisionsUpdate = RevisionsUpdate'
     { _revPayload    :: !Revision
     , _revFileId     :: !Text
     , _revRevisionId :: !Text
@@ -77,7 +77,7 @@
     -> Text -- ^ 'revRevisionId'
     -> RevisionsUpdate
 revisionsUpdate pRevPayload_ pRevFileId_ pRevRevisionId_ =
-    RevisionsUpdate
+    RevisionsUpdate'
     { _revPayload = pRevPayload_
     , _revFileId = pRevFileId_
     , _revRevisionId = pRevRevisionId_
@@ -88,12 +88,12 @@
 revPayload
   = lens _revPayload (\ s a -> s{_revPayload = a})
 
--- | The ID for the file.
+-- | The ID of the file.
 revFileId :: Lens' RevisionsUpdate Text
 revFileId
   = lens _revFileId (\ s a -> s{_revFileId = a})
 
--- | The ID for the revision.
+-- | The ID of the revision.
 revRevisionId :: Lens' RevisionsUpdate Text
 revRevisionId
   = lens _revRevisionId
@@ -101,7 +101,11 @@
 
 instance GoogleRequest RevisionsUpdate where
         type Rs RevisionsUpdate = Revision
-        requestClient RevisionsUpdate{..}
+        type Scopes RevisionsUpdate =
+             '["https://www.googleapis.com/auth/drive",
+               "https://www.googleapis.com/auth/drive.appdata",
+               "https://www.googleapis.com/auth/drive.file"]
+        requestClient RevisionsUpdate'{..}
           = go _revFileId _revRevisionId (Just AltJSON)
               _revPayload
               driveService
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.0.1
+version:               0.1.0
 synopsis:              Google Drive SDK.
 homepage:              https://github.com/brendanhay/gogol
 bug-reports:           https://github.com/brendanhay/gogol/issues
@@ -7,19 +7,20 @@
 license-file:          LICENSE
 author:                Brendan Hay
 maintainer:            Brendan Hay <brendan.g.hay@gmail.com>
-copyright:             Copyright (c) 2015 Brendan Hay
+copyright:             Copyright (c) 2015-2016 Brendan Hay
 category:              Network, Google, Cloud
 build-type:            Simple
 cabal-version:         >= 1.10
 extra-source-files:    README.md
 
 description:
-    The API to interact with Drive.
+    Manages files in Drive including uploading, downloading, searching,
+    detecting changes, and updating sharing permissions.
     .
     /Warning:/ This is an experimental prototype/preview release which is still
     under exploratory development and not intended for public use, caveat emptor!
     .
-    This library is compatible with version @v2@
+    This library is compatible with version @v3@
     of the API.
 
 source-repository head
@@ -36,64 +37,38 @@
           Network.Google.Drive
         , Network.Google.Drive.Types
         , Network.Google.Resource.Drive.About.Get
-        , Network.Google.Resource.Drive.Apps.Get
-        , Network.Google.Resource.Drive.Apps.List
-        , Network.Google.Resource.Drive.Changes.Get
+        , Network.Google.Resource.Drive.Changes.GetStartPageToken
         , Network.Google.Resource.Drive.Changes.List
         , Network.Google.Resource.Drive.Changes.Watch
         , Network.Google.Resource.Drive.Channels.Stop
-        , Network.Google.Resource.Drive.Children.Delete
-        , Network.Google.Resource.Drive.Children.Get
-        , Network.Google.Resource.Drive.Children.Insert
-        , Network.Google.Resource.Drive.Children.List
+        , Network.Google.Resource.Drive.Comments.Create
         , Network.Google.Resource.Drive.Comments.Delete
         , Network.Google.Resource.Drive.Comments.Get
-        , Network.Google.Resource.Drive.Comments.Insert
         , Network.Google.Resource.Drive.Comments.List
-        , Network.Google.Resource.Drive.Comments.Patch
         , Network.Google.Resource.Drive.Comments.Update
         , Network.Google.Resource.Drive.Files.Copy
+        , Network.Google.Resource.Drive.Files.Create
         , Network.Google.Resource.Drive.Files.Delete
         , Network.Google.Resource.Drive.Files.EmptyTrash
+        , Network.Google.Resource.Drive.Files.Export
         , Network.Google.Resource.Drive.Files.GenerateIds
         , Network.Google.Resource.Drive.Files.Get
-        , Network.Google.Resource.Drive.Files.Insert
         , Network.Google.Resource.Drive.Files.List
-        , Network.Google.Resource.Drive.Files.Patch
-        , Network.Google.Resource.Drive.Files.Touch
-        , Network.Google.Resource.Drive.Files.Trash
-        , Network.Google.Resource.Drive.Files.Untrash
         , Network.Google.Resource.Drive.Files.Update
         , Network.Google.Resource.Drive.Files.Watch
-        , Network.Google.Resource.Drive.Parents.Delete
-        , Network.Google.Resource.Drive.Parents.Get
-        , Network.Google.Resource.Drive.Parents.Insert
-        , Network.Google.Resource.Drive.Parents.List
+        , Network.Google.Resource.Drive.Permissions.Create
         , Network.Google.Resource.Drive.Permissions.Delete
         , Network.Google.Resource.Drive.Permissions.Get
-        , Network.Google.Resource.Drive.Permissions.GetIdForEmail
-        , Network.Google.Resource.Drive.Permissions.Insert
         , Network.Google.Resource.Drive.Permissions.List
-        , Network.Google.Resource.Drive.Permissions.Patch
         , Network.Google.Resource.Drive.Permissions.Update
-        , Network.Google.Resource.Drive.Properties.Delete
-        , Network.Google.Resource.Drive.Properties.Get
-        , Network.Google.Resource.Drive.Properties.Insert
-        , Network.Google.Resource.Drive.Properties.List
-        , Network.Google.Resource.Drive.Properties.Patch
-        , Network.Google.Resource.Drive.Properties.Update
-        , Network.Google.Resource.Drive.Realtime.Get
-        , Network.Google.Resource.Drive.Realtime.Update
+        , Network.Google.Resource.Drive.Replies.Create
         , Network.Google.Resource.Drive.Replies.Delete
         , Network.Google.Resource.Drive.Replies.Get
-        , Network.Google.Resource.Drive.Replies.Insert
         , Network.Google.Resource.Drive.Replies.List
-        , Network.Google.Resource.Drive.Replies.Patch
         , Network.Google.Resource.Drive.Replies.Update
         , Network.Google.Resource.Drive.Revisions.Delete
         , Network.Google.Resource.Drive.Revisions.Get
         , Network.Google.Resource.Drive.Revisions.List
-        , Network.Google.Resource.Drive.Revisions.Patch
         , Network.Google.Resource.Drive.Revisions.Update
 
     other-modules:
@@ -101,5 +76,5 @@
         , Network.Google.Drive.Types.Sum
 
     build-depends:
-          gogol-core == 0.0.1.*
+          gogol-core == 0.1.0.*
         , base       >= 4.7 && < 5
