{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.WorkDocs.DescribeActivities
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes the user activities in a specified time period.
--
-- This operation returns paginated results.
module Amazonka.WorkDocs.DescribeActivities
  ( -- * Creating a Request
    DescribeActivities (..),
    newDescribeActivities,

    -- * Request Lenses
    describeActivities_activityTypes,
    describeActivities_authenticationToken,
    describeActivities_endTime,
    describeActivities_includeIndirectActivities,
    describeActivities_limit,
    describeActivities_marker,
    describeActivities_organizationId,
    describeActivities_resourceId,
    describeActivities_startTime,
    describeActivities_userId,

    -- * Destructuring the Response
    DescribeActivitiesResponse (..),
    newDescribeActivitiesResponse,

    -- * Response Lenses
    describeActivitiesResponse_marker,
    describeActivitiesResponse_userActivities,
    describeActivitiesResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.WorkDocs.Types

-- | /See:/ 'newDescribeActivities' smart constructor.
data DescribeActivities = DescribeActivities'
  { -- | Specifies which activity types to include in the response. If this field
    -- is left empty, all activity types are returned.
    DescribeActivities -> Maybe Text
activityTypes :: Prelude.Maybe Prelude.Text,
    -- | Amazon WorkDocs authentication token. Not required when using AWS
    -- administrator credentials to access the API.
    DescribeActivities -> Maybe (Sensitive Text)
authenticationToken :: Prelude.Maybe (Data.Sensitive Prelude.Text),
    -- | The timestamp that determines the end time of the activities. The
    -- response includes the activities performed before the specified
    -- timestamp.
    DescribeActivities -> Maybe POSIX
endTime :: Prelude.Maybe Data.POSIX,
    -- | Includes indirect activities. An indirect activity results from a direct
    -- activity performed on a parent resource. For example, sharing a parent
    -- folder (the direct activity) shares all of the subfolders and documents
    -- within the parent folder (the indirect activity).
    DescribeActivities -> Maybe Bool
includeIndirectActivities :: Prelude.Maybe Prelude.Bool,
    -- | The maximum number of items to return.
    DescribeActivities -> Maybe Natural
limit :: Prelude.Maybe Prelude.Natural,
    -- | The marker for the next set of results.
    DescribeActivities -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The ID of the organization. This is a mandatory parameter when using
    -- administrative API (SigV4) requests.
    DescribeActivities -> Maybe Text
organizationId :: Prelude.Maybe Prelude.Text,
    -- | The document or folder ID for which to describe activity types.
    DescribeActivities -> Maybe Text
resourceId :: Prelude.Maybe Prelude.Text,
    -- | The timestamp that determines the starting time of the activities. The
    -- response includes the activities performed after the specified
    -- timestamp.
    DescribeActivities -> Maybe POSIX
startTime :: Prelude.Maybe Data.POSIX,
    -- | The ID of the user who performed the action. The response includes
    -- activities pertaining to this user. This is an optional parameter and is
    -- only applicable for administrative API (SigV4) requests.
    DescribeActivities -> Maybe Text
userId :: Prelude.Maybe Prelude.Text
  }
  deriving (DescribeActivities -> DescribeActivities -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeActivities -> DescribeActivities -> Bool
$c/= :: DescribeActivities -> DescribeActivities -> Bool
== :: DescribeActivities -> DescribeActivities -> Bool
$c== :: DescribeActivities -> DescribeActivities -> Bool
Prelude.Eq, Int -> DescribeActivities -> ShowS
[DescribeActivities] -> ShowS
DescribeActivities -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeActivities] -> ShowS
$cshowList :: [DescribeActivities] -> ShowS
show :: DescribeActivities -> String
$cshow :: DescribeActivities -> String
showsPrec :: Int -> DescribeActivities -> ShowS
$cshowsPrec :: Int -> DescribeActivities -> ShowS
Prelude.Show, forall x. Rep DescribeActivities x -> DescribeActivities
forall x. DescribeActivities -> Rep DescribeActivities x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DescribeActivities x -> DescribeActivities
$cfrom :: forall x. DescribeActivities -> Rep DescribeActivities x
Prelude.Generic)

-- |
-- Create a value of 'DescribeActivities' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'activityTypes', 'describeActivities_activityTypes' - Specifies which activity types to include in the response. If this field
-- is left empty, all activity types are returned.
--
-- 'authenticationToken', 'describeActivities_authenticationToken' - Amazon WorkDocs authentication token. Not required when using AWS
-- administrator credentials to access the API.
--
-- 'endTime', 'describeActivities_endTime' - The timestamp that determines the end time of the activities. The
-- response includes the activities performed before the specified
-- timestamp.
--
-- 'includeIndirectActivities', 'describeActivities_includeIndirectActivities' - Includes indirect activities. An indirect activity results from a direct
-- activity performed on a parent resource. For example, sharing a parent
-- folder (the direct activity) shares all of the subfolders and documents
-- within the parent folder (the indirect activity).
--
-- 'limit', 'describeActivities_limit' - The maximum number of items to return.
--
-- 'marker', 'describeActivities_marker' - The marker for the next set of results.
--
-- 'organizationId', 'describeActivities_organizationId' - The ID of the organization. This is a mandatory parameter when using
-- administrative API (SigV4) requests.
--
-- 'resourceId', 'describeActivities_resourceId' - The document or folder ID for which to describe activity types.
--
-- 'startTime', 'describeActivities_startTime' - The timestamp that determines the starting time of the activities. The
-- response includes the activities performed after the specified
-- timestamp.
--
-- 'userId', 'describeActivities_userId' - The ID of the user who performed the action. The response includes
-- activities pertaining to this user. This is an optional parameter and is
-- only applicable for administrative API (SigV4) requests.
newDescribeActivities ::
  DescribeActivities
newDescribeActivities :: DescribeActivities
newDescribeActivities =
  DescribeActivities'
    { $sel:activityTypes:DescribeActivities' :: Maybe Text
activityTypes =
        forall a. Maybe a
Prelude.Nothing,
      $sel:authenticationToken:DescribeActivities' :: Maybe (Sensitive Text)
authenticationToken = forall a. Maybe a
Prelude.Nothing,
      $sel:endTime:DescribeActivities' :: Maybe POSIX
endTime = forall a. Maybe a
Prelude.Nothing,
      $sel:includeIndirectActivities:DescribeActivities' :: Maybe Bool
includeIndirectActivities = forall a. Maybe a
Prelude.Nothing,
      $sel:limit:DescribeActivities' :: Maybe Natural
limit = forall a. Maybe a
Prelude.Nothing,
      $sel:marker:DescribeActivities' :: Maybe Text
marker = forall a. Maybe a
Prelude.Nothing,
      $sel:organizationId:DescribeActivities' :: Maybe Text
organizationId = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceId:DescribeActivities' :: Maybe Text
resourceId = forall a. Maybe a
Prelude.Nothing,
      $sel:startTime:DescribeActivities' :: Maybe POSIX
startTime = forall a. Maybe a
Prelude.Nothing,
      $sel:userId:DescribeActivities' :: Maybe Text
userId = forall a. Maybe a
Prelude.Nothing
    }

-- | Specifies which activity types to include in the response. If this field
-- is left empty, all activity types are returned.
describeActivities_activityTypes :: Lens.Lens' DescribeActivities (Prelude.Maybe Prelude.Text)
describeActivities_activityTypes :: Lens' DescribeActivities (Maybe Text)
describeActivities_activityTypes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeActivities' {Maybe Text
activityTypes :: Maybe Text
$sel:activityTypes:DescribeActivities' :: DescribeActivities -> Maybe Text
activityTypes} -> Maybe Text
activityTypes) (\s :: DescribeActivities
s@DescribeActivities' {} Maybe Text
a -> DescribeActivities
s {$sel:activityTypes:DescribeActivities' :: Maybe Text
activityTypes = Maybe Text
a} :: DescribeActivities)

