{-# 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.Pinpoint.GetSegmentImportJobs
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Retrieves information about the status and settings of the import jobs
-- for a segment.
module Amazonka.Pinpoint.GetSegmentImportJobs
  ( -- * Creating a Request
    GetSegmentImportJobs (..),
    newGetSegmentImportJobs,

    -- * Request Lenses
    getSegmentImportJobs_pageSize,
    getSegmentImportJobs_token,
    getSegmentImportJobs_segmentId,
    getSegmentImportJobs_applicationId,

    -- * Destructuring the Response
    GetSegmentImportJobsResponse (..),
    newGetSegmentImportJobsResponse,

    -- * Response Lenses
    getSegmentImportJobsResponse_httpStatus,
    getSegmentImportJobsResponse_importJobsResponse,
  )
where

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

-- | /See:/ 'newGetSegmentImportJobs' smart constructor.
data GetSegmentImportJobs = GetSegmentImportJobs'
  { -- | The maximum number of items to include in each page of a paginated
    -- response. This parameter is not supported for application, campaign, and
    -- journey metrics.
    GetSegmentImportJobs -> Maybe Text
pageSize :: Prelude.Maybe Prelude.Text,
    -- | The NextToken string that specifies which page of results to return in a
    -- paginated response.
    GetSegmentImportJobs -> Maybe Text
token :: Prelude.Maybe Prelude.Text,
    -- | The unique identifier for the segment.
    GetSegmentImportJobs -> Text
segmentId :: Prelude.Text,
    -- | The unique identifier for the application. This identifier is displayed
    -- as the __Project ID__ on the Amazon Pinpoint console.
    GetSegmentImportJobs -> Text
applicationId :: Prelude.Text
  }
  deriving (GetSegmentImportJobs -> GetSegmentImportJobs -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetSegmentImportJobs -> GetSegmentImportJobs -> Bool
$c/= :: GetSegmentImportJobs -> GetSegmentImportJobs -> Bool
== :: GetSegmentImportJobs -> GetSegmentImportJobs -> Bool
$c== :: GetSegmentImportJobs -> GetSegmentImportJobs -> Bool
Prelude.Eq, ReadPrec [GetSegmentImportJobs]
ReadPrec GetSegmentImportJobs
Int -> ReadS GetSegmentImportJobs
ReadS [GetSegmentImportJobs]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetSegmentImportJobs]
$creadListPrec :: ReadPrec [GetSegmentImportJobs]
readPrec :: ReadPrec GetSegmentImportJobs
$creadPrec :: ReadPrec GetSegmentImportJobs
readList :: ReadS [GetSegmentImportJobs]
$creadList :: ReadS [GetSegmentImportJobs]
readsPrec :: Int -> ReadS GetSegmentImportJobs
$creadsPrec :: Int -> ReadS GetSegmentImportJobs
Prelude.Read, Int -> GetSegmentImportJobs -> ShowS
[GetSegmentImportJobs] -> ShowS
GetSegmentImportJobs -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetSegmentImportJobs] -> ShowS
$cshowList :: [GetSegmentImportJobs] -> ShowS
show :: GetSegmentImportJobs -> String
$cshow :: GetSegmentImportJobs -> String
showsPrec :: Int -> GetSegmentImportJobs -> ShowS
$cshowsPrec :: Int -> GetSegmentImportJobs -> ShowS
Prelude.Show, forall x. Rep GetSegmentImportJobs x -> GetSegmentImportJobs
forall x. GetSegmentImportJobs -> Rep GetSegmentImportJobs x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GetSegmentImportJobs x -> GetSegmentImportJobs
$cfrom :: forall x. GetSegmentImportJobs -> Rep GetSegmentImportJobs x
Prelude.Generic)

-- |
-- Create a value of 'GetSegmentImportJobs' 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:
--
-- 'pageSize', 'getSegmentImportJobs_pageSize' - The maximum number of items to include in each page of a paginated
-- response. This parameter is not supported for application, campaign, and
-- journey metrics.
--
-- 'token', 'getSegmentImportJobs_token' - The NextToken string that specifies which page of results to return in a
-- paginated response.
--
-- 'segmentId', 'getSegmentImportJobs_segmentId' - The unique identifier for the segment.
--
-- 'applicationId', 'getSegmentImportJobs_applicationId' - The unique identifier for the application. This identifier is displayed
-- as the __Project ID__ on the Amazon Pinpoint console.
newGetSegmentImportJobs ::
  -- | 'segmentId'
  Prelude.Text ->
  -- | 'applicationId'
  Prelude.Text ->
  GetSegmentImportJobs
