{-# 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.ECS.ListTaskDefinitionFamilies
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Returns a list of task definition families that are registered to your
-- account. This list includes task definition families that no longer have
-- any @ACTIVE@ task definition revisions.
--
-- You can filter out task definition families that don\'t contain any
-- @ACTIVE@ task definition revisions by setting the @status@ parameter to
-- @ACTIVE@. You can also filter the results with the @familyPrefix@
-- parameter.
--
-- This operation returns paginated results.
module Amazonka.ECS.ListTaskDefinitionFamilies
  ( -- * Creating a Request
    ListTaskDefinitionFamilies (..),
    newListTaskDefinitionFamilies,

    -- * Request Lenses
    listTaskDefinitionFamilies_familyPrefix,
    listTaskDefinitionFamilies_maxResults,
    listTaskDefinitionFamilies_nextToken,
    listTaskDefinitionFamilies_status,

    -- * Destructuring the Response
    ListTaskDefinitionFamiliesResponse (..),
    newListTaskDefinitionFamiliesResponse,

    -- * Response Lenses
    listTaskDefinitionFamiliesResponse_families,
    listTaskDefinitionFamiliesResponse_nextToken,
    listTaskDefinitionFamiliesResponse_httpStatus,
  )
where

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

-- | /See:/ 'newListTaskDefinitionFamilies' smart constructor.
data ListTaskDefinitionFamilies = ListTaskDefinitionFamilies'
  { -- | The @familyPrefix@ is a string that\'s used to filter the results of
    -- @ListTaskDefinitionFamilies@. If you specify a @familyPrefix@, only task
    -- definition family names that begin with the @familyPrefix@ string are
    -- returned.
    ListTaskDefinitionFamilies -> Maybe Text
familyPrefix :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of task definition family results that
    -- @ListTaskDefinitionFamilies@ returned in paginated output. When this
    -- parameter is used, @ListTaskDefinitions@ only returns @maxResults@
    -- results in a single page along with a @nextToken@ response element. The
    -- remaining results of the initial request can be seen by sending another
    -- @ListTaskDefinitionFamilies@ request with the returned @nextToken@
    -- value. This value can be between 1 and 100. If this parameter isn\'t
    -- used, then @ListTaskDefinitionFamilies@ returns up to 100 results and a
    -- @nextToken@ value if applicable.
    ListTaskDefinitionFamilies -> Maybe Int
maxResults :: Prelude.Maybe Prelude.Int,
    -- | The @nextToken@ value returned from a @ListTaskDefinitionFamilies@
    -- request indicating that more results are available to fulfill the
    -- request and further calls will be needed. If @maxResults@ was provided,
    -- it is possible the number of results to be fewer than @maxResults@.
    --
    -- This token should be treated as an opaque identifier that is only used
    -- to retrieve the next items in a list and not for other programmatic
    -- purposes.
    ListTaskDefinitionFamilies -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The task definition family status to filter the
    -- @ListTaskDefinitionFamilies@ results with. By default, both @ACTIVE@ and
    -- @INACTIVE@ task definition families are listed. If this parameter is set
    -- to @ACTIVE@, only task definition families that have an @ACTIVE@ task
    -- definition revision are returned. If this parameter is set to
    -- @INACTIVE@, only task definition families that do not have any @ACTIVE@
    -- task definition revisions are returned. If you paginate the resulting
    -- output, be sure to keep the @status@ value constant in each subsequent
    -- request.
    ListTaskDefinitionFamilies -> Maybe TaskDefinitionFamilyStatus
status :: Prelude.Maybe TaskDefinitionFamilyStatus
  }
  deriving (ListTaskDefinitionFamilies -> ListTaskDefinitionFamilies -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListTaskDefinitionFamilies -> ListTaskDefinitionFamilies -> Bool
$c/= :: ListTaskDefinitionFamilies -> ListTaskDefinitionFamilies -> Bool
== :: ListTaskDefinitionFamilies -> ListTaskDefinitionFamilies -> Bool
$c== :: ListTaskDefinitionFamilies -> ListTaskDefinitionFamilies -> Bool
Prelude.Eq, ReadPrec [ListTaskDefinitionFamilies]
ReadPrec ListTaskDefinitionFamilies
Int -> ReadS ListTaskDefinitionFamilies
ReadS [ListTaskDefinitionFamilies]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListTaskDefinitionFamilies]
$creadListPrec :: ReadPrec [ListTaskDefinitionFamilies]
readPrec :: ReadPrec ListTaskDefinitionFamilies
$creadPrec :: ReadPrec ListTaskDefinitionFamilies
readList :: ReadS [ListTaskDefinitionFamilies]
$creadList :: ReadS [ListTaskDefinitionFamilies]
readsPrec :: Int -> ReadS ListTaskDefinitionFamilies
$creadsPrec :: Int -> ReadS ListTaskDefinitionFamilies
Prelude.Read, Int -> ListTaskDefinitionFamilies -> ShowS
[ListTaskDefinitionFamilies] -> ShowS
ListTaskDefinitionFamilies -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListTaskDefinitionFamilies] -> ShowS
$cshowList :: [ListTaskDefinitionFamilies] -> ShowS
show :: ListTaskDefinitionFamilies -> String
$cshow :: ListTaskDefinitionFamilies -> String
showsPrec :: Int -> ListTaskDefinitionFamilies -> ShowS
$cshowsPrec :: Int -> ListTaskDefinitionFamilies -> ShowS
Prelude.Show, forall x.
Rep ListTaskDefinitionFamilies x -> ListTaskDefinitionFamilies
forall x.
ListTaskDefinitionFamilies -> Rep ListTaskDefinitionFamilies x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListTaskDefinitionFamilies x -> ListTaskDefinitionFamilies
$cfrom :: forall x.
ListTaskDefinitionFamilies -> Rep ListTaskDefinitionFamilies x
Prelude.Generic)