-- | Amazon WorkDocs authentication token. Not required when using AWS
-- administrator credentials to access the API.
describeActivities_authenticationToken :: Lens.Lens' DescribeActivities (Prelude.Maybe Prelude.Text)
describeActivities_authenticationToken :: Lens' DescribeActivities (Maybe Text)
describeActivities_authenticationToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeActivities' {Maybe (Sensitive Text)
authenticationToken :: Maybe (Sensitive Text)
$sel:authenticationToken:DescribeActivities' :: DescribeActivities -> Maybe (Sensitive Text)
authenticationToken} -> Maybe (Sensitive Text)
authenticationToken) (\s :: DescribeActivities
s@DescribeActivities' {} Maybe (Sensitive Text)
a -> DescribeActivities
s {$sel:authenticationToken:DescribeActivities' :: Maybe (Sensitive Text)
authenticationToken = Maybe (Sensitive Text)
a} :: DescribeActivities) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall a. Iso' (Sensitive a) a
Data._Sensitive

-- | The timestamp that determines the end time of the activities. The
-- response includes the activities performed before the specified
-- timestamp.
describeActivities_endTime :: Lens.Lens' DescribeActivities (Prelude.Maybe Prelude.UTCTime)
describeActivities_endTime :: Lens' DescribeActivities (Maybe UTCTime)
describeActivities_endTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeActivities' {Maybe POSIX
endTime :: Maybe POSIX
$sel:endTime:DescribeActivities' :: DescribeActivities -> Maybe POSIX
endTime} -> Maybe POSIX
endTime) (\s :: DescribeActivities
s@DescribeActivities' {} Maybe POSIX
a -> DescribeActivities
s {$sel:endTime:DescribeActivities' :: Maybe POSIX
endTime = Maybe POSIX
a} :: DescribeActivities) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | Includes indirect activities. An indirect activity results from a direct
-- activity performed on a parent resource. For example, sharing a parent
-- folder (the direct activity) shares all of the subfolders and documents
-- within the parent folder (the indirect activity).
describeActivities_includeIndirectActivities :: Lens.Lens' DescribeActivities (Prelude.Maybe Prelude.Bool)
describeActivities_includeIndirectActivities :: Lens' DescribeActivities (Maybe Bool)
describeActivities_includeIndirectActivities = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeActivities' {Maybe Bool
includeIndirectActivities :: Maybe Bool
$sel:includeIndirectActivities:DescribeActivities' :: DescribeActivities -> Maybe Bool
includeIndirectActivities} -> Maybe Bool
includeIndirectActivities) (\s :: DescribeActivities
s@DescribeActivities' {} Maybe Bool
a -> DescribeActivities
s {$sel:includeIndirectActivities:DescribeActivities' :: Maybe Bool
includeIndirectActivities = Maybe Bool
a} :: DescribeActivities)

