packages feed

smsaero 0.3 → 0.4

raw patch · 4 files changed

+21/−14 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- SMSAero.API: authPassword :: SMSAeroAuth -> Text
- SMSAero.API: authUser :: SMSAeroAuth -> Text
- SMSAero.API: data StatusResponse
- SMSAero.API: getPhone :: Phone -> Integer
- SMSAero.API: getSMSAeroDate :: SMSAeroDate -> UTCTime
- SMSAero.API: getSignature :: Signature -> Text
- SMSAero.API: instance (HasClient sub, KnownSymbol sym, ToText a) => HasClient (RequiredQueryParam sym a :> sub)
- SMSAero.API: instance (KnownSymbol sym, ToParam (QueryParam sym a), HasDocs sub) => HasDocs (RequiredQueryParam sym a :> sub)
- SMSAero.API: instance Accept SmsAeroJson
- SMSAero.API: instance Bounded SignResponse
- SMSAero.API: instance Bounded StatusResponse
- SMSAero.API: instance Constructor C1_0SendResponse
- SMSAero.API: instance Constructor C1_0SignResponse
- SMSAero.API: instance Constructor C1_0SmsAeroResponse
- SMSAero.API: instance Constructor C1_0StatusResponse
- SMSAero.API: instance Constructor C1_1SendResponse
- SMSAero.API: instance Constructor C1_1SignResponse
- SMSAero.API: instance Constructor C1_1SmsAeroResponse
- SMSAero.API: instance Constructor C1_1StatusResponse
- SMSAero.API: instance Constructor C1_2SignResponse
- SMSAero.API: instance Constructor C1_2StatusResponse
- SMSAero.API: instance Constructor C1_3StatusResponse
- SMSAero.API: instance Constructor C1_4StatusResponse
- SMSAero.API: instance Constructor C1_5StatusResponse
- SMSAero.API: instance Datatype D1SendResponse
- SMSAero.API: instance Datatype D1SignResponse
- SMSAero.API: instance Datatype D1SmsAeroResponse
- SMSAero.API: instance Datatype D1StatusResponse
- SMSAero.API: instance Enum SignResponse
- SMSAero.API: instance Enum StatusResponse
- SMSAero.API: instance FromJSON BalanceResponse
- SMSAero.API: instance FromJSON MessageBody
- SMSAero.API: instance FromJSON MessageId
- SMSAero.API: instance FromJSON SMSAeroAuth
- SMSAero.API: instance FromJSON SendResponse
- SMSAero.API: instance FromJSON SendersResponse
- SMSAero.API: instance FromJSON SignResponse
- SMSAero.API: instance FromJSON Signature
- SMSAero.API: instance FromJSON StatusResponse
- SMSAero.API: instance FromJSON a => FromJSON (SmsAeroResponse a)
- SMSAero.API: instance FromJSON a => MimeUnrender SmsAeroJson a
- SMSAero.API: instance FromText MessageBody
- SMSAero.API: instance FromText MessageId
- SMSAero.API: instance FromText Phone
- SMSAero.API: instance FromText SMSAeroDate
- SMSAero.API: instance FromText SignResponse
- SMSAero.API: instance FromText Signature
- SMSAero.API: instance FromText StatusResponse
- SMSAero.API: instance Generic (SmsAeroResponse a)
- SMSAero.API: instance Generic SendResponse
- SMSAero.API: instance Generic SignResponse
- SMSAero.API: instance Generic StatusResponse
- SMSAero.API: instance HasClient sub => HasClient (AnswerJson :> sub)
- SMSAero.API: instance HasClient sub => HasClient (RequireAuth :> sub)
- SMSAero.API: instance HasDocs sub => HasDocs (AnswerJson :> sub)
- SMSAero.API: instance HasDocs sub => HasDocs (RequireAuth :> sub)
- SMSAero.API: instance Show BalanceResponse
- SMSAero.API: instance Show MessageBody
- SMSAero.API: instance Show MessageId
- SMSAero.API: instance Show Phone
- SMSAero.API: instance Show SMSAeroDate
- SMSAero.API: instance Show SendResponse
- SMSAero.API: instance Show SendersResponse
- SMSAero.API: instance Show SignResponse
- SMSAero.API: instance Show Signature
- SMSAero.API: instance Show StatusResponse
- SMSAero.API: instance Show a => Show (SmsAeroResponse a)
- SMSAero.API: instance ToJSON BalanceResponse
- SMSAero.API: instance ToJSON MessageBody
- SMSAero.API: instance ToJSON MessageId
- SMSAero.API: instance ToJSON SMSAeroAuth
- SMSAero.API: instance ToJSON SendResponse
- SMSAero.API: instance ToJSON SendersResponse
- SMSAero.API: instance ToJSON SignResponse
- SMSAero.API: instance ToJSON Signature
- SMSAero.API: instance ToJSON StatusResponse
- SMSAero.API: instance ToJSON a => MimeRender SmsAeroJson a
- SMSAero.API: instance ToJSON a => ToJSON (SmsAeroResponse a)
- SMSAero.API: instance ToParam (QueryParam "date" SMSAeroDate)
- SMSAero.API: instance ToParam (QueryParam "from" Signature)
- SMSAero.API: instance ToParam (QueryParam "id" MessageId)
- SMSAero.API: instance ToParam (QueryParam "text" MessageBody)
- SMSAero.API: instance ToParam (QueryParam "to" Phone)
- SMSAero.API: instance ToSample (SmsAeroResponse BalanceResponse) (SmsAeroResponse BalanceResponse)
- SMSAero.API: instance ToSample (SmsAeroResponse SendResponse) (SmsAeroResponse SendResponse)
- SMSAero.API: instance ToSample (SmsAeroResponse SendersResponse) (SmsAeroResponse SendersResponse)
- SMSAero.API: instance ToSample (SmsAeroResponse SignResponse) (SmsAeroResponse SignResponse)
- SMSAero.API: instance ToSample (SmsAeroResponse StatusResponse) (SmsAeroResponse StatusResponse)
- SMSAero.API: instance ToText MessageBody
- SMSAero.API: instance ToText MessageId
- SMSAero.API: instance ToText Phone
- SMSAero.API: instance ToText SMSAeroDate
- SMSAero.API: instance ToText SignResponse
- SMSAero.API: instance ToText Signature
- SMSAero.API: instance ToText StatusResponse
- SMSAero.Utils: instance (DistributiveClient (a -> b) b', DistributiveClient (a -> c) c') => DistributiveClient (a -> b :<|> c) (b' :<|> c')
- SMSAero.Utils: instance DistributiveClient (a -> b) (a -> b)
+ SMSAero.API: [authPassword] :: SMSAeroAuth -> Text
+ SMSAero.API: [authUser] :: SMSAeroAuth -> Text
+ SMSAero.API: [getPhone] :: Phone -> Int64
+ SMSAero.API: [getSMSAeroDate] :: SMSAeroDate -> UTCTime
+ SMSAero.API: [getSignature] :: Signature -> Text
+ SMSAero.API: data MessageStatus
+ SMSAero.API: instance (GHC.TypeLits.KnownSymbol sym, Servant.Docs.Internal.ToParam (Servant.API.QueryParam.QueryParam sym a), Servant.Docs.Internal.HasDocs sub) => Servant.Docs.Internal.HasDocs (SMSAero.API.RequiredQueryParam sym a Servant.API.Sub.:> sub)
+ SMSAero.API: instance (Servant.Client.HasClient sub, GHC.TypeLits.KnownSymbol sym, Servant.Common.Text.ToText a) => Servant.Client.HasClient (SMSAero.API.RequiredQueryParam sym a Servant.API.Sub.:> sub)
+ SMSAero.API: instance Data.Aeson.Types.Class.FromJSON SMSAero.API.BalanceResponse
+ SMSAero.API: instance Data.Aeson.Types.Class.FromJSON SMSAero.API.MessageBody
+ SMSAero.API: instance Data.Aeson.Types.Class.FromJSON SMSAero.API.MessageId
+ SMSAero.API: instance Data.Aeson.Types.Class.FromJSON SMSAero.API.MessageStatus
+ SMSAero.API: instance Data.Aeson.Types.Class.FromJSON SMSAero.API.SMSAeroAuth
+ SMSAero.API: instance Data.Aeson.Types.Class.FromJSON SMSAero.API.SendResponse
+ SMSAero.API: instance Data.Aeson.Types.Class.FromJSON SMSAero.API.SendersResponse
+ SMSAero.API: instance Data.Aeson.Types.Class.FromJSON SMSAero.API.SignResponse
+ SMSAero.API: instance Data.Aeson.Types.Class.FromJSON SMSAero.API.Signature
+ SMSAero.API: instance Data.Aeson.Types.Class.FromJSON a => Data.Aeson.Types.Class.FromJSON (SMSAero.API.SmsAeroResponse a)
+ SMSAero.API: instance Data.Aeson.Types.Class.FromJSON a => Servant.API.ContentTypes.MimeUnrender SMSAero.API.SmsAeroJson a
+ SMSAero.API: instance Data.Aeson.Types.Class.ToJSON SMSAero.API.BalanceResponse
+ SMSAero.API: instance Data.Aeson.Types.Class.ToJSON SMSAero.API.MessageBody
+ SMSAero.API: instance Data.Aeson.Types.Class.ToJSON SMSAero.API.MessageId
+ SMSAero.API: instance Data.Aeson.Types.Class.ToJSON SMSAero.API.MessageStatus
+ SMSAero.API: instance Data.Aeson.Types.Class.ToJSON SMSAero.API.SMSAeroAuth
+ SMSAero.API: instance Data.Aeson.Types.Class.ToJSON SMSAero.API.SendResponse
+ SMSAero.API: instance Data.Aeson.Types.Class.ToJSON SMSAero.API.SendersResponse
+ SMSAero.API: instance Data.Aeson.Types.Class.ToJSON SMSAero.API.SignResponse
+ SMSAero.API: instance Data.Aeson.Types.Class.ToJSON SMSAero.API.Signature
+ SMSAero.API: instance Data.Aeson.Types.Class.ToJSON a => Data.Aeson.Types.Class.ToJSON (SMSAero.API.SmsAeroResponse a)
+ SMSAero.API: instance Data.Aeson.Types.Class.ToJSON a => Servant.API.ContentTypes.MimeRender SMSAero.API.SmsAeroJson a
+ SMSAero.API: instance GHC.Enum.Bounded SMSAero.API.MessageStatus
+ SMSAero.API: instance GHC.Enum.Bounded SMSAero.API.SignResponse
+ SMSAero.API: instance GHC.Enum.Enum SMSAero.API.MessageStatus
+ SMSAero.API: instance GHC.Enum.Enum SMSAero.API.SignResponse
+ SMSAero.API: instance GHC.Generics.Constructor SMSAero.API.C1_0MessageStatus
+ SMSAero.API: instance GHC.Generics.Constructor SMSAero.API.C1_0SendResponse
+ SMSAero.API: instance GHC.Generics.Constructor SMSAero.API.C1_0SignResponse
+ SMSAero.API: instance GHC.Generics.Constructor SMSAero.API.C1_0SmsAeroResponse
+ SMSAero.API: instance GHC.Generics.Constructor SMSAero.API.C1_1MessageStatus
+ SMSAero.API: instance GHC.Generics.Constructor SMSAero.API.C1_1SendResponse
+ SMSAero.API: instance GHC.Generics.Constructor SMSAero.API.C1_1SignResponse
+ SMSAero.API: instance GHC.Generics.Constructor SMSAero.API.C1_1SmsAeroResponse
+ SMSAero.API: instance GHC.Generics.Constructor SMSAero.API.C1_2MessageStatus
+ SMSAero.API: instance GHC.Generics.Constructor SMSAero.API.C1_2SignResponse
+ SMSAero.API: instance GHC.Generics.Constructor SMSAero.API.C1_3MessageStatus
+ SMSAero.API: instance GHC.Generics.Constructor SMSAero.API.C1_4MessageStatus
+ SMSAero.API: instance GHC.Generics.Constructor SMSAero.API.C1_5MessageStatus
+ SMSAero.API: instance GHC.Generics.Datatype SMSAero.API.D1MessageStatus
+ SMSAero.API: instance GHC.Generics.Datatype SMSAero.API.D1SendResponse
+ SMSAero.API: instance GHC.Generics.Datatype SMSAero.API.D1SignResponse
+ SMSAero.API: instance GHC.Generics.Datatype SMSAero.API.D1SmsAeroResponse
+ SMSAero.API: instance GHC.Generics.Generic (SMSAero.API.SmsAeroResponse a)
+ SMSAero.API: instance GHC.Generics.Generic SMSAero.API.MessageStatus
+ SMSAero.API: instance GHC.Generics.Generic SMSAero.API.SendResponse
+ SMSAero.API: instance GHC.Generics.Generic SMSAero.API.SignResponse
+ SMSAero.API: instance GHC.Read.Read SMSAero.API.MessageStatus
+ SMSAero.API: instance GHC.Show.Show SMSAero.API.BalanceResponse
+ SMSAero.API: instance GHC.Show.Show SMSAero.API.MessageBody
+ SMSAero.API: instance GHC.Show.Show SMSAero.API.MessageId
+ SMSAero.API: instance GHC.Show.Show SMSAero.API.MessageStatus
+ SMSAero.API: instance GHC.Show.Show SMSAero.API.Phone
+ SMSAero.API: instance GHC.Show.Show SMSAero.API.SMSAeroDate
+ SMSAero.API: instance GHC.Show.Show SMSAero.API.SendResponse
+ SMSAero.API: instance GHC.Show.Show SMSAero.API.SendersResponse
+ SMSAero.API: instance GHC.Show.Show SMSAero.API.SignResponse
+ SMSAero.API: instance GHC.Show.Show SMSAero.API.Signature
+ SMSAero.API: instance GHC.Show.Show a => GHC.Show.Show (SMSAero.API.SmsAeroResponse a)
+ SMSAero.API: instance Servant.API.ContentTypes.Accept SMSAero.API.SmsAeroJson
+ SMSAero.API: instance Servant.Client.HasClient sub => Servant.Client.HasClient (SMSAero.API.AnswerJson Servant.API.Sub.:> sub)
+ SMSAero.API: instance Servant.Client.HasClient sub => Servant.Client.HasClient (SMSAero.API.RequireAuth Servant.API.Sub.:> sub)
+ SMSAero.API: instance Servant.Common.Text.FromText SMSAero.API.MessageBody
+ SMSAero.API: instance Servant.Common.Text.FromText SMSAero.API.MessageId
+ SMSAero.API: instance Servant.Common.Text.FromText SMSAero.API.MessageStatus
+ SMSAero.API: instance Servant.Common.Text.FromText SMSAero.API.Phone
+ SMSAero.API: instance Servant.Common.Text.FromText SMSAero.API.SMSAeroDate
+ SMSAero.API: instance Servant.Common.Text.FromText SMSAero.API.SignResponse
+ SMSAero.API: instance Servant.Common.Text.FromText SMSAero.API.Signature
+ SMSAero.API: instance Servant.Common.Text.ToText SMSAero.API.MessageBody
+ SMSAero.API: instance Servant.Common.Text.ToText SMSAero.API.MessageId
+ SMSAero.API: instance Servant.Common.Text.ToText SMSAero.API.MessageStatus
+ SMSAero.API: instance Servant.Common.Text.ToText SMSAero.API.Phone
+ SMSAero.API: instance Servant.Common.Text.ToText SMSAero.API.SMSAeroDate
+ SMSAero.API: instance Servant.Common.Text.ToText SMSAero.API.SignResponse
+ SMSAero.API: instance Servant.Common.Text.ToText SMSAero.API.Signature
+ SMSAero.API: instance Servant.Docs.Internal.HasDocs sub => Servant.Docs.Internal.HasDocs (SMSAero.API.AnswerJson Servant.API.Sub.:> sub)
+ SMSAero.API: instance Servant.Docs.Internal.HasDocs sub => Servant.Docs.Internal.HasDocs (SMSAero.API.RequireAuth Servant.API.Sub.:> sub)
+ SMSAero.API: instance Servant.Docs.Internal.ToParam (Servant.API.QueryParam.QueryParam "date" SMSAero.API.SMSAeroDate)
+ SMSAero.API: instance Servant.Docs.Internal.ToParam (Servant.API.QueryParam.QueryParam "from" SMSAero.API.Signature)
+ SMSAero.API: instance Servant.Docs.Internal.ToParam (Servant.API.QueryParam.QueryParam "id" SMSAero.API.MessageId)
+ SMSAero.API: instance Servant.Docs.Internal.ToParam (Servant.API.QueryParam.QueryParam "text" SMSAero.API.MessageBody)
+ SMSAero.API: instance Servant.Docs.Internal.ToParam (Servant.API.QueryParam.QueryParam "to" SMSAero.API.Phone)
+ SMSAero.API: instance Servant.Docs.Internal.ToSample (SMSAero.API.SmsAeroResponse SMSAero.API.BalanceResponse) (SMSAero.API.SmsAeroResponse SMSAero.API.BalanceResponse)
+ SMSAero.API: instance Servant.Docs.Internal.ToSample (SMSAero.API.SmsAeroResponse SMSAero.API.MessageStatus) (SMSAero.API.SmsAeroResponse SMSAero.API.MessageStatus)
+ SMSAero.API: instance Servant.Docs.Internal.ToSample (SMSAero.API.SmsAeroResponse SMSAero.API.SendResponse) (SMSAero.API.SmsAeroResponse SMSAero.API.SendResponse)
+ SMSAero.API: instance Servant.Docs.Internal.ToSample (SMSAero.API.SmsAeroResponse SMSAero.API.SendersResponse) (SMSAero.API.SmsAeroResponse SMSAero.API.SendersResponse)
+ SMSAero.API: instance Servant.Docs.Internal.ToSample (SMSAero.API.SmsAeroResponse SMSAero.API.SignResponse) (SMSAero.API.SmsAeroResponse SMSAero.API.SignResponse)
+ SMSAero.Utils: instance (SMSAero.Utils.DistributiveClient (a -> b) b', SMSAero.Utils.DistributiveClient (a -> c) c') => SMSAero.Utils.DistributiveClient (a -> b Servant.API.Alternative.:<|> c) (b' Servant.API.Alternative.:<|> c')
+ SMSAero.Utils: instance SMSAero.Utils.DistributiveClient (a -> b) (a -> b)
- SMSAero.API: MessageId :: Integer -> MessageId
+ SMSAero.API: MessageId :: Int64 -> MessageId
- SMSAero.API: Phone :: Integer -> Phone
+ SMSAero.API: Phone :: Int64 -> Phone
- SMSAero.API: StatusDeliveryFailure :: StatusResponse
+ SMSAero.API: StatusDeliveryFailure :: MessageStatus
- SMSAero.API: StatusDeliverySuccess :: StatusResponse
+ SMSAero.API: StatusDeliverySuccess :: MessageStatus
- SMSAero.API: StatusQueue :: StatusResponse
+ SMSAero.API: StatusQueue :: MessageStatus
- SMSAero.API: StatusSmscReject :: StatusResponse
+ SMSAero.API: StatusSmscReject :: MessageStatus
- SMSAero.API: StatusSmscSubmit :: StatusResponse
+ SMSAero.API: StatusSmscSubmit :: MessageStatus
- SMSAero.API: StatusWaitStatus :: StatusResponse
+ SMSAero.API: StatusWaitStatus :: MessageStatus
- SMSAero.API: type StatusApi = RequiredQueryParam "id" MessageId :> SmsAeroGet StatusResponse
+ SMSAero.API: type StatusApi = RequiredQueryParam "id" MessageId :> SmsAeroGet MessageStatus
- SMSAero.Client: smsAeroStatus :: SMSAeroAuth -> MessageId -> SmsAero StatusResponse
+ SMSAero.Client: smsAeroStatus :: SMSAeroAuth -> MessageId -> SmsAero MessageStatus