-- |
-- Create a value of 'ListTaskDefinitionFamilies' 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:
--
-- 'familyPrefix', 'listTaskDefinitionFamilies_familyPrefix' - The @familyPrefix@ is a string that\'s used to filter the results of
-- @ListTaskDefinitionFamilies@. If you specify a @familyPrefix@, only task
-- definition family names that begin with the @familyPrefix@ string are
-- returned.
--
-- 'maxResults', 'listTaskDefinitionFamilies_maxResults' - The maximum number of task definition family results that
-- @ListTaskDefinitionFamilies@ returned in paginated output. When this
-- parameter is used, @ListTaskDefinitions@ only returns @maxResults@
-- results in a single page along with a @nextToken@ response element. The
-- remaining results of the initial request can be seen by sending another
-- @ListTaskDefinitionFamilies@ request with the returned @nextToken@
-- value. This value can be between 1 and 100. If this parameter isn\'t
-- used, then @ListTaskDefinitionFamilies@ returns up to 100 results and a
-- @nextToken@ value if applicable.
--
-- 'nextToken', 'listTaskDefinitionFamilies_nextToken' - The @nextToken@ value returned from a @ListTaskDefinitionFamilies@
-- request indicating that more results are available to fulfill the
-- request and further calls will be needed. If @maxResults@ was provided,
-- it is possible the number of results to be fewer than @maxResults@.
--
-- This token should be treated as an opaque identifier that is only used
-- to retrieve the next items in a list and not for other programmatic
-- purposes.
--
-- 'status', 'listTaskDefinitionFamilies_status' - The task definition family status to filter the
-- @ListTaskDefinitionFamilies@ results with. By default, both @ACTIVE@ and
-- @INACTIVE@ task definition families are listed. If this parameter is set
-- to @ACTIVE@, only task definition families that have an @ACTIVE@ task
-- definition revision are returned. If this parameter is set to
-- @INACTIVE@, only task definition families that do not have any @ACTIVE@
-- task definition revisions are returned. If you paginate the resulting
-- output, be sure to keep the @status@ value constant in each subsequent
-- request.
newListTaskDefinitionFamilies ::
  ListTaskDefinitionFamilies
newListTaskDefinitionFamilies :: ListTaskDefinitionFamilies
newListTaskDefinitionFamilies =
  ListTaskDefinitionFamilies'
    { $sel:familyPrefix:ListTaskDefinitionFamilies' :: Maybe Text
familyPrefix =
        forall a. Maybe a
Prelude.Nothing,
      $sel:maxResults:ListTaskDefinitionFamilies' :: Maybe Int
maxResults = forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:ListTaskDefinitionFamilies' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:status:ListTaskDefinitionFamilies' :: Maybe TaskDefinitionFamilyStatus
status = forall a. Maybe a
Prelude.Nothing
    }