-- | The maximum number of items to return.
describeActivities_limit :: Lens.Lens' DescribeActivities (Prelude.Maybe Prelude.Natural)
describeActivities_limit :: Lens' DescribeActivities (Maybe Natural)
describeActivities_limit = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeActivities' {Maybe Natural
limit :: Maybe Natural
$sel:limit:DescribeActivities' :: DescribeActivities -> Maybe Natural
limit} -> Maybe Natural
limit) (\s :: DescribeActivities
s@DescribeActivities' {} Maybe Natural
a -> DescribeActivities
s {$sel:limit:DescribeActivities' :: Maybe Natural
limit = Maybe Natural
a} :: DescribeActivities)

-- | The marker for the next set of results.
describeActivities_marker :: Lens.Lens' DescribeActivities (Prelude.Maybe Prelude.Text)
describeActivities_marker :: Lens' DescribeActivities (Maybe Text)
describeActivities_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeActivities' {Maybe Text
marker :: Maybe Text
$sel:marker:DescribeActivities' :: DescribeActivities -> Maybe Text
marker} -> Maybe Text
marker) (\s :: DescribeActivities
s@DescribeActivities' {} Maybe Text
a -> DescribeActivities
s {$sel:marker:DescribeActivities' :: Maybe Text
marker = Maybe Text
a} :: DescribeActivities)

