{-# 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.Vault.Matters.List
-- 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)
--
-- Lists matters the requestor has access to.
--
-- /See:/ <https://developers.google.com/vault Google Vault API Reference> for @vault.matters.list@.
module Gogol.Vault.Matters.List
  ( -- * Resource
    VaultMattersListResource,

    -- ** Constructing a Request
    VaultMattersList (..),
    newVaultMattersList,
  )
where

import Gogol.Prelude qualified as Core
import Gogol.Vault.Types

-- | A resource alias for @vault.matters.list@ method which the
-- 'VaultMattersList' request conforms to.
type VaultMattersListResource =
  "v1"
    Core.:> "matters"
    Core.:> Core.QueryParam "$.xgafv" Xgafv
    Core.:> Core.QueryParam "access_token" Core.Text
    Core.:> Core.QueryParam "callback" Core.Text
    Core.:> Core.QueryParam "pageSize" Core.Int32
    Core.:> Core.QueryParam "pageToken" Core.Text
    Core.:> Core.QueryParam "state" MattersListState
    Core.:> Core.QueryParam "uploadType" Core.Text
    Core.:> Core.QueryParam "upload_protocol" Core.Text
    Core.:> Core.QueryParam "view" MattersListView
    Core.:> Core.QueryParam "alt" Core.AltJSON
    Core.:> Core.Get '[Core.JSON] ListMattersResponse

