Copyright | (c) 2015 GetShopTV |
---|---|
License | BSD3 |
Maintainer | nickolay@getshoptv.com |
Stability | experimental |
Safe Haskell | None |
Language | Haskell2010 |
This module describes SMSAero API and defines corresponding types.
- type SMSAeroAPI = RequireAuth :> (AnswerJson :> (("send" :> SendApi) :<|> (("sendtogroup" :> SendToGroupApi) :<|> (("status" :> StatusApi) :<|> (("checksending" :> CheckSendingApi) :<|> (("balance" :> SmsAeroGet BalanceResponse) :<|> (("checktarif" :> SmsAeroGet CheckTariffResponse) :<|> (("senders" :> SmsAeroGet SendersResponse) :<|> (("sign" :> SmsAeroGet SignResponse) :<|> (GroupApi :<|> (PhoneApi :<|> ("addblacklist" :> BlacklistApi))))))))))))
- type SendApi = RequiredQueryParam "to" Phone :> (RequiredQueryParam "text" MessageBody :> (RequiredQueryParam "from" Signature :> (QueryParam "date" SMSAeroDate :> (QueryParam "type" SendType :> (QueryParam "digital" DigitalChannel :> SmsAeroGet SendResponse)))))
- type SendToGroupApi = RequiredQueryParam "group" Group :> (RequiredQueryParam "text" MessageBody :> (RequiredQueryParam "from" Signature :> (QueryParam "date" SMSAeroDate :> (QueryParam "type" SendType :> (QueryParam "digital" DigitalChannel :> SmsAeroGet SendResponse)))))
- type StatusApi = RequiredQueryParam "id" MessageId :> SmsAeroGet MessageStatus
- type GroupApi = ("checkgroup" :> SmsAeroGet [Group]) :<|> (("addgroup" :> (RequiredQueryParam "group" Group :> SmsAeroGet GroupResponse)) :<|> ("delgroup" :> (RequiredQueryParam "group" Group :> SmsAeroGet GroupResponse)))
- type PhoneApi = ("addphone" :> (RequiredQueryParam "phone" Phone :> (QueryParam "group" Group :> (QueryParam "lname" Name :> (QueryParam "fname" Name :> (QueryParam "sname" Name :> (QueryParam "bday" BirthDate :> (QueryParam "param" Text :> SmsAeroGet PhoneResponse)))))))) :<|> ("delphone" :> (RequiredQueryParam "phone" Phone :> (QueryParam "group" Group :> SmsAeroGet PhoneResponse)))
- type BlacklistApi = RequiredQueryParam "phone" Phone :> SmsAeroGet BlacklistResponse
- data AnswerJson
- data RequireAuth
- data RequiredQueryParam sym a
- type SmsAeroGet a = Get '[JSON] (SmsAeroResponse a)
- data SmsAeroResponse a
- = ResponseOK a
- | ResponseReject Text
- data SendResponse
- data MessageStatus
- type CheckSendingResponse = Map MessageId MessageStatus
- newtype BalanceResponse = BalanceResponse Double
- type CheckTariffResponse = Map ChannelName Double
- newtype SendersResponse = SendersResponse [Signature]
- data SignResponse
- newtype GroupResponse = GroupResponse Text
- newtype PhoneResponse = PhoneResponse Text
- newtype BlacklistResponse = BlacklistResponse Text
API
type SMSAeroAPI = RequireAuth :> (AnswerJson :> (("send" :> SendApi) :<|> (("sendtogroup" :> SendToGroupApi) :<|> (("status" :> StatusApi) :<|> (("checksending" :> CheckSendingApi) :<|> (("balance" :> SmsAeroGet BalanceResponse) :<|> (("checktarif" :> SmsAeroGet CheckTariffResponse) :<|> (("senders" :> SmsAeroGet SendersResponse) :<|> (("sign" :> SmsAeroGet SignResponse) :<|> (GroupApi :<|> (PhoneApi :<|> ("addblacklist" :> BlacklistApi)))))))))))) Source #
SMSAero API.
type SendApi = RequiredQueryParam "to" Phone :> (RequiredQueryParam "text" MessageBody :> (RequiredQueryParam "from" Signature :> (QueryParam "date" SMSAeroDate :> (QueryParam "type" SendType :> (QueryParam "digital" DigitalChannel :> SmsAeroGet SendResponse))))) Source #
SMSAero API to send a message.
type SendToGroupApi = RequiredQueryParam "group" Group :> (RequiredQueryParam "text" MessageBody :> (RequiredQueryParam "from" Signature :> (QueryParam "date" SMSAeroDate :> (QueryParam "type" SendType :> (QueryParam "digital" DigitalChannel :> SmsAeroGet SendResponse))))) Source #
SMSAero API to send a group message.
type StatusApi = RequiredQueryParam "id" MessageId :> SmsAeroGet MessageStatus Source #
SMSAero API to check message status.
type GroupApi = ("checkgroup" :> SmsAeroGet [Group]) :<|> (("addgroup" :> (RequiredQueryParam "group" Group :> SmsAeroGet GroupResponse)) :<|> ("delgroup" :> (RequiredQueryParam "group" Group :> SmsAeroGet GroupResponse))) Source #
SMSAero API to add/delete groups.
type PhoneApi = ("addphone" :> (RequiredQueryParam "phone" Phone :> (QueryParam "group" Group :> (QueryParam "lname" Name :> (QueryParam "fname" Name :> (QueryParam "sname" Name :> (QueryParam "bday" BirthDate :> (QueryParam "param" Text :> SmsAeroGet PhoneResponse)))))))) :<|> ("delphone" :> (RequiredQueryParam "phone" Phone :> (QueryParam "group" Group :> SmsAeroGet PhoneResponse))) Source #
SMSAero API to add/delete subscribers.
type BlacklistApi = RequiredQueryParam "phone" Phone :> SmsAeroGet BlacklistResponse Source #
SMSAero API to add phone to blacklist.
Combinators
data AnswerJson Source #
Implicit parameter that tells SMSAero to respond with JSON.
data RequireAuth Source #
SMSAero authentication credentials.
data RequiredQueryParam sym a Source #
Like QueryParam
, but always required.
(HasClient * sub, KnownSymbol sym, ToHttpApiData a) => HasClient * ((:>) * * (RequiredQueryParam sym a) sub) Source # | |
(KnownSymbol sym, ToParam * (QueryParam * sym a), HasDocs * sub) => HasDocs * ((:>) * * (RequiredQueryParam sym a) sub) Source # | |
type Client * ((:>) * * (RequiredQueryParam sym a) sub) Source # | |
type SmsAeroGet a = Get '[JSON] (SmsAeroResponse a) Source #
Regular SMSAero GET API.
Responses
data SmsAeroResponse a Source #
Every SMSAero response is either rejected or provides some info.
ResponseOK a | Some useful payload. |
ResponseReject Text | Rejection reason. |
Eq a => Eq (SmsAeroResponse a) Source # | |
Show a => Show (SmsAeroResponse a) Source # | |
Generic (SmsAeroResponse a) Source # | |
ToJSON a => ToJSON (SmsAeroResponse a) Source # | |
FromJSON a => FromJSON (SmsAeroResponse a) Source # | |
ToSample (SmsAeroResponse SignResponse) Source # | |
ToSample (SmsAeroResponse SendersResponse) Source # | |
ToSample (SmsAeroResponse BalanceResponse) Source # | |
ToSample (SmsAeroResponse MessageStatus) Source # | |
ToSample (SmsAeroResponse SendResponse) Source # | |
type Rep (SmsAeroResponse a) Source # | |
data SendResponse Source #
SMSAero response to a send request.
SendAccepted MessageId | Message accepted. |
SendNoCredits | No credits to send a message. |
data MessageStatus Source #
SMSAero message status.
StatusDeliverySuccess | Message is successfully delivered. |
StatusDeliveryFailure | Message delivery has failed. |
StatusSmscSubmit | Message submitted to SMSC. |
StatusSmscReject | Message rejected by SMSC. |
StatusQueue | Message queued. |
StatusWaitStatus | Wait for message status. |
type CheckSendingResponse = Map MessageId MessageStatus Source #
SMSAero response to a checksending request.
newtype BalanceResponse Source #
SMSAero response to a balance request (balance in rubles).
type CheckTariffResponse = Map ChannelName Double Source #
SMSAero response to a checktarif request.
newtype SendersResponse Source #
data SignResponse Source #
SMSAero response to a sign request.
SignApproved | Signature is approved. |
SignRejected | Signature is rejected. |
SignPending | Signature is pending. |
newtype GroupResponse Source #
SMSAero response to an addgroup/delgroup request.
newtype PhoneResponse Source #
SMSAero response to an addphone/delphone request.
newtype BlacklistResponse Source #
SMSAero response to an addblacklist request.
Orphan instances
ToParam * (QueryParam * "date" SMSAeroDate) Source # | |
ToParam * (QueryParam * "digital" DigitalChannel) Source # | |
ToParam * (QueryParam * "from" Signature) Source # | |
ToParam * (QueryParam * "group" Group) Source # | |
ToParam * (QueryParam * "id" MessageId) Source # | |
ToParam * (QueryParam * "text" MessageBody) Source # | |
ToParam * (QueryParam * "to" Phone) Source # | |
ToParam * (QueryParam * "type" SendType) Source # | |