-- | The ID of the organization. This is a mandatory parameter when using
-- administrative API (SigV4) requests.
describeActivities_organizationId :: Lens.Lens' DescribeActivities (Prelude.Maybe Prelude.Text)
describeActivities_organizationId :: Lens' DescribeActivities (Maybe Text)
describeActivities_organizationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeActivities' {Maybe Text
organizationId :: Maybe Text
$sel:organizationId:DescribeActivities' :: DescribeActivities -> Maybe Text
organizationId} -> Maybe Text
organizationId) (\s :: DescribeActivities
s@DescribeActivities' {} Maybe Text
a -> DescribeActivities
s {$sel:organizationId:DescribeActivities' :: Maybe Text
organizationId = Maybe Text
a} :: DescribeActivities)

-- | The document or folder ID for which to describe activity types.
describeActivities_resourceId :: Lens.Lens' DescribeActivities (Prelude.Maybe Prelude.Text)
describeActivities_resourceId :: Lens' DescribeActivities (Maybe Text)
describeActivities_resourceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeActivities' {Maybe Text
resourceId :: Maybe Text
$sel:resourceId:DescribeActivities' :: DescribeActivities -> Maybe Text
resourceId} -> Maybe Text
resourceId) (\s :: DescribeActivities
s@DescribeActivities' {} Maybe Text
a -> DescribeActivities
s {$sel:resourceId:DescribeActivities' :: Maybe Text
resourceId = Maybe Text
a} :: DescribeActivities)

-- | The timestamp that determines the starting time of the activities. The
-- response includes the activities performed after the specified
-- timestamp.
describeActivities_startTime :: Lens.Lens' DescribeActivities (Prelude.Maybe Prelude.UTCTime)
describeActivities_startTime :: Lens' DescribeActivities (Maybe UTCTime)
describeActivities_startTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeActivities' {Maybe POSIX
startTime :: Maybe POSIX
$sel:startTime:DescribeActivities' :: DescribeActivities -> Maybe POSIX
startTime} -> Maybe POSIX
startTime) (\s :: DescribeActivities
s@DescribeActivities' {} Maybe POSIX
a -> DescribeActivities
s {$sel:startTime:DescribeActivities' :: Maybe POSIX
startTime = Maybe POSIX
a} :: DescribeActivities) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The ID of the user who performed the action. The response includes
-- activities pertaining to this user. This is an optional parameter and is
-- only applicable for administrative API (SigV4) requests.
describeActivities_userId :: Lens.Lens' DescribeActivities (Prelude.Maybe Prelude.Text)
describeActivities_userId :: Lens' DescribeActivities (Maybe Text)
describeActivities_userId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeActivities' {Maybe Text
userId :: Maybe Text
$sel:userId:DescribeActivities' :: DescribeActivities -> Maybe Text
userId} -> Maybe Text
userId) (\s :: DescribeActivities
s@DescribeActivities' {} Maybe Text
a -> DescribeActivities
s {$sel:userId:DescribeActivities' :: Maybe Text
userId = Maybe Text
a} :: DescribeActivities)

instance Core.AWSPager DescribeActivities where
  page :: DescribeActivities
-> AWSResponse DescribeActivities -> Maybe DescribeActivities
page DescribeActivities
rq AWSResponse DescribeActivities
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeActivities
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeActivitiesResponse (Maybe Text)
describeActivitiesResponse_marker
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse DescribeActivities
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeActivitiesResponse (Maybe [Activity])
describeActivitiesResponse_userActivities
            forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just
        ) =
        forall a. Maybe a
Prelude.Nothing
    | Bool
Prelude.otherwise =
        forall a. a -> Maybe a
Prelude.Just
          forall a b. (a -> b) -> a -> b
Prelude.$ DescribeActivities
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' DescribeActivities (Maybe Text)
describeActivities_marker
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse DescribeActivities
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' DescribeActivitiesResponse (Maybe Text)
describeActivitiesResponse_marker
          forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall a b. Prism (Maybe a) (Maybe b) a b
Lens._Just

instance Core.AWSRequest DescribeActivities where
  type
    AWSResponse DescribeActivities =
      DescribeActivitiesResponse
  request :: (Service -> Service)
-> DescribeActivities -> Request DescribeActivities
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.get (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeActivities
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse DescribeActivities)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Maybe Text -> Maybe [Activity] -> Int -> DescribeActivitiesResponse
DescribeActivitiesResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"Marker")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"UserActivities" forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance Prelude.Hashable DescribeActivities where
  hashWithSalt :: Int -> DescribeActivities -> Int
