packages feed

amazonka-proton-2.0: gen/Amazonka/Proton/ListServiceTemplateVersions.hs

{-# 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.Proton.ListServiceTemplateVersions
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- List major or minor versions of a service template with detail data.
--
-- This operation returns paginated results.
module Amazonka.Proton.ListServiceTemplateVersions
  ( -- * Creating a Request
    ListServiceTemplateVersions (..),
    newListServiceTemplateVersions,

    -- * Request Lenses
    listServiceTemplateVersions_majorVersion,
    listServiceTemplateVersions_maxResults,
    listServiceTemplateVersions_nextToken,
    listServiceTemplateVersions_templateName,

    -- * Destructuring the Response
    ListServiceTemplateVersionsResponse (..),
    newListServiceTemplateVersionsResponse,

    -- * Response Lenses
    listServiceTemplateVersionsResponse_nextToken,
    listServiceTemplateVersionsResponse_httpStatus,
    listServiceTemplateVersionsResponse_templateVersions,
  )
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 Amazonka.Proton.Types
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newListServiceTemplateVersions' smart constructor.
data ListServiceTemplateVersions = ListServiceTemplateVersions'
  { -- | To view a list of minor of versions under a major version of a service
    -- template, include @major Version@.
    --
    -- To view a list of major versions of a service template, /exclude/
    -- @major Version@.
    majorVersion :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of major or minor versions of a service template to
    -- list.
    maxResults :: Prelude.Maybe Prelude.Natural,
    -- | A token that indicates the location of the next major or minor version
    -- in the array of major or minor versions of a service template, after the
    -- list of major or minor versions that was previously requested.
    nextToken :: Prelude.Maybe Prelude.Text,
    -- | The name of the service template.
    templateName :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ListServiceTemplateVersions' 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:
--
-- 'majorVersion', 'listServiceTemplateVersions_majorVersion' - To view a list of minor of versions under a major version of a service
-- template, include @major Version@.
--
-- To view a list of major versions of a service template, /exclude/
-- @major Version@.
--
-- 'maxResults', 'listServiceTemplateVersions_maxResults' - The maximum number of major or minor versions of a service template to
-- list.
--
-- 'nextToken', 'listServiceTemplateVersions_nextToken' - A token that indicates the location of the next major or minor version
-- in the array of major or minor versions of a service template, after the
-- list of major or minor versions that was previously requested.
--
-- 'templateName', 'listServiceTemplateVersions_templateName' - The name of the service template.
newListServiceTemplateVersions ::
  -- | 'templateName'
  Prelude.Text ->
  ListServiceTemplateVersions
newListServiceTemplateVersions pTemplateName_ =
  ListServiceTemplateVersions'
    { majorVersion =
        Prelude.Nothing,
      maxResults = Prelude.Nothing,
      nextToken = Prelude.Nothing,
      templateName = pTemplateName_
    }

-- | To view a list of minor of versions under a major version of a service
-- template, include @major Version@.
--
-- To view a list of major versions of a service template, /exclude/
-- @major Version@.
listServiceTemplateVersions_majorVersion :: Lens.Lens' ListServiceTemplateVersions (Prelude.Maybe Prelude.Text)
listServiceTemplateVersions_majorVersion = Lens.lens (\ListServiceTemplateVersions' {majorVersion} -> majorVersion) (\s@ListServiceTemplateVersions' {} a -> s {majorVersion = a} :: ListServiceTemplateVersions)

-- | The maximum number of major or minor versions of a service template to
-- list.
listServiceTemplateVersions_maxResults :: Lens.Lens' ListServiceTemplateVersions (Prelude.Maybe Prelude.Natural)
listServiceTemplateVersions_maxResults = Lens.lens (\ListServiceTemplateVersions' {maxResults} -> maxResults) (\s@ListServiceTemplateVersions' {} a -> s {maxResults = a} :: ListServiceTemplateVersions)

-- | A token that indicates the location of the next major or minor version
-- in the array of major or minor versions of a service template, after the
-- list of major or minor versions that was previously requested.
listServiceTemplateVersions_nextToken :: Lens.Lens' ListServiceTemplateVersions (Prelude.Maybe Prelude.Text)
listServiceTemplateVersions_nextToken = Lens.lens (\ListServiceTemplateVersions' {nextToken} -> nextToken) (\s@ListServiceTemplateVersions' {} a -> s {nextToken = a} :: ListServiceTemplateVersions)

-- | The name of the service template.
listServiceTemplateVersions_templateName :: Lens.Lens' ListServiceTemplateVersions Prelude.Text
listServiceTemplateVersions_templateName = Lens.lens (\ListServiceTemplateVersions' {templateName} -> templateName) (\s@ListServiceTemplateVersions' {} a -> s {templateName = a} :: ListServiceTemplateVersions)

instance Core.AWSPager ListServiceTemplateVersions where
  page rq rs
    | Core.stop
        ( rs
            Lens.^? listServiceTemplateVersionsResponse_nextToken
            Prelude.. Lens._Just
        ) =
        Prelude.Nothing
    | Core.stop
        ( rs
            Lens.^. listServiceTemplateVersionsResponse_templateVersions
        ) =
        Prelude.Nothing
    | Prelude.otherwise =
        Prelude.Just
          Prelude.$ rq
          Prelude.& listServiceTemplateVersions_nextToken
          Lens..~ rs
          Lens.^? listServiceTemplateVersionsResponse_nextToken
          Prelude.. Lens._Just

instance Core.AWSRequest ListServiceTemplateVersions where
  type
    AWSResponse ListServiceTemplateVersions =
      ListServiceTemplateVersionsResponse
  request overrides =
    Request.postJSON (overrides defaultService)
  response =
    Response.receiveJSON
      ( \s h x ->
          ListServiceTemplateVersionsResponse'
            Prelude.<$> (x Data..?> "nextToken")
            Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
            Prelude.<*> ( x
                            Data..?> "templateVersions"
                            Core..!@ Prelude.mempty
                        )
      )

instance Prelude.Hashable ListServiceTemplateVersions where
  hashWithSalt _salt ListServiceTemplateVersions' {..} =
    _salt
      `Prelude.hashWithSalt` majorVersion
      `Prelude.hashWithSalt` maxResults
      `Prelude.hashWithSalt` nextToken
      `Prelude.hashWithSalt` templateName

instance Prelude.NFData ListServiceTemplateVersions where
  rnf ListServiceTemplateVersions' {..} =
    Prelude.rnf majorVersion
      `Prelude.seq` Prelude.rnf maxResults
      `Prelude.seq` Prelude.rnf nextToken
      `Prelude.seq` Prelude.rnf templateName

instance Data.ToHeaders ListServiceTemplateVersions where
  toHeaders =
    Prelude.const
      ( Prelude.mconcat
          [ "X-Amz-Target"
              Data.=# ( "AwsProton20200720.ListServiceTemplateVersions" ::
                          Prelude.ByteString
                      ),
            "Content-Type"
              Data.=# ( "application/x-amz-json-1.0" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON ListServiceTemplateVersions where
  toJSON ListServiceTemplateVersions' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("majorVersion" Data..=) Prelude.<$> majorVersion,
            ("maxResults" Data..=) Prelude.<$> maxResults,
            ("nextToken" Data..=) Prelude.<$> nextToken,
            Prelude.Just ("templateName" Data..= templateName)
          ]
      )

instance Data.ToPath ListServiceTemplateVersions where
  toPath = Prelude.const "/"

instance Data.ToQuery ListServiceTemplateVersions where
  toQuery = Prelude.const Prelude.mempty

-- | /See:/ 'newListServiceTemplateVersionsResponse' smart constructor.
data ListServiceTemplateVersionsResponse = ListServiceTemplateVersionsResponse'
  { -- | A token that indicates the location of the next major or minor version
    -- in the array of major or minor versions of a service template, after the
    -- current requested list of service major or minor versions.
    nextToken :: Prelude.Maybe Prelude.Text,
    -- | The response's http status code.
    httpStatus :: Prelude.Int,
    -- | An array of major or minor versions of a service template with detail
    -- data.
    templateVersions :: [ServiceTemplateVersionSummary]
  }
  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ListServiceTemplateVersionsResponse' 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:
--
-- 'nextToken', 'listServiceTemplateVersionsResponse_nextToken' - A token that indicates the location of the next major or minor version
-- in the array of major or minor versions of a service template, after the
-- current requested list of service major or minor versions.
--
-- 'httpStatus', 'listServiceTemplateVersionsResponse_httpStatus' - The response's http status code.
--
-- 'templateVersions', 'listServiceTemplateVersionsResponse_templateVersions' - An array of major or minor versions of a service template with detail
-- data.
newListServiceTemplateVersionsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ListServiceTemplateVersionsResponse
newListServiceTemplateVersionsResponse pHttpStatus_ =
  ListServiceTemplateVersionsResponse'
    { nextToken =
        Prelude.Nothing,
      httpStatus = pHttpStatus_,
      templateVersions = Prelude.mempty
    }

-- | A token that indicates the location of the next major or minor version
-- in the array of major or minor versions of a service template, after the
-- current requested list of service major or minor versions.
listServiceTemplateVersionsResponse_nextToken :: Lens.Lens' ListServiceTemplateVersionsResponse (Prelude.Maybe Prelude.Text)
listServiceTemplateVersionsResponse_nextToken = Lens.lens (\ListServiceTemplateVersionsResponse' {nextToken} -> nextToken) (\s@ListServiceTemplateVersionsResponse' {} a -> s {nextToken = a} :: ListServiceTemplateVersionsResponse)

-- | The response's http status code.
listServiceTemplateVersionsResponse_httpStatus :: Lens.Lens' ListServiceTemplateVersionsResponse Prelude.Int
listServiceTemplateVersionsResponse_httpStatus = Lens.lens (\ListServiceTemplateVersionsResponse' {httpStatus} -> httpStatus) (\s@ListServiceTemplateVersionsResponse' {} a -> s {httpStatus = a} :: ListServiceTemplateVersionsResponse)

-- | An array of major or minor versions of a service template with detail
-- data.
listServiceTemplateVersionsResponse_templateVersions :: Lens.Lens' ListServiceTemplateVersionsResponse [ServiceTemplateVersionSummary]
listServiceTemplateVersionsResponse_templateVersions = Lens.lens (\ListServiceTemplateVersionsResponse' {templateVersions} -> templateVersions) (\s@ListServiceTemplateVersionsResponse' {} a -> s {templateVersions = a} :: ListServiceTemplateVersionsResponse) Prelude.. Lens.coerced

instance
  Prelude.NFData
    ListServiceTemplateVersionsResponse
  where
  rnf ListServiceTemplateVersionsResponse' {..} =
    Prelude.rnf nextToken
      `Prelude.seq` Prelude.rnf httpStatus
      `Prelude.seq` Prelude.rnf templateVersions