{-# 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 types generated from the schema Order
module StripeAPI.Types.Order where

import qualified Control.Monad.Fail
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.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 GHC.Base
import qualified GHC.Classes
import qualified GHC.Int
import qualified GHC.Show
import qualified GHC.Types
import qualified StripeAPI.Common
import StripeAPI.TypeAlias
import {-# SOURCE #-} StripeAPI.Types.Address
import {-# SOURCE #-} StripeAPI.Types.Charge
import {-# SOURCE #-} StripeAPI.Types.Customer
import {-# SOURCE #-} StripeAPI.Types.DeletedCustomer
import {-# SOURCE #-} StripeAPI.Types.OrderItem
import {-# SOURCE #-} StripeAPI.Types.OrderReturn
import {-# SOURCE #-} StripeAPI.Types.Shipping
import {-# SOURCE #-} StripeAPI.Types.ShippingMethod
import {-# SOURCE #-} StripeAPI.Types.StatusTransitions
import qualified Prelude as GHC.Integer.Type
import qualified Prelude as GHC.Maybe

-- | Defines the object schema located at @components.schemas.order@ in the specification.
--
-- Order objects are created to handle end customers\' purchases of previously
-- defined [products](https:\/\/stripe.com\/docs\/api\#products). You can create, retrieve, and pay individual orders, as well
-- as list all orders. Orders are identified by a unique, random ID.
--
-- Related guide: [Tax, Shipping, and Inventory](https:\/\/stripe.com\/docs\/orders).
data Order = Order
  { -- | amount: A positive integer in the smallest currency unit (that is, 100 cents for \$1.00, or 1 for ¥1, Japanese Yen being a zero-decimal currency) representing the total amount for the order.
    Order -> Int
orderAmount :: GHC.Types.Int,
    -- | amount_returned: The total amount that was returned to the customer.
    Order -> Maybe Int
orderAmountReturned :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | application: ID of the Connect Application that created the order.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Order -> Maybe Text
orderApplication :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | application_fee: A fee in cents that will be applied to the order and transferred to the application owner’s Stripe account. The request must be made with an OAuth key or the Stripe-Account header in order to take an application fee. For more information, see the application fees documentation.
    Order -> Maybe Int
orderApplicationFee :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | charge: The ID of the payment used to pay for the order. Present if the order status is \`paid\`, \`fulfilled\`, or \`refunded\`.
    Order -> Maybe OrderCharge'Variants
orderCharge :: (GHC.Maybe.Maybe OrderCharge'Variants),
    -- | created: Time at which the object was created. Measured in seconds since the Unix epoch.
    Order -> Int
orderCreated :: GHC.Types.Int,
    -- | currency: Three-letter [ISO currency code](https:\/\/www.iso.org\/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https:\/\/stripe.com\/docs\/currencies).
    Order -> Text
orderCurrency :: Data.Text.Internal.Text,
    -- | customer: The customer used for the order.
    Order -> Maybe OrderCustomer'Variants
orderCustomer :: (GHC.Maybe.Maybe OrderCustomer'Variants),
    -- | email: The email address of the customer placing the order.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Order -> Maybe Text
orderEmail :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | external_coupon_code: External coupon code to load for this order.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Order -> Maybe Text
orderExternalCouponCode :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | id: Unique identifier for the object.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Order -> Text
orderId :: Data.Text.Internal.Text,
    -- | items: List of items constituting the order. An order can have up to 25 items.
    Order -> [OrderItem]
orderItems :: ([OrderItem]),
    -- | livemode: Has the value \`true\` if the object exists in live mode or the value \`false\` if the object exists in test mode.
    Order -> Bool
orderLivemode :: GHC.Types.Bool,
    -- | metadata: Set of [key-value pairs](https:\/\/stripe.com\/docs\/api\/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
    Order -> Maybe Object
orderMetadata :: (GHC.Maybe.Maybe Data.Aeson.Types.Internal.Object),
    -- | returns: A list of returns that have taken place for this order.
    Order -> Maybe OrderReturns'
orderReturns :: (GHC.Maybe.Maybe OrderReturns'),
    -- | selected_shipping_method: The shipping method that is currently selected for this order, if any. If present, it is equal to one of the \`id\`s of shipping methods in the \`shipping_methods\` array. At order creation time, if there are multiple shipping methods, Stripe will automatically selected the first method.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Order -> Maybe Text
orderSelectedShippingMethod :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | shipping: The shipping address for the order. Present if the order is for goods to be shipped.
    Order -> Maybe OrderShipping'
orderShipping :: (GHC.Maybe.Maybe OrderShipping'),
    -- | shipping_methods: A list of supported shipping methods for this order. The desired shipping method can be specified either by updating the order, or when paying it.
    Order -> Maybe [ShippingMethod]
orderShippingMethods :: (GHC.Maybe.Maybe ([ShippingMethod])),
    -- | status: Current order status. One of \`created\`, \`paid\`, \`canceled\`, \`fulfilled\`, or \`returned\`. More details in the [Orders Guide](https:\/\/stripe.com\/docs\/orders\/guide\#understanding-order-statuses).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Order -> Text
orderStatus :: Data.Text.Internal.Text,
    -- | status_transitions: The timestamps at which the order status was updated.
    Order -> Maybe OrderStatusTransitions'
orderStatusTransitions :: (GHC.Maybe.Maybe OrderStatusTransitions'),
    -- | updated: Time at which the object was last updated. Measured in seconds since the Unix epoch.
    Order -> Maybe Int
orderUpdated :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | upstream_id: The user\'s order ID if it is different from the Stripe order ID.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    Order -> Maybe Text
orderUpstreamId :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> Order -> ShowS
[Order] -> ShowS
Order -> String
(Int -> Order -> ShowS)
-> (Order -> String) -> ([Order] -> ShowS) -> Show Order
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Order] -> ShowS
$cshowList :: [Order] -> ShowS
show :: Order -> String
$cshow :: Order -> String
showsPrec :: Int -> Order -> ShowS
$cshowsPrec :: Int -> Order -> ShowS
GHC.Show.Show,
      Order -> Order -> Bool
(Order -> Order -> Bool) -> (Order -> Order -> Bool) -> Eq Order
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Order -> Order -> Bool
$c/= :: Order -> Order -> Bool
== :: Order -> Order -> Bool
$c== :: Order -> Order -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON Order where
  toJSON :: Order -> Value
toJSON Order
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"amount" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Int
orderAmount Order
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"amount_returned" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe Int
orderAmountReturned Order
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"application" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe Text
orderApplication Order
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"application_fee" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe Int
orderApplicationFee Order
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"charge" Text -> Maybe OrderCharge'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe OrderCharge'Variants
orderCharge Order
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"created" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Int
orderCreated Order
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"currency" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Text
orderCurrency Order
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"customer" Text -> Maybe OrderCustomer'Variants -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe OrderCustomer'Variants
orderCustomer Order
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"email" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe Text
orderEmail Order
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"external_coupon_code" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe Text
orderExternalCouponCode Order
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"id" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Text
orderId Order
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"items" Text -> [OrderItem] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> [OrderItem]
orderItems Order
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"livemode" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Bool
orderLivemode Order
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"metadata" Text -> Maybe Object -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe Object
orderMetadata Order
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"returns" Text -> Maybe OrderReturns' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe OrderReturns'
orderReturns Order
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"selected_shipping_method" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe Text
orderSelectedShippingMethod Order
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"shipping" Text -> Maybe OrderShipping' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe OrderShipping'
orderShipping Order
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"shipping_methods" Text -> Maybe [ShippingMethod] -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe [ShippingMethod]
orderShippingMethods Order
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"status" Text -> Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Text
orderStatus Order
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"status_transitions" Text -> Maybe OrderStatusTransitions' -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe OrderStatusTransitions'
orderStatusTransitions Order
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"updated" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe Int
orderUpdated Order
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"upstream_id" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe Text
orderUpstreamId Order
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
"order" Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: Order -> Encoding
toEncoding Order
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"amount" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Int
orderAmount Order
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"amount_returned" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe Int
orderAmountReturned Order
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"application" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe Text
orderApplication Order
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"application_fee" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe Int
orderApplicationFee Order
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"charge" Text -> Maybe OrderCharge'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe OrderCharge'Variants
orderCharge Order
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"created" Text -> Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Int
orderCreated Order
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"currency" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Text
orderCurrency Order
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"customer" Text -> Maybe OrderCustomer'Variants -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe OrderCustomer'Variants
orderCustomer Order
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"email" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe Text
orderEmail Order
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"external_coupon_code" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe Text
orderExternalCouponCode Order
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"id" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Text
orderId Order
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"items" Text -> [OrderItem] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> [OrderItem]
orderItems Order
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"livemode" Text -> Bool -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Bool
orderLivemode Order
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"metadata" Text -> Maybe Object -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe Object
orderMetadata Order
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"returns" Text -> Maybe OrderReturns' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe OrderReturns'
orderReturns Order
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"selected_shipping_method" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe Text
orderSelectedShippingMethod Order
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"shipping" Text -> Maybe OrderShipping' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe OrderShipping'
orderShipping Order
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"shipping_methods" Text -> Maybe [ShippingMethod] -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe [ShippingMethod]
orderShippingMethods Order
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"status" Text -> Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Text
orderStatus Order
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"status_transitions" Text -> Maybe OrderStatusTransitions' -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe OrderStatusTransitions'
orderStatusTransitions Order
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"updated" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe Int
orderUpdated Order
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"upstream_id" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= Order -> Maybe Text
orderUpstreamId Order
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
"order")))))))))))))))))))))))

instance Data.Aeson.Types.FromJSON.FromJSON Order where
  parseJSON :: Value -> Parser Order
parseJSON = String -> (Object -> Parser Order) -> Value -> Parser Order
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"Order" (\Object
obj -> ((((((((((((((((((((((Int
 -> Maybe Int
 -> Maybe Text
 -> Maybe Int
 -> Maybe OrderCharge'Variants
 -> Int
 -> Text
 -> Maybe OrderCustomer'Variants
 -> Maybe Text
 -> Maybe Text
 -> Text
 -> [OrderItem]
 -> Bool
 -> Maybe Object
 -> Maybe OrderReturns'
 -> Maybe Text
 -> Maybe OrderShipping'
 -> Maybe [ShippingMethod]
 -> Text
 -> Maybe OrderStatusTransitions'
 -> Maybe Int
 -> Maybe Text
 -> Order)
-> Parser
     (Int
      -> Maybe Int
      -> Maybe Text
      -> Maybe Int
      -> Maybe OrderCharge'Variants
      -> Int
      -> Text
      -> Maybe OrderCustomer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> [OrderItem]
      -> Bool
      -> Maybe Object
      -> Maybe OrderReturns'
      -> Maybe Text
      -> Maybe OrderShipping'
      -> Maybe [ShippingMethod]
      -> Text
      -> Maybe OrderStatusTransitions'
      -> Maybe Int
      -> Maybe Text
      -> Order)
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Int
-> Maybe Int
-> Maybe Text
-> Maybe Int
-> Maybe OrderCharge'Variants
-> Int
-> Text
-> Maybe OrderCustomer'Variants
-> Maybe Text
-> Maybe Text
-> Text
-> [OrderItem]
-> Bool
-> Maybe Object
-> Maybe OrderReturns'
-> Maybe Text
-> Maybe OrderShipping'
-> Maybe [ShippingMethod]
-> Text
-> Maybe OrderStatusTransitions'
-> Maybe Int
-> Maybe Text
-> Order
Order Parser
  (Int
   -> Maybe Int
   -> Maybe Text
   -> Maybe Int
   -> Maybe OrderCharge'Variants
   -> Int
   -> Text
   -> Maybe OrderCustomer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> [OrderItem]
   -> Bool
   -> Maybe Object
   -> Maybe OrderReturns'
   -> Maybe Text
   -> Maybe OrderShipping'
   -> Maybe [ShippingMethod]
   -> Text
   -> Maybe OrderStatusTransitions'
   -> Maybe Int
   -> Maybe Text
   -> Order)
-> Parser Int
-> Parser
     (Maybe Int
      -> Maybe Text
      -> Maybe Int
      -> Maybe OrderCharge'Variants
      -> Int
      -> Text
      -> Maybe OrderCustomer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> [OrderItem]
      -> Bool
      -> Maybe Object
      -> Maybe OrderReturns'
      -> Maybe Text
      -> Maybe OrderShipping'
      -> Maybe [ShippingMethod]
      -> Text
      -> Maybe OrderStatusTransitions'
      -> Maybe Int
      -> Maybe Text
      -> Order)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Int
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"amount")) Parser
  (Maybe Int
   -> Maybe Text
   -> Maybe Int
   -> Maybe OrderCharge'Variants
   -> Int
   -> Text
   -> Maybe OrderCustomer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> [OrderItem]
   -> Bool
   -> Maybe Object
   -> Maybe OrderReturns'
   -> Maybe Text
   -> Maybe OrderShipping'
   -> Maybe [ShippingMethod]
   -> Text
   -> Maybe OrderStatusTransitions'
   -> Maybe Int
   -> Maybe Text
   -> Order)
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> Maybe Int
      -> Maybe OrderCharge'Variants
      -> Int
      -> Text
      -> Maybe OrderCustomer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> [OrderItem]
      -> Bool
      -> Maybe Object
      -> Maybe OrderReturns'
      -> Maybe Text
      -> Maybe OrderShipping'
      -> Maybe [ShippingMethod]
      -> Text
      -> Maybe OrderStatusTransitions'
      -> Maybe Int
      -> Maybe Text
      -> Order)
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
"amount_returned")) Parser
  (Maybe Text
   -> Maybe Int
   -> Maybe OrderCharge'Variants
   -> Int
   -> Text
   -> Maybe OrderCustomer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> [OrderItem]
   -> Bool
   -> Maybe Object
   -> Maybe OrderReturns'
   -> Maybe Text
   -> Maybe OrderShipping'
   -> Maybe [ShippingMethod]
   -> Text
   -> Maybe OrderStatusTransitions'
   -> Maybe Int
   -> Maybe Text
   -> Order)
-> Parser (Maybe Text)
-> Parser
     (Maybe Int
      -> Maybe OrderCharge'Variants
      -> Int
      -> Text
      -> Maybe OrderCustomer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> [OrderItem]
      -> Bool
      -> Maybe Object
      -> Maybe OrderReturns'
      -> Maybe Text
      -> Maybe OrderShipping'
      -> Maybe [ShippingMethod]
      -> Text
      -> Maybe OrderStatusTransitions'
      -> Maybe Int
      -> Maybe Text
      -> Order)
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
"application")) Parser
  (Maybe Int
   -> Maybe OrderCharge'Variants
   -> Int
   -> Text
   -> Maybe OrderCustomer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> [OrderItem]
   -> Bool
   -> Maybe Object
   -> Maybe OrderReturns'
   -> Maybe Text
   -> Maybe OrderShipping'
   -> Maybe [ShippingMethod]
   -> Text
   -> Maybe OrderStatusTransitions'
   -> Maybe Int
   -> Maybe Text
   -> Order)
-> Parser (Maybe Int)
-> Parser
     (Maybe OrderCharge'Variants
      -> Int
      -> Text
      -> Maybe OrderCustomer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> [OrderItem]
      -> Bool
      -> Maybe Object
      -> Maybe OrderReturns'
      -> Maybe Text
      -> Maybe OrderShipping'
      -> Maybe [ShippingMethod]
      -> Text
      -> Maybe OrderStatusTransitions'
      -> Maybe Int
      -> Maybe Text
      -> Order)
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
"application_fee")) Parser
  (Maybe OrderCharge'Variants
   -> Int
   -> Text
   -> Maybe OrderCustomer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> [OrderItem]
   -> Bool
   -> Maybe Object
   -> Maybe OrderReturns'
   -> Maybe Text
   -> Maybe OrderShipping'
   -> Maybe [ShippingMethod]
   -> Text
   -> Maybe OrderStatusTransitions'
   -> Maybe Int
   -> Maybe Text
   -> Order)
-> Parser (Maybe OrderCharge'Variants)
-> Parser
     (Int
      -> Text
      -> Maybe OrderCustomer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> [OrderItem]
      -> Bool
      -> Maybe Object
      -> Maybe OrderReturns'
      -> Maybe Text
      -> Maybe OrderShipping'
      -> Maybe [ShippingMethod]
      -> Text
      -> Maybe OrderStatusTransitions'
      -> Maybe Int
      -> Maybe Text
      -> Order)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe OrderCharge'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"charge")) Parser
  (Int
   -> Text
   -> Maybe OrderCustomer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> [OrderItem]
   -> Bool
   -> Maybe Object
   -> Maybe OrderReturns'
   -> Maybe Text
   -> Maybe OrderShipping'
   -> Maybe [ShippingMethod]
   -> Text
   -> Maybe OrderStatusTransitions'
   -> Maybe Int
   -> Maybe Text
   -> Order)
-> Parser Int
-> Parser
     (Text
      -> Maybe OrderCustomer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> [OrderItem]
      -> Bool
      -> Maybe Object
      -> Maybe OrderReturns'
      -> Maybe Text
      -> Maybe OrderShipping'
      -> Maybe [ShippingMethod]
      -> Text
      -> Maybe OrderStatusTransitions'
      -> Maybe Int
      -> Maybe Text
      -> Order)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser Int
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"created")) Parser
  (Text
   -> Maybe OrderCustomer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> [OrderItem]
   -> Bool
   -> Maybe Object
   -> Maybe OrderReturns'
   -> Maybe Text
   -> Maybe OrderShipping'
   -> Maybe [ShippingMethod]
   -> Text
   -> Maybe OrderStatusTransitions'
   -> Maybe Int
   -> Maybe Text
   -> Order)
-> Parser Text
-> Parser
     (Maybe OrderCustomer'Variants
      -> Maybe Text
      -> Maybe Text
      -> Text
      -> [OrderItem]
      -> Bool
      -> Maybe Object
      -> Maybe OrderReturns'
      -> Maybe Text
      -> Maybe OrderShipping'
      -> Maybe [ShippingMethod]
      -> Text
      -> Maybe OrderStatusTransitions'
      -> Maybe Int
      -> Maybe Text
      -> Order)
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
"currency")) Parser
  (Maybe OrderCustomer'Variants
   -> Maybe Text
   -> Maybe Text
   -> Text
   -> [OrderItem]
   -> Bool
   -> Maybe Object
   -> Maybe OrderReturns'
   -> Maybe Text
   -> Maybe OrderShipping'
   -> Maybe [ShippingMethod]
   -> Text
   -> Maybe OrderStatusTransitions'
   -> Maybe Int
   -> Maybe Text
   -> Order)
-> Parser (Maybe OrderCustomer'Variants)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Text
      -> [OrderItem]
      -> Bool
      -> Maybe Object
      -> Maybe OrderReturns'
      -> Maybe Text
      -> Maybe OrderShipping'
      -> Maybe [ShippingMethod]
      -> Text
      -> Maybe OrderStatusTransitions'
      -> Maybe Int
      -> Maybe Text
      -> Order)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe OrderCustomer'Variants)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"customer")) Parser
  (Maybe Text
   -> Maybe Text
   -> Text
   -> [OrderItem]
   -> Bool
   -> Maybe Object
   -> Maybe OrderReturns'
   -> Maybe Text
   -> Maybe OrderShipping'
   -> Maybe [ShippingMethod]
   -> Text
   -> Maybe OrderStatusTransitions'
   -> Maybe Int
   -> Maybe Text
   -> Order)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Text
      -> [OrderItem]
      -> Bool
      -> Maybe Object
      -> Maybe OrderReturns'
      -> Maybe Text
      -> Maybe OrderShipping'
      -> Maybe [ShippingMethod]
      -> Text
      -> Maybe OrderStatusTransitions'
      -> Maybe Int
      -> Maybe Text
      -> Order)
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
"email")) Parser
  (Maybe Text
   -> Text
   -> [OrderItem]
   -> Bool
   -> Maybe Object
   -> Maybe OrderReturns'
   -> Maybe Text
   -> Maybe OrderShipping'
   -> Maybe [ShippingMethod]
   -> Text
   -> Maybe OrderStatusTransitions'
   -> Maybe Int
   -> Maybe Text
   -> Order)
-> Parser (Maybe Text)
-> Parser
     (Text
      -> [OrderItem]
      -> Bool
      -> Maybe Object
      -> Maybe OrderReturns'
      -> Maybe Text
      -> Maybe OrderShipping'
      -> Maybe [ShippingMethod]
      -> Text
      -> Maybe OrderStatusTransitions'
      -> Maybe Int
      -> Maybe Text
      -> Order)
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
"external_coupon_code")) Parser
  (Text
   -> [OrderItem]
   -> Bool
   -> Maybe Object
   -> Maybe OrderReturns'
   -> Maybe Text
   -> Maybe OrderShipping'
   -> Maybe [ShippingMethod]
   -> Text
   -> Maybe OrderStatusTransitions'
   -> Maybe Int
   -> Maybe Text
   -> Order)
-> Parser Text
-> Parser
     ([OrderItem]
      -> Bool
      -> Maybe Object
      -> Maybe OrderReturns'
      -> Maybe Text
      -> Maybe OrderShipping'
      -> Maybe [ShippingMethod]
      -> Text
      -> Maybe OrderStatusTransitions'
      -> Maybe Int
      -> Maybe Text
      -> Order)
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
"id")) Parser
  ([OrderItem]
   -> Bool
   -> Maybe Object
   -> Maybe OrderReturns'
   -> Maybe Text
   -> Maybe OrderShipping'
   -> Maybe [ShippingMethod]
   -> Text
   -> Maybe OrderStatusTransitions'
   -> Maybe Int
   -> Maybe Text
   -> Order)
-> Parser [OrderItem]
-> Parser
     (Bool
      -> Maybe Object
      -> Maybe OrderReturns'
      -> Maybe Text
      -> Maybe OrderShipping'
      -> Maybe [ShippingMethod]
      -> Text
      -> Maybe OrderStatusTransitions'
      -> Maybe Int
      -> Maybe Text
      -> Order)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser [OrderItem]
forall a. FromJSON a => Object -> Text -> Parser a
Data.Aeson.Types.FromJSON..: Text
"items")) Parser
  (Bool
   -> Maybe Object
   -> Maybe OrderReturns'
   -> Maybe Text
   -> Maybe OrderShipping'
   -> Maybe [ShippingMethod]
   -> Text
   -> Maybe OrderStatusTransitions'
   -> Maybe Int
   -> Maybe Text
   -> Order)
-> Parser Bool
-> Parser
     (Maybe Object
      -> Maybe OrderReturns'
      -> Maybe Text
      -> Maybe OrderShipping'
      -> Maybe [ShippingMethod]
      -> Text
      -> Maybe OrderStatusTransitions'
      -> Maybe Int
      -> Maybe Text
      -> Order)
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
"livemode")) Parser
  (Maybe Object
   -> Maybe OrderReturns'
   -> Maybe Text
   -> Maybe OrderShipping'
   -> Maybe [ShippingMethod]
   -> Text
   -> Maybe OrderStatusTransitions'
   -> Maybe Int
   -> Maybe Text
   -> Order)
-> Parser (Maybe Object)
-> Parser
     (Maybe OrderReturns'
      -> Maybe Text
      -> Maybe OrderShipping'
      -> Maybe [ShippingMethod]
      -> Text
      -> Maybe OrderStatusTransitions'
      -> Maybe Int
      -> Maybe Text
      -> Order)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Object)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"metadata")) Parser
  (Maybe OrderReturns'
   -> Maybe Text
   -> Maybe OrderShipping'
   -> Maybe [ShippingMethod]
   -> Text
   -> Maybe OrderStatusTransitions'
   -> Maybe Int
   -> Maybe Text
   -> Order)
-> Parser (Maybe OrderReturns')
-> Parser
     (Maybe Text
      -> Maybe OrderShipping'
      -> Maybe [ShippingMethod]
      -> Text
      -> Maybe OrderStatusTransitions'
      -> Maybe Int
      -> Maybe Text
      -> Order)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe OrderReturns')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"returns")) Parser
  (Maybe Text
   -> Maybe OrderShipping'
   -> Maybe [ShippingMethod]
   -> Text
   -> Maybe OrderStatusTransitions'
   -> Maybe Int
   -> Maybe Text
   -> Order)
-> Parser (Maybe Text)
-> Parser
     (Maybe OrderShipping'
      -> Maybe [ShippingMethod]
      -> Text
      -> Maybe OrderStatusTransitions'
      -> Maybe Int
      -> Maybe Text
      -> Order)
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
"selected_shipping_method")) Parser
  (Maybe OrderShipping'
   -> Maybe [ShippingMethod]
   -> Text
   -> Maybe OrderStatusTransitions'
   -> Maybe Int
   -> Maybe Text
   -> Order)
-> Parser (Maybe OrderShipping')
-> Parser
     (Maybe [ShippingMethod]
      -> Text
      -> Maybe OrderStatusTransitions'
      -> Maybe Int
      -> Maybe Text
      -> Order)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe OrderShipping')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"shipping")) Parser
  (Maybe [ShippingMethod]
   -> Text
   -> Maybe OrderStatusTransitions'
   -> Maybe Int
   -> Maybe Text
   -> Order)
-> Parser (Maybe [ShippingMethod])
-> Parser
     (Text
      -> Maybe OrderStatusTransitions'
      -> Maybe Int
      -> Maybe Text
      -> Order)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe [ShippingMethod])
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"shipping_methods")) Parser
  (Text
   -> Maybe OrderStatusTransitions'
   -> Maybe Int
   -> Maybe Text
   -> Order)
-> Parser Text
-> Parser
     (Maybe OrderStatusTransitions' -> Maybe Int -> Maybe Text -> Order)
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
"status")) Parser
  (Maybe OrderStatusTransitions' -> Maybe Int -> Maybe Text -> Order)
-> Parser (Maybe OrderStatusTransitions')
-> Parser (Maybe Int -> Maybe Text -> Order)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe OrderStatusTransitions')
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"status_transitions")) Parser (Maybe Int -> Maybe Text -> Order)
-> Parser (Maybe Int) -> Parser (Maybe Text -> Order)
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
"updated")) Parser (Maybe Text -> Order) -> Parser (Maybe Text) -> Parser Order
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
"upstream_id"))

-- | Create a new 'Order' with all required fields.
mkOrder ::
  -- | 'orderAmount'
  GHC.Types.Int ->
  -- | 'orderCreated'
  GHC.Types.Int ->
  -- | 'orderCurrency'
  Data.Text.Internal.Text ->
  -- | 'orderId'
  Data.Text.Internal.Text ->
  -- | 'orderItems'
  [OrderItem] ->
  -- | 'orderLivemode'
  GHC.Types.Bool ->
  -- | 'orderStatus'
  Data.Text.Internal.Text ->
  Order
mkOrder :: Int -> Int -> Text -> Text -> [OrderItem] -> Bool -> Text -> Order
mkOrder Int
orderAmount Int
orderCreated Text
orderCurrency Text
orderId [OrderItem]
orderItems Bool
orderLivemode Text
orderStatus =
  Order :: Int
-> Maybe Int
-> Maybe Text
-> Maybe Int
-> Maybe OrderCharge'Variants
-> Int
-> Text
-> Maybe OrderCustomer'Variants
-> Maybe Text
-> Maybe Text
-> Text
-> [OrderItem]
-> Bool
-> Maybe Object
-> Maybe OrderReturns'
-> Maybe Text
-> Maybe OrderShipping'
-> Maybe [ShippingMethod]
-> Text
-> Maybe OrderStatusTransitions'
-> Maybe Int
-> Maybe Text
-> Order
Order
    { orderAmount :: Int
orderAmount = Int
orderAmount,
      orderAmountReturned :: Maybe Int
orderAmountReturned = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      orderApplication :: Maybe Text
orderApplication = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      orderApplicationFee :: Maybe Int
orderApplicationFee = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      orderCharge :: Maybe OrderCharge'Variants
orderCharge = Maybe OrderCharge'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      orderCreated :: Int
orderCreated = Int
orderCreated,
      orderCurrency :: Text
orderCurrency = Text
orderCurrency,
      orderCustomer :: Maybe OrderCustomer'Variants
orderCustomer = Maybe OrderCustomer'Variants
forall a. Maybe a
GHC.Maybe.Nothing,
      orderEmail :: Maybe Text
orderEmail = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      orderExternalCouponCode :: Maybe Text
orderExternalCouponCode = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      orderId :: Text
orderId = Text
orderId,
      orderItems :: [OrderItem]
orderItems = [OrderItem]
orderItems,
      orderLivemode :: Bool
orderLivemode = Bool
orderLivemode,
      orderMetadata :: Maybe Object
orderMetadata = Maybe Object
forall a. Maybe a
GHC.Maybe.Nothing,
      orderReturns :: Maybe OrderReturns'
orderReturns = Maybe OrderReturns'
forall a. Maybe a
GHC.Maybe.Nothing,
      orderSelectedShippingMethod :: Maybe Text
orderSelectedShippingMethod = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      orderShipping :: Maybe OrderShipping'
orderShipping = Maybe OrderShipping'
forall a. Maybe a
GHC.Maybe.Nothing,
      orderShippingMethods :: Maybe [ShippingMethod]
orderShippingMethods = Maybe [ShippingMethod]
forall a. Maybe a
GHC.Maybe.Nothing,
      orderStatus :: Text
orderStatus = Text
orderStatus,
      orderStatusTransitions :: Maybe OrderStatusTransitions'
orderStatusTransitions = Maybe OrderStatusTransitions'
forall a. Maybe a
GHC.Maybe.Nothing,
      orderUpdated :: Maybe Int
orderUpdated = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      orderUpstreamId :: Maybe Text
orderUpstreamId = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the oneOf schema located at @components.schemas.order.properties.charge.anyOf@ in the specification.
--
-- The ID of the payment used to pay for the order. Present if the order status is \`paid\`, \`fulfilled\`, or \`refunded\`.
data OrderCharge'Variants
  = OrderCharge'Text Data.Text.Internal.Text
  | OrderCharge'Charge Charge
  deriving (Int -> OrderCharge'Variants -> ShowS
[OrderCharge'Variants] -> ShowS
OrderCharge'Variants -> String
(Int -> OrderCharge'Variants -> ShowS)
-> (OrderCharge'Variants -> String)
-> ([OrderCharge'Variants] -> ShowS)
-> Show OrderCharge'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [OrderCharge'Variants] -> ShowS
$cshowList :: [OrderCharge'Variants] -> ShowS
show :: OrderCharge'Variants -> String
$cshow :: OrderCharge'Variants -> String
showsPrec :: Int -> OrderCharge'Variants -> ShowS
$cshowsPrec :: Int -> OrderCharge'Variants -> ShowS
GHC.Show.Show, OrderCharge'Variants -> OrderCharge'Variants -> Bool
(OrderCharge'Variants -> OrderCharge'Variants -> Bool)
-> (OrderCharge'Variants -> OrderCharge'Variants -> Bool)
-> Eq OrderCharge'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: OrderCharge'Variants -> OrderCharge'Variants -> Bool
$c/= :: OrderCharge'Variants -> OrderCharge'Variants -> Bool
== :: OrderCharge'Variants -> OrderCharge'Variants -> Bool
$c== :: OrderCharge'Variants -> OrderCharge'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON OrderCharge'Variants where
  toJSON :: OrderCharge'Variants -> Value
toJSON (OrderCharge'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (OrderCharge'Charge Charge
a) = Charge -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Charge
a

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

-- | Defines the oneOf schema located at @components.schemas.order.properties.customer.anyOf@ in the specification.
--
-- The customer used for the order.
data OrderCustomer'Variants
  = OrderCustomer'Text Data.Text.Internal.Text
  | OrderCustomer'Customer Customer
  | OrderCustomer'DeletedCustomer DeletedCustomer
  deriving (Int -> OrderCustomer'Variants -> ShowS
[OrderCustomer'Variants] -> ShowS
OrderCustomer'Variants -> String
(Int -> OrderCustomer'Variants -> ShowS)
-> (OrderCustomer'Variants -> String)
-> ([OrderCustomer'Variants] -> ShowS)
-> Show OrderCustomer'Variants
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [OrderCustomer'Variants] -> ShowS
$cshowList :: [OrderCustomer'Variants] -> ShowS
show :: OrderCustomer'Variants -> String
$cshow :: OrderCustomer'Variants -> String
showsPrec :: Int -> OrderCustomer'Variants -> ShowS
$cshowsPrec :: Int -> OrderCustomer'Variants -> ShowS
GHC.Show.Show, OrderCustomer'Variants -> OrderCustomer'Variants -> Bool
(OrderCustomer'Variants -> OrderCustomer'Variants -> Bool)
-> (OrderCustomer'Variants -> OrderCustomer'Variants -> Bool)
-> Eq OrderCustomer'Variants
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: OrderCustomer'Variants -> OrderCustomer'Variants -> Bool
$c/= :: OrderCustomer'Variants -> OrderCustomer'Variants -> Bool
== :: OrderCustomer'Variants -> OrderCustomer'Variants -> Bool
$c== :: OrderCustomer'Variants -> OrderCustomer'Variants -> Bool
GHC.Classes.Eq)

instance Data.Aeson.Types.ToJSON.ToJSON OrderCustomer'Variants where
  toJSON :: OrderCustomer'Variants -> Value
toJSON (OrderCustomer'Text Text
a) = Text -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Text
a
  toJSON (OrderCustomer'Customer Customer
a) = Customer -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON Customer
a
  toJSON (OrderCustomer'DeletedCustomer DeletedCustomer
a) = DeletedCustomer -> Value
forall a. ToJSON a => a -> Value
Data.Aeson.Types.ToJSON.toJSON DeletedCustomer
a

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

-- | Defines the object schema located at @components.schemas.order.properties.returns@ in the specification.
--
-- A list of returns that have taken place for this order.
data OrderReturns' = OrderReturns'
  { -- | data: Details about each object.
    OrderReturns' -> [OrderReturn]
orderReturns'Data :: ([OrderReturn]),
    -- | has_more: True if this list has another page of items after this one that can be fetched.
    OrderReturns' -> Bool
orderReturns'HasMore :: GHC.Types.Bool,
    -- | url: The URL where this list can be accessed.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    OrderReturns' -> Text
orderReturns'Url :: Data.Text.Internal.Text
  }
  deriving
    ( Int -> OrderReturns' -> ShowS
[OrderReturns'] -> ShowS
OrderReturns' -> String
(Int -> OrderReturns' -> ShowS)
-> (OrderReturns' -> String)
-> ([OrderReturns'] -> ShowS)
-> Show OrderReturns'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [OrderReturns'] -> ShowS
$cshowList :: [OrderReturns'] -> ShowS
show :: OrderReturns' -> String
$cshow :: OrderReturns' -> String
showsPrec :: Int -> OrderReturns' -> ShowS
$cshowsPrec :: Int -> OrderReturns' -> ShowS
GHC.Show.Show,
      OrderReturns' -> OrderReturns' -> Bool
(OrderReturns' -> OrderReturns' -> Bool)
-> (OrderReturns' -> OrderReturns' -> Bool) -> Eq OrderReturns'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: OrderReturns' -> OrderReturns' -> Bool
$c/= :: OrderReturns' -> OrderReturns' -> Bool
== :: OrderReturns' -> OrderReturns' -> Bool
$c== :: OrderReturns' -> OrderReturns' -> Bool
GHC.Classes.Eq
    )

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

-- | Defines the object schema located at @components.schemas.order.properties.shipping.anyOf@ in the specification.
--
-- The shipping address for the order. Present if the order is for goods to be shipped.
data OrderShipping' = OrderShipping'
  { -- | address:
    OrderShipping' -> Maybe Address
orderShipping'Address :: (GHC.Maybe.Maybe Address),
    -- | carrier: The delivery service that shipped a physical product, such as Fedex, UPS, USPS, etc.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    OrderShipping' -> Maybe Text
orderShipping'Carrier :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | name: Recipient name.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    OrderShipping' -> Maybe Text
orderShipping'Name :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | phone: Recipient phone (including extension).
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    OrderShipping' -> Maybe Text
orderShipping'Phone :: (GHC.Maybe.Maybe Data.Text.Internal.Text),
    -- | tracking_number: The tracking number for a physical product, obtained from the delivery service. If multiple tracking numbers were generated for this purchase, please separate them with commas.
    --
    -- Constraints:
    --
    -- * Maximum length of 5000
    OrderShipping' -> Maybe Text
orderShipping'TrackingNumber :: (GHC.Maybe.Maybe Data.Text.Internal.Text)
  }
  deriving
    ( Int -> OrderShipping' -> ShowS
[OrderShipping'] -> ShowS
OrderShipping' -> String
(Int -> OrderShipping' -> ShowS)
-> (OrderShipping' -> String)
-> ([OrderShipping'] -> ShowS)
-> Show OrderShipping'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [OrderShipping'] -> ShowS
$cshowList :: [OrderShipping'] -> ShowS
show :: OrderShipping' -> String
$cshow :: OrderShipping' -> String
showsPrec :: Int -> OrderShipping' -> ShowS
$cshowsPrec :: Int -> OrderShipping' -> ShowS
GHC.Show.Show,
      OrderShipping' -> OrderShipping' -> Bool
(OrderShipping' -> OrderShipping' -> Bool)
-> (OrderShipping' -> OrderShipping' -> Bool) -> Eq OrderShipping'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: OrderShipping' -> OrderShipping' -> Bool
$c/= :: OrderShipping' -> OrderShipping' -> Bool
== :: OrderShipping' -> OrderShipping' -> Bool
$c== :: OrderShipping' -> OrderShipping' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON OrderShipping' where
  toJSON :: OrderShipping' -> Value
toJSON OrderShipping'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"address" Text -> Maybe Address -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= OrderShipping' -> Maybe Address
orderShipping'Address OrderShipping'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"carrier" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= OrderShipping' -> Maybe Text
orderShipping'Carrier OrderShipping'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"name" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= OrderShipping' -> Maybe Text
orderShipping'Name OrderShipping'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"phone" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= OrderShipping' -> Maybe Text
orderShipping'Phone OrderShipping'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"tracking_number" Text -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= OrderShipping' -> Maybe Text
orderShipping'TrackingNumber OrderShipping'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: OrderShipping' -> Encoding
toEncoding OrderShipping'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"address" Text -> Maybe Address -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= OrderShipping' -> Maybe Address
orderShipping'Address OrderShipping'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"carrier" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= OrderShipping' -> Maybe Text
orderShipping'Carrier OrderShipping'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"name" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= OrderShipping' -> Maybe Text
orderShipping'Name OrderShipping'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"phone" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= OrderShipping' -> Maybe Text
orderShipping'Phone OrderShipping'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"tracking_number" Text -> Maybe Text -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= OrderShipping' -> Maybe Text
orderShipping'TrackingNumber OrderShipping'
obj)))))

instance Data.Aeson.Types.FromJSON.FromJSON OrderShipping' where
  parseJSON :: Value -> Parser OrderShipping'
parseJSON = String
-> (Object -> Parser OrderShipping')
-> Value
-> Parser OrderShipping'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"OrderShipping'" (\Object
obj -> (((((Maybe Address
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> OrderShipping')
-> Parser
     (Maybe Address
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> OrderShipping')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Address
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> OrderShipping'
OrderShipping' Parser
  (Maybe Address
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> OrderShipping')
-> Parser (Maybe Address)
-> Parser
     (Maybe Text
      -> Maybe Text -> Maybe Text -> Maybe Text -> OrderShipping')
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
GHC.Base.<*> (Object
obj Object -> Text -> Parser (Maybe Address)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Data.Aeson.Types.FromJSON..:? Text
"address")) Parser
  (Maybe Text
   -> Maybe Text -> Maybe Text -> Maybe Text -> OrderShipping')
-> Parser (Maybe Text)
-> Parser
     (Maybe Text -> Maybe Text -> Maybe Text -> OrderShipping')
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
"carrier")) Parser (Maybe Text -> Maybe Text -> Maybe Text -> OrderShipping')
-> Parser (Maybe Text)
-> Parser (Maybe Text -> Maybe Text -> OrderShipping')
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
"name")) Parser (Maybe Text -> Maybe Text -> OrderShipping')
-> Parser (Maybe Text) -> Parser (Maybe Text -> OrderShipping')
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
"phone")) Parser (Maybe Text -> OrderShipping')
-> Parser (Maybe Text) -> Parser OrderShipping'
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
"tracking_number"))

-- | Create a new 'OrderShipping'' with all required fields.
mkOrderShipping' :: OrderShipping'
mkOrderShipping' :: OrderShipping'
mkOrderShipping' =
  OrderShipping' :: Maybe Address
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> OrderShipping'
OrderShipping'
    { orderShipping'Address :: Maybe Address
orderShipping'Address = Maybe Address
forall a. Maybe a
GHC.Maybe.Nothing,
      orderShipping'Carrier :: Maybe Text
orderShipping'Carrier = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      orderShipping'Name :: Maybe Text
orderShipping'Name = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      orderShipping'Phone :: Maybe Text
orderShipping'Phone = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing,
      orderShipping'TrackingNumber :: Maybe Text
orderShipping'TrackingNumber = Maybe Text
forall a. Maybe a
GHC.Maybe.Nothing
    }

-- | Defines the object schema located at @components.schemas.order.properties.status_transitions.anyOf@ in the specification.
--
-- The timestamps at which the order status was updated.
data OrderStatusTransitions' = OrderStatusTransitions'
  { -- | canceled: The time that the order was canceled.
    OrderStatusTransitions' -> Maybe Int
orderStatusTransitions'Canceled :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | fulfiled: The time that the order was fulfilled.
    OrderStatusTransitions' -> Maybe Int
orderStatusTransitions'Fulfiled :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | paid: The time that the order was paid.
    OrderStatusTransitions' -> Maybe Int
orderStatusTransitions'Paid :: (GHC.Maybe.Maybe GHC.Types.Int),
    -- | returned: The time that the order was returned.
    OrderStatusTransitions' -> Maybe Int
orderStatusTransitions'Returned :: (GHC.Maybe.Maybe GHC.Types.Int)
  }
  deriving
    ( Int -> OrderStatusTransitions' -> ShowS
[OrderStatusTransitions'] -> ShowS
OrderStatusTransitions' -> String
(Int -> OrderStatusTransitions' -> ShowS)
-> (OrderStatusTransitions' -> String)
-> ([OrderStatusTransitions'] -> ShowS)
-> Show OrderStatusTransitions'
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [OrderStatusTransitions'] -> ShowS
$cshowList :: [OrderStatusTransitions'] -> ShowS
show :: OrderStatusTransitions' -> String
$cshow :: OrderStatusTransitions' -> String
showsPrec :: Int -> OrderStatusTransitions' -> ShowS
$cshowsPrec :: Int -> OrderStatusTransitions' -> ShowS
GHC.Show.Show,
      OrderStatusTransitions' -> OrderStatusTransitions' -> Bool
(OrderStatusTransitions' -> OrderStatusTransitions' -> Bool)
-> (OrderStatusTransitions' -> OrderStatusTransitions' -> Bool)
-> Eq OrderStatusTransitions'
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: OrderStatusTransitions' -> OrderStatusTransitions' -> Bool
$c/= :: OrderStatusTransitions' -> OrderStatusTransitions' -> Bool
== :: OrderStatusTransitions' -> OrderStatusTransitions' -> Bool
$c== :: OrderStatusTransitions' -> OrderStatusTransitions' -> Bool
GHC.Classes.Eq
    )

instance Data.Aeson.Types.ToJSON.ToJSON OrderStatusTransitions' where
  toJSON :: OrderStatusTransitions' -> Value
toJSON OrderStatusTransitions'
obj = [Pair] -> Value
Data.Aeson.Types.Internal.object (Text
"canceled" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= OrderStatusTransitions' -> Maybe Int
orderStatusTransitions'Canceled OrderStatusTransitions'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"fulfiled" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= OrderStatusTransitions' -> Maybe Int
orderStatusTransitions'Fulfiled OrderStatusTransitions'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"paid" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= OrderStatusTransitions' -> Maybe Int
orderStatusTransitions'Paid OrderStatusTransitions'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: Text
"returned" Text -> Maybe Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= OrderStatusTransitions' -> Maybe Int
orderStatusTransitions'Returned OrderStatusTransitions'
obj Pair -> [Pair] -> [Pair]
forall a. a -> [a] -> [a]
: [Pair]
forall a. Monoid a => a
GHC.Base.mempty)
  toEncoding :: OrderStatusTransitions' -> Encoding
toEncoding OrderStatusTransitions'
obj = Series -> Encoding
Data.Aeson.Encoding.Internal.pairs ((Text
"canceled" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= OrderStatusTransitions' -> Maybe Int
orderStatusTransitions'Canceled OrderStatusTransitions'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"fulfiled" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= OrderStatusTransitions' -> Maybe Int
orderStatusTransitions'Fulfiled OrderStatusTransitions'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> ((Text
"paid" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= OrderStatusTransitions' -> Maybe Int
orderStatusTransitions'Paid OrderStatusTransitions'
obj) Series -> Series -> Series
forall a. Semigroup a => a -> a -> a
GHC.Base.<> (Text
"returned" Text -> Maybe Int -> Series
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Data.Aeson.Types.ToJSON..= OrderStatusTransitions' -> Maybe Int
orderStatusTransitions'Returned OrderStatusTransitions'
obj))))

instance Data.Aeson.Types.FromJSON.FromJSON OrderStatusTransitions' where
  parseJSON :: Value -> Parser OrderStatusTransitions'
parseJSON = String
-> (Object -> Parser OrderStatusTransitions')
-> Value
-> Parser OrderStatusTransitions'
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.Aeson.Types.FromJSON.withObject String
"OrderStatusTransitions'" (\Object
obj -> ((((Maybe Int
 -> Maybe Int -> Maybe Int -> Maybe Int -> OrderStatusTransitions')
-> Parser
     (Maybe Int
      -> Maybe Int -> Maybe Int -> Maybe Int -> OrderStatusTransitions')
forall (f :: * -> *) a. Applicative f => a -> f a
GHC.Base.pure Maybe Int
-> Maybe Int -> Maybe Int -> Maybe Int -> OrderStatusTransitions'
OrderStatusTransitions' Parser
  (Maybe Int
   -> Maybe Int -> Maybe Int -> Maybe Int -> OrderStatusTransitions')
-> Parser (Maybe Int)
-> Parser
     (Maybe Int -> Maybe Int -> Maybe Int -> OrderStatusTransitions')
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
"canceled")) Parser
  (Maybe Int -> Maybe Int -> Maybe Int -> OrderStatusTransitions')
-> Parser (Maybe Int)
-> Parser (Maybe Int -> Maybe Int -> OrderStatusTransitions')
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
"fulfiled")) Parser (Maybe Int -> Maybe Int -> OrderStatusTransitions')
-> Parser (Maybe Int)
-> Parser (Maybe Int -> OrderStatusTransitions')
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
"paid")) Parser (Maybe Int -> OrderStatusTransitions')
-> Parser (Maybe Int) -> Parser OrderStatusTransitions'
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
"returned"))

-- | Create a new 'OrderStatusTransitions'' with all required fields.
mkOrderStatusTransitions' :: OrderStatusTransitions'
mkOrderStatusTransitions' :: OrderStatusTransitions'
mkOrderStatusTransitions' =
  OrderStatusTransitions' :: Maybe Int
-> Maybe Int -> Maybe Int -> Maybe Int -> OrderStatusTransitions'
OrderStatusTransitions'
    { orderStatusTransitions'Canceled :: Maybe Int
orderStatusTransitions'Canceled = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      orderStatusTransitions'Fulfiled :: Maybe Int
orderStatusTransitions'Fulfiled = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      orderStatusTransitions'Paid :: Maybe Int
orderStatusTransitions'Paid = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing,
      orderStatusTransitions'Returned :: Maybe Int
orderStatusTransitions'Returned = Maybe Int
forall a. Maybe a
GHC.Maybe.Nothing
    }