{-# 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 getProducts
module StripeAPI.Operations.GetProducts 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/products
--
-- \<p>Returns a list of your products. The products are returned sorted by creation date, with the most recently created products appearing first.\<\/p>
getProducts ::
  forall m.
  StripeAPI.Common.MonadHTTP m =>
  -- | Contains all available parameters of this operation (query and path parameters)
  GetProductsParameters ->
  -- | Monadic computation which returns the result of the operation
  StripeAPI.Common.StripeT m (Network.HTTP.Client.Types.Response GetProductsResponse)
getProducts :: GetProductsParameters -> StripeT m (Response GetProductsResponse)
getProducts GetProductsParameters
parameters =
  (Response ByteString -> Response GetProductsResponse)
-> StripeT m (Response ByteString)
-> StripeT m (Response GetProductsResponse)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
GHC.Base.fmap
    ( \Response ByteString
response_0 ->
        (ByteString -> GetProductsResponse)
-> Response ByteString -> Response GetProductsResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
GHC.Base.fmap
          ( (String -> GetProductsResponse)
-> (GetProductsResponse -> GetProductsResponse)
-> Either String GetProductsResponse
-> GetProductsResponse
forall a c b. (a -> c) -> (b -> c) -> Either a b -> c
Data.Either.either String -> GetProductsResponse
GetProductsResponseError GetProductsResponse -> GetProductsResponse
forall a. a -> a
GHC.Base.id
              (Either String GetProductsResponse -> GetProductsResponse)
-> (ByteString -> Either String GetProductsResponse)
-> ByteString
-> GetProductsResponse
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) ->
                                   GetProductsResponseBody200 -> GetProductsResponse
GetProductsResponse200
                                     (GetProductsResponseBody200 -> GetProductsResponse)
-> Either String GetProductsResponseBody200
-> Either String GetProductsResponse
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> ( ByteString -> Either String GetProductsResponseBody200
forall a. FromJSON a => ByteString -> Either String a
Data.Aeson.eitherDecodeStrict ByteString
body ::
                                                          Data.Either.Either
                                                            GHC.Base.String
                                                            GetProductsResponseBody200
                                                      )
                                 | 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 -> GetProductsResponse
GetProductsResponseDefault
                                     (Error -> GetProductsResponse)
-> Either String Error -> Either String GetProductsResponse
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 GetProductsResponse
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/products")
        [ Text -> Maybe Value -> Text -> Bool -> QueryParameter
StripeAPI.Common.QueryParameter (String -> Text
Data.Text.pack String
"active") (Bool -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON (Bool -> Value) -> Maybe Bool -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> GetProductsParameters -> Maybe Bool
getProductsParametersQueryActive GetProductsParameters
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
"created") (GetProductsParametersQueryCreated'Variants -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON (GetProductsParametersQueryCreated'Variants -> Value)
-> Maybe GetProductsParametersQueryCreated'Variants -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> GetProductsParameters
-> Maybe GetProductsParametersQueryCreated'Variants
getProductsParametersQueryCreated GetProductsParameters
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
"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.<$> GetProductsParameters -> Maybe Text
getProductsParametersQueryEndingBefore GetProductsParameters
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.<$> GetProductsParameters -> Maybe [Text]
getProductsParametersQueryExpand GetProductsParameters
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
"ids") ([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.<$> GetProductsParameters -> Maybe [Text]
getProductsParametersQueryIds GetProductsParameters
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.<$> GetProductsParameters -> Maybe Int
getProductsParametersQueryLimit GetProductsParameters
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
"shippable") (Bool -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON (Bool -> Value) -> Maybe Bool -> Maybe Value
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Data.Functor.<$> GetProductsParameters -> Maybe Bool
getProductsParametersQueryShippable GetProductsParameters
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.<$> GetProductsParameters -> Maybe Text
getProductsParametersQueryStartingAfter GetProductsParameters
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
"url") (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.<$> GetProductsParameters -> Maybe Text
getProductsParametersQueryUrl GetProductsParameters
parameters) (String -> Text
Data.Text.pack String
"form") Bool
GHC.Types.True
        ]
    )

-- | Defines the object schema located at @paths.\/v1\/products.GET.parameters@ in the specification.
data GetProductsParameters = GetProductsParameters
  { -- | queryActive: Represents the parameter named \'active\'
    --
    -- Only return products that are active or inactive (e.g., pass \`false\` to list all inactive products).
    GetProductsParameters -> Maybe Bool
getProductsParametersQueryActive :: (GHC.Maybe.Maybe GHC.Types.Bool),
    -- | queryCreated: Represents the parameter named \'created\'
    --
    -- Only return products that were created during the given date interval.
    GetProductsParameters
-> Maybe GetProductsParametersQueryCreated'Variants
getProductsParametersQueryCreated :: (GHC.Maybe.Maybe GetProductsParametersQueryCreated'Variants),
    -- | 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
    GetProductsParameters -> Maybe Text
getProductsParametersQueryEndingBefore :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | queryExpand: Represents the parameter named \'expand\'
    --
    -- Specifies which fields in the response should be expanded.
    GetProductsParameters -> Maybe [Text]
getProductsParametersQueryExpand :: (GHC.Maybe.Maybe ([Data.Text.Internal.Text])),
    -- | queryIds: Represents the parameter named \'ids\'
    --
    -- Only return products with the given IDs.
    GetProductsParameters -> Maybe [Text]
getProductsParametersQueryIds :: (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.
    GetProductsParameters -> Maybe Int
getProductsParametersQueryLimit :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | queryShippable: Represents the parameter named \'shippable\'
    --
    -- Only return products that can be shipped (i.e., physical, not digital products).
    GetProductsParameters -> Maybe Bool
getProductsParametersQueryShippable :: (GHC.Maybe.Maybe GHC.Types.Bool),
    -- | 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
    GetProductsParameters -> Maybe Text
getProductsParametersQueryStartingAfter :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | queryUrl: Represents the parameter named \'url\'
    --
    -- Only return products with the given url.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    GetProductsParameters -> Maybe Text
getProductsParametersQueryUrl :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> GetProductsParameters -> ShowS
[GetProductsParameters] -> ShowS
GetProductsParameters -> String
(Int -> GetProductsParameters -> ShowS)
-> (GetProductsParameters -> String)
-> ([GetProductsParameters] -> ShowS)
-> Show GetProductsParameters
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetProductsParameters] -> ShowS
$cshowList :: [GetProductsParameters] -> ShowS
show :: GetProductsParameters -> String
$cshow :: GetProductsParameters -> String
showsPrec :: Int -> GetProductsParameters -> ShowS
$cshowsPrec :: Int -> GetProductsParameters -> ShowS
GHC.Show.Show,
      GetProductsParameters -> GetProductsParameters -> Bool
(GetProductsParameters -> GetProductsParameters -> Bool)
-> (GetProductsParameters -> GetProductsParameters -> Bool)
-> Eq GetProductsParameters
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetProductsParameters -> GetProductsParameters -> Bool
$c/= :: GetProductsParameters -> GetProductsParameters -> Bool
== :: GetProductsParameters -> GetProductsParameters -> Bool
$c== :: GetProductsParameters -> GetProductsParameters -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON GetProductsParameters where
  toJSON :: GetProductsParameters -> Value
toJSON GetProductsParameters
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"queryActive" Text -> Maybe Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetProductsParameters -> Maybe Bool
getProductsParametersQueryActive GetProductsParameters
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"queryCreated" Text -> Maybe GetProductsParametersQueryCreated'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetProductsParameters
-> Maybe GetProductsParametersQueryCreated'Variants
getProductsParametersQueryCreated GetProductsParameters
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..= GetProductsParameters -> Maybe Text
getProductsParametersQueryEndingBefore GetProductsParameters
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..= GetProductsParameters -> Maybe [Text]
getProductsParametersQueryExpand GetProductsParameters
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"queryIds" Text -> Maybe [Text] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetProductsParameters -> Maybe [Text]
getProductsParametersQueryIds GetProductsParameters
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..= GetProductsParameters -> Maybe Int
getProductsParametersQueryLimit GetProductsParameters
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"queryShippable" Text -> Maybe Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetProductsParameters -> Maybe Bool
getProductsParametersQueryShippable GetProductsParameters
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..= GetProductsParameters -> Maybe Text
getProductsParametersQueryStartingAfter GetProductsParameters
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"queryUrl" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetProductsParameters -> Maybe Text
getProductsParametersQueryUrl GetProductsParameters
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: GetProductsParameters -> Encoding
toEncoding GetProductsParameters
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"queryActive" Text -> Maybe Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetProductsParameters -> Maybe Bool
getProductsParametersQueryActive GetProductsParameters
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"queryCreated" Text -> Maybe GetProductsParametersQueryCreated'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetProductsParameters
-> Maybe GetProductsParametersQueryCreated'Variants
getProductsParametersQueryCreated GetProductsParameters
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..= GetProductsParameters -> Maybe Text
getProductsParametersQueryEndingBefore GetProductsParameters
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..= GetProductsParameters -> Maybe [Text]
getProductsParametersQueryExpand GetProductsParameters
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"queryIds" Text -> Maybe [Text] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetProductsParameters -> Maybe [Text]
getProductsParametersQueryIds GetProductsParameters
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..= GetProductsParameters -> Maybe Int
getProductsParametersQueryLimit GetProductsParameters
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"queryShippable" Text -> Maybe Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetProductsParameters -> Maybe Bool
getProductsParametersQueryShippable GetProductsParameters
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..= GetProductsParameters -> Maybe Text
getProductsParametersQueryStartingAfter GetProductsParameters
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"queryUrl" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetProductsParameters -> Maybe Text
getProductsParametersQueryUrl GetProductsParameters
obj)))))))))

instance Data.Aeson.Types.FromJSON.FromJSON GetProductsParameters where
  parseJSON :: Value -> Parser GetProductsParameters
parseJSON = String
-> (Object -> Parser GetProductsParameters)
-> Value
-> Parser GetProductsParameters
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"GetProductsParameters" (\Object
obj -> (((((((((Maybe Bool
 -> Maybe GetProductsParametersQueryCreated'Variants
 -> Maybe Text
 -> Maybe [Text]
 -> Maybe [Text]
 -> Maybe Int
 -> Maybe Bool
 -> Maybe Text
 -> Maybe Text
 -> GetProductsParameters)
-> Parser
     (Maybe Bool
      -> Maybe GetProductsParametersQueryCreated'Variants
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> GetProductsParameters)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Bool
-> Maybe GetProductsParametersQueryCreated'Variants
-> Maybe Text
-> Maybe [Text]
-> Maybe [Text]
-> Maybe Int
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> GetProductsParameters
GetProductsParameters Parser
  (Maybe Bool
   -> Maybe GetProductsParametersQueryCreated'Variants
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> GetProductsParameters)
-> Parser (Maybe Bool)
-> Parser
     (Maybe GetProductsParametersQueryCreated'Variants
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> GetProductsParameters)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"queryActive")) Parser
  (Maybe GetProductsParametersQueryCreated'Variants
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> GetProductsParameters)
-> Parser (Maybe GetProductsParametersQueryCreated'Variants)
-> Parser
     (Maybe Text
      -> Maybe [Text]
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> GetProductsParameters)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object
-> Text
-> Parser (Maybe GetProductsParametersQueryCreated'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 Bool
   -> Maybe Text
   -> Maybe Text
   -> GetProductsParameters)
-> Parser (Maybe Text)
-> Parser
     (Maybe [Text]
      -> Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> GetProductsParameters)
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 [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> GetProductsParameters)
-> Parser (Maybe [Text])
-> Parser
     (Maybe [Text]
      -> Maybe Int
      -> Maybe Bool
      -> Maybe Text
      -> Maybe Text
      -> GetProductsParameters)
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 [Text]
   -> Maybe Int
   -> Maybe Bool
   -> Maybe Text
   -> Maybe Text
   -> GetProductsParameters)
-> Parser (Maybe [Text])
-> Parser
     (Maybe Int
      -> Maybe Bool -> Maybe Text -> Maybe Text -> GetProductsParameters)
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
"queryIds")) Parser
  (Maybe Int
   -> Maybe Bool -> Maybe Text -> Maybe Text -> GetProductsParameters)
-> Parser (Maybe Int)
-> Parser
     (Maybe Bool -> Maybe Text -> Maybe Text -> GetProductsParameters)
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 Bool -> Maybe Text -> Maybe Text -> GetProductsParameters)
-> Parser (Maybe Bool)
-> Parser (Maybe Text -> Maybe Text -> GetProductsParameters)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"queryShippable")) Parser (Maybe Text -> Maybe Text -> GetProductsParameters)
-> Parser (Maybe Text)
-> Parser (Maybe Text -> GetProductsParameters)
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")) Parser (Maybe Text -> GetProductsParameters)
-> Parser (Maybe Text) -> Parser GetProductsParameters
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
"queryUrl"))

-- | Create a new 'GetProductsParameters' with all required fields.
mkGetProductsParameters :: GetProductsParameters
mkGetProductsParameters :: GetProductsParameters
mkGetProductsParameters =
  GetProductsParameters :: Maybe Bool
-> Maybe GetProductsParametersQueryCreated'Variants
-> Maybe Text
-> Maybe [Text]
-> Maybe [Text]
-> Maybe Int
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> GetProductsParameters
GetProductsParameters
    { getProductsParametersQueryActive :: Maybe Bool
getProductsParametersQueryActive = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing,
      getProductsParametersQueryCreated :: Maybe GetProductsParametersQueryCreated'Variants
getProductsParametersQueryCreated = Maybe GetProductsParametersQueryCreated'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      getProductsParametersQueryEndingBefore :: Maybe Text
getProductsParametersQueryEndingBefore = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getProductsParametersQueryExpand :: Maybe [Text]
getProductsParametersQueryExpand = Maybe [Text]
forall a. Maybe a
GHC.Maybe.Nothing,
      getProductsParametersQueryIds :: Maybe [Text]
getProductsParametersQueryIds = Maybe [Text]
forall a. Maybe a
GHC.Maybe.Nothing,
      getProductsParametersQueryLimit :: Maybe Int
getProductsParametersQueryLimit = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      getProductsParametersQueryShippable :: Maybe Bool
getProductsParametersQueryShippable = Maybe Bool
forall a. Maybe a
GHC.Maybe.Nothing,
      getProductsParametersQueryStartingAfter :: Maybe Text
getProductsParametersQueryStartingAfter = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      getProductsParametersQueryUrl :: Maybe Text
getProductsParametersQueryUrl = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

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

instance Data.Aeson.Types.ToJSON.ToJSON GetProductsParametersQueryCreated'OneOf1 where
  toJSON :: GetProductsParametersQueryCreated'OneOf1 -> Value
toJSON GetProductsParametersQueryCreated'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..= GetProductsParametersQueryCreated'OneOf1 -> Maybe Int
getProductsParametersQueryCreated'OneOf1Gt GetProductsParametersQueryCreated'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..= GetProductsParametersQueryCreated'OneOf1 -> Maybe Int
getProductsParametersQueryCreated'OneOf1Gte GetProductsParametersQueryCreated'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..= GetProductsParametersQueryCreated'OneOf1 -> Maybe Int
getProductsParametersQueryCreated'OneOf1Lt GetProductsParametersQueryCreated'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..= GetProductsParametersQueryCreated'OneOf1 -> Maybe Int
getProductsParametersQueryCreated'OneOf1Lte GetProductsParametersQueryCreated'OneOf1
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: GetProductsParametersQueryCreated'OneOf1 -> Encoding
toEncoding GetProductsParametersQueryCreated'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..= GetProductsParametersQueryCreated'OneOf1 -> Maybe Int
getProductsParametersQueryCreated'OneOf1Gt GetProductsParametersQueryCreated'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..= GetProductsParametersQueryCreated'OneOf1 -> Maybe Int
getProductsParametersQueryCreated'OneOf1Gte GetProductsParametersQueryCreated'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..= GetProductsParametersQueryCreated'OneOf1 -> Maybe Int
getProductsParametersQueryCreated'OneOf1Lt GetProductsParametersQueryCreated'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..= GetProductsParametersQueryCreated'OneOf1 -> Maybe Int
getProductsParametersQueryCreated'OneOf1Lte GetProductsParametersQueryCreated'OneOf1
obj))))

instance Data.Aeson.Types.FromJSON.FromJSON GetProductsParametersQueryCreated'OneOf1 where
  parseJSON :: Value -> Parser GetProductsParametersQueryCreated'OneOf1
parseJSON = String
-> (Object -> Parser GetProductsParametersQueryCreated'OneOf1)
-> Value
-> Parser GetProductsParametersQueryCreated'OneOf1
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"GetProductsParametersQueryCreated'OneOf1" (\Object
obj -> ((((Maybe Int
 -> Maybe Int
 -> Maybe Int
 -> Maybe Int
 -> GetProductsParametersQueryCreated'OneOf1)
-> Parser
     (Maybe Int
      -> Maybe Int
      -> Maybe Int
      -> Maybe Int
      -> GetProductsParametersQueryCreated'OneOf1)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Int
-> Maybe Int
-> Maybe Int
-> Maybe Int
-> GetProductsParametersQueryCreated'OneOf1
GetProductsParametersQueryCreated'OneOf1 Parser
  (Maybe Int
   -> Maybe Int
   -> Maybe Int
   -> Maybe Int
   -> GetProductsParametersQueryCreated'OneOf1)
-> Parser (Maybe Int)
-> Parser
     (Maybe Int
      -> Maybe Int
      -> Maybe Int
      -> GetProductsParametersQueryCreated'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
   -> GetProductsParametersQueryCreated'OneOf1)
-> Parser (Maybe Int)
-> Parser
     (Maybe Int
      -> Maybe Int -> GetProductsParametersQueryCreated'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 -> GetProductsParametersQueryCreated'OneOf1)
-> Parser (Maybe Int)
-> Parser (Maybe Int -> GetProductsParametersQueryCreated'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 -> GetProductsParametersQueryCreated'OneOf1)
-> Parser (Maybe Int)
-> Parser GetProductsParametersQueryCreated'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 'GetProductsParametersQueryCreated'OneOf1' with all required fields.
mkGetProductsParametersQueryCreated'OneOf1 :: GetProductsParametersQueryCreated'OneOf1
mkGetProductsParametersQueryCreated'OneOf1 :: GetProductsParametersQueryCreated'OneOf1
mkGetProductsParametersQueryCreated'OneOf1 =
  GetProductsParametersQueryCreated'OneOf1 :: Maybe Int
-> Maybe Int
-> Maybe Int
-> Maybe Int
-> GetProductsParametersQueryCreated'OneOf1
GetProductsParametersQueryCreated'OneOf1
    { getProductsParametersQueryCreated'OneOf1Gt :: Maybe Int
getProductsParametersQueryCreated'OneOf1Gt = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      getProductsParametersQueryCreated'OneOf1Gte :: Maybe Int
getProductsParametersQueryCreated'OneOf1Gte = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      getProductsParametersQueryCreated'OneOf1Lt :: Maybe Int
getProductsParametersQueryCreated'OneOf1Lt = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      getProductsParametersQueryCreated'OneOf1Lte :: Maybe Int
getProductsParametersQueryCreated'OneOf1Lte = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the oneOf schema located at @paths.\/v1\/products.GET.parameters.properties.queryCreated.anyOf@ in the specification.
--
-- Represents the parameter named \'created\'
--
-- Only return products that were created during the given date interval.
data GetProductsParametersQueryCreated'Variants
  = GetProductsParametersQueryCreated'GetProductsParametersQueryCreated'OneOf1 GetProductsParametersQueryCreated'OneOf1
  | GetProductsParametersQueryCreated'Int GHC.Types.Int
  deriving (Int -> GetProductsParametersQueryCreated'Variants -> ShowS
[GetProductsParametersQueryCreated'Variants] -> ShowS
GetProductsParametersQueryCreated'Variants -> String
(Int -> GetProductsParametersQueryCreated'Variants -> ShowS)
-> (GetProductsParametersQueryCreated'Variants -> String)
-> ([GetProductsParametersQueryCreated'Variants] -> ShowS)
-> Show GetProductsParametersQueryCreated'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetProductsParametersQueryCreated'Variants] -> ShowS
$cshowList :: [GetProductsParametersQueryCreated'Variants] -> ShowS
show :: GetProductsParametersQueryCreated'Variants -> String
$cshow :: GetProductsParametersQueryCreated'Variants -> String
showsPrec :: Int -> GetProductsParametersQueryCreated'Variants -> ShowS
$cshowsPrec :: Int -> GetProductsParametersQueryCreated'Variants -> ShowS
GHC.Show.Show, GetProductsParametersQueryCreated'Variants
-> GetProductsParametersQueryCreated'Variants -> Bool
(GetProductsParametersQueryCreated'Variants
 -> GetProductsParametersQueryCreated'Variants -> Bool)
-> (GetProductsParametersQueryCreated'Variants
    -> GetProductsParametersQueryCreated'Variants -> Bool)
-> Eq GetProductsParametersQueryCreated'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetProductsParametersQueryCreated'Variants
-> GetProductsParametersQueryCreated'Variants -> Bool
$c/= :: GetProductsParametersQueryCreated'Variants
-> GetProductsParametersQueryCreated'Variants -> Bool
== :: GetProductsParametersQueryCreated'Variants
-> GetProductsParametersQueryCreated'Variants -> Bool
$c== :: GetProductsParametersQueryCreated'Variants
-> GetProductsParametersQueryCreated'Variants -> Bool
GHC.Classes.Eq)

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

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

-- | Represents a response of the operation 'getProducts'.
--
-- 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), 'GetProductsResponseError' is used.
data GetProductsResponse
  = -- | Means either no matching case available or a parse error
    GetProductsResponseError GHC.Base.String
  | -- | Successful response.
    GetProductsResponse200 GetProductsResponseBody200
  | -- | Error response.
    GetProductsResponseDefault Error
  deriving (Int -> GetProductsResponse -> ShowS
[GetProductsResponse] -> ShowS
GetProductsResponse -> String
(Int -> GetProductsResponse -> ShowS)
-> (GetProductsResponse -> String)
-> ([GetProductsResponse] -> ShowS)
-> Show GetProductsResponse
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GetProductsResponse] -> ShowS
$cshowList :: [GetProductsResponse] -> ShowS
show :: GetProductsResponse -> String
$cshow :: GetProductsResponse -> String
showsPrec :: Int -> GetProductsResponse -> ShowS
$cshowsPrec :: Int -> GetProductsResponse -> ShowS
GHC.Show.Show, GetProductsResponse -> GetProductsResponse -> Bool
(GetProductsResponse -> GetProductsResponse -> Bool)
-> (GetProductsResponse -> GetProductsResponse -> Bool)
-> Eq GetProductsResponse
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: GetProductsResponse -> GetProductsResponse -> Bool
$c/= :: GetProductsResponse -> GetProductsResponse -> Bool
== :: GetProductsResponse -> GetProductsResponse -> Bool
$c== :: GetProductsResponse -> GetProductsResponse -> Bool
GHC.Classes.Eq)

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

instance Data.Aeson.Types.ToJSON.ToJSON GetProductsResponseBody200 where
  toJSON :: GetProductsResponseBody200 -> Value
toJSON GetProductsResponseBody200
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"data" Text -> [Product] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetProductsResponseBody200 -> [Product]
getProductsResponseBody200Data GetProductsResponseBody200
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..= GetProductsResponseBody200 -> Bool
getProductsResponseBody200HasMore GetProductsResponseBody200
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..= GetProductsResponseBody200 -> Text
getProductsResponseBody200Url GetProductsResponseBody200
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 :: GetProductsResponseBody200 -> Encoding
toEncoding GetProductsResponseBody200
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"data" Text -> [Product] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= GetProductsResponseBody200 -> [Product]
getProductsResponseBody200Data GetProductsResponseBody200
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..= GetProductsResponseBody200 -> Bool
getProductsResponseBody200HasMore GetProductsResponseBody200
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..= GetProductsResponseBody200 -> Text
getProductsResponseBody200Url GetProductsResponseBody200
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 GetProductsResponseBody200 where
  parseJSON :: Value -> Parser GetProductsResponseBody200
parseJSON = String
-> (Object -> Parser GetProductsResponseBody200)
-> Value
-> Parser GetProductsResponseBody200
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"GetProductsResponseBody200" (\Object
obj -> ((([Product] -> Bool -> Text -> GetProductsResponseBody200)
-> Parser ([Product] -> Bool -> Text -> GetProductsResponseBody200)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure [Product] -> Bool -> Text -> GetProductsResponseBody200
GetProductsResponseBody200 Parser ([Product] -> Bool -> Text -> GetProductsResponseBody200)
-> Parser [Product]
-> Parser (Bool -> Text -> GetProductsResponseBody200)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser [Product]
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"data")) Parser (Bool -> Text -> GetProductsResponseBody200)
-> Parser Bool -> Parser (Text -> GetProductsResponseBody200)
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 -> GetProductsResponseBody200)
-> Parser Text -> Parser GetProductsResponseBody200
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 'GetProductsResponseBody200' with all required fields.
mkGetProductsResponseBody200 ::
  -- | 'getProductsResponseBody200Data'
  [Product] ->
  -- | 'getProductsResponseBody200HasMore'
  GHC.Types.Bool ->
  -- | 'getProductsResponseBody200Url'
  Data.Text.Internal.Text ->
  GetProductsResponseBody200
mkGetProductsResponseBody200 :: [Product] -> Bool -> Text -> GetProductsResponseBody200
mkGetProductsResponseBody200 [Product]
getProductsResponseBody200Data Bool
getProductsResponseBody200HasMore Text
getProductsResponseBody200Url =
  GetProductsResponseBody200 :: [Product] -> Bool -> Text -> GetProductsResponseBody200
GetProductsResponseBody200
    { getProductsResponseBody200Data :: [Product]
getProductsResponseBody200Data = [Product]
getProductsResponseBody200Data,
      getProductsResponseBody200HasMore :: Bool
getProductsResponseBody200HasMore = Bool
getProductsResponseBody200HasMore,
      getProductsResponseBody200Url :: Text
getProductsResponseBody200Url = Text
getProductsResponseBody200Url
    }