module Paddle.Client.GeneratePayLink where

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

data GeneratePayLink = GeneratePayLink 
  { GeneratePayLink -> Int
vendorId :: Int
  , GeneratePayLink -> Text
vendorAuthCode :: Text
  , GeneratePayLink -> Maybe Integer
productId :: Maybe Integer
  , GeneratePayLink -> Maybe [Text]
prices :: Maybe [Text]
  , GeneratePayLink -> Maybe Text
customMessage :: Maybe Text
  } deriving (Int -> GeneratePayLink -> ShowS
[GeneratePayLink] -> ShowS
GeneratePayLink -> String
(Int -> GeneratePayLink -> ShowS)
-> (GeneratePayLink -> String)
-> ([GeneratePayLink] -> ShowS)
-> Show GeneratePayLink
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [GeneratePayLink] -> ShowS
$cshowList :: [GeneratePayLink] -> ShowS
show :: GeneratePayLink -> String
$cshow :: GeneratePayLink -> String
showsPrec :: Int -> GeneratePayLink -> ShowS
$cshowsPrec :: Int -> GeneratePayLink -> ShowS
Show, (forall x. GeneratePayLink -> Rep GeneratePayLink x)
-> (forall x. Rep GeneratePayLink x -> GeneratePayLink)
-> Generic GeneratePayLink
forall x. Rep GeneratePayLink x -> GeneratePayLink
forall x. GeneratePayLink -> Rep GeneratePayLink x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep GeneratePayLink x -> GeneratePayLink
$cfrom :: forall x. GeneratePayLink -> Rep GeneratePayLink x
Generic)

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