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.ServiceManagement.Services.Undelete
  -- 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)
  --
  -- Revives a previously deleted managed service. The method restores the service using the configuration at the time the service was deleted. The target service must exist and must have been deleted within the last 30 days. Operation
  --
  -- /See:/ <https://cloud.google.com/service-management/ Service Management API Reference> for @servicemanagement.services.undelete@.
  module Gogol.ServiceManagement.Services.Undelete
    ( -- * Resource
      ServiceManagementServicesUndeleteResource,
  
      -- ** Constructing a Request
      ServiceManagementServicesUndelete (..),
      newServiceManagementServicesUndelete,
    )
  where
  
  import Gogol.Prelude qualified as Core
  import Gogol.ServiceManagement.Types
  
  -- | A resource alias for @servicemanagement.services.undelete@ method which the
  -- 'ServiceManagementServicesUndelete' request conforms to.
  type ServiceManagementServicesUndeleteResource =
    "v1"
      Core.:> "services"
      Core.:> Core.CaptureMode "serviceName" "undelete" Core.Text
      Core.:> Core.QueryParam "$.xgafv" Xgafv
      Core.:> Core.QueryParam "access_token" Core.Text
      Core.:> Core.QueryParam "callback" Core.Text
      Core.:> Core.QueryParam "uploadType" Core.Text
      Core.:> Core.QueryParam "upload_protocol" Core.Text
      Core.:> Core.QueryParam "alt" Core.AltJSON
      Core.:> Core.Post '[Core.JSON] Operation
  
  -- | Revives a previously deleted managed service. The method restores the service using the configuration at the time the service was deleted. The target service must exist and must have been deleted within the last 30 days. Operation
  --
  -- /See:/ 'newServiceManagementServicesUndelete' smart constructor.
  data ServiceManagementServicesUndelete = ServiceManagementServicesUndelete
    { -- | V1 error format.
      xgafv :: (Core.Maybe Xgafv),
      -- | OAuth access token.
      accessToken :: (Core.Maybe Core.Text),
      -- | JSONP
      callback :: (Core.Maybe Core.Text),
      -- | Required. The name of the service. See the <https://cloud.google.com/service-management/overview overview> for naming requirements. For example: @example.googleapis.com@.
      serviceName :: 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 'ServiceManagementServicesUndelete' with the minimum fields required to make a request.
  newServiceManagementServicesUndelete ::
    -- |  Required. The name of the service. See the <https://cloud.google.com/service-management/overview overview> for naming requirements. For example: @example.googleapis.com@. See 'serviceName'.
    Core.Text ->
    ServiceManagementServicesUndelete
  newServiceManagementServicesUndelete serviceName =
    ServiceManagementServicesUndelete
      { xgafv = Core.Nothing,
        accessToken = Core.Nothing,
        callback = Core.Nothing,
        serviceName = serviceName,
        uploadType = Core.Nothing,
        uploadProtocol = Core.Nothing
      }
  
  instance Core.GoogleRequest ServiceManagementServicesUndelete where
    type Rs ServiceManagementServicesUndelete = Operation
    type
      Scopes ServiceManagementServicesUndelete =
        '[CloudPlatform'FullControl, Service'Management]
    requestClient ServiceManagementServicesUndelete {..} =
      go
        serviceName
        xgafv
        accessToken
        callback
        uploadType
        uploadProtocol
        (Core.Just Core.AltJSON)
        serviceManagementService
      where
        go =
          Core.buildClient
            ( Core.Proxy ::
                Core.Proxy ServiceManagementServicesUndeleteResource
            )
            Core.mempty
  