newGetSegmentImportJobs :: Text -> Text -> GetSegmentImportJobs
newGetSegmentImportJobs Text
pSegmentId_ Text
pApplicationId_ =
  GetSegmentImportJobs'
    { $sel:pageSize:GetSegmentImportJobs' :: Maybe Text
pageSize = forall a. Maybe a
Prelude.Nothing,
      $sel:token:GetSegmentImportJobs' :: Maybe Text
token = forall a. Maybe a
Prelude.Nothing,
      $sel:segmentId:GetSegmentImportJobs' :: Text
segmentId = Text
pSegmentId_,
      $sel:applicationId:GetSegmentImportJobs' :: Text
applicationId = Text
pApplicationId_
    }

-- | The maximum number of items to include in each page of a paginated
-- response. This parameter is not supported for application, campaign, and
-- journey metrics.
getSegmentImportJobs_pageSize :: Lens.Lens' GetSegmentImportJobs (Prelude.Maybe Prelude.Text)
getSegmentImportJobs_pageSize :: Lens' GetSegmentImportJobs (Maybe Text)
getSegmentImportJobs_pageSize = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetSegmentImportJobs' {Maybe Text
pageSize :: Maybe Text
$sel:pageSize:GetSegmentImportJobs' :: GetSegmentImportJobs -> Maybe Text
pageSize} -> Maybe Text
pageSize) (\s :: GetSegmentImportJobs
s@GetSegmentImportJobs' {} Maybe Text
a -> GetSegmentImportJobs
s {$sel:pageSize:GetSegmentImportJobs' :: Maybe Text
pageSize = Maybe Text
a} :: GetSegmentImportJobs)

-- | The NextToken string that specifies which page of results to return in a
-- paginated response.
getSegmentImportJobs_token :: Lens.Lens' GetSegmentImportJobs (Prelude.Maybe Prelude.Text)
getSegmentImportJobs_token :: Lens' GetSegmentImportJobs (Maybe Text)
getSegmentImportJobs_token = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetSegmentImportJobs' {Maybe Text
token :: Maybe Text
$sel:token:GetSegmentImportJobs' :: GetSegmentImportJobs -> Maybe Text
token} -> Maybe Text
token) (\s :: GetSegmentImportJobs
s@GetSegmentImportJobs' {} Maybe Text
a -> GetSegmentImportJobs
s {$sel:token:GetSegmentImportJobs' :: Maybe Text
token = Maybe Text
a} :: GetSegmentImportJobs)

-- | The unique identifier for the segment.
getSegmentImportJobs_segmentId :: Lens.Lens' GetSegmentImportJobs Prelude.Text
getSegmentImportJobs_segmentId :: Lens' GetSegmentImportJobs Text
getSegmentImportJobs_segmentId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetSegmentImportJobs' {Text
segmentId :: Text
$sel:segmentId:GetSegmentImportJobs' :: GetSegmentImportJobs -> Text
segmentId} -> Text
segmentId) (\s :: GetSegmentImportJobs
s@GetSegmentImportJobs' {} Text
a -> GetSegmentImportJobs
s {$sel:segmentId:GetSegmentImportJobs' :: Text
segmentId = Text
a} :: GetSegmentImportJobs)

-- | The unique identifier for the application. This identifier is displayed
-- as the __Project ID__ on the Amazon Pinpoint console.
getSegmentImportJobs_applicationId :: Lens.Lens' GetSegmentImportJobs Prelude.Text
getSegmentImportJobs_applicationId :: Lens' GetSegmentImportJobs Text
getSegmentImportJobs_applicationId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetSegmentImportJobs' {Text
applicationId :: Text
$sel:applicationId:GetSegmentImportJobs' :: GetSegmentImportJobs -> Text
applicationId} -> Text
applicationId) (\s :: GetSegmentImportJobs
s@GetSegmentImportJobs' {} Text
a -> GetSegmentImportJobs
s {$sel:applicationId:GetSegmentImportJobs' :: Text
applicationId = Text
a} :: GetSegmentImportJobs)

instance Core.AWSRequest GetSegmentImportJobs where
  type
    AWSResponse GetSegmentImportJobs =
      GetSegmentImportJobsResponse
  request :: (Service -> Service)
