smsaero-0.7.1: SMSAero API and HTTP client based on servant library.

Copyright(c) 2015 GetShopTV
LicenseBSD3
Maintainernickolay@getshoptv.com
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

SMSAero.API

Contents

Description

This module describes SMSAero API and defines corresponding types.

Synopsis

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 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.

Instances

HasClient * sub => HasClient * ((:>) * * AnswerJson sub) Source # 

Associated Types

type Client ((:>) * * AnswerJson sub) (api :: (:>) * * AnswerJson sub) :: * #

Methods

clientWithRoute :: Proxy ((* :> *) AnswerJson sub) api -> Req -> Client ((* :> *) AnswerJson sub) api #

HasDocs * sub => HasDocs * ((:>) * * AnswerJson sub) Source # 

Methods

docsFor :: Proxy ((* :> *) AnswerJson sub) api -> (Endpoint, Action) -> DocOptions -> API #

type Client * ((:>) * * AnswerJson sub) Source # 
type Client * ((:>) * * AnswerJson sub) = Client * sub

data RequireAuth Source #

SMSAero authentication credentials.

Instances

HasClient * sub => HasClient * ((:>) * * RequireAuth sub) Source # 

Associated Types

type Client ((:>) * * RequireAuth sub) (api :: (:>) * * RequireAuth sub) :: * #

Methods

clientWithRoute :: Proxy ((* :> *) RequireAuth sub) api -> Req -> Client ((* :> *) RequireAuth sub) api #

HasDocs * sub => HasDocs * ((:>) * * RequireAuth sub) Source # 

Methods

docsFor :: Proxy ((* :> *) RequireAuth sub) api -> (Endpoint, Action) -> DocOptions -> API #

type Client * ((:>) * * RequireAuth sub) Source # 
type Client * ((:>) * * RequireAuth sub) = SMSAeroAuth -> Client * sub

data RequiredQueryParam sym a Source #

Like QueryParam, but always required.

Instances

(HasClient * sub, KnownSymbol sym, ToHttpApiData a) => HasClient * ((:>) * * (RequiredQueryParam sym a) sub) Source # 

Associated Types

type Client ((:>) * * (RequiredQueryParam sym a) sub) (api :: (:>) * * (RequiredQueryParam sym a) sub) :: * #

Methods

clientWithRoute :: Proxy ((* :> *) (RequiredQueryParam sym a) sub) api -> Req -> Client ((* :> *) (RequiredQueryParam sym a) sub) api #

(KnownSymbol sym, ToParam * (QueryParam * sym a), HasDocs * sub) => HasDocs * ((:>) * * (RequiredQueryParam sym a) sub) Source # 

Methods

docsFor :: Proxy ((* :> *) (RequiredQueryParam sym a) sub) api -> (Endpoint, Action) -> DocOptions -> API #

type Client * ((:>) * * (RequiredQueryParam sym a) sub) Source # 
type Client * ((:>) * * (RequiredQueryParam sym a) sub) = a -> Client * sub

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.

Constructors

ResponseOK a

Some useful payload.

ResponseReject Text

Rejection reason.

Instances

Eq a => Eq (SmsAeroResponse a) Source # 
Show a => Show (SmsAeroResponse a) Source # 
Generic (SmsAeroResponse a) Source # 

Associated Types

type Rep (SmsAeroResponse a) :: * -> * #

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 # 
type Rep (SmsAeroResponse a) = D1 (MetaData "SmsAeroResponse" "SMSAero.API" "smsaero-0.7.1-H6NkdSadZaVHPXjZJqwGmk" False) ((:+:) (C1 (MetaCons "ResponseOK" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a))) (C1 (MetaCons "ResponseReject" PrefixI False) (S1 (MetaSel (Nothing Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text))))

data MessageStatus Source #

SMSAero message status.

Constructors

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.

Instances

Bounded MessageStatus Source # 
Enum MessageStatus Source # 
Eq MessageStatus Source # 
Read MessageStatus Source # 
Show MessageStatus Source # 
Generic MessageStatus Source # 

Associated Types

type Rep MessageStatus :: * -> * #

ToJSON MessageStatus Source # 
FromJSON MessageStatus Source # 
ToHttpApiData MessageStatus Source # 
FromHttpApiData MessageStatus Source # 
ToSample (SmsAeroResponse MessageStatus) Source # 
type Rep MessageStatus Source # 
type Rep MessageStatus = D1 (MetaData "MessageStatus" "SMSAero.API" "smsaero-0.7.1-H6NkdSadZaVHPXjZJqwGmk" False) ((:+:) ((:+:) (C1 (MetaCons "StatusDeliverySuccess" PrefixI False) U1) ((:+:) (C1 (MetaCons "StatusDeliveryFailure" PrefixI False) U1) (C1 (MetaCons "StatusSmscSubmit" PrefixI False) U1))) ((:+:) (C1 (MetaCons "StatusSmscReject" PrefixI False) U1) ((:+:) (C1 (MetaCons "StatusQueue" PrefixI False) U1) (C1 (MetaCons "StatusWaitStatus" PrefixI False) U1))))

type CheckSendingResponse = Map MessageId MessageStatus Source #

SMSAero response to a checksending request.

type CheckTariffResponse = Map ChannelName Double Source #

SMSAero response to a checktarif request.

data SignResponse Source #

SMSAero response to a sign request.

Constructors

SignApproved

Signature is approved.

SignRejected

Signature is rejected.

SignPending

Signature is pending.

Instances

Bounded SignResponse Source # 
Enum SignResponse Source # 
Eq SignResponse Source # 
Show SignResponse Source # 
Generic SignResponse Source # 

Associated Types

type Rep SignResponse :: * -> * #

ToJSON SignResponse Source # 
FromJSON SignResponse Source # 
ToHttpApiData SignResponse Source # 
FromHttpApiData SignResponse Source # 
ToSample (SmsAeroResponse SignResponse) Source # 
type Rep SignResponse Source # 
type Rep SignResponse = D1 (MetaData "SignResponse" "SMSAero.API" "smsaero-0.7.1-H6NkdSadZaVHPXjZJqwGmk" False) ((:+:) (C1 (MetaCons "SignApproved" PrefixI False) U1) ((:+:) (C1 (MetaCons "SignRejected" PrefixI False) U1) (C1 (MetaCons "SignPending" PrefixI False) U1)))

Orphan instances