hashWithSalt Int
_salt DescribeActivities' {Maybe Bool
Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Maybe POSIX
userId :: Maybe Text
startTime :: Maybe POSIX
resourceId :: Maybe Text
organizationId :: Maybe Text
marker :: Maybe Text
limit :: Maybe Natural
includeIndirectActivities :: Maybe Bool
endTime :: Maybe POSIX
authenticationToken :: Maybe (Sensitive Text)
activityTypes :: Maybe Text
$sel:userId:DescribeActivities' :: DescribeActivities -> Maybe Text
$sel:startTime:DescribeActivities' :: DescribeActivities -> Maybe POSIX
$sel:resourceId:DescribeActivities' :: DescribeActivities -> Maybe Text
$sel:organizationId:DescribeActivities' :: DescribeActivities -> Maybe Text
$sel:marker:DescribeActivities' :: DescribeActivities -> Maybe Text
$sel:limit:DescribeActivities' :: DescribeActivities -> Maybe Natural
$sel:includeIndirectActivities:DescribeActivities' :: DescribeActivities -> Maybe Bool
$sel:endTime:DescribeActivities' :: DescribeActivities -> Maybe POSIX
$sel:authenticationToken:DescribeActivities' :: DescribeActivities -> Maybe (Sensitive Text)
$sel:activityTypes:DescribeActivities' :: DescribeActivities -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
activityTypes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive Text)
authenticationToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
endTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
includeIndirectActivities
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
limit
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
marker
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
organizationId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
resourceId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
startTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
userId

instance Prelude.NFData DescribeActivities where
  rnf :: DescribeActivities -> ()
rnf DescribeActivities' {Maybe Bool
Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Maybe POSIX
userId :: Maybe Text
startTime :: Maybe POSIX
resourceId :: Maybe Text
organizationId :: Maybe Text
marker :: Maybe Text
limit :: Maybe Natural
includeIndirectActivities :: Maybe Bool
endTime :: Maybe POSIX
authenticationToken :: Maybe (Sensitive Text)
activityTypes :: Maybe Text
$sel:userId:DescribeActivities' :: DescribeActivities -> Maybe Text
$sel:startTime:DescribeActivities' :: DescribeActivities -> Maybe POSIX
$sel:resourceId:DescribeActivities' :: DescribeActivities -> Maybe Text
$sel:organizationId:DescribeActivities' :: DescribeActivities -> Maybe Text
$sel:marker:DescribeActivities' :: DescribeActivities -> Maybe Text
$sel:limit:DescribeActivities' :: DescribeActivities -> Maybe Natural
$sel:includeIndirectActivities:DescribeActivities' :: DescribeActivities -> Maybe Bool
$sel:endTime:DescribeActivities' :: DescribeActivities -> Maybe POSIX
$sel:authenticationToken:DescribeActivities' :: DescribeActivities -> Maybe (Sensitive Text)
$sel:activityTypes:DescribeActivities' :: DescribeActivities -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
activityTypes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive Text)
authenticationToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
endTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
includeIndirectActivities
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
limit
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
organizationId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
resourceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
startTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
userId

instance Data.ToHeaders DescribeActivities where
  toHeaders :: DescribeActivities -> ResponseHeaders
toHeaders DescribeActivities' {Maybe Bool
Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Maybe POSIX
userId :: Maybe Text
startTime :: Maybe POSIX
resourceId :: Maybe Text
organizationId :: Maybe Text
marker :: Maybe Text
limit :: Maybe Natural
includeIndirectActivities :: Maybe Bool
endTime :: Maybe POSIX
authenticationToken :: Maybe (Sensitive Text)
activityTypes :: Maybe Text
$sel:userId:DescribeActivities' :: DescribeActivities -> Maybe Text
$sel:startTime:DescribeActivities' :: DescribeActivities -> Maybe POSIX
$sel:resourceId:DescribeActivities' :: DescribeActivities -> Maybe Text
$sel:organizationId:DescribeActivities' :: DescribeActivities -> Maybe Text
$sel:marker:DescribeActivities' :: DescribeActivities -> Maybe Text
$sel:limit:DescribeActivities' :: DescribeActivities -> Maybe Natural
$sel:includeIndirectActivities:DescribeActivities' :: DescribeActivities -> Maybe Bool
$sel:endTime:DescribeActivities' :: DescribeActivities -> Maybe POSIX
$sel:authenticationToken:DescribeActivities' :: DescribeActivities -> Maybe (Sensitive Text)
$sel:activityTypes:DescribeActivities' :: DescribeActivities -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ HeaderName
"Authentication" forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# Maybe (Sensitive Text)
authenticationToken,
        HeaderName