-> GetSegmentImportJobs -> Request GetSegmentImportJobs
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 GetSegmentImportJobs
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse GetSegmentImportJobs)))
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 ->
          Int -> ImportJobsResponse -> GetSegmentImportJobsResponse
GetSegmentImportJobsResponse'
            forall (f :: * -> *) a b. Functor 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))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall a. FromJSON a => Object -> Either String a
Data.eitherParseJSON Object
x)
      )

instance Prelude.Hashable GetSegmentImportJobs where
  hashWithSalt :: Int -> GetSegmentImportJobs -> Int
hashWithSalt Int
_salt GetSegmentImportJobs' {Maybe Text
Text
applicationId :: Text
segmentId :: Text
token :: Maybe Text
pageSize :: Maybe Text
$sel:applicationId:GetSegmentImportJobs' :: GetSegmentImportJobs -> Text
$sel:segmentId:GetSegmentImportJobs' :: GetSegmentImportJobs -> Text
$sel:token:GetSegmentImportJobs' :: GetSegmentImportJobs -> Maybe Text
$sel:pageSize:GetSegmentImportJobs' :: GetSegmentImportJobs -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
pageSize
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
token
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
segmentId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
applicationId

instance Prelude.NFData GetSegmentImportJobs where
  rnf :: GetSegmentImportJobs -> ()
rnf GetSegmentImportJobs' {Maybe Text
Text
applicationId :: Text
segmentId :: Text
token :: Maybe Text
pageSize :: Maybe Text
$sel:applicationId:GetSegmentImportJobs' :: GetSegmentImportJobs -> Text
$sel:segmentId:GetSegmentImportJobs' :: GetSegmentImportJobs -> Text
$sel:token:GetSegmentImportJobs' :: GetSegmentImportJobs -> Maybe Text
$sel:pageSize:GetSegmentImportJobs' :: GetSegmentImportJobs -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
pageSize
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
token
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
segmentId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
applicationId

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

instance Data.ToPath GetSegmentImportJobs where
  toPath :: GetSegmentImportJobs -> ByteString
toPath GetSegmentImportJobs' {Maybe Text
Text
applicationId :: Text
segmentId :: Text
token :: Maybe Text
pageSize :: Maybe Text
$sel:applicationId:GetSegmentImportJobs' :: GetSegmentImportJobs -> Text
$sel:segmentId:GetSegmentImportJobs' :: GetSegmentImportJobs -> Text
$sel:token:GetSegmentImportJobs' :: GetSegmentImportJobs -> Maybe Text
$sel:pageSize:GetSegmentImportJobs' :: GetSegmentImportJobs -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"/v1/apps/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
applicationId,
        ByteString
"/segments/",
        forall a. ToByteString a => a -> ByteString
Data.toBS Text
segmentId,
        ByteString
"/jobs/import"
      ]

instance Data.ToQuery GetSegmentImportJobs where
  toQuery :: GetSegmentImportJobs -> QueryString
toQuery GetSegmentImportJobs' {Maybe Text
Text
applicationId :: Text
segmentId :: Text
token :: Maybe Text
pageSize :: Maybe Text
$sel:applicationId:GetSegmentImportJobs' :: GetSegmentImportJobs -> Text
$sel:segmentId:GetSegmentImportJobs' :: GetSegmentImportJobs -> Text
$sel:token:GetSegmentImportJobs' :: GetSegmentImportJobs -> Maybe Text
$sel:pageSize:GetSegmentImportJobs' :: GetSegmentImportJobs -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ByteString
"page-size" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
pageSize, ByteString
"token" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
token]

