content: {-# 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.AlertCenter.Alerts.Delete
  -- 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)
  --
  -- Marks the specified alert for deletion. An alert that has been marked for deletion is removed from Alert Center after 30 days. Marking an alert for deletion has no effect on an alert which has already been marked for deletion. Attempting to mark a nonexistent alert for deletion results in a @NOT_FOUND@ error.
  --
  -- /See:/ <https://developers.google.com/admin-sdk/alertcenter/ Google Workspace Alert Center API Reference> for @alertcenter.alerts.delete@.
  module Gogol.AlertCenter.Alerts.Delete
    ( -- * Resource
      AlertCenterAlertsDeleteResource,
  
      -- ** Constructing a Request
      AlertCenterAlertsDelete (..),
      newAlertCenterAlertsDelete,
    )
  where
  
  import Gogol.AlertCenter.Types
  import Gogol.Prelude qualified as Core
  
  -- | A resource alias for @alertcenter.alerts.delete@ method which the
  -- 'AlertCenterAlertsDelete' request conforms to.
  type AlertCenterAlertsDeleteResource =
    "v1beta1"
      Core.:> "alerts"
      Core.:> Core.Capture "alertId" Core.Text
      Core.:> Core.QueryParam "$.xgafv" Xgafv
      Core.:> Core.QueryParam "access_token" Core.Text
      Core.:> Core.QueryParam "callback" Core.Text
      Core.:> Core.QueryParam "customerId" Core.Text
      Core.:> Core.QueryParam "uploadType" Core.Text
      Core.:> Core.QueryParam "upload_protocol" Core.Text
      Core.:> Core.QueryParam "alt" Core.AltJSON
      Core.:> Core.Delete '[Core.JSON] Empty
  
  -- | Marks the specified alert for deletion. An alert that has been marked for deletion is removed from Alert Center after 30 days. Marking an alert for deletion has no effect on an alert which has already been marked for deletion. Attempting to mark a nonexistent alert for deletion results in a @NOT_FOUND@ error.
  --
  -- /See:/ 'newAlertCenterAlertsDelete' smart constructor.
  data AlertCenterAlertsDelete = AlertCenterAlertsDelete
    { -- | V1 error format.
      xgafv :: (Core.Maybe Xgafv),
      -- | OAuth access token.
      accessToken :: (Core.Maybe Core.Text),
      -- | Required. The identifier of the alert to delete.
      alertId :: Core.Text,
      -- | JSONP
      callback :: (Core.Maybe Core.Text),
      -- | Optional. The unique identifier of the Google Workspace account of the customer the alert is associated with. The @customer_id@ must have the initial \"C\" stripped (for example, @046psxkn@). Inferred from the caller identity if not provided. <https://support.google.com/cloudidentity/answer/10070793 Find your customer ID>.
      customerId :: (Core.Maybe Core.Text),
      -- | 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)
    }
    deriving (Core.Eq, Core.Show, Core.Generic)
  
  -- | Creates a value of 'AlertCenterAlertsDelete' with the minimum fields required to make a request.
  newAlertCenterAlertsDelete ::
    -- |  Required. The identifier of the alert to delete. See 'alertId'.
    Core.Text ->
    AlertCenterAlertsDelete
  newAlertCenterAlertsDelete alertId =
    AlertCenterAlertsDelete
      { xgafv = Core.Nothing,
        accessToken = Core.Nothing,
        alertId = alertId,
        callback = Core.Nothing,
        customerId = Core.Nothing,
        uploadType = Core.Nothing,
        uploadProtocol = Core.Nothing
      }
  
  instance Core.GoogleRequest AlertCenterAlertsDelete where
    type Rs AlertCenterAlertsDelete = Empty
    type Scopes AlertCenterAlertsDelete = '[Apps'Alerts]
    requestClient AlertCenterAlertsDelete {..} =
      go
        alertId
        xgafv
        accessToken
        callback
        customerId
        uploadType
        uploadProtocol
        (Core.Just Core.AltJSON)
        alertCenterService
      where
        go =
          Core.buildClient
            (Core.Proxy :: Core.Proxy AlertCenterAlertsDeleteResource)
            Core.mempty
  