-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Client for the Nylas API
--
-- A client for the Nylas HTTP API, powered by lens and pipes.
@package nylas
@version 0.1.1
module Network.Nylas.Types
type Url = String
-- | The access token from Nylas to access data from a single inbox.
newtype AccessToken
AccessToken :: Text -> AccessToken
-- | The unique ID for a Nylas object.
newtype NylasId
NylasId :: Text -> NylasId
[_nylasId] :: NylasId -> Text
-- | A tuple of an email address and the optional name accompanying it, for
-- participants in Threads and Messages.
data Mailbox
Mailbox :: Maybe Text -> Text -> Mailbox
[_mailboxName] :: Mailbox -> Maybe Text
[_mailboxEmail] :: Mailbox -> Text
-- | A file attached to a Message.
data File
File :: NylasId -> Text -> Text -> Int -> Maybe Text -> File
[_fileId] :: File -> NylasId
[_fileContentType] :: File -> Text
[_fileName] :: File -> Text
[_fileSize] :: File -> Int
[_fileContentId] :: File -> Maybe Text
-- | The time a message was sent.
newtype MessageTime
MessageTime :: UTCTime -> MessageTime
[_utcTime] :: MessageTime -> UTCTime
-- | Whether a Message has been read in the inbox.
data ReadStatus
MessageRead :: ReadStatus
MessageUnread :: ReadStatus
-- | Whether a Message or Thread has been starred in the
-- inbox.
data StarStatus
Starred :: StarStatus
Unstarred :: StarStatus
-- | A Gmail-style label applied to a Message or Thread.
data Label
Label :: NylasId -> Text -> Text -> Label
[_labelId] :: Label -> NylasId
[_labelName] :: Label -> Text
[_labelDisplayName] :: Label -> Text
-- | An IMAP-style folder in which Messages can reside. A
-- Thread can contain Messages spanning multiple folders.
data Folder
Folder :: NylasId -> Text -> Text -> Folder
[_folderId] :: Folder -> NylasId
[_folderName] :: Folder -> Text
[_folderDisplayName] :: Folder -> Text
-- | An email message.
data Message
Message :: NylasId -> Text -> [Mailbox] -> [Mailbox] -> [Mailbox] -> [Mailbox] -> MessageTime -> NylasId -> [File] -> Text -> Maybe [Label] -> Maybe Folder -> Text -> ReadStatus -> StarStatus -> Message
[_messageId] :: Message -> NylasId
[_messageSubject] :: Message -> Text
[_messageSenders] :: Message -> [Mailbox]
[_messageToRecipients] :: Message -> [Mailbox]
[_messageCcRecipients] :: Message -> [Mailbox]
[_messageBccRecipients] :: Message -> [Mailbox]
[_messageTime] :: Message -> MessageTime
[_messageThreadId] :: Message -> NylasId
[_messageFiles] :: Message -> [File]
[_messageSnippet] :: Message -> Text
[_messageLabels] :: Message -> Maybe [Label]
[_messageFolder] :: Message -> Maybe Folder
[_messageBody] :: Message -> Text
[_messageRead] :: Message -> ReadStatus
[_messageStarred] :: Message -> StarStatus
-- | Whether a Thread contains any attached Files.
data AttachmentsStatus
HasAttachments :: AttachmentsStatus
NoAttachments :: AttachmentsStatus
-- | A chain of Messages.
data Thread
Thread :: NylasId -> Text -> MessageTime -> MessageTime -> [Mailbox] -> Text -> Maybe [Label] -> Maybe [Folder] -> [NylasId] -> [NylasId] -> Int -> StarStatus -> AttachmentsStatus -> Thread
[_threadId] :: Thread -> NylasId
[_threadSubject] :: Thread -> Text
[_threadFirstTimestamp] :: Thread -> MessageTime
[_threadLastTimestamp] :: Thread -> MessageTime
[_threadParticipants] :: Thread -> [Mailbox]
[_threadSnippet] :: Thread -> Text
[_threadLabels] :: Thread -> Maybe [Label]
[_threadFolders] :: Thread -> Maybe [Folder]
[_threadMessageIds] :: Thread -> [NylasId]
[_threadDraftIds] :: Thread -> [NylasId]
[_threadVersion] :: Thread -> Int
[_threadStarred] :: Thread -> StarStatus
[_threadAttachments] :: Thread -> AttachmentsStatus
-- | The transactional cursor as of a certain Delta. When requesting
-- a stream of updates, clients should provide the Cursor for the
-- last Delta they successfully consumed.
newtype Cursor
Cursor :: Text -> Cursor
[_cursorId] :: Cursor -> Text
-- | An error in a streaming pipeline involving consumeDeltas.
data StreamingError
-- | An error in parsing JSON
ParsingError :: DecodingError -> (Producer ByteString IO ()) -> StreamingError
-- | An error produced by clients while consuming Deltas
ConsumerError :: Text -> StreamingError
-- | The change operation wrapping the affected object in a Delta.
-- If the object has been created or modified (as opposed to deleted),
-- the object is nested within the Change.
data Change a
Create :: a -> Change a
Modify :: a -> Change a
Delete :: Change a
-- | The type of modification to the inbox the Delta contains.
data DeltaChange
CalendarChange :: DeltaChange
ContactChange :: DeltaChange
EventChange :: DeltaChange
FileChange :: DeltaChange
MessageChange :: (Change Message) -> DeltaChange
DraftChange :: DeltaChange
ThreadChange :: (Change Thread) -> DeltaChange
LabelChange :: DeltaChange
FolderChange :: DeltaChange
-- | A change to an inbox with a transactional Cursor to continue
-- processing from this Delta in the future.
data Delta
Delta :: Cursor -> NylasId -> DeltaChange -> Delta
[_deltaCursor] :: Delta -> Cursor
[_deltaObjectId] :: Delta -> NylasId
[_deltaChange] :: Delta -> DeltaChange
nylasId :: Iso' NylasId Text
mailboxName :: Lens' Mailbox (Maybe Text)
mailboxEmail :: Lens' Mailbox Text
fileSize :: Lens' File Int
fileName :: Lens' File Text
fileId :: Lens' File NylasId
fileContentType :: Lens' File Text
fileContentId :: Lens' File (Maybe Text)
utcTime :: Iso' MessageTime UTCTime
_MessageUnread :: Prism' ReadStatus ()
_MessageRead :: Prism' ReadStatus ()
_Unstarred :: Prism' StarStatus ()
_Starred :: Prism' StarStatus ()
labelName :: Lens' Label Text
labelId :: Lens' Label NylasId
labelDisplayName :: Lens' Label Text
folderName :: Lens' Folder Text
folderId :: Lens' Folder NylasId
folderDisplayName :: Lens' Folder Text
messageToRecipients :: Lens' Message [Mailbox]
messageTime :: Lens' Message MessageTime
messageThreadId :: Lens' Message NylasId
messageSubject :: Lens' Message Text
messageStarred :: Lens' Message StarStatus
messageSnippet :: Lens' Message Text
messageSenders :: Lens' Message [Mailbox]
messageRead :: Lens' Message ReadStatus
messageLabels :: Lens' Message (Maybe [Label])
messageId :: Lens' Message NylasId
messageFolder :: Lens' Message (Maybe Folder)
messageFiles :: Lens' Message [File]
messageCcRecipients :: Lens' Message [Mailbox]
messageBody :: Lens' Message Text
messageBccRecipients :: Lens' Message [Mailbox]
_NoAttachments :: Prism' AttachmentsStatus ()
_HasAttachments :: Prism' AttachmentsStatus ()
threadVersion :: Lens' Thread Int
threadSubject :: Lens' Thread Text
threadStarred :: Lens' Thread StarStatus
threadSnippet :: Lens' Thread Text
threadParticipants :: Lens' Thread [Mailbox]
threadMessageIds :: Lens' Thread [NylasId]
threadLastTimestamp :: Lens' Thread MessageTime
threadLabels :: Lens' Thread (Maybe [Label])
threadId :: Lens' Thread NylasId
threadFolders :: Lens' Thread (Maybe [Folder])
threadFirstTimestamp :: Lens' Thread MessageTime
threadDraftIds :: Lens' Thread [NylasId]
threadAttachments :: Lens' Thread AttachmentsStatus
cursorId :: Iso' Cursor Text
_Delete :: Prism' (Change a_ahoa) ()
_Modify :: Prism' (Change a_ahoa) a_ahoa
_Create :: Prism' (Change a_ahoa) a_ahoa
_FolderChange :: Prism' DeltaChange ()
_LabelChange :: Prism' DeltaChange ()
_ThreadChange :: Prism' DeltaChange (Change Thread)
_DraftChange :: Prism' DeltaChange ()
_MessageChange :: Prism' DeltaChange (Change Message)
_FileChange :: Prism' DeltaChange ()
_EventChange :: Prism' DeltaChange ()
_ContactChange :: Prism' DeltaChange ()
_CalendarChange :: Prism' DeltaChange ()
deltaObjectId :: Lens' Delta NylasId
deltaCursor :: Lens' Delta Cursor
deltaChange :: Lens' Delta DeltaChange
-- | A list of the recipients of all types for a Message.
recipients :: Message -> [Mailbox]
instance Data.Aeson.Types.Class.FromJSON Network.Nylas.Types.Mailbox
instance Data.Aeson.Types.Class.FromJSON Network.Nylas.Types.File
instance Data.Aeson.Types.Class.FromJSON Network.Nylas.Types.MessageTime
instance Data.Aeson.Types.Class.FromJSON Network.Nylas.Types.StarStatus
instance Data.Aeson.Types.Class.FromJSON Network.Nylas.Types.Label
instance Data.Aeson.Types.Class.FromJSON Network.Nylas.Types.Folder
instance Data.Aeson.Types.Class.FromJSON Network.Nylas.Types.Message
instance Data.Aeson.Types.Class.FromJSON Network.Nylas.Types.AttachmentsStatus
instance Data.Aeson.Types.Class.FromJSON Network.Nylas.Types.Thread
instance Data.Aeson.Types.Class.FromJSON Network.Nylas.Types.Cursor
instance Data.Aeson.Types.Class.FromJSON Network.Nylas.Types.NylasId
instance Data.Aeson.Types.Class.FromJSON Network.Nylas.Types.Delta
instance Data.Aeson.Types.Class.ToJSON Network.Nylas.Types.Delta
instance GHC.Generics.Selector Network.Nylas.Types.S1_0_0Cursor
instance GHC.Generics.Constructor Network.Nylas.Types.C1_0Cursor
instance GHC.Generics.Datatype Network.Nylas.Types.D1Cursor
instance GHC.Generics.Selector Network.Nylas.Types.S1_0_0MessageTime
instance GHC.Generics.Constructor Network.Nylas.Types.C1_0MessageTime
instance GHC.Generics.Datatype Network.Nylas.Types.D1MessageTime
instance GHC.Generics.Selector Network.Nylas.Types.S1_0_0NylasId
instance GHC.Generics.Constructor Network.Nylas.Types.C1_0NylasId
instance GHC.Generics.Datatype Network.Nylas.Types.D1NylasId
instance GHC.Show.Show Network.Nylas.Types.Delta
instance GHC.Classes.Eq Network.Nylas.Types.Delta
instance GHC.Show.Show Network.Nylas.Types.DeltaChange
instance GHC.Classes.Eq Network.Nylas.Types.DeltaChange
instance GHC.Show.Show a => GHC.Show.Show (Network.Nylas.Types.Change a)
instance GHC.Classes.Eq a => GHC.Classes.Eq (Network.Nylas.Types.Change a)
instance GHC.Generics.Generic Network.Nylas.Types.Cursor
instance GHC.Show.Show Network.Nylas.Types.Cursor
instance GHC.Classes.Eq Network.Nylas.Types.Cursor
instance GHC.Show.Show Network.Nylas.Types.Thread
instance GHC.Classes.Eq Network.Nylas.Types.Thread
instance GHC.Show.Show Network.Nylas.Types.AttachmentsStatus
instance GHC.Classes.Eq Network.Nylas.Types.AttachmentsStatus
instance GHC.Show.Show Network.Nylas.Types.Message
instance GHC.Classes.Eq Network.Nylas.Types.Message
instance GHC.Show.Show Network.Nylas.Types.Folder
instance GHC.Classes.Eq Network.Nylas.Types.Folder
instance GHC.Show.Show Network.Nylas.Types.Label
instance GHC.Classes.Eq Network.Nylas.Types.Label
instance GHC.Show.Show Network.Nylas.Types.StarStatus
instance GHC.Classes.Eq Network.Nylas.Types.StarStatus
instance GHC.Show.Show Network.Nylas.Types.ReadStatus
instance GHC.Classes.Eq Network.Nylas.Types.ReadStatus
instance GHC.Generics.Generic Network.Nylas.Types.MessageTime
instance GHC.Show.Show Network.Nylas.Types.MessageTime
instance GHC.Classes.Eq Network.Nylas.Types.MessageTime
instance GHC.Show.Show Network.Nylas.Types.File
instance GHC.Classes.Eq Network.Nylas.Types.File
instance GHC.Show.Show Network.Nylas.Types.Mailbox
instance GHC.Classes.Eq Network.Nylas.Types.Mailbox
instance GHC.Generics.Generic Network.Nylas.Types.NylasId
instance GHC.Show.Show Network.Nylas.Types.NylasId
instance GHC.Classes.Eq Network.Nylas.Types.NylasId
instance GHC.Show.Show Network.Nylas.Types.AccessToken
instance GHC.Classes.Eq Network.Nylas.Types.AccessToken
module Network.Nylas.Client
-- | Consume Deltas for the inbox associated with the provided
-- AccessToken since the optional Cursor from Nylas'
-- transactional Streaming Delta Updates endpoint.
--
-- Clients should keep track of the Cursor from the latest
-- Delta consumed to resume consumption in the future.
--
-- Any errors encountered during consumption (e.g. while writing to a
-- database) should be surfaced using the ConsumerError value
-- constructor of StreamingError.
consumeDeltas :: Manager -> AccessToken -> Maybe Cursor -> Consumer Delta IO (Either StreamingError ()) -> IO (Either StreamingError ())
-- | Fetch the Message identified by NylasId from the account
-- associated with AccessToken.
getMessage :: Manager -> AccessToken -> NylasId -> IO Message
-- | Fetch the Thread identified by NylasId from the account
-- associated with AccessToken.
getThread :: Manager -> AccessToken -> NylasId -> IO Thread
module Network.Nylas