-- | The @familyPrefix@ is a string that\'s used to filter the results of
-- @ListTaskDefinitionFamilies@. If you specify a @familyPrefix@, only task
-- definition family names that begin with the @familyPrefix@ string are
-- returned.
listTaskDefinitionFamilies_familyPrefix :: Lens.Lens' ListTaskDefinitionFamilies (Prelude.Maybe Prelude.Text)
listTaskDefinitionFamilies_familyPrefix :: Lens' ListTaskDefinitionFamilies (Maybe Text)
listTaskDefinitionFamilies_familyPrefix = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListTaskDefinitionFamilies' {Maybe Text
familyPrefix :: Maybe Text
$sel:familyPrefix:ListTaskDefinitionFamilies' :: ListTaskDefinitionFamilies -> Maybe Text
familyPrefix} -> Maybe Text
familyPrefix) (\s :: ListTaskDefinitionFamilies
s@ListTaskDefinitionFamilies' {} Maybe Text
a -> ListTaskDefinitionFamilies
s {$sel:familyPrefix:ListTaskDefinitionFamilies' :: Maybe Text
familyPrefix = Maybe Text
a} :: ListTaskDefinitionFamilies)

-- | The maximum number of task definition family results that
-- @ListTaskDefinitionFamilies@ returned in paginated output. When this
-- parameter is used, @ListTaskDefinitions@ only returns @maxResults@
-- results in a single page along with a @nextToken@ response element. The
-- remaining results of the initial request can be seen by sending another
-- @ListTaskDefinitionFamilies@ request with the returned @nextToken@
-- value. This value can be between 1 and 100. If this parameter isn\'t
-- used, then @ListTaskDefinitionFamilies@ returns up to 100 results and a
-- @nextToken@ value if applicable.
listTaskDefinitionFamilies_maxResults :: Lens.Lens' ListTaskDefinitionFamilies (Prelude.Maybe Prelude.Int)
listTaskDefinitionFamilies_maxResults :: Lens' ListTaskDefinitionFamilies (Maybe Int)
listTaskDefinitionFamilies_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListTaskDefinitionFamilies' {Maybe Int
maxResults :: Maybe Int
$sel:maxResults:ListTaskDefinitionFamilies' :: ListTaskDefinitionFamilies -> Maybe Int
maxResults} -> Maybe Int
maxResults) (\s :: ListTaskDefinitionFamilies
s@ListTaskDefinitionFamilies' {} Maybe Int
a -> ListTaskDefinitionFamilies
s {$sel:maxResults:ListTaskDefinitionFamilies' :: Maybe Int
maxResults = Maybe Int
a} :: ListTaskDefinitionFamilies)

-- | The @nextToken@ value returned from a @ListTaskDefinitionFamilies@
-- request indicating that more results are available to fulfill the
-- request and further calls will be needed. If @maxResults@ was provided,
-- it is possible the number of results to be fewer than @maxResults@.
--
-- This token should be treated as an opaque identifier that is only used
-- to retrieve the next items in a list and not for other programmatic
-- purposes.
listTaskDefinitionFamilies_nextToken :: Lens.Lens' ListTaskDefinitionFamilies (Prelude.Maybe Prelude.Text)
listTaskDefinitionFamilies_nextToken :: Lens' ListTaskDefinitionFamilies (Maybe Text)
listTaskDefinitionFamilies_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListTaskDefinitionFamilies' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListTaskDefinitionFamilies' :: ListTaskDefinitionFamilies -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListTaskDefinitionFamilies
s@ListTaskDefinitionFamilies' {} Maybe Text
a -> ListTaskDefinitionFamilies
s {$sel:nextToken:ListTaskDefinitionFamilies' :: Maybe Text
nextToken = Maybe Text
a} :: ListTaskDefinitionFamilies)

-- | The task definition family status to filter the
-- @ListTaskDefinitionFamilies@ results with. By default, both @ACTIVE@ and
-- @INACTIVE@ task definition families are listed. If this parameter is set
-- to @ACTIVE@, only task definition families that have an @ACTIVE@ task
-- definition revision are returned. If this parameter is set to
-- @INACTIVE@, only task definition families that do not have any @ACTIVE@
-- task definition revisions are returned. If you paginate the resulting
-- output, be sure to keep the @status@ value constant in each subsequent
-- request.
listTaskDefinitionFamilies_status :: Lens.Lens' ListTaskDefinitionFamilies (Prelude.Maybe TaskDefinitionFamilyStatus)
listTaskDefinitionFamilies_status :: Lens' ListTaskDefinitionFamilies (Maybe TaskDefinitionFamilyStatus)
listTaskDefinitionFamilies_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListTaskDefinitionFamilies' {Maybe TaskDefinitionFamilyStatus
status :: Maybe TaskDefinitionFamilyStatus
$sel:status:ListTaskDefinitionFamilies' :: ListTaskDefinitionFamilies -> Maybe TaskDefinitionFamilyStatus
status} -> Maybe TaskDefinitionFamilyStatus
status) (\s :: ListTaskDefinitionFamilies
s@ListTaskDefinitionFamilies' {} Maybe TaskDefinitionFamilyStatus
a -> ListTaskDefinitionFamilies
s {$sel:status:ListTaskDefinitionFamilies' :: Maybe TaskDefinitionFamilyStatus
status = Maybe TaskDefinitionFamilyStatus
a} :: ListTaskDefinitionFamilies)