-- | /See:/ 'newGetSegmentImportJobsResponse' smart constructor.
data GetSegmentImportJobsResponse = GetSegmentImportJobsResponse'
  { -- | The response's http status code.
    GetSegmentImportJobsResponse -> Int
httpStatus :: Prelude.Int,
    GetSegmentImportJobsResponse -> ImportJobsResponse
importJobsResponse :: ImportJobsResponse
  }
  deriving (GetSegmentImportJobsResponse
-> GetSegmentImportJobsResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetSegmentImportJobsResponse
-> GetSegmentImportJobsResponse -> Bool
$c/= :: GetSegmentImportJobsResponse
-> GetSegmentImportJobsResponse -> Bool
== :: GetSegmentImportJobsResponse
-> GetSegmentImportJobsResponse -> Bool
$c== :: GetSegmentImportJobsResponse
-> GetSegmentImportJobsResponse -> Bool
Prelude.Eq, ReadPrec [GetSegmentImportJobsResponse]
ReadPrec GetSegmentImportJobsResponse
Int -> ReadS GetSegmentImportJobsResponse
ReadS [GetSegmentImportJobsResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [GetSegmentImportJobsResponse]
$creadListPrec :: ReadPrec [GetSegmentImportJobsResponse]
readPrec :: ReadPrec GetSegmentImportJobsResponse
$creadPrec :: ReadPrec GetSegmentImportJobsResponse
readList :: ReadS [GetSegmentImportJobsResponse]
$creadList :: ReadS [GetSegmentImportJobsResponse]
readsPrec :: Int -> ReadS GetSegmentImportJobsResponse
$creadsPrec :: Int -> ReadS GetSegmentImportJobsResponse
Prelude.Read, Int -> GetSegmentImportJobsResponse -> ShowS
[GetSegmentImportJobsResponse] -> ShowS
GetSegmentImportJobsResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetSegmentImportJobsResponse] -> ShowS
$cshowList :: [GetSegmentImportJobsResponse] -> ShowS
show :: GetSegmentImportJobsResponse -> String
$cshow :: GetSegmentImportJobsResponse -> String
showsPrec :: Int -> GetSegmentImportJobsResponse -> ShowS
$cshowsPrec :: Int -> GetSegmentImportJobsResponse -> ShowS
Prelude.Show, forall x.
Rep GetSegmentImportJobsResponse x -> GetSegmentImportJobsResponse
forall x.
GetSegmentImportJobsResponse -> Rep GetSegmentImportJobsResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep GetSegmentImportJobsResponse x -> GetSegmentImportJobsResponse
$cfrom :: forall x.
GetSegmentImportJobsResponse -> Rep GetSegmentImportJobsResponse x
Prelude.Generic)

-- |
-- Create a value of 'GetSegmentImportJobsResponse' 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:
--
-- 'httpStatus', 'getSegmentImportJobsResponse_httpStatus' - The response's http status code.
--
-- 'importJobsResponse', 'getSegmentImportJobsResponse_importJobsResponse' - Undocumented member.
newGetSegmentImportJobsResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'importJobsResponse'
  ImportJobsResponse ->
  GetSegmentImportJobsResponse
newGetSegmentImportJobsResponse :: Int -> ImportJobsResponse -> GetSegmentImportJobsResponse
newGetSegmentImportJobsResponse
  Int
pHttpStatus_
  ImportJobsResponse
pImportJobsResponse_ =
    GetSegmentImportJobsResponse'
      { $sel:httpStatus:GetSegmentImportJobsResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:importJobsResponse:GetSegmentImportJobsResponse' :: ImportJobsResponse
importJobsResponse = ImportJobsResponse
pImportJobsResponse_
      }

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

-- | Undocumented member.
getSegmentImportJobsResponse_importJobsResponse :: Lens.Lens' GetSegmentImportJobsResponse ImportJobsResponse
getSegmentImportJobsResponse_importJobsResponse :: Lens' GetSegmentImportJobsResponse ImportJobsResponse
getSegmentImportJobsResponse_importJobsResponse = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\GetSegmentImportJobsResponse' {ImportJobsResponse
importJobsResponse :: ImportJobsResponse
$sel:importJobsResponse:GetSegmentImportJobsResponse' :: GetSegmentImportJobsResponse -> ImportJobsResponse
importJobsResponse} -> ImportJobsResponse
importJobsResponse) (\s :: GetSegmentImportJobsResponse
s@GetSegmentImportJobsResponse' {} ImportJobsResponse
a -> GetSegmentImportJobsResponse
s {$sel:importJobsResponse:GetSegmentImportJobsResponse' :: ImportJobsResponse
importJobsResponse = ImportJobsResponse
a} :: GetSegmentImportJobsResponse)

instance Prelude.NFData GetSegmentImportJobsResponse where
  rnf :: GetSegmentImportJobsResponse -> ()
rnf GetSegmentImportJobsResponse' {Int
ImportJobsResponse
importJobsResponse :: ImportJobsResponse
httpStatus :: Int
$sel:importJobsResponse:GetSegmentImportJobsResponse' :: GetSegmentImportJobsResponse -> ImportJobsResponse
$sel:httpStatus:GetSegmentImportJobsResponse' :: GetSegmentImportJobsResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ImportJobsResponse
importJobsResponse