Files

CHANGELOG.md view
@@ -1,3 +1,9 @@+0.4+---+* Rename `StatusResponse` to `MessageStatus` and add instance Read+* Change `MessageId` representation to `Int64`+* Change `Phone` representation to `Int64`+ 0.3 --- * Add `MessageBody` newtype for `"text"` query parameter
smsaero.cabal view
@@ -1,5 +1,5 @@ name:                smsaero-version:             0.3+version:             0.4 synopsis:            SMSAero API and HTTP client based on servant library. description:         Please see README.md homepage:            https://github.com/GetShopTV/smsaero
src/SMSAero/API.hs view
@@ -39,13 +39,14 @@   -- * Responses   SmsAeroResponse(..),   SendResponse(..),-  StatusResponse(..),+  MessageStatus(..),   BalanceResponse(..),   SendersResponse(..),   SignResponse(..), ) where  import Data.Aeson+import Data.Int (Int64) import Data.Proxy  import Data.Time (UTCTime(UTCTime))@@ -97,7 +98,7 @@ newtype Signature = Signature { getSignature :: Text } deriving (Show, FromJSON, ToJSON, ToText, FromText)  -- | SMSAero sent message id.-newtype MessageId = MessageId Integer deriving (Show, FromJSON, ToJSON, ToText, FromText)+newtype MessageId = MessageId Int64 deriving (Show, FromJSON, ToJSON, ToText, FromText)  -- | SMSAero message body. newtype MessageBody = MessageBody Text deriving (Show, FromJSON, ToJSON, ToText, FromText)@@ -120,7 +121,7 @@     , "password" .= authPassword ]  -- | Phone number.-newtype Phone = Phone { getPhone :: Integer } deriving (Show, ToText, FromText)+newtype Phone = Phone { getPhone :: Int64 } deriving (Show, ToText, FromText)  -- | Date. Textually @SMSAeroDate@ is represented as a number of seconds since 01 Jan 1970. newtype SMSAeroDate = SMSAeroDate { getSMSAeroDate :: UTCTime } deriving (Show)@@ -225,7 +226,7 @@                 Normal  -- | SMSAero API to check message status.-type StatusApi = RequiredQueryParam "id" MessageId :> SmsAeroGet StatusResponse+type StatusApi = RequiredQueryParam "id" MessageId :> SmsAeroGet MessageStatus  instance ToParam (QueryParam "id" MessageId) where   toParam _ = DocQueryParam "id"@@ -251,17 +252,17 @@     , ("When SMSAero account does not have enough credit.", ResponseOK SendNoCredits)     , ("When message sender is incorrect.", ResponseReject "incorrect sender name") ] --- | SMSAero response to a status request.-data StatusResponse+-- | SMSAero message status.+data MessageStatus   = 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.-  deriving (Enum, Bounded, Show, Generic)+  deriving (Enum, Bounded, Show, Read, Generic) -instance ToSample (SmsAeroResponse StatusResponse) (SmsAeroResponse StatusResponse) where+instance ToSample (SmsAeroResponse MessageStatus) (SmsAeroResponse MessageStatus) where   toSamples _ =     [ ("When message has been delivered successfully.", ResponseOK StatusDeliverySuccess)     , ("When message has been queued.", ResponseOK StatusQueue) ]@@ -331,10 +332,10 @@     vals = [minBound..maxBound]     xs = zip (map toText vals) vals -instance FromText StatusResponse where+instance FromText MessageStatus where   fromText = boundedFromText -instance ToText StatusResponse where+instance ToText MessageStatus where   toText StatusDeliverySuccess  = "delivery success"   toText StatusDeliveryFailure  = "delivery failure"   toText StatusSmscSubmit       = "smsc submit"@@ -342,13 +343,13 @@   toText StatusQueue            = "queue"   toText StatusWaitStatus       = "wait status" -instance FromJSON StatusResponse where+instance FromJSON MessageStatus where   parseJSON (Object o) = do     result :: Text <- o .: "result"     maybe empty pure (fromText result)   parseJSON _ = empty -instance ToJSON StatusResponse where+instance ToJSON MessageStatus where   toJSON status = object [ "result" .= toText status ]  instance FromJSON BalanceResponse where
src/SMSAero/Client.hs view
@@ -30,7 +30,7 @@ -- | Send a message. smsAeroSend    :: SMSAeroAuth -> Phone -> MessageBody -> Signature -> Maybe SMSAeroDate -> SmsAero SendResponse -- | Check status of a previously sent message.-smsAeroStatus  :: SMSAeroAuth -> MessageId -> SmsAero StatusResponse+smsAeroStatus  :: SMSAeroAuth -> MessageId -> SmsAero MessageStatus -- | Check balance. smsAeroBalance :: SMSAeroAuth -> SmsAero BalanceResponse -- | Check the list of available sender signatures.