instance Core.AWSPager ListTaskDefinitionFamilies where
  page :: ListTaskDefinitionFamilies
-> AWSResponse ListTaskDefinitionFamilies
-> Maybe ListTaskDefinitionFamilies
page ListTaskDefinitionFamilies
rq AWSResponse ListTaskDefinitionFamilies
rs
    | forall a. AWSTruncated a => a -> Bool
Core.stop
        ( AWSResponse ListTaskDefinitionFamilies
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListTaskDefinitionFamiliesResponse (Maybe Text)
listTaskDefinitionFamiliesResponse_nextToken
            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 ListTaskDefinitionFamilies
rs
            forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListTaskDefinitionFamiliesResponse (Maybe [Text])
listTaskDefinitionFamiliesResponse_families
            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.$ ListTaskDefinitionFamilies
rq
          forall a b. a -> (a -> b) -> b
Prelude.& Lens' ListTaskDefinitionFamilies (Maybe Text)
listTaskDefinitionFamilies_nextToken
          forall s t a b. ASetter s t a b -> b -> s -> t
Lens..~ AWSResponse ListTaskDefinitionFamilies
rs
          forall s a. s -> Getting (First a) s a -> Maybe a
Lens.^? Lens' ListTaskDefinitionFamiliesResponse (Maybe Text)
listTaskDefinitionFamiliesResponse_nextToken
          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 ListTaskDefinitionFamilies where
  type
    AWSResponse ListTaskDefinitionFamilies =
      ListTaskDefinitionFamiliesResponse
  request :: (Service -> Service)
-> ListTaskDefinitionFamilies -> Request ListTaskDefinitionFamilies
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy ListTaskDefinitionFamilies
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ListTaskDefinitionFamilies)))
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 Text -> Int -> ListTaskDefinitionFamiliesResponse
ListTaskDefinitionFamiliesResponse'
            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
"families" 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.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String (Maybe a)
Data..?> Key
"nextToken")
            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 ListTaskDefinitionFamilies where
  hashWithSalt :: Int -> ListTaskDefinitionFamilies -> Int
hashWithSalt Int
_salt ListTaskDefinitionFamilies' {Maybe Int
Maybe Text
Maybe TaskDefinitionFamilyStatus
status :: Maybe TaskDefinitionFamilyStatus
nextToken :: Maybe Text
maxResults :: Maybe Int
familyPrefix :: Maybe Text
$sel:status:ListTaskDefinitionFamilies' :: ListTaskDefinitionFamilies -> Maybe TaskDefinitionFamilyStatus
$sel:nextToken:ListTaskDefinitionFamilies' :: ListTaskDefinitionFamilies -> Maybe Text
$sel:maxResults:ListTaskDefinitionFamilies' :: ListTaskDefinitionFamilies -> Maybe Int
$sel:familyPrefix:ListTaskDefinitionFamilies' :: ListTaskDefinitionFamilies -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
familyPrefix
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxResults
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe TaskDefinitionFamilyStatus
status

instance Prelude.NFData ListTaskDefinitionFamilies where
  rnf :: ListTaskDefinitionFamilies -> ()
rnf ListTaskDefinitionFamilies' {Maybe Int
Maybe Text
Maybe TaskDefinitionFamilyStatus
status :: Maybe TaskDefinitionFamilyStatus
nextToken :: Maybe Text
maxResults :: Maybe Int
familyPrefix :: Maybe Text
$sel:status:ListTaskDefinitionFamilies' :: ListTaskDefinitionFamilies -> Maybe TaskDefinitionFamilyStatus
$sel:nextToken:ListTaskDefinitionFamilies' :: ListTaskDefinitionFamilies -> Maybe Text
$sel:maxResults:ListTaskDefinitionFamilies' :: ListTaskDefinitionFamilies -> Maybe Int
$sel:familyPrefix:ListTaskDefinitionFamilies' :: ListTaskDefinitionFamilies -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
familyPrefix
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe TaskDefinitionFamilyStatus
status