"Content-Type"
          forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# (ByteString
"application/x-amz-json-1.1" :: Prelude.ByteString)
      ]

instance Data.ToPath DescribeActivities where
  toPath :: DescribeActivities -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/api/v1/activities"

instance Data.ToQuery DescribeActivities where
  toQuery :: DescribeActivities -> QueryString
toQuery DescribeActivities' {Maybe Bool
Maybe Natural
Maybe Text
Maybe (Sensitive Text)
Maybe POSIX
userId :: Maybe Text
startTime :: Maybe POSIX
resourceId :: Maybe Text
organizationId :: Maybe Text
marker :: Maybe Text
limit :: Maybe Natural
includeIndirectActivities :: Maybe Bool
endTime :: Maybe POSIX
authenticationToken :: Maybe (Sensitive Text)
activityTypes :: Maybe Text
$sel:userId:DescribeActivities' :: DescribeActivities -> Maybe Text
$sel:startTime:DescribeActivities' :: DescribeActivities -> Maybe POSIX
$sel:resourceId:DescribeActivities' :: DescribeActivities -> Maybe Text
$sel:organizationId:DescribeActivities' :: DescribeActivities -> Maybe Text
$sel:marker:DescribeActivities' :: DescribeActivities -> Maybe Text
$sel:limit:DescribeActivities' :: DescribeActivities -> Maybe Natural
$sel:includeIndirectActivities:DescribeActivities' :: DescribeActivities -> Maybe Bool
$sel:endTime:DescribeActivities' :: DescribeActivities -> Maybe POSIX
$sel:authenticationToken:DescribeActivities' :: DescribeActivities -> Maybe (Sensitive Text)
$sel:activityTypes:DescribeActivities' :: DescribeActivities -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"activityTypes" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
activityTypes,
        ByteString
"endTime" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe POSIX
endTime,
        ByteString
"includeIndirectActivities"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
includeIndirectActivities,
        ByteString
"limit" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
limit,
        ByteString
"marker" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
marker,
        ByteString
"organizationId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
organizationId,
        ByteString
"resourceId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
resourceId,
        ByteString
"startTime" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe POSIX
startTime,
        ByteString
"userId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
userId
      ]

