{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DataKinds #-}
module Telegram.Bot.API.Payments where
import Data.Aeson
import Data.Proxy
import Data.Text
import GHC.Generics (Generic)
import Servant.API
import Servant.Client hiding (Response)
import Telegram.Bot.API.Internal.Utils
import Telegram.Bot.API.Types
import Telegram.Bot.API.MakingRequests
import Telegram.Bot.API.Internal.TH (makeDefault)
data SendInvoiceRequest = SendInvoiceRequest
{ SendInvoiceRequest -> ChatId
sendInvoiceChatId :: ChatId
, SendInvoiceRequest -> Maybe MessageThreadId
sendInvoiceMessageThreadId :: Maybe MessageThreadId
, SendInvoiceRequest -> Text
sendInvoiceTitle :: Text
, SendInvoiceRequest -> Text
sendInvoiceDescription :: Text
, SendInvoiceRequest -> Text
sendInvoicePayload :: Text
, SendInvoiceRequest -> Text
sendInvoiceProviderToken :: Text
, SendInvoiceRequest -> Text
sendInvoiceCurrency :: Text
, SendInvoiceRequest -> [LabeledPrice]
sendInvoicePrices :: [LabeledPrice]
, SendInvoiceRequest -> Maybe Integer
sendInvoiceMaxTipAmount :: Maybe Integer
, SendInvoiceRequest -> Maybe [Integer]
sendInvoiceequestSuggestedTipAmounts :: Maybe [Integer]
, SendInvoiceRequest -> Maybe Text
sendInvoiceStartParameter :: Maybe Text
, SendInvoiceRequest -> Maybe Text
sendInvoiceProviderData :: Maybe Text
, SendInvoiceRequest -> Maybe Text
sendInvoicePhotoUrl :: Maybe Text
, SendInvoiceRequest -> Maybe Int
sendInvoicePhotoSize :: Maybe Int
, SendInvoiceRequest -> Maybe Int
sendInvoicePhotoWidth :: Maybe Int
, SendInvoiceRequest -> Maybe Int
sendInvoicePhotoHeight :: Maybe Int
, SendInvoiceRequest -> Maybe Bool
sendInvoiceNeedName :: Maybe Bool
, SendInvoiceRequest -> Maybe Bool
sendInvoiceNeedPhoneNumber :: Maybe Bool
, SendInvoiceRequest -> Maybe Bool
sendInvoiceNeedEmail :: Maybe Bool
, SendInvoiceRequest -> Maybe Bool
sendInvoiceNeedShippingAddress :: Maybe Bool
, SendInvoiceRequest -> Maybe Bool
sendInvoiceSendPhoneNumberToProvider :: Maybe Bool
, SendInvoiceRequest -> Maybe Bool
sendInvoiceSendEmailToProvider :: Maybe Bool
, SendInvoiceRequest -> Maybe Bool
sendInvoiceIsFlexible :: Maybe Bool
, SendInvoiceRequest -> Maybe Bool
sendInvoiceDisableNotification :: Maybe Bool
, SendInvoiceRequest -> Maybe Bool
sendInvoiceProtectContent :: Maybe Bool
, SendInvoiceRequest -> Maybe Text
sendInvoiceMessageEffectId :: Maybe Text
, SendInvoiceRequest -> Maybe MessageId
sendInvoiceReplyToMessageId :: Maybe MessageId
, SendInvoiceRequest -> Maybe ReplyParameters
sendInvoiceReplyParameters :: Maybe ReplyParameters
, SendInvoiceRequest -> Maybe InlineKeyboardMarkup
sendInvoiceReplyMarkup :: Maybe InlineKeyboardMarkup
}
deriving ((forall x. SendInvoiceRequest -> Rep SendInvoiceRequest x)
-> (forall x. Rep SendInvoiceRequest x -> SendInvoiceRequest)
-> Generic SendInvoiceRequest
forall x. Rep SendInvoiceRequest x -> SendInvoiceRequest
forall x. SendInvoiceRequest -> Rep SendInvoiceRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. SendInvoiceRequest -> Rep SendInvoiceRequest x
from :: forall x. SendInvoiceRequest -> Rep SendInvoiceRequest x
$cto :: forall x. Rep SendInvoiceRequest x -> SendInvoiceRequest
to :: forall x. Rep SendInvoiceRequest x -> SendInvoiceRequest
Generic, Int -> SendInvoiceRequest -> ShowS
[SendInvoiceRequest] -> ShowS
SendInvoiceRequest -> String
(Int -> SendInvoiceRequest -> ShowS)
-> (SendInvoiceRequest -> String)
-> ([SendInvoiceRequest] -> ShowS)
-> Show SendInvoiceRequest
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> SendInvoiceRequest -> ShowS
showsPrec :: Int -> SendInvoiceRequest -> ShowS
$cshow :: SendInvoiceRequest -> String
show :: SendInvoiceRequest -> String
$cshowList :: [SendInvoiceRequest] -> ShowS
showList :: [SendInvoiceRequest] -> ShowS
Show)
instance ToJSON SendInvoiceRequest where toJSON :: SendInvoiceRequest -> Value
toJSON = SendInvoiceRequest -> Value
forall a (d :: Meta) (f :: * -> *).
(Generic a, GToJSON Zero (Rep a), Rep a ~ D1 d f, Datatype d) =>
a -> Value
gtoJSON
instance FromJSON SendInvoiceRequest where parseJSON :: Value -> Parser SendInvoiceRequest
parseJSON = Value -> Parser SendInvoiceRequest
forall a (d :: Meta) (f :: * -> *).
(Generic a, GFromJSON Zero (Rep a), Rep a ~ D1 d f, Datatype d) =>
Value -> Parser a
gparseJSON
type SendInvoice
= "sendInvoice"
:> ReqBody '[JSON] SendInvoiceRequest
:> Post '[JSON] (Response Message)
sendInvoice :: SendInvoiceRequest -> ClientM (Response Message)
sendInvoice :: SendInvoiceRequest -> ClientM (Response Message)
sendInvoice = Proxy SendInvoice -> Client ClientM SendInvoice
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @SendInvoice)
data CreateInvoiceLinkRequest = CreateInvoiceLinkRequest
{ CreateInvoiceLinkRequest -> Text
createInvoiceLinkTitle :: Text
, CreateInvoiceLinkRequest -> Text
createInvoiceLinkDescription :: Text
, CreateInvoiceLinkRequest -> Text
createInvoiceLinkPayload :: Text
, CreateInvoiceLinkRequest -> Text
createInvoiceLinkProviderToken :: Text
, CreateInvoiceLinkRequest -> Text
createInvoiceLinkCurrency :: Text
, CreateInvoiceLinkRequest -> [LabeledPrice]
createInvoiceLinkPrices :: [LabeledPrice]
, CreateInvoiceLinkRequest -> Maybe Integer
createInvoiceLinkMaxTipAmount :: Maybe Integer
, CreateInvoiceLinkRequest -> Maybe [Integer]
createInvoiceLinkSuggestedTipAmounts :: Maybe [Integer]
, CreateInvoiceLinkRequest -> Maybe Text
createInvoiceLinkProviderData :: Maybe Text
, CreateInvoiceLinkRequest -> Maybe Text
createInvoiceLinkPhotoUrl :: Maybe Text
, CreateInvoiceLinkRequest -> Maybe Int
createInvoiceLinkPhotoSize :: Maybe Int
, CreateInvoiceLinkRequest -> Maybe Int
createInvoiceLinkPhotoWidth :: Maybe Int
, CreateInvoiceLinkRequest -> Maybe Int
createInvoiceLinkPhotoHeight :: Maybe Int
, CreateInvoiceLinkRequest -> Maybe Bool
createInvoiceLinkNeedName :: Maybe Bool
, CreateInvoiceLinkRequest -> Maybe Bool
createInvoiceLinkNeedPhoneNumber :: Maybe Bool
, CreateInvoiceLinkRequest -> Maybe Bool
createInvoiceLinkNeedEmail :: Maybe Bool
, CreateInvoiceLinkRequest -> Maybe Bool
createInvoiceLinkNeedShippingAddress :: Maybe Bool
, CreateInvoiceLinkRequest -> Maybe Bool
createInvoiceLinkSendPhoneNumberToProvider :: Maybe Bool
, CreateInvoiceLinkRequest -> Maybe Bool
createInvoiceLinkSendEmailToProvider :: Maybe Bool
, CreateInvoiceLinkRequest -> Maybe Bool
createInvoiceLinkIsFlexible :: Maybe Bool
}
deriving ((forall x.
CreateInvoiceLinkRequest -> Rep CreateInvoiceLinkRequest x)
-> (forall x.
Rep CreateInvoiceLinkRequest x -> CreateInvoiceLinkRequest)
-> Generic CreateInvoiceLinkRequest
forall x.
Rep CreateInvoiceLinkRequest x -> CreateInvoiceLinkRequest
forall x.
CreateInvoiceLinkRequest -> Rep CreateInvoiceLinkRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
CreateInvoiceLinkRequest -> Rep CreateInvoiceLinkRequest x
from :: forall x.
CreateInvoiceLinkRequest -> Rep CreateInvoiceLinkRequest x
$cto :: forall x.
Rep CreateInvoiceLinkRequest x -> CreateInvoiceLinkRequest
to :: forall x.
Rep CreateInvoiceLinkRequest x -> CreateInvoiceLinkRequest
Generic, Int -> CreateInvoiceLinkRequest -> ShowS
[CreateInvoiceLinkRequest] -> ShowS
CreateInvoiceLinkRequest -> String
(Int -> CreateInvoiceLinkRequest -> ShowS)
-> (CreateInvoiceLinkRequest -> String)
-> ([CreateInvoiceLinkRequest] -> ShowS)
-> Show CreateInvoiceLinkRequest
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CreateInvoiceLinkRequest -> ShowS
showsPrec :: Int -> CreateInvoiceLinkRequest -> ShowS
$cshow :: CreateInvoiceLinkRequest -> String
show :: CreateInvoiceLinkRequest -> String
$cshowList :: [CreateInvoiceLinkRequest] -> ShowS
showList :: [CreateInvoiceLinkRequest] -> ShowS
Show)
instance ToJSON CreateInvoiceLinkRequest where toJSON :: CreateInvoiceLinkRequest -> Value
toJSON = CreateInvoiceLinkRequest -> Value
forall a (d :: Meta) (f :: * -> *).
(Generic a, GToJSON Zero (Rep a), Rep a ~ D1 d f, Datatype d) =>
a -> Value
gtoJSON
instance FromJSON CreateInvoiceLinkRequest where parseJSON :: Value -> Parser CreateInvoiceLinkRequest
parseJSON = Value -> Parser CreateInvoiceLinkRequest
forall a (d :: Meta) (f :: * -> *).
(Generic a, GFromJSON Zero (Rep a), Rep a ~ D1 d f, Datatype d) =>
Value -> Parser a
gparseJSON
type CreateInvoiceLink
= "createInvoiceLink"
:> ReqBody '[JSON] CreateInvoiceLinkRequest
:> Post '[JSON] (Response Text)
createInvoiceLink :: CreateInvoiceLinkRequest -> ClientM (Response Text)
createInvoiceLink :: CreateInvoiceLinkRequest -> ClientM (Response Text)
createInvoiceLink = Proxy CreateInvoiceLink -> Client ClientM CreateInvoiceLink
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @CreateInvoiceLink)
data AnswerShippingQueryRequest = AnswerShippingQueryRequest
{ AnswerShippingQueryRequest -> Text
answerShippingQueryShippingQueryId :: Text
, AnswerShippingQueryRequest -> Bool
answerShippingQueryOk :: Bool
, AnswerShippingQueryRequest -> Maybe [ShippingOption]
answerShippingQueryShippingOptions :: Maybe [ShippingOption]
, AnswerShippingQueryRequest -> Maybe Text
answerShippingQueryErrorMessage :: Maybe Text
}
deriving ((forall x.
AnswerShippingQueryRequest -> Rep AnswerShippingQueryRequest x)
-> (forall x.
Rep AnswerShippingQueryRequest x -> AnswerShippingQueryRequest)
-> Generic AnswerShippingQueryRequest
forall x.
Rep AnswerShippingQueryRequest x -> AnswerShippingQueryRequest
forall x.
AnswerShippingQueryRequest -> Rep AnswerShippingQueryRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
AnswerShippingQueryRequest -> Rep AnswerShippingQueryRequest x
from :: forall x.
AnswerShippingQueryRequest -> Rep AnswerShippingQueryRequest x
$cto :: forall x.
Rep AnswerShippingQueryRequest x -> AnswerShippingQueryRequest
to :: forall x.
Rep AnswerShippingQueryRequest x -> AnswerShippingQueryRequest
Generic, Int -> AnswerShippingQueryRequest -> ShowS
[AnswerShippingQueryRequest] -> ShowS
AnswerShippingQueryRequest -> String
(Int -> AnswerShippingQueryRequest -> ShowS)
-> (AnswerShippingQueryRequest -> String)
-> ([AnswerShippingQueryRequest] -> ShowS)
-> Show AnswerShippingQueryRequest
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AnswerShippingQueryRequest -> ShowS
showsPrec :: Int -> AnswerShippingQueryRequest -> ShowS
$cshow :: AnswerShippingQueryRequest -> String
show :: AnswerShippingQueryRequest -> String
$cshowList :: [AnswerShippingQueryRequest] -> ShowS
showList :: [AnswerShippingQueryRequest] -> ShowS
Show)
instance ToJSON AnswerShippingQueryRequest where toJSON :: AnswerShippingQueryRequest -> Value
toJSON = AnswerShippingQueryRequest -> Value
forall a (d :: Meta) (f :: * -> *).
(Generic a, GToJSON Zero (Rep a), Rep a ~ D1 d f, Datatype d) =>
a -> Value
gtoJSON
instance FromJSON AnswerShippingQueryRequest where parseJSON :: Value -> Parser AnswerShippingQueryRequest
parseJSON = Value -> Parser AnswerShippingQueryRequest
forall a (d :: Meta) (f :: * -> *).
(Generic a, GFromJSON Zero (Rep a), Rep a ~ D1 d f, Datatype d) =>
Value -> Parser a
gparseJSON
type AnswerShippingQuery
= "answerShippingQuery"
:> ReqBody '[JSON] AnswerShippingQueryRequest
:> Post '[JSON] (Response Bool)
answerShippingQuery :: AnswerShippingQueryRequest -> ClientM (Response Bool)
answerShippingQuery :: AnswerShippingQueryRequest -> ClientM (Response Bool)
answerShippingQuery = Proxy AnswerShippingQuery -> Client ClientM AnswerShippingQuery
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @AnswerShippingQuery)
data AnswerPreCheckoutQueryRequest = AnswerPreCheckoutQueryRequest
{ AnswerPreCheckoutQueryRequest -> Text
answerPreCheckoutQueryPreCheckoutQueryId :: Text
, AnswerPreCheckoutQueryRequest -> Bool
answerPreCheckoutQueryOk :: Bool
, AnswerPreCheckoutQueryRequest -> Maybe Text
answerPreCheckoutQueryErrorMessage :: Maybe Text
}
deriving ((forall x.
AnswerPreCheckoutQueryRequest
-> Rep AnswerPreCheckoutQueryRequest x)
-> (forall x.
Rep AnswerPreCheckoutQueryRequest x
-> AnswerPreCheckoutQueryRequest)
-> Generic AnswerPreCheckoutQueryRequest
forall x.
Rep AnswerPreCheckoutQueryRequest x
-> AnswerPreCheckoutQueryRequest
forall x.
AnswerPreCheckoutQueryRequest
-> Rep AnswerPreCheckoutQueryRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
AnswerPreCheckoutQueryRequest
-> Rep AnswerPreCheckoutQueryRequest x
from :: forall x.
AnswerPreCheckoutQueryRequest
-> Rep AnswerPreCheckoutQueryRequest x
$cto :: forall x.
Rep AnswerPreCheckoutQueryRequest x
-> AnswerPreCheckoutQueryRequest
to :: forall x.
Rep AnswerPreCheckoutQueryRequest x
-> AnswerPreCheckoutQueryRequest
Generic, Int -> AnswerPreCheckoutQueryRequest -> ShowS
[AnswerPreCheckoutQueryRequest] -> ShowS
AnswerPreCheckoutQueryRequest -> String
(Int -> AnswerPreCheckoutQueryRequest -> ShowS)
-> (AnswerPreCheckoutQueryRequest -> String)
-> ([AnswerPreCheckoutQueryRequest] -> ShowS)
-> Show AnswerPreCheckoutQueryRequest
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> AnswerPreCheckoutQueryRequest -> ShowS
showsPrec :: Int -> AnswerPreCheckoutQueryRequest -> ShowS
$cshow :: AnswerPreCheckoutQueryRequest -> String
show :: AnswerPreCheckoutQueryRequest -> String
$cshowList :: [AnswerPreCheckoutQueryRequest] -> ShowS
showList :: [AnswerPreCheckoutQueryRequest] -> ShowS
Show)
instance ToJSON AnswerPreCheckoutQueryRequest where toJSON :: AnswerPreCheckoutQueryRequest -> Value
toJSON = AnswerPreCheckoutQueryRequest -> Value
forall a (d :: Meta) (f :: * -> *).
(Generic a, GToJSON Zero (Rep a), Rep a ~ D1 d f, Datatype d) =>
a -> Value
gtoJSON
instance FromJSON AnswerPreCheckoutQueryRequest where parseJSON :: Value -> Parser AnswerPreCheckoutQueryRequest
parseJSON = Value -> Parser AnswerPreCheckoutQueryRequest
forall a (d :: Meta) (f :: * -> *).
(Generic a, GFromJSON Zero (Rep a), Rep a ~ D1 d f, Datatype d) =>
Value -> Parser a
gparseJSON
type AnswerPreCheckoutQuery
= "answerPreCheckoutQuery"
:> ReqBody '[JSON] AnswerPreCheckoutQueryRequest
:> Post '[JSON] (Response Bool)
answerPreCheckoutQuery :: AnswerPreCheckoutQueryRequest -> ClientM (Response Bool)
answerPreCheckoutQuery :: AnswerPreCheckoutQueryRequest -> ClientM (Response Bool)
answerPreCheckoutQuery = Proxy AnswerPreCheckoutQuery
-> Client ClientM AnswerPreCheckoutQuery
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @AnswerPreCheckoutQuery)
data RefundStarPaymentRequest = RefundStarPaymentRequest
{ RefundStarPaymentRequest -> UserId
refundStarPaymentUserId :: UserId
, RefundStarPaymentRequest -> Text
refundStarPaymentTelegramPaymentChargeId :: Text
}
deriving ((forall x.
RefundStarPaymentRequest -> Rep RefundStarPaymentRequest x)
-> (forall x.
Rep RefundStarPaymentRequest x -> RefundStarPaymentRequest)
-> Generic RefundStarPaymentRequest
forall x.
Rep RefundStarPaymentRequest x -> RefundStarPaymentRequest
forall x.
RefundStarPaymentRequest -> Rep RefundStarPaymentRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x.
RefundStarPaymentRequest -> Rep RefundStarPaymentRequest x
from :: forall x.
RefundStarPaymentRequest -> Rep RefundStarPaymentRequest x
$cto :: forall x.
Rep RefundStarPaymentRequest x -> RefundStarPaymentRequest
to :: forall x.
Rep RefundStarPaymentRequest x -> RefundStarPaymentRequest
Generic, Int -> RefundStarPaymentRequest -> ShowS
[RefundStarPaymentRequest] -> ShowS
RefundStarPaymentRequest -> String
(Int -> RefundStarPaymentRequest -> ShowS)
-> (RefundStarPaymentRequest -> String)
-> ([RefundStarPaymentRequest] -> ShowS)
-> Show RefundStarPaymentRequest
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> RefundStarPaymentRequest -> ShowS
showsPrec :: Int -> RefundStarPaymentRequest -> ShowS
$cshow :: RefundStarPaymentRequest -> String
show :: RefundStarPaymentRequest -> String
$cshowList :: [RefundStarPaymentRequest] -> ShowS
showList :: [RefundStarPaymentRequest] -> ShowS
Show)
instance ToJSON RefundStarPaymentRequest where toJSON :: RefundStarPaymentRequest -> Value
toJSON = RefundStarPaymentRequest -> Value
forall a (d :: Meta) (f :: * -> *).
(Generic a, GToJSON Zero (Rep a), Rep a ~ D1 d f, Datatype d) =>
a -> Value
gtoJSON
instance FromJSON RefundStarPaymentRequest where parseJSON :: Value -> Parser RefundStarPaymentRequest
parseJSON = Value -> Parser RefundStarPaymentRequest
forall a (d :: Meta) (f :: * -> *).
(Generic a, GFromJSON Zero (Rep a), Rep a ~ D1 d f, Datatype d) =>
Value -> Parser a
gparseJSON
type RefundStarPayment
= "refundStarPayment"
:> ReqBody '[JSON] RefundStarPaymentRequest
:> Post '[JSON] (Response Bool)
refundStarPayment :: RefundStarPaymentRequest -> ClientM (Response Bool)
refundStarPayment :: RefundStarPaymentRequest -> ClientM (Response Bool)
refundStarPayment = Proxy RefundStarPayment -> Client ClientM RefundStarPayment
forall api.
HasClient ClientM api =>
Proxy api -> Client ClientM api
client (forall t. Proxy t
forall {k} (t :: k). Proxy t
Proxy @RefundStarPayment)
foldMap makeDefault
[ ''SendInvoiceRequest
, ''CreateInvoiceLinkRequest
, ''AnswerShippingQueryRequest
, ''AnswerPreCheckoutQueryRequest
]