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.Games.Events.ListDefinitions
  -- 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)
  --
  -- Returns a list of the event definitions in this application.
  --
  -- /See:/ <https://developers.google.com/games/ Google Play Game Services Reference> for @games.events.listDefinitions@.
  module Gogol.Games.Events.ListDefinitions
    ( -- * Resource
      GamesEventsListDefinitionsResource,
  
      -- ** Constructing a Request
      GamesEventsListDefinitions (..),
      newGamesEventsListDefinitions,
    )
  where
  
  import Gogol.Games.Types
  import Gogol.Prelude qualified as Core
  
  -- | A resource alias for @games.events.listDefinitions@ method which the
  -- 'GamesEventsListDefinitions' request conforms to.
  type GamesEventsListDefinitionsResource =
    "games"
      Core.:> "v1"
      Core.:> "eventDefinitions"
      Core.:> Core.QueryParam "$.xgafv" Xgafv
      Core.:> Core.QueryParam "access_token" Core.Text
      Core.:> Core.QueryParam "callback" Core.Text
      Core.:> Core.QueryParam "language" Core.Text
      Core.:> Core.QueryParam "maxResults" Core.Int32
      Core.:> Core.QueryParam "pageToken" Core.Text
      Core.:> Core.QueryParam "uploadType" Core.Text
      Core.:> Core.QueryParam "upload_protocol" Core.Text
      Core.:> Core.QueryParam "alt" Core.AltJSON
      Core.:> Core.Get '[Core.JSON] EventDefinitionListResponse
  
  -- | Returns a list of the event definitions in this application.
  --
  -- /See:/ 'newGamesEventsListDefinitions' smart constructor.
  data GamesEventsListDefinitions = GamesEventsListDefinitions
    { -- | V1 error format.
      xgafv :: (Core.Maybe Xgafv),
      -- | OAuth access token.
      accessToken :: (Core.Maybe Core.Text),
      -- | JSONP
      callback :: (Core.Maybe Core.Text),
      -- | The preferred language to use for strings returned by this method.
      language :: (Core.Maybe Core.Text),
      -- | The maximum number of event definitions to return in the response, used for paging. For any response, the actual number of event definitions to return may be less than the specified @maxResults@.
      maxResults :: (Core.Maybe Core.Int32),
      -- | The token returned by the previous request.
      pageToken :: (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 'GamesEventsListDefinitions' with the minimum fields required to make a request.
  newGamesEventsListDefinitions ::
    GamesEventsListDefinitions
  newGamesEventsListDefinitions =
    GamesEventsListDefinitions
      { xgafv = Core.Nothing,
        accessToken = Core.Nothing,
        callback = Core.Nothing,
        language = Core.Nothing,
        maxResults = Core.Nothing,
        pageToken = Core.Nothing,
        uploadType = Core.Nothing,
        uploadProtocol = Core.Nothing
      }
  
  instance Core.GoogleRequest GamesEventsListDefinitions where
    type Rs GamesEventsListDefinitions = EventDefinitionListResponse
    type Scopes GamesEventsListDefinitions = '[Games'FullControl]
    requestClient GamesEventsListDefinitions {..} =
      go
        xgafv
        accessToken
        callback
        language
        maxResults
        pageToken
        uploadType
        uploadProtocol
        (Core.Just Core.AltJSON)
        gamesService
      where
        go =
          Core.buildClient
            (Core.Proxy :: Core.Proxy GamesEventsListDefinitionsResource)
            Core.mempty
  