{-# LANGUAGE ExplicitForAll #-}
{-# LANGUAGE MultiWayIf #-}
-- CHANGE WITH CAUTION: This is a generated code file generated by https://github.com/Haskell-OpenAPI-Code-Generator/Haskell-OpenAPI-Client-Code-Generator.
{-# LANGUAGE OverloadedStrings #-}

-- | Contains the different functions to run the operation getPaymentIntents
module StripeAPI.Operations.GetPaymentIntents where

import qualified Control.Monad.Fail
import qualified Control.Monad.Trans.Reader
import qualified Data.Aeson
import qualified Data.Aeson as Data.Aeson.Encoding.Internal
import qualified Data.Aeson as Data.Aeson.Types
import qualified Data.Aeson as Data.Aeson.Types.FromJSON
import qualified Data.Aeson as Data.Aeson.Types.Internal
import qualified Data.Aeson as Data.Aeson.Types.ToJSON
import qualified Data.ByteString.Char8
import qualified Data.ByteString.Char8 as Data.ByteString.Internal
import qualified Data.Either
import qualified Data.Functor
import qualified Data.Scientific
import qualified Data.Text
import qualified Data.Text.Internal
import qualified Data.Time.Calendar as Data.Time.Calendar.Days
import qualified Data.Time.LocalTime as Data.Time.LocalTime.Internal.ZonedTime
import qualified Data.Vector
import qualified GHC.Base
import qualified GHC.Classes
import qualified GHC.Int
import qualified GHC.Show
import qualified GHC.Types
import qualified Network.HTTP.Client
import qualified Network.HTTP.Client as Network.HTTP.Client.Request
import qualified Network.HTTP.Client as Network.HTTP.Client.Types
import qualified Network.HTTP.Simple
import qualified Network.HTTP.Types
import qualified Network.HTTP.Types as Network.HTTP.Types.Status
import qualified Network.HTTP.Types as Network.HTTP.Types.URI
import qualified StripeAPI.Common
import StripeAPI.Types
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

-- | > GET /v1/payment_intents
--
-- \<p>Returns a list of PaymentIntents.\<\/p>
getPaymentIntents ::
  forall m.
  StripeAPI.Common.MonadHTTP m =>
  -- | Contains all available parameters of this operation (query and path parameters)
  GetPaymentIntentsParameters ->
  -- | Monadic computation which returns the result of the operation
  StripeAPI.Common.StripeT m (Network.HTTP.Client.Types.Response GetPaymentIntentsResponse)
getPaymentIntents :: GetPaymentIntentsParameters
-> StripeT m (Response GetPaymentIntentsResponse)
getPaymentIntents GetPaymentIntentsParameters
parameters =
  (Response ByteString -> Response GetPaymentIntentsResponse)
-> StripeT m (Response ByteString)
-> StripeT m (Response GetPaymentIntentsResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
GHC.Base.fmap
    ( \Response ByteString
response_0 ->
        (ByteString -> GetPaymentIntentsResponse)
-> Response ByteString -> Response GetPaymentIntentsResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
GHC.Base.fmap
          ( (String -> GetPaymentIntentsResponse)
-> (GetPaymentIntentsResponse -> GetPaymentIntentsResponse)
-> Either String GetPaymentIntentsResponse
-> GetPaymentIntentsResponse
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
Data.Either.either String -> GetPaymentIntentsResponse
GetPaymentIntentsResponseError GetPaymentIntentsResponse -> GetPaymentIntentsResponse
forall a. a -> a
GHC.Base.id
              (Either String GetPaymentIntentsResponse
 -> GetPaymentIntentsResponse)
-> (ByteString -> Either String GetPaymentIntentsResponse)
-> ByteString
-> GetPaymentIntentsResponse
forall b c a. (b -> c) -> (a -> b) -> a -> c
GHC.Base.. ( \Response ByteString
response ByteString
body ->
                             if
                                 | (\Status
status_1 -> Status -> Int
Network.HTTP.Types.Status.statusCode Status
status_1 Int -> Int -> Bool
forall a. Eq a => a -> a -> Bool
GHC.Classes.== Int
200) (Response ByteString -> Status
forall body. Response body -> Status
Network.HTTP.Client.Types.responseStatus Response ByteString
response) ->
                                   GetPaymentIntentsResponseBody200 -> GetPaymentIntentsResponse
GetPaymentIntentsResponse200
                                     (GetPaymentIntentsResponseBody200 -> GetPaymentIntentsResponse)
-> Either String GetPaymentIntentsResponseBody200
-> Either String GetPaymentIntentsResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> ( ByteString -> Either String GetPaymentIntentsResponseBody200
forall a. FromJSON a => ByteString -> Either String a
Data.Aeson.eitherDecodeStrict ByteString
body ::
                                                          Data.Either.Either
                                                            GHC.Base.String
                                                            GetPaymentIntentsResponseBody200
                                                      )
                                 | Bool -> Status -> Bool
forall a b. a -> b -> a
GHC.Base.const Bool
GHC.Types.True (Response ByteString -> Status
forall body. Response body -> Status
Network.HTTP.Client.Types.responseStatus Response ByteString
response) ->
                                   Error -> GetPaymentIntentsResponse
GetPaymentIntentsResponseDefault
                                     (Error -> GetPaymentIntentsResponse)
-> Either String Error -> Either String GetPaymentIntentsResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> ( ByteString -> Either String Error
forall a. FromJSON a => ByteString -> Either String a
Data.Aeson.eitherDecodeStrict ByteString
body ::
                                                          Data.Either.Either
                                                            GHC.Base.String
                                                            Error
                                                      )
                                 | Bool
GHC.Base.otherwise -> String -> Either String GetPaymentIntentsResponse
forall a b. a -> Either a b
Data.Either.Left String
"Missing default response type"
                         )
                Response ByteString
response_0
          )
          Response ByteString
response_0
    )
    ( Text -> Text -> [QueryParameter] -> StripeT m (Response ByteString)
forall (m :: * -> *).
MonadHTTP m =>
Text -> Text -> [QueryParameter] -> StripeT m (Response ByteString)
StripeAPI.Common.doCallWithConfigurationM
        (Text -> Text
Data.Text.toUpper (Text -> Text) -> Text -> Text
forall a b. (a -> b) -> a -> b
GHC.Base.$ String -> Text
Data.Text.pack String
"GET")
        (String -> Text
Data.Text.pack String
"/v1/payment_intents")
        [ Text -> Maybe Value -> Text -> Bool -> QueryParameter
StripeAPI.Common.QueryParameter (String -> Text
Data.Text.pack String
"created") (GetPaymentIntentsParametersQueryCreated'Variants -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON (GetPaymentIntentsParametersQueryCreated'Variants -> Value)
-> Maybe GetPaymentIntentsParametersQueryCreated'Variants
-> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> GetPaymentIntentsParameters
-> Maybe GetPaymentIntentsParametersQueryCreated'Variants
getPaymentIntentsParametersQueryCreated GetPaymentIntentsParameters
parameters) (String -> Text
Data.Text.pack String
"deepObject") Bool
GHC.Types.True,
          Text -> Maybe Value -> Text -> Bool -> QueryParameter
StripeAPI.Common.QueryParameter (String -> Text
Data.Text.pack String
"customer") (Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> GetPaymentIntentsParameters -> Maybe Text
getPaymentIntentsParametersQueryCustomer GetPaymentIntentsParameters
parameters) (String -> Text
Data.Text.pack String
"form") Bool
GHC.Types.True,
          Text -> Maybe Value -> Text -> Bool -> QueryParameter
StripeAPI.Common.QueryParameter (String -> Text
Data.Text.pack String
"ending_before") (Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> GetPaymentIntentsParameters -> Maybe Text
getPaymentIntentsParametersQueryEndingBefore GetPaymentIntentsParameters
parameters) (String -> Text
Data.Text.pack String
"form") Bool
GHC.Types.True,
          Text -> Maybe Value -> Text -> Bool -> QueryParameter
StripeAPI.Common.QueryParameter (String -> Text
Data.Text.pack String
"expand") ([Text] -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON ([Text] -> Value) -> Maybe [Text] -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> GetPaymentIntentsParameters -> Maybe [Text]
getPaymentIntentsParametersQueryExpand GetPaymentIntentsParameters
parameters) (String -> Text
Data.Text.pack String
"deepObject") Bool
GHC.Types.True,
          Text -> Maybe Value -> Text -> Bool -> QueryParameter
StripeAPI.Common.QueryParameter (String -> Text
Data.Text.pack String
"limit") (Int -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON (Int -> Value) -> Maybe Int -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> GetPaymentIntentsParameters -> Maybe Int
getPaymentIntentsParametersQueryLimit GetPaymentIntentsParameters
parameters) (String -> Text
Data.Text.pack String
"form") Bool
GHC.Types.True,
          Text -> Maybe Value -> Text -> Bool -> QueryParameter
StripeAPI.Common.QueryParameter (String -> Text
Data.Text.pack String
"starting_after") (Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON (Text -> Value) -> Maybe Text -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> GetPaymentIntentsParameters -> Maybe Text
getPaymentIntentsParametersQueryStartingAfter GetPaymentIntentsParameters
parameters) (String -> Text
Data.Text.pack String
"form") Bool
GHC.Types.True
        ]
    )

-- | Defines the object schema located at @paths.\/v1\/payment_intents.GET.parameters@ in the specification.
data GetPaymentIntentsParameters = GetPaymentIntentsParameters
  { -- | queryCreated: Represents the parameter named \'created\'
    --
    -- A filter on the list, based on the object \`created\` field. The value can be a string with an integer Unix timestamp, or it can be a dictionary with a number of different query options.
    GetPaymentIntentsParameters
-> Maybe GetPaymentIntentsParametersQueryCreated'Variants
getPaymentIntentsParametersQueryCreated :: (GHC.Maybe.Maybe GetPaymentIntentsParametersQueryCreated'Variants),
    -- | queryCustomer: Represents the parameter named \'customer\'
    --
    -- Only return PaymentIntents for the customer specified by this customer ID.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetPaymentIntentsParameters -> Maybe Text
getPaymentIntentsParametersQueryCustomer :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | queryEnding_before: Represents the parameter named \'ending_before\'
    --
    -- A cursor for use in pagination. \`ending_before\` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, starting with \`obj_bar\`, your subsequent call can include \`ending_before=obj_bar\` in order to fetch the previous page of the list.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetPaymentIntentsParameters -> Maybe Text
getPaymentIntentsParametersQueryEndingBefore :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | queryExpand: Represents the parameter named \'expand\'
    --
    -- Specifies which fields in the response should be expanded.
    GetPaymentIntentsParameters -> Maybe [Text]
getPaymentIntentsParametersQueryExpand :: (GHC.Maybe.Maybe ([Data.Text.Internal.Text])),
    -- | queryLimit: Represents the parameter named \'limit\'
    --
    -- A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.
    GetPaymentIntentsParameters -> Maybe Int
getPaymentIntentsParametersQueryLimit :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | queryStarting_after: Represents the parameter named \'starting_after\'
    --
    -- A cursor for use in pagination. \`starting_after\` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with \`obj_foo\`, your subsequent call can include \`starting_after=obj_foo\` in order to fetch the next page of the list.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetPaymentIntentsParameters -> Maybe Text
getPaymentIntentsParametersQueryStartingAfter :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> GetPaymentIntentsParameters -> ShowS
[GetPaymentIntentsParameters] -> ShowS
GetPaymentIntentsParameters -> String
(Int -> GetPaymentIntentsParameters -> ShowS)
-> (GetPaymentIntentsParameters -> String)
-> ([GetPaymentIntentsParameters] -> ShowS)
-> Show GetPaymentIntentsParameters
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetPaymentIntentsParameters] -> ShowS
$cshowList :: [GetPaymentIntentsParameters] -> ShowS
show :: GetPaymentIntentsParameters -> String
$cshow :: GetPaymentIntentsParameters -> String
showsPrec :: Int -> GetPaymentIntentsParameters -> ShowS
$cshowsPrec :: Int -> GetPaymentIntentsParameters -> ShowS
GHC.Show.Show,
      GetPaymentIntentsParameters -> GetPaymentIntentsParameters -> Bool
(GetPaymentIntentsParameters
 -> GetPaymentIntentsParameters -> Bool)
-> (GetPaymentIntentsParameters
    -> GetPaymentIntentsParameters -> Bool)
-> Eq GetPaymentIntentsParameters
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetPaymentIntentsParameters -> GetPaymentIntentsParameters -> Bool
$c/= :: GetPaymentIntentsParameters -> GetPaymentIntentsParameters -> Bool
== :: GetPaymentIntentsParameters -> GetPaymentIntentsParameters -> Bool
$c== :: GetPaymentIntentsParameters -> GetPaymentIntentsParameters -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON GetPaymentIntentsParameters where
  toJSON :: GetPaymentIntentsParameters -> Value
toJSON GetPaymentIntentsParameters
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"queryCreated" Text
-> Maybe GetPaymentIntentsParametersQueryCreated'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsParameters
-> Maybe GetPaymentIntentsParametersQueryCreated'Variants
getPaymentIntentsParametersQueryCreated GetPaymentIntentsParameters
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"queryCustomer" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsParameters -> Maybe Text
getPaymentIntentsParametersQueryCustomer GetPaymentIntentsParameters
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"queryEnding_before" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsParameters -> Maybe Text
getPaymentIntentsParametersQueryEndingBefore GetPaymentIntentsParameters
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"queryExpand" Text -> Maybe [Text] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsParameters -> Maybe [Text]
getPaymentIntentsParametersQueryExpand GetPaymentIntentsParameters
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"queryLimit" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsParameters -> Maybe Int
getPaymentIntentsParametersQueryLimit GetPaymentIntentsParameters
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"queryStarting_after" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsParameters -> Maybe Text
getPaymentIntentsParametersQueryStartingAfter GetPaymentIntentsParameters
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: GetPaymentIntentsParameters -> Encoding
toEncoding GetPaymentIntentsParameters
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"queryCreated" Text
-> Maybe GetPaymentIntentsParametersQueryCreated'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsParameters
-> Maybe GetPaymentIntentsParametersQueryCreated'Variants
getPaymentIntentsParametersQueryCreated GetPaymentIntentsParameters
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"queryCustomer" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsParameters -> Maybe Text
getPaymentIntentsParametersQueryCustomer GetPaymentIntentsParameters
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"queryEnding_before" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsParameters -> Maybe Text
getPaymentIntentsParametersQueryEndingBefore GetPaymentIntentsParameters
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"queryExpand" Text -> Maybe [Text] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsParameters -> Maybe [Text]
getPaymentIntentsParametersQueryExpand GetPaymentIntentsParameters
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"queryLimit" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsParameters -> Maybe Int
getPaymentIntentsParametersQueryLimit GetPaymentIntentsParameters
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"queryStarting_after" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsParameters -> Maybe Text
getPaymentIntentsParametersQueryStartingAfter GetPaymentIntentsParameters
obj))))))

instance Data.Aeson.Types.FromJSON.FromJSON GetPaymentIntentsParameters where
  parseJSON :: Value -> Parser GetPaymentIntentsParameters
parseJSON = String
-> (Object -> Parser GetPaymentIntentsParameters)
-> Value
-> Parser GetPaymentIntentsParameters
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"GetPaymentIntentsParameters" (\Object
obj -> ((((((Maybe GetPaymentIntentsParametersQueryCreated'Variants
 -> Maybe Text
 -> Maybe Text
 -> Maybe [Text]
 -> Maybe Int
 -> Maybe Text
 -> GetPaymentIntentsParameters)
-> Parser
     (Maybe GetPaymentIntentsParametersQueryCreated'Variants
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Text
      -> GetPaymentIntentsParameters)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe GetPaymentIntentsParametersQueryCreated'Variants
-> Maybe Text
-> Maybe Text
-> Maybe [Text]
-> Maybe Int
-> Maybe Text
-> GetPaymentIntentsParameters
GetPaymentIntentsParameters Parser
  (Maybe GetPaymentIntentsParametersQueryCreated'Variants
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Text
   -> GetPaymentIntentsParameters)
-> Parser (Maybe GetPaymentIntentsParametersQueryCreated'Variants)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Text
      -> GetPaymentIntentsParameters)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe GetPaymentIntentsParametersQueryCreated'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"queryCreated")) Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Text
   -> GetPaymentIntentsParameters)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Text
      -> GetPaymentIntentsParameters)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"queryCustomer")) Parser
  (Maybe Text
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Text
   -> GetPaymentIntentsParameters)
-> Parser (Maybe Text)
-> Parser
     (Maybe [Text]
      -> Maybe Int -> Maybe Text -> GetPaymentIntentsParameters)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"queryEnding_before")) Parser
  (Maybe [Text]
   -> Maybe Int -> Maybe Text -> GetPaymentIntentsParameters)
-> Parser (Maybe [Text])
-> Parser (Maybe Int -> Maybe Text -> GetPaymentIntentsParameters)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe [Text])
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"queryExpand")) Parser (Maybe Int -> Maybe Text -> GetPaymentIntentsParameters)
-> Parser (Maybe Int)
-> Parser (Maybe Text -> GetPaymentIntentsParameters)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"queryLimit")) Parser (Maybe Text -> GetPaymentIntentsParameters)
-> Parser (Maybe Text) -> Parser GetPaymentIntentsParameters
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"queryStarting_after"))

-- | Create a new 'GetPaymentIntentsParameters' with all required fields.
mkGetPaymentIntentsParameters :: GetPaymentIntentsParameters
mkGetPaymentIntentsParameters :: GetPaymentIntentsParameters
mkGetPaymentIntentsParameters =
  GetPaymentIntentsParameters :: Maybe GetPaymentIntentsParametersQueryCreated'Variants
-> Maybe Text
-> Maybe Text
-> Maybe [Text]
-> Maybe Int
-> Maybe Text
-> GetPaymentIntentsParameters
GetPaymentIntentsParameters
    { getPaymentIntentsParametersQueryCreated :: Maybe GetPaymentIntentsParametersQueryCreated'Variants
getPaymentIntentsParametersQueryCreated = Maybe GetPaymentIntentsParametersQueryCreated'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      getPaymentIntentsParametersQueryCustomer :: Maybe Text
getPaymentIntentsParametersQueryCustomer = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getPaymentIntentsParametersQueryEndingBefore :: Maybe Text
getPaymentIntentsParametersQueryEndingBefore = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getPaymentIntentsParametersQueryExpand :: Maybe [Text]
getPaymentIntentsParametersQueryExpand = Maybe [Text]
forall a. Maybe a
GHC.Maybe.Nothing,
      getPaymentIntentsParametersQueryLimit :: Maybe Int
getPaymentIntentsParametersQueryLimit = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      getPaymentIntentsParametersQueryStartingAfter :: Maybe Text
getPaymentIntentsParametersQueryStartingAfter = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @paths.\/v1\/payment_intents.GET.parameters.properties.queryCreated.anyOf@ in the specification.
data GetPaymentIntentsParametersQueryCreated'OneOf1 = GetPaymentIntentsParametersQueryCreated'OneOf1
  { -- | gt
    GetPaymentIntentsParametersQueryCreated'OneOf1 -> Maybe Int
getPaymentIntentsParametersQueryCreated'OneOf1Gt :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | gte
    GetPaymentIntentsParametersQueryCreated'OneOf1 -> Maybe Int
getPaymentIntentsParametersQueryCreated'OneOf1Gte :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | lt
    GetPaymentIntentsParametersQueryCreated'OneOf1 -> Maybe Int
getPaymentIntentsParametersQueryCreated'OneOf1Lt :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | lte
    GetPaymentIntentsParametersQueryCreated'OneOf1 -> Maybe Int
getPaymentIntentsParametersQueryCreated'OneOf1Lte :: (GHC.Maybe.Maybe GHC.Types.Int)
  }
  deriving
    ( Int -> GetPaymentIntentsParametersQueryCreated'OneOf1 -> ShowS
[GetPaymentIntentsParametersQueryCreated'OneOf1] -> ShowS
GetPaymentIntentsParametersQueryCreated'OneOf1 -> String
(Int -> GetPaymentIntentsParametersQueryCreated'OneOf1 -> ShowS)
-> (GetPaymentIntentsParametersQueryCreated'OneOf1 -> String)
-> ([GetPaymentIntentsParametersQueryCreated'OneOf1] -> ShowS)
-> Show GetPaymentIntentsParametersQueryCreated'OneOf1
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetPaymentIntentsParametersQueryCreated'OneOf1] -> ShowS
$cshowList :: [GetPaymentIntentsParametersQueryCreated'OneOf1] -> ShowS
show :: GetPaymentIntentsParametersQueryCreated'OneOf1 -> String
$cshow :: GetPaymentIntentsParametersQueryCreated'OneOf1 -> String
showsPrec :: Int -> GetPaymentIntentsParametersQueryCreated'OneOf1 -> ShowS
$cshowsPrec :: Int -> GetPaymentIntentsParametersQueryCreated'OneOf1 -> ShowS
GHC.Show.Show,
      GetPaymentIntentsParametersQueryCreated'OneOf1
-> GetPaymentIntentsParametersQueryCreated'OneOf1 -> Bool
(GetPaymentIntentsParametersQueryCreated'OneOf1
 -> GetPaymentIntentsParametersQueryCreated'OneOf1 -> Bool)
-> (GetPaymentIntentsParametersQueryCreated'OneOf1
    -> GetPaymentIntentsParametersQueryCreated'OneOf1 -> Bool)
-> Eq GetPaymentIntentsParametersQueryCreated'OneOf1
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetPaymentIntentsParametersQueryCreated'OneOf1
-> GetPaymentIntentsParametersQueryCreated'OneOf1 -> Bool
$c/= :: GetPaymentIntentsParametersQueryCreated'OneOf1
-> GetPaymentIntentsParametersQueryCreated'OneOf1 -> Bool
== :: GetPaymentIntentsParametersQueryCreated'OneOf1
-> GetPaymentIntentsParametersQueryCreated'OneOf1 -> Bool
$c== :: GetPaymentIntentsParametersQueryCreated'OneOf1
-> GetPaymentIntentsParametersQueryCreated'OneOf1 -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON GetPaymentIntentsParametersQueryCreated'OneOf1 where
  toJSON :: GetPaymentIntentsParametersQueryCreated'OneOf1 -> Value
toJSON GetPaymentIntentsParametersQueryCreated'OneOf1
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"gt" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsParametersQueryCreated'OneOf1 -> Maybe Int
getPaymentIntentsParametersQueryCreated'OneOf1Gt GetPaymentIntentsParametersQueryCreated'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"gte" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsParametersQueryCreated'OneOf1 -> Maybe Int
getPaymentIntentsParametersQueryCreated'OneOf1Gte GetPaymentIntentsParametersQueryCreated'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"lt" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsParametersQueryCreated'OneOf1 -> Maybe Int
getPaymentIntentsParametersQueryCreated'OneOf1Lt GetPaymentIntentsParametersQueryCreated'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"lte" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsParametersQueryCreated'OneOf1 -> Maybe Int
getPaymentIntentsParametersQueryCreated'OneOf1Lte GetPaymentIntentsParametersQueryCreated'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: GetPaymentIntentsParametersQueryCreated'OneOf1 -> Encoding
toEncoding GetPaymentIntentsParametersQueryCreated'OneOf1
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"gt" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsParametersQueryCreated'OneOf1 -> Maybe Int
getPaymentIntentsParametersQueryCreated'OneOf1Gt GetPaymentIntentsParametersQueryCreated'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"gte" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsParametersQueryCreated'OneOf1 -> Maybe Int
getPaymentIntentsParametersQueryCreated'OneOf1Gte GetPaymentIntentsParametersQueryCreated'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"lt" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsParametersQueryCreated'OneOf1 -> Maybe Int
getPaymentIntentsParametersQueryCreated'OneOf1Lt GetPaymentIntentsParametersQueryCreated'OneOf1
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"lte" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsParametersQueryCreated'OneOf1 -> Maybe Int
getPaymentIntentsParametersQueryCreated'OneOf1Lte GetPaymentIntentsParametersQueryCreated'OneOf1
obj))))

instance Data.Aeson.Types.FromJSON.FromJSON GetPaymentIntentsParametersQueryCreated'OneOf1 where
  parseJSON :: Value -> Parser GetPaymentIntentsParametersQueryCreated'OneOf1
parseJSON = String
-> (Object
    -> Parser GetPaymentIntentsParametersQueryCreated'OneOf1)
-> Value
-> Parser GetPaymentIntentsParametersQueryCreated'OneOf1
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"GetPaymentIntentsParametersQueryCreated'OneOf1" (\Object
obj -> ((((Maybe Int
 -> Maybe Int
 -> Maybe Int
 -> Maybe Int
 -> GetPaymentIntentsParametersQueryCreated'OneOf1)
-> Parser
     (Maybe Int
      -> Maybe Int
      -> Maybe Int
      -> Maybe Int
      -> GetPaymentIntentsParametersQueryCreated'OneOf1)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Int
-> Maybe Int
-> Maybe Int
-> Maybe Int
-> GetPaymentIntentsParametersQueryCreated'OneOf1
GetPaymentIntentsParametersQueryCreated'OneOf1 Parser
  (Maybe Int
   -> Maybe Int
   -> Maybe Int
   -> Maybe Int
   -> GetPaymentIntentsParametersQueryCreated'OneOf1)
-> Parser (Maybe Int)
-> Parser
     (Maybe Int
      -> Maybe Int
      -> Maybe Int
      -> GetPaymentIntentsParametersQueryCreated'OneOf1)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"gt")) Parser
  (Maybe Int
   -> Maybe Int
   -> Maybe Int
   -> GetPaymentIntentsParametersQueryCreated'OneOf1)
-> Parser (Maybe Int)
-> Parser
     (Maybe Int
      -> Maybe Int -> GetPaymentIntentsParametersQueryCreated'OneOf1)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"gte")) Parser
  (Maybe Int
   -> Maybe Int -> GetPaymentIntentsParametersQueryCreated'OneOf1)
-> Parser (Maybe Int)
-> Parser
     (Maybe Int -> GetPaymentIntentsParametersQueryCreated'OneOf1)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"lt")) Parser
  (Maybe Int -> GetPaymentIntentsParametersQueryCreated'OneOf1)
-> Parser (Maybe Int)
-> Parser GetPaymentIntentsParametersQueryCreated'OneOf1
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"lte"))

-- | Create a new 'GetPaymentIntentsParametersQueryCreated'OneOf1' with all required fields.
mkGetPaymentIntentsParametersQueryCreated'OneOf1 :: GetPaymentIntentsParametersQueryCreated'OneOf1
mkGetPaymentIntentsParametersQueryCreated'OneOf1 :: GetPaymentIntentsParametersQueryCreated'OneOf1
mkGetPaymentIntentsParametersQueryCreated'OneOf1 =
  GetPaymentIntentsParametersQueryCreated'OneOf1 :: Maybe Int
-> Maybe Int
-> Maybe Int
-> Maybe Int
-> GetPaymentIntentsParametersQueryCreated'OneOf1
GetPaymentIntentsParametersQueryCreated'OneOf1
    { getPaymentIntentsParametersQueryCreated'OneOf1Gt :: Maybe Int
getPaymentIntentsParametersQueryCreated'OneOf1Gt = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      getPaymentIntentsParametersQueryCreated'OneOf1Gte :: Maybe Int
getPaymentIntentsParametersQueryCreated'OneOf1Gte = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      getPaymentIntentsParametersQueryCreated'OneOf1Lt :: Maybe Int
getPaymentIntentsParametersQueryCreated'OneOf1Lt = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      getPaymentIntentsParametersQueryCreated'OneOf1Lte :: Maybe Int
getPaymentIntentsParametersQueryCreated'OneOf1Lte = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the oneOf schema located at @paths.\/v1\/payment_intents.GET.parameters.properties.queryCreated.anyOf@ in the specification.
--
-- Represents the parameter named \'created\'
--
-- A filter on the list, based on the object \`created\` field. The value can be a string with an integer Unix timestamp, or it can be a dictionary with a number of different query options.
data GetPaymentIntentsParametersQueryCreated'Variants
  = GetPaymentIntentsParametersQueryCreated'GetPaymentIntentsParametersQueryCreated'OneOf1 GetPaymentIntentsParametersQueryCreated'OneOf1
  | GetPaymentIntentsParametersQueryCreated'Int GHC.Types.Int
  deriving (Int -> GetPaymentIntentsParametersQueryCreated'Variants -> ShowS
[GetPaymentIntentsParametersQueryCreated'Variants] -> ShowS
GetPaymentIntentsParametersQueryCreated'Variants -> String
(Int -> GetPaymentIntentsParametersQueryCreated'Variants -> ShowS)
-> (GetPaymentIntentsParametersQueryCreated'Variants -> String)
-> ([GetPaymentIntentsParametersQueryCreated'Variants] -> ShowS)
-> Show GetPaymentIntentsParametersQueryCreated'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetPaymentIntentsParametersQueryCreated'Variants] -> ShowS
$cshowList :: [GetPaymentIntentsParametersQueryCreated'Variants] -> ShowS
show :: GetPaymentIntentsParametersQueryCreated'Variants -> String
$cshow :: GetPaymentIntentsParametersQueryCreated'Variants -> String
showsPrec :: Int -> GetPaymentIntentsParametersQueryCreated'Variants -> ShowS
$cshowsPrec :: Int -> GetPaymentIntentsParametersQueryCreated'Variants -> ShowS
GHC.Show.Show, GetPaymentIntentsParametersQueryCreated'Variants
-> GetPaymentIntentsParametersQueryCreated'Variants -> Bool
(GetPaymentIntentsParametersQueryCreated'Variants
 -> GetPaymentIntentsParametersQueryCreated'Variants -> Bool)
-> (GetPaymentIntentsParametersQueryCreated'Variants
    -> GetPaymentIntentsParametersQueryCreated'Variants -> Bool)
-> Eq GetPaymentIntentsParametersQueryCreated'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetPaymentIntentsParametersQueryCreated'Variants
-> GetPaymentIntentsParametersQueryCreated'Variants -> Bool
$c/= :: GetPaymentIntentsParametersQueryCreated'Variants
-> GetPaymentIntentsParametersQueryCreated'Variants -> Bool
== :: GetPaymentIntentsParametersQueryCreated'Variants
-> GetPaymentIntentsParametersQueryCreated'Variants -> Bool
$c== :: GetPaymentIntentsParametersQueryCreated'Variants
-> GetPaymentIntentsParametersQueryCreated'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON GetPaymentIntentsParametersQueryCreated'Variants where
  toJSON :: GetPaymentIntentsParametersQueryCreated'Variants -> Value
toJSON (GetPaymentIntentsParametersQueryCreated'GetPaymentIntentsParametersQueryCreated'OneOf1 GetPaymentIntentsParametersQueryCreated'OneOf1
a) = GetPaymentIntentsParametersQueryCreated'OneOf1 -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON GetPaymentIntentsParametersQueryCreated'OneOf1
a
  toJSON (GetPaymentIntentsParametersQueryCreated'Int Int
a) = Int -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Int
a

instance Data.Aeson.Types.FromJSON.FromJSON GetPaymentIntentsParametersQueryCreated'Variants where
  parseJSON :: Value -> Parser GetPaymentIntentsParametersQueryCreated'Variants
parseJSON Value
val = case (GetPaymentIntentsParametersQueryCreated'OneOf1
-> GetPaymentIntentsParametersQueryCreated'Variants
GetPaymentIntentsParametersQueryCreated'GetPaymentIntentsParametersQueryCreated'OneOf1 (GetPaymentIntentsParametersQueryCreated'OneOf1
 -> GetPaymentIntentsParametersQueryCreated'Variants)
-> Result GetPaymentIntentsParametersQueryCreated'OneOf1
-> Result GetPaymentIntentsParametersQueryCreated'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result GetPaymentIntentsParametersQueryCreated'OneOf1
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result GetPaymentIntentsParametersQueryCreated'Variants
-> Result GetPaymentIntentsParametersQueryCreated'Variants
-> Result GetPaymentIntentsParametersQueryCreated'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> ((Int -> GetPaymentIntentsParametersQueryCreated'Variants
GetPaymentIntentsParametersQueryCreated'Int (Int -> GetPaymentIntentsParametersQueryCreated'Variants)
-> Result Int
-> Result GetPaymentIntentsParametersQueryCreated'Variants
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> Value -> Result Int
forall a. FromJSON a => Value -> Result a
Data.Aeson.Types.FromJSON.fromJSON Value
val) Result GetPaymentIntentsParametersQueryCreated'Variants
-> Result GetPaymentIntentsParametersQueryCreated'Variants
-> Result GetPaymentIntentsParametersQueryCreated'Variants
forall (f :: * -> *) a. Alternative f => f a -> f a -> f a
GHC.Base.<|> String -> Result GetPaymentIntentsParametersQueryCreated'Variants
forall a. String -> Result a
Data.Aeson.Types.Internal.Error String
"No variant matched") of
    Data.Aeson.Types.Internal.Success GetPaymentIntentsParametersQueryCreated'Variants
a -> GetPaymentIntentsParametersQueryCreated'Variants
-> Parser GetPaymentIntentsParametersQueryCreated'Variants
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure GetPaymentIntentsParametersQueryCreated'Variants
a
    Data.Aeson.Types.Internal.Error String
a -> String -> Parser GetPaymentIntentsParametersQueryCreated'Variants
forall (m :: * -> *) a. MonadFail m => String -> m a
Control.Monad.Fail.fail String
a

-- | Represents a response of the operation 'getPaymentIntents'.
--
-- The response constructor is chosen by the status code of the response. If no case matches (no specific case for the response code, no range case, no default case), 'GetPaymentIntentsResponseError' is used.
data GetPaymentIntentsResponse
  = -- | Means either no matching case available or a parse error
    GetPaymentIntentsResponseError GHC.Base.String
  | -- | Successful response.
    GetPaymentIntentsResponse200 GetPaymentIntentsResponseBody200
  | -- | Error response.
    GetPaymentIntentsResponseDefault Error
  deriving (Int -> GetPaymentIntentsResponse -> ShowS
[GetPaymentIntentsResponse] -> ShowS
GetPaymentIntentsResponse -> String
(Int -> GetPaymentIntentsResponse -> ShowS)
-> (GetPaymentIntentsResponse -> String)
-> ([GetPaymentIntentsResponse] -> ShowS)
-> Show GetPaymentIntentsResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetPaymentIntentsResponse] -> ShowS
$cshowList :: [GetPaymentIntentsResponse] -> ShowS
show :: GetPaymentIntentsResponse -> String
$cshow :: GetPaymentIntentsResponse -> String
showsPrec :: Int -> GetPaymentIntentsResponse -> ShowS
$cshowsPrec :: Int -> GetPaymentIntentsResponse -> ShowS
GHC.Show.Show, GetPaymentIntentsResponse -> GetPaymentIntentsResponse -> Bool
(GetPaymentIntentsResponse -> GetPaymentIntentsResponse -> Bool)
-> (GetPaymentIntentsResponse -> GetPaymentIntentsResponse -> Bool)
-> Eq GetPaymentIntentsResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetPaymentIntentsResponse -> GetPaymentIntentsResponse -> Bool
$c/= :: GetPaymentIntentsResponse -> GetPaymentIntentsResponse -> Bool
== :: GetPaymentIntentsResponse -> GetPaymentIntentsResponse -> Bool
$c== :: GetPaymentIntentsResponse -> GetPaymentIntentsResponse -> Bool
GHC.Classes.Eq)

-- | Defines the object schema located at @paths.\/v1\/payment_intents.GET.responses.200.content.application\/json.schema@ in the specification.
data GetPaymentIntentsResponseBody200 = GetPaymentIntentsResponseBody200
  { -- | data
    GetPaymentIntentsResponseBody200 -> [PaymentIntent]
getPaymentIntentsResponseBody200Data :: ([PaymentIntent]),
    -- | has_more: True if this list has another page of items after this one that can be fetched.
    GetPaymentIntentsResponseBody200 -> Bool
getPaymentIntentsResponseBody200HasMore :: GHC.Types.Bool,
    -- | url: The URL where this list can be accessed.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    -- * Must match pattern \'^\/v1\/payment_intents\'
    GetPaymentIntentsResponseBody200 -> Text
getPaymentIntentsResponseBody200Url :: Data.Text.Internal.Text
  }
  deriving
    ( Int -> GetPaymentIntentsResponseBody200 -> ShowS
[GetPaymentIntentsResponseBody200] -> ShowS
GetPaymentIntentsResponseBody200 -> String
(Int -> GetPaymentIntentsResponseBody200 -> ShowS)
-> (GetPaymentIntentsResponseBody200 -> String)
-> ([GetPaymentIntentsResponseBody200] -> ShowS)
-> Show GetPaymentIntentsResponseBody200
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetPaymentIntentsResponseBody200] -> ShowS
$cshowList :: [GetPaymentIntentsResponseBody200] -> ShowS
show :: GetPaymentIntentsResponseBody200 -> String
$cshow :: GetPaymentIntentsResponseBody200 -> String
showsPrec :: Int -> GetPaymentIntentsResponseBody200 -> ShowS
$cshowsPrec :: Int -> GetPaymentIntentsResponseBody200 -> ShowS
GHC.Show.Show,
      GetPaymentIntentsResponseBody200
-> GetPaymentIntentsResponseBody200 -> Bool
(GetPaymentIntentsResponseBody200
 -> GetPaymentIntentsResponseBody200 -> Bool)
-> (GetPaymentIntentsResponseBody200
    -> GetPaymentIntentsResponseBody200 -> Bool)
-> Eq GetPaymentIntentsResponseBody200
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetPaymentIntentsResponseBody200
-> GetPaymentIntentsResponseBody200 -> Bool
$c/= :: GetPaymentIntentsResponseBody200
-> GetPaymentIntentsResponseBody200 -> Bool
== :: GetPaymentIntentsResponseBody200
-> GetPaymentIntentsResponseBody200 -> Bool
$c== :: GetPaymentIntentsResponseBody200
-> GetPaymentIntentsResponseBody200 -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON GetPaymentIntentsResponseBody200 where
  toJSON :: GetPaymentIntentsResponseBody200 -> Value
toJSON GetPaymentIntentsResponseBody200
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"data" Text -> [PaymentIntent] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsResponseBody200 -> [PaymentIntent]
getPaymentIntentsResponseBody200Data GetPaymentIntentsResponseBody200
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"has_more" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsResponseBody200 -> Bool
getPaymentIntentsResponseBody200HasMore GetPaymentIntentsResponseBody200
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"url" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsResponseBody200 -> Text
getPaymentIntentsResponseBody200Url GetPaymentIntentsResponseBody200
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"object" Text -> Value -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Text -> Value
Data.Aeson.Types.Internal.String Text
"list" Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: GetPaymentIntentsResponseBody200 -> Encoding
toEncoding GetPaymentIntentsResponseBody200
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"data" Text -> [PaymentIntent] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsResponseBody200 -> [PaymentIntent]
getPaymentIntentsResponseBody200Data GetPaymentIntentsResponseBody200
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"has_more" Text -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsResponseBody200 -> Bool
getPaymentIntentsResponseBody200HasMore GetPaymentIntentsResponseBody200
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"url" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetPaymentIntentsResponseBody200 -> Text
getPaymentIntentsResponseBody200Url GetPaymentIntentsResponseBody200
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"object" Text -> Value -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Text -> Value
Data.Aeson.Types.Internal.String Text
"list"))))

instance Data.Aeson.Types.FromJSON.FromJSON GetPaymentIntentsResponseBody200 where
  parseJSON :: Value -> Parser GetPaymentIntentsResponseBody200
parseJSON = String
-> (Object -> Parser GetPaymentIntentsResponseBody200)
-> Value
-> Parser GetPaymentIntentsResponseBody200
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"GetPaymentIntentsResponseBody200" (\Object
obj -> ((([PaymentIntent]
 -> Bool -> Text -> GetPaymentIntentsResponseBody200)
-> Parser
     ([PaymentIntent]
      -> Bool -> Text -> GetPaymentIntentsResponseBody200)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure [PaymentIntent] -> Bool -> Text -> GetPaymentIntentsResponseBody200
GetPaymentIntentsResponseBody200 Parser
  ([PaymentIntent]
   -> Bool -> Text -> GetPaymentIntentsResponseBody200)
-> Parser [PaymentIntent]
-> Parser (Bool -> Text -> GetPaymentIntentsResponseBody200)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser [PaymentIntent]
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"data")) Parser (Bool -> Text -> GetPaymentIntentsResponseBody200)
-> Parser Bool -> Parser (Text -> GetPaymentIntentsResponseBody200)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Bool
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"has_more")) Parser (Text -> GetPaymentIntentsResponseBody200)
-> Parser Text -> Parser GetPaymentIntentsResponseBody200
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Text
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"url"))

-- | Create a new 'GetPaymentIntentsResponseBody200' with all required fields.
mkGetPaymentIntentsResponseBody200 ::
  -- | 'getPaymentIntentsResponseBody200Data'
  [PaymentIntent] ->
  -- | 'getPaymentIntentsResponseBody200HasMore'
  GHC.Types.Bool ->
  -- | 'getPaymentIntentsResponseBody200Url'
  Data.Text.Internal.Text ->
  GetPaymentIntentsResponseBody200
mkGetPaymentIntentsResponseBody200 :: [PaymentIntent] -> Bool -> Text -> GetPaymentIntentsResponseBody200
mkGetPaymentIntentsResponseBody200 [PaymentIntent]
getPaymentIntentsResponseBody200Data Bool
getPaymentIntentsResponseBody200HasMore Text
getPaymentIntentsResponseBody200Url =
  GetPaymentIntentsResponseBody200 :: [PaymentIntent] -> Bool -> Text -> GetPaymentIntentsResponseBody200
GetPaymentIntentsResponseBody200
    { getPaymentIntentsResponseBody200Data :: [PaymentIntent]
getPaymentIntentsResponseBody200Data = [PaymentIntent]
getPaymentIntentsResponseBody200Data,
      getPaymentIntentsResponseBody200HasMore :: Bool
getPaymentIntentsResponseBody200HasMore = Bool
getPaymentIntentsResponseBody200HasMore,
      getPaymentIntentsResponseBody200Url :: Text
getPaymentIntentsResponseBody200Url = Text
getPaymentIntentsResponseBody200Url
    }