module Paddle.Client.CreateModifier where

import Data.Aeson (ToJSON, toJSON, genericToJSON)
import Protolude
import Prelude ()
import Paddle.Amount (Amount)
import Paddle.FieldModifier (customJSONOptions)

data CreateModifier = CreateModifier 
  { CreateModifier -> Int
vendorId :: Int
  , CreateModifier -> Text
vendorAuthCode :: Text
  , CreateModifier -> Text
subscriptionId :: Text
  , CreateModifier -> Bool
modifierRecurring :: Bool
  , CreateModifier -> Amount
modifierAmount :: Amount
  , CreateModifier -> Maybe Text
modifierDescription :: Maybe Text
  } deriving (Int -> CreateModifier -> ShowS
[CreateModifier] -> ShowS
CreateModifier -> String
(Int -> CreateModifier -> ShowS)
-> (CreateModifier -> String)
-> ([CreateModifier] -> ShowS)
-> Show CreateModifier
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateModifier] -> ShowS
$cshowList :: [CreateModifier] -> ShowS
show :: CreateModifier -> String
$cshow :: CreateModifier -> String
showsPrec :: Int -> CreateModifier -> ShowS
$cshowsPrec :: Int -> CreateModifier -> ShowS
Show, (forall x. CreateModifier -> Rep CreateModifier x)
-> (forall x. Rep CreateModifier x -> CreateModifier)
-> Generic CreateModifier
forall x. Rep CreateModifier x -> CreateModifier
forall x. CreateModifier -> Rep CreateModifier x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CreateModifier x -> CreateModifier
$cfrom :: forall x. CreateModifier -> Rep CreateModifier x
Generic)

instance ToJSON CreateModifier where
  toJSON :: CreateModifier -> Value
toJSON = Options -> CreateModifier -> Value
forall a.
(Generic a, GToJSON' Value Zero (Rep a)) =>
Options -> a -> Value
genericToJSON Options
customJSONOptions