-- | /See:/ 'newDescribeActivitiesResponse' smart constructor.
data DescribeActivitiesResponse = DescribeActivitiesResponse'
  { -- | The marker for the next set of results.
    DescribeActivitiesResponse -> Maybe Text
marker :: Prelude.Maybe Prelude.Text,
    -- | The list of activities for the specified user and time period.
    DescribeActivitiesResponse -> Maybe [Activity]
userActivities :: Prelude.Maybe [Activity],
    -- | The response's http status code.
    DescribeActivitiesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeActivitiesResponse -> DescribeActivitiesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeActivitiesResponse -> DescribeActivitiesResponse -> Bool
$c/= :: DescribeActivitiesResponse -> DescribeActivitiesResponse -> Bool
== :: DescribeActivitiesResponse -> DescribeActivitiesResponse -> Bool
$c== :: DescribeActivitiesResponse -> DescribeActivitiesResponse -> Bool
Prelude.Eq, Int -> DescribeActivitiesResponse -> ShowS
[DescribeActivitiesResponse] -> ShowS
DescribeActivitiesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeActivitiesResponse] -> ShowS
$cshowList :: [DescribeActivitiesResponse] -> ShowS
show :: DescribeActivitiesResponse -> String
$cshow :: DescribeActivitiesResponse -> String
showsPrec :: Int -> DescribeActivitiesResponse -> ShowS
$cshowsPrec :: Int -> DescribeActivitiesResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeActivitiesResponse x -> DescribeActivitiesResponse
forall x.
DescribeActivitiesResponse -> Rep DescribeActivitiesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeActivitiesResponse x -> DescribeActivitiesResponse
$cfrom :: forall x.
DescribeActivitiesResponse -> Rep DescribeActivitiesResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeActivitiesResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'marker', 'describeActivitiesResponse_marker' - The marker for the next set of results.
--
-- 'userActivities', 'describeActivitiesResponse_userActivities' - The list of activities for the specified user and time period.
--
-- 'httpStatus', 'describeActivitiesResponse_httpStatus' - The response's http status code.
newDescribeActivitiesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeActivitiesResponse
newDescribeActivitiesResponse :: Int -> DescribeActivitiesResponse
newDescribeActivitiesResponse Int
pHttpStatus_ =
  DescribeActivitiesResponse'
    { $sel:marker:DescribeActivitiesResponse' :: Maybe Text
marker =
        forall a. Maybe a
Prelude.Nothing,
      $sel:userActivities:DescribeActivitiesResponse' :: Maybe [Activity]
userActivities = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:DescribeActivitiesResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The marker for the next set of results.
describeActivitiesResponse_marker :: Lens.Lens' DescribeActivitiesResponse (Prelude.Maybe Prelude.Text)
describeActivitiesResponse_marker :: Lens' DescribeActivitiesResponse (Maybe Text)
describeActivitiesResponse_marker = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeActivitiesResponse' {Maybe Text
marker :: Maybe Text
$sel:marker:DescribeActivitiesResponse' :: DescribeActivitiesResponse -> Maybe Text
marker} -> Maybe Text
marker) (\s :: DescribeActivitiesResponse
s@DescribeActivitiesResponse' {} Maybe Text
a -> DescribeActivitiesResponse
s {$sel:marker:DescribeActivitiesResponse' :: Maybe Text
marker = Maybe Text
a} :: DescribeActivitiesResponse)

-- | The list of activities for the specified user and time period.
describeActivitiesResponse_userActivities :: Lens.Lens' DescribeActivitiesResponse (Prelude.Maybe [Activity])
describeActivitiesResponse_userActivities :: Lens' DescribeActivitiesResponse (Maybe [Activity])
describeActivitiesResponse_userActivities = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeActivitiesResponse' {Maybe [Activity]
userActivities :: Maybe [Activity]
$sel:userActivities:DescribeActivitiesResponse' :: DescribeActivitiesResponse -> Maybe [Activity]
userActivities} -> Maybe [Activity]
userActivities) (\s :: DescribeActivitiesResponse
s@DescribeActivitiesResponse' {} Maybe [Activity]
a -> DescribeActivitiesResponse
s {$sel:userActivities:DescribeActivitiesResponse' :: Maybe [Activity]
userActivities = Maybe [Activity]
a} :: DescribeActivitiesResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The response's http status code.
describeActivitiesResponse_httpStatus :: Lens.Lens' DescribeActivitiesResponse Prelude.Int
describeActivitiesResponse_httpStatus :: Lens' DescribeActivitiesResponse Int
describeActivitiesResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeActivitiesResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeActivitiesResponse' :: DescribeActivitiesResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeActivitiesResponse
s@DescribeActivitiesResponse' {} Int
a -> DescribeActivitiesResponse
s {$sel:httpStatus:DescribeActivitiesResponse' :: Int
httpStatus = Int
a} :: DescribeActivitiesResponse)

instance Prelude.NFData DescribeActivitiesResponse where
  rnf :: DescribeActivitiesResponse -> ()
rnf DescribeActivitiesResponse' {Int
Maybe [Activity]
Maybe Text
httpStatus :: Int
userActivities :: Maybe [Activity]
marker :: Maybe Text
$sel:httpStatus:DescribeActivitiesResponse' :: DescribeActivitiesResponse -> Int
$sel:userActivities:DescribeActivitiesResponse' :: DescribeActivitiesResponse -> Maybe [Activity]
$sel:marker:DescribeActivitiesResponse' :: DescribeActivitiesResponse -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
marker
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Activity]
userActivities
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus