gogol-drive-1.0.0: gen/Gogol/Drive/Permissions/Create.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE ImportQualifiedPost #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-duplicate-exports #-}
{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- |
-- Module : Gogol.Drive.Permissions.Create
-- Copyright : (c) 2015-2025 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay+gogol@gmail.com>
-- Toni Cebrián <toni@tonicebrian.com>
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a permission for a file or shared drive. __Warning:__ Concurrent permissions operations on the same file are not supported; only the last update is applied.
--
-- /See:/ <https://developers.google.com/drive/ Google Drive API Reference> for @drive.permissions.create@.
module Gogol.Drive.Permissions.Create
( -- * Resource
DrivePermissionsCreateResource,
-- ** Constructing a Request
DrivePermissionsCreate (..),
newDrivePermissionsCreate,
)
where
import Gogol.Drive.Types
import Gogol.Prelude qualified as Core
-- | A resource alias for @drive.permissions.create@ method which the
-- 'DrivePermissionsCreate' request conforms to.
type DrivePermissionsCreateResource =
"drive"
Core.:> "v3"
Core.:> "files"
Core.:> Core.Capture "fileId" Core.Text
Core.:> "permissions"
Core.:> Core.QueryParam "$.xgafv" Xgafv
Core.:> Core.QueryParam "access_token" Core.Text
Core.:> Core.QueryParam "callback" Core.Text
Core.:> Core.QueryParam "emailMessage" Core.Text
Core.:> Core.QueryParam "enforceSingleParent" Core.Bool
Core.:> Core.QueryParam "moveToNewOwnersRoot" Core.Bool
Core.:> Core.QueryParam "sendNotificationEmail" Core.Bool
Core.:> Core.QueryParam "supportsAllDrives" Core.Bool
Core.:> Core.QueryParam "supportsTeamDrives" Core.Bool
Core.:> Core.QueryParam "transferOwnership" Core.Bool
Core.:> Core.QueryParam "uploadType" Core.Text
Core.:> Core.QueryParam "upload_protocol" Core.Text
Core.:> Core.QueryParam "useDomainAdminAccess" Core.Bool
Core.:> Core.QueryParam "alt" Core.AltJSON
Core.:> Core.ReqBody '[Core.JSON] Permission
Core.:> Core.Post '[Core.JSON] Permission
-- | Creates a permission for a file or shared drive. __Warning:__ Concurrent permissions operations on the same file are not supported; only the last update is applied.
--
-- /See:/ 'newDrivePermissionsCreate' smart constructor.
data DrivePermissionsCreate = DrivePermissionsCreate
{ -- | V1 error format.
xgafv :: (Core.Maybe Xgafv),
-- | OAuth access token.
accessToken :: (Core.Maybe Core.Text),
-- | JSONP
callback :: (Core.Maybe Core.Text),
-- | A plain text custom message to include in the notification email.
emailMessage :: (Core.Maybe Core.Text),
-- | Deprecated: See @moveToNewOwnersRoot@ for details.
enforceSingleParent :: Core.Bool,
-- | The ID of the file or shared drive.
fileId :: Core.Text,
-- | This parameter will only take effect if the item is not in a shared drive and the request is attempting to transfer the ownership of the item. If set to @true@, the item will be moved to the new owner\'s My Drive root folder and all prior parents removed. If set to @false@, parents are not changed.
moveToNewOwnersRoot :: Core.Bool,
-- | Multipart request metadata.
payload :: Permission,
-- | 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.
sendNotificationEmail :: (Core.Maybe Core.Bool),
-- | Whether the requesting application supports both My Drives and shared drives.
supportsAllDrives :: Core.Bool,
-- | Deprecated: Use @supportsAllDrives@ instead.
supportsTeamDrives :: Core.Bool,
-- | 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.
transferOwnership :: Core.Bool,
-- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
uploadType :: (Core.Maybe Core.Text),
-- | Upload protocol for media (e.g. \"raw\", \"multipart\").
uploadProtocol :: (Core.Maybe Core.Text),
-- | Issue the request as a domain administrator; if set to true, then the requester will be granted access if the file ID parameter refers to a shared drive and the requester is an administrator of the domain to which the shared drive belongs.
useDomainAdminAccess :: Core.Bool
}
deriving (Core.Eq, Core.Show, Core.Generic)
-- | Creates a value of 'DrivePermissionsCreate' with the minimum fields required to make a request.
newDrivePermissionsCreate ::
-- | The ID of the file or shared drive. See 'fileId'.
Core.Text ->
-- | Multipart request metadata. See 'payload'.
Permission ->
DrivePermissionsCreate
newDrivePermissionsCreate fileId payload =
DrivePermissionsCreate
{ xgafv = Core.Nothing,
accessToken = Core.Nothing,
callback = Core.Nothing,
emailMessage = Core.Nothing,
enforceSingleParent = Core.False,
fileId = fileId,
moveToNewOwnersRoot = Core.False,
payload = payload,
sendNotificationEmail = Core.Nothing,
supportsAllDrives = Core.False,
supportsTeamDrives = Core.False,
transferOwnership = Core.False,
uploadType = Core.Nothing,
uploadProtocol = Core.Nothing,
useDomainAdminAccess = Core.False
}
instance Core.GoogleRequest DrivePermissionsCreate where
type Rs DrivePermissionsCreate = Permission
type
Scopes DrivePermissionsCreate =
'[Drive'FullControl, Drive'File]
requestClient DrivePermissionsCreate {..} =
go
fileId
xgafv
accessToken
callback
emailMessage
(Core.Just enforceSingleParent)
(Core.Just moveToNewOwnersRoot)
sendNotificationEmail
(Core.Just supportsAllDrives)
(Core.Just supportsTeamDrives)
(Core.Just transferOwnership)
uploadType
uploadProtocol
(Core.Just useDomainAdminAccess)
(Core.Just Core.AltJSON)
payload
driveService
where
go =
Core.buildClient
(Core.Proxy :: Core.Proxy DrivePermissionsCreateResource)
Core.mempty