instance Data.ToHeaders ListTaskDefinitionFamilies where
  toHeaders :: ListTaskDefinitionFamilies -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"AmazonEC2ContainerServiceV20141113.ListTaskDefinitionFamilies" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON ListTaskDefinitionFamilies where
  toJSON :: ListTaskDefinitionFamilies -> Value
toJSON ListTaskDefinitionFamilies' {Maybe Int
Maybe Text
Maybe TaskDefinitionFamilyStatus
status :: Maybe TaskDefinitionFamilyStatus
nextToken :: Maybe Text
maxResults :: Maybe Int
familyPrefix :: Maybe Text
$sel:status:ListTaskDefinitionFamilies' :: ListTaskDefinitionFamilies -> Maybe TaskDefinitionFamilyStatus
$sel:nextToken:ListTaskDefinitionFamilies' :: ListTaskDefinitionFamilies -> Maybe Text
$sel:maxResults:ListTaskDefinitionFamilies' :: ListTaskDefinitionFamilies -> Maybe Int
$sel:familyPrefix:ListTaskDefinitionFamilies' :: ListTaskDefinitionFamilies -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"familyPrefix" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
familyPrefix,
            (Key
"maxResults" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
maxResults,
            (Key
"nextToken" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
nextToken,
            (Key
"status" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe TaskDefinitionFamilyStatus
status
          ]
      )

instance Data.ToPath ListTaskDefinitionFamilies where
  toPath :: ListTaskDefinitionFamilies -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery ListTaskDefinitionFamilies where
  toQuery :: ListTaskDefinitionFamilies -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newListTaskDefinitionFamiliesResponse' smart constructor.
data ListTaskDefinitionFamiliesResponse = ListTaskDefinitionFamiliesResponse'
  { -- | The list of task definition family names that match the
    -- @ListTaskDefinitionFamilies@ request.
    ListTaskDefinitionFamiliesResponse -> Maybe [Text]
families :: Prelude.Maybe [Prelude.Text],
    -- | The @nextToken@ value to include in a future
    -- @ListTaskDefinitionFamilies@ request. When the results of a
    -- @ListTaskDefinitionFamilies@ request exceed @maxResults@, this value can
    -- be used to retrieve the next page of results. This value is @null@ when
    -- there are no more results to return.
    ListTaskDefinitionFamiliesResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    ListTaskDefinitionFamiliesResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ListTaskDefinitionFamiliesResponse
-> ListTaskDefinitionFamiliesResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ListTaskDefinitionFamiliesResponse
-> ListTaskDefinitionFamiliesResponse -> Bool
$c/= :: ListTaskDefinitionFamiliesResponse
-> ListTaskDefinitionFamiliesResponse -> Bool
== :: ListTaskDefinitionFamiliesResponse
-> ListTaskDefinitionFamiliesResponse -> Bool
$c== :: ListTaskDefinitionFamiliesResponse
-> ListTaskDefinitionFamiliesResponse -> Bool
Prelude.Eq, ReadPrec [ListTaskDefinitionFamiliesResponse]
ReadPrec ListTaskDefinitionFamiliesResponse
Int -> ReadS ListTaskDefinitionFamiliesResponse
ReadS [ListTaskDefinitionFamiliesResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ListTaskDefinitionFamiliesResponse]
$creadListPrec :: ReadPrec [ListTaskDefinitionFamiliesResponse]
readPrec :: ReadPrec ListTaskDefinitionFamiliesResponse
$creadPrec :: ReadPrec ListTaskDefinitionFamiliesResponse
readList :: ReadS [ListTaskDefinitionFamiliesResponse]
$creadList :: ReadS [ListTaskDefinitionFamiliesResponse]
readsPrec :: Int -> ReadS ListTaskDefinitionFamiliesResponse
$creadsPrec :: Int -> ReadS ListTaskDefinitionFamiliesResponse
Prelude.Read, Int -> ListTaskDefinitionFamiliesResponse -> ShowS
[ListTaskDefinitionFamiliesResponse] -> ShowS
ListTaskDefinitionFamiliesResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ListTaskDefinitionFamiliesResponse] -> ShowS
$cshowList :: [ListTaskDefinitionFamiliesResponse] -> ShowS
show :: ListTaskDefinitionFamiliesResponse -> String
$cshow :: ListTaskDefinitionFamiliesResponse -> String
showsPrec :: Int -> ListTaskDefinitionFamiliesResponse -> ShowS
$cshowsPrec :: Int -> ListTaskDefinitionFamiliesResponse -> ShowS
Prelude.Show, forall x.
Rep ListTaskDefinitionFamiliesResponse x
-> ListTaskDefinitionFamiliesResponse
forall x.
ListTaskDefinitionFamiliesResponse
-> Rep ListTaskDefinitionFamiliesResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ListTaskDefinitionFamiliesResponse x
-> ListTaskDefinitionFamiliesResponse
$cfrom :: forall x.
ListTaskDefinitionFamiliesResponse
-> Rep ListTaskDefinitionFamiliesResponse x
Prelude.Generic)