-- | Lists matters the requestor has access to.
--
-- /See:/ 'newVaultMattersList' smart constructor.
data VaultMattersList = VaultMattersList
  { -- | V1 error format.
    VaultMattersList -> Maybe Xgafv
xgafv :: (Core.Maybe Xgafv),
    -- | OAuth access token.
    VaultMattersList -> Maybe Text
accessToken :: (Core.Maybe Core.Text),
    -- | JSONP
    VaultMattersList -> Maybe Text
callback :: (Core.Maybe Core.Text),
    -- | The number of matters to return in the response. Default and maximum are 100.
    VaultMattersList -> Maybe Int32
pageSize :: (Core.Maybe Core.Int32),
    -- | The pagination token as returned in the response.
    VaultMattersList -> Maybe Text
pageToken :: (Core.Maybe Core.Text),
    -- | If set, lists only matters with the specified state. The default lists matters of all states.
    VaultMattersList -> Maybe MattersListState
state :: (Core.Maybe MattersListState),
    -- | Legacy upload protocol for media (e.g. \"media\", \"multipart\").
    VaultMattersList -> Maybe Text
uploadType :: (Core.Maybe Core.Text),
    -- | Upload protocol for media (e.g. \"raw\", \"multipart\").
    VaultMattersList -> Maybe Text
uploadProtocol :: (Core.Maybe Core.Text),
    -- | Specifies how much information about the matter to return in response.
    VaultMattersList -> Maybe MattersListView
view :: (Core.Maybe MattersListView)
  }
  deriving (VaultMattersList -> VaultMattersList -> Bool
(VaultMattersList -> VaultMattersList -> Bool)
-> (VaultMattersList -> VaultMattersList -> Bool)
-> Eq VaultMattersList
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: VaultMattersList -> VaultMattersList -> Bool
== :: VaultMattersList -> VaultMattersList -> Bool
$c/= :: VaultMattersList -> VaultMattersList -> Bool
/= :: VaultMattersList -> VaultMattersList -> Bool
Core.Eq, Int -> VaultMattersList -> ShowS
[VaultMattersList] -> ShowS
VaultMattersList -> String
(Int -> VaultMattersList -> ShowS)
-> (VaultMattersList -> String)
-> ([VaultMattersList] -> ShowS)
-> Show VaultMattersList
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> VaultMattersList -> ShowS
showsPrec :: Int -> VaultMattersList -> ShowS
$cshow :: VaultMattersList -> String
show :: VaultMattersList -> String
$cshowList :: [VaultMattersList] -> ShowS
showList :: [VaultMattersList] -> ShowS
Core.Show, (forall x. VaultMattersList -> Rep VaultMattersList x)
-> (forall x. Rep VaultMattersList x -> VaultMattersList)
-> Generic VaultMattersList
forall x. Rep VaultMattersList x -> VaultMattersList
forall x. VaultMattersList -> Rep VaultMattersList x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. VaultMattersList -> Rep VaultMattersList x
from :: forall x. VaultMattersList -> Rep VaultMattersList x
$cto :: forall x. Rep VaultMattersList x -> VaultMattersList
to :: forall x. Rep VaultMattersList x -> VaultMattersList
Core.Generic)

-- | Creates a value of 'VaultMattersList' with the minimum fields required to make a request.
newVaultMattersList ::
  VaultMattersList
newVaultMattersList :: VaultMattersList
newVaultMattersList =
  VaultMattersList
    { xgafv :: Maybe Xgafv
xgafv = Maybe Xgafv
forall a. Maybe a
Core.Nothing,
      accessToken :: Maybe Text
accessToken = Maybe Text
forall a. Maybe a
Core.Nothing,
      callback :: Maybe Text
callback = Maybe Text
forall a. Maybe a
Core.Nothing,
      pageSize :: Maybe Int32
pageSize = Maybe Int32
forall a. Maybe a
Core.Nothing,
      pageToken :: Maybe Text
pageToken = Maybe Text
forall a. Maybe a
Core.Nothing,
      state :: Maybe MattersListState
state = Maybe MattersListState
forall a. Maybe a
Core.Nothing,
      uploadType :: Maybe Text
uploadType = Maybe Text
forall a. Maybe a
Core.Nothing,
      uploadProtocol :: Maybe Text
uploadProtocol = Maybe Text
forall a. Maybe a
Core.Nothing,
      view :: Maybe MattersListView
view = Maybe MattersListView
forall a. Maybe a
Core.Nothing
    }

instance Core.GoogleRequest VaultMattersList where
  type Rs VaultMattersList = ListMattersResponse
  type
    Scopes VaultMattersList =
      '[Ediscovery'FullControl, Ediscovery'Readonly]
  requestClient :: VaultMattersList -> GClient (Rs VaultMattersList)
requestClient VaultMattersList {Maybe Int32
Maybe Text
Maybe MattersListView
Maybe MattersListState
Maybe Xgafv
xgafv :: VaultMattersList -> Maybe Xgafv
accessToken :: VaultMattersList -> Maybe Text
callback :: VaultMattersList -> Maybe Text
pageSize :: VaultMattersList -> Maybe Int32
pageToken :: VaultMattersList -> Maybe Text
state :: VaultMattersList -> Maybe MattersListState
uploadType :: VaultMattersList -> Maybe Text
uploadProtocol :: VaultMattersList -> Maybe Text
view :: VaultMattersList -> Maybe MattersListView
xgafv :: Maybe Xgafv
accessToken :: Maybe Text
callback :: Maybe Text
pageSize :: Maybe Int32
pageToken :: Maybe Text
state :: Maybe MattersListState
uploadType :: Maybe Text
uploadProtocol :: Maybe Text
view :: Maybe MattersListView
..} =
    Maybe Xgafv
-> Maybe Text
-> Maybe Text
-> Maybe Int32
-> Maybe Text
-> Maybe MattersListState
-> Maybe Text
-> Maybe Text
-> Maybe MattersListView
-> Maybe AltJSON
-> ServiceConfig
-> GClient ListMattersResponse
go
      Maybe Xgafv
xgafv
      Maybe Text
accessToken
      Maybe Text
callback
      Maybe Int32
pageSize
      Maybe Text
pageToken
      Maybe MattersListState
state
      Maybe Text
uploadType
      Maybe Text
uploadProtocol
      Maybe MattersListView
view
      (AltJSON -> Maybe AltJSON
forall a. a -> Maybe a
Core.Just AltJSON
Core.AltJSON)
      ServiceConfig
vaultService
    where
      go :: Fn VaultMattersListResource
go =
        Proxy VaultMattersListResource
-> Request -> Fn VaultMattersListResource
forall {k} (fn :: k).
GoogleClient fn =>
Proxy fn -> Request -> Fn fn
Core.buildClient
          (Proxy VaultMattersListResource
forall {k} (t :: k). Proxy t
Core.Proxy :: Core.Proxy VaultMattersListResource)
          Request
forall a. Monoid a => a
Core.mempty