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.Monitoring.Projects.UptimeCheckConfigs.Patch
  -- 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)
  --
  -- Updates an Uptime check configuration. You can either replace the entire configuration with a new one or replace only certain fields in the current configuration by specifying the fields to be updated via updateMask. Returns the updated configuration.
  --
  -- /See:/ <https://cloud.google.com/monitoring/api/ Cloud Monitoring API Reference> for @monitoring.projects.uptimeCheckConfigs.patch@.
  module Gogol.Monitoring.Projects.UptimeCheckConfigs.Patch
    ( -- * Resource
      MonitoringProjectsUptimeCheckConfigsPatchResource,
  
      -- ** Constructing a Request
      MonitoringProjectsUptimeCheckConfigsPatch (..),
      newMonitoringProjectsUptimeCheckConfigsPatch,
    )
  where
  
  import Gogol.Monitoring.Types
  import Gogol.Prelude qualified as Core
  
  -- | A resource alias for @monitoring.projects.uptimeCheckConfigs.patch@ method which the
  -- 'MonitoringProjectsUptimeCheckConfigsPatch' request conforms to.
  type MonitoringProjectsUptimeCheckConfigsPatchResource =
    "v3"
      Core.:> Core.Capture "name" Core.Text
      Core.:> Core.QueryParam "$.xgafv" Xgafv
      Core.:> Core.QueryParam "access_token" Core.Text
      Core.:> Core.QueryParam "callback" Core.Text
      Core.:> Core.QueryParam "updateMask" Core.FieldMask
      Core.:> Core.QueryParam "uploadType" Core.Text
      Core.:> Core.QueryParam "upload_protocol" Core.Text
      Core.:> Core.QueryParam "alt" Core.AltJSON
      Core.:> Core.ReqBody '[Core.JSON] UptimeCheckConfig
      Core.:> Core.Patch '[Core.JSON] UptimeCheckConfig
  
  -- | Updates an Uptime check configuration. You can either replace the entire configuration with a new one or replace only certain fields in the current configuration by specifying the fields to be updated via updateMask. Returns the updated configuration.
  --
  -- /See:/ 'newMonitoringProjectsUptimeCheckConfigsPatch' smart constructor.
  data MonitoringProjectsUptimeCheckConfigsPatch = MonitoringProjectsUptimeCheckConfigsPatch
    { -- | V1 error format.
      xgafv :: (Core.Maybe Xgafv),
      -- | OAuth access token.
      accessToken :: (Core.Maybe Core.Text),
      -- | JSONP
      callback :: (Core.Maybe Core.Text),
      -- | Identifier. A unique resource name for this Uptime check configuration. The format is: projects\/[PROJECT/ID/OR/NUMBER]\/uptimeCheckConfigs\/[UPTIME/CHECK/ID] [PROJECT/ID/OR/NUMBER] is the Workspace host project associated with the Uptime check.This field should be omitted when creating the Uptime check configuration; on create, the resource name is assigned by the server and included in the response.
      name :: Core.Text,
      -- | Multipart request metadata.
      payload :: UptimeCheckConfig,
      -- | Optional. If present, only the listed fields in the current Uptime check configuration are updated with values from the new configuration. If this field is empty, then the current configuration is completely replaced with the new configuration.
      updateMask :: (Core.Maybe Core.FieldMask),
      -- | 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 'MonitoringProjectsUptimeCheckConfigsPatch' with the minimum fields required to make a request.
  newMonitoringProjectsUptimeCheckConfigsPatch ::
    -- |  Identifier. A unique resource name for this Uptime check configuration. The format is: projects\/[PROJECT/ID/OR/NUMBER]\/uptimeCheckConfigs\/[UPTIME/CHECK/ID] [PROJECT/ID/OR/NUMBER] is the Workspace host project associated with the Uptime check.This field should be omitted when creating the Uptime check configuration; on create, the resource name is assigned by the server and included in the response. See 'name'.
    Core.Text ->
    -- |  Multipart request metadata. See 'payload'.
    UptimeCheckConfig ->
    MonitoringProjectsUptimeCheckConfigsPatch
  newMonitoringProjectsUptimeCheckConfigsPatch name payload =
    MonitoringProjectsUptimeCheckConfigsPatch
      { xgafv = Core.Nothing,
        accessToken = Core.Nothing,
        callback = Core.Nothing,
        name = name,
        payload = payload,
        updateMask = Core.Nothing,
        uploadType = Core.Nothing,
        uploadProtocol = Core.Nothing
      }
  
  instance
    Core.GoogleRequest
      MonitoringProjectsUptimeCheckConfigsPatch
    where
    type
      Rs MonitoringProjectsUptimeCheckConfigsPatch =
        UptimeCheckConfig
    type
      Scopes MonitoringProjectsUptimeCheckConfigsPatch =
        '[CloudPlatform'FullControl, Monitoring'FullControl]
    requestClient MonitoringProjectsUptimeCheckConfigsPatch {..} =
      go
        name
        xgafv
        accessToken
        callback
        updateMask
        uploadType
        uploadProtocol
        (Core.Just Core.AltJSON)
        payload
        monitoringService
      where
        go =
          Core.buildClient
            ( Core.Proxy ::
                Core.Proxy MonitoringProjectsUptimeCheckConfigsPatchResource
            )
            Core.mempty
  