-- |
-- Create a value of 'ListTaskDefinitionFamiliesResponse' 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:
--
-- 'families', 'listTaskDefinitionFamiliesResponse_families' - The list of task definition family names that match the
-- @ListTaskDefinitionFamilies@ request.
--
-- 'nextToken', 'listTaskDefinitionFamiliesResponse_nextToken' - The @nextToken@ value to include in a future
-- @ListTaskDefinitionFamilies@ request. When the results of a
-- @ListTaskDefinitionFamilies@ request exceed @maxResults@, this value can
-- be used to retrieve the next page of results. This value is @null@ when
-- there are no more results to return.
--
-- 'httpStatus', 'listTaskDefinitionFamiliesResponse_httpStatus' - The response's http status code.
newListTaskDefinitionFamiliesResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListTaskDefinitionFamiliesResponse
newListTaskDefinitionFamiliesResponse :: Int -> ListTaskDefinitionFamiliesResponse
newListTaskDefinitionFamiliesResponse Int
pHttpStatus_ =
  ListTaskDefinitionFamiliesResponse'
    { $sel:families:ListTaskDefinitionFamiliesResponse' :: Maybe [Text]
families =
        forall a. Maybe a
Prelude.Nothing,
      $sel:nextToken:ListTaskDefinitionFamiliesResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ListTaskDefinitionFamiliesResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | The list of task definition family names that match the
-- @ListTaskDefinitionFamilies@ request.
listTaskDefinitionFamiliesResponse_families :: Lens.Lens' ListTaskDefinitionFamiliesResponse (Prelude.Maybe [Prelude.Text])
listTaskDefinitionFamiliesResponse_families :: Lens' ListTaskDefinitionFamiliesResponse (Maybe [Text])
listTaskDefinitionFamiliesResponse_families = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListTaskDefinitionFamiliesResponse' {Maybe [Text]
families :: Maybe [Text]
$sel:families:ListTaskDefinitionFamiliesResponse' :: ListTaskDefinitionFamiliesResponse -> Maybe [Text]
families} -> Maybe [Text]
families) (\s :: ListTaskDefinitionFamiliesResponse
s@ListTaskDefinitionFamiliesResponse' {} Maybe [Text]
a -> ListTaskDefinitionFamiliesResponse
s {$sel:families:ListTaskDefinitionFamiliesResponse' :: Maybe [Text]
families = Maybe [Text]
a} :: ListTaskDefinitionFamiliesResponse) 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 @nextToken@ value to include in a future
-- @ListTaskDefinitionFamilies@ request. When the results of a
-- @ListTaskDefinitionFamilies@ request exceed @maxResults@, this value can
-- be used to retrieve the next page of results. This value is @null@ when
-- there are no more results to return.
listTaskDefinitionFamiliesResponse_nextToken :: Lens.Lens' ListTaskDefinitionFamiliesResponse (Prelude.Maybe Prelude.Text)
listTaskDefinitionFamiliesResponse_nextToken :: Lens' ListTaskDefinitionFamiliesResponse (Maybe Text)
listTaskDefinitionFamiliesResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ListTaskDefinitionFamiliesResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:ListTaskDefinitionFamiliesResponse' :: ListTaskDefinitionFamiliesResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: ListTaskDefinitionFamiliesResponse
s@ListTaskDefinitionFamiliesResponse' {} Maybe Text
a -> ListTaskDefinitionFamiliesResponse
s {$sel:nextToken:ListTaskDefinitionFamiliesResponse' :: Maybe Text
nextToken = Maybe Text
a} :: ListTaskDefinitionFamiliesResponse)

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

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