JAMES-1671 Annotate Messages
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/ae2af749 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ae2af749 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ae2af749 Branch: refs/heads/master Commit: ae2af749e0f49b374ff2f4e75b9a332901da586b Parents: 902c683 Author: Antoine Duprat <antdup...@gmail.com> Authored: Wed Jan 27 14:45:29 2016 +0100 Committer: Antoine Duprat <antdup...@gmail.com> Committed: Thu Feb 4 10:05:22 2016 +0100 ---------------------------------------------------------------------- .../protocols/jmap/doc/specs/spec/message.mdwn | 45 ++++++++++++++++++++ 1 file changed, 45 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/ae2af749/server/protocols/jmap/doc/specs/spec/message.mdwn ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/doc/specs/spec/message.mdwn b/server/protocols/jmap/doc/specs/spec/message.mdwn index 58f0edc..a0b384a 100644 --- a/server/protocols/jmap/doc/specs/spec/message.mdwn +++ b/server/protocols/jmap/doc/specs/spec/message.mdwn @@ -7,11 +7,20 @@ JMAP completely hides the complexities of MIME. All special encodings of either A **Message** object has the following properties: - **id**: `String` + <aside class="notice"> + Work in progress. Unique message id is generated by concatenate the username, the mailboxId and the uid. + </aside> The id of the message. - **blobId**: `String` + <aside class="warning"> + Not implemented + </aside> The id representing the raw RFC2822 message. This may be used to download the original message or to attach it directly to another message etc. - **threadId**: `String` + <aside class="warning"> + Not implemented + </aside> The id of the thread to which this message belongs. - **mailboxIds**: `String[]` (Mutable) The ids of the mailboxes the message is in. A message MUST belong to one or more mailboxes at all times (until it is deleted). @@ -26,6 +35,9 @@ A **Message** object has the following properties: - **isDraft**: `Boolean` (Mutable by the server only) Is the message a draft? This corresponds to the `\Draft` system flag in IMAP. - **hasAttachment**: `Boolean` + <aside class="warning"> + Not implemented + </aside> Does the message have any attachments? - **headers**: `String[String]` A map of header name to (decoded) header value for all headers in the message. For headers that occur multiple times (e.g. `Received`), the values are concatenated with a single new line (`\n`) character in between each one. @@ -50,10 +62,19 @@ A **Message** object has the following properties: - **textBody**: `String|null` The plain text body part for the message. If there is only an HTML version of the body, a plain text version will be generated from this. - **htmlBody**: `String|null` + <aside class="warning"> + Not implemented + </aside> The HTML body part for the message if present. If there is only a plain text version of the body, an HTML version will be generated from this. Any scripting content, or references to external plugins, MUST be stripped from the HTML by the server. - **attachments**: `Attachment[]|null` + <aside class="warning"> + Not implemented + </aside> An array of attachment objects (see below) detailing all the attachments to the message. - **attachedMessages**: `String[Message]|null` + <aside class="warning"> + Not implemented + </aside> An object mapping attachment id (as found in the `attachments` property) to a **Message** object with the following properties, for each RFC2822 message attached to this one: - headers - from @@ -107,6 +128,9 @@ An **Attachment** object has the following properties: Messages can only be fetched explicitly by id. To fetch messages, make a call to `getMessages`. It takes the following arguments: - **accountId**: `String|null` + <aside class="warning"> + Not implemented + </aside> The id of the account to use for this call. If not given, defaults to the primary account. - **ids**: `String[]` An array of ids for the messages to fetch. @@ -121,8 +145,14 @@ The `id` property is always returned, regardless of whether it is in the list of The response to *getMessages* is called *messages*. It has the following arguments: - **accountId**: `String` + <aside class="warning"> + Not implemented + </aside> The id of the account used for the call. - **state**: `String` + <aside class="warning"> + Not implemented + </aside> A string encoding the current state on the server. This string will change if any messages change (that is, a new message arrives, a change is made to one of the mutable properties, or a message is deleted). It can be passed to *getMessageUpdates* to efficiently get the list of changes from the previous state. - **list**: `Message[]` @@ -165,6 +195,9 @@ and response: ### getMessageUpdates +<aside class="warning"> +Not implemented +</aside> If a call to *getMessages* returns with a different *state* string in the response to a previous call, the state of the messages has changed on the server. For example, a new message may have been delivered, or an existing message may have changed mailboxes. @@ -211,6 +244,9 @@ The following errors may be returned instead of the *messageUpdates* response: `cannotCalculateChanges`: Returned if the server cannot calculate the changes from the state string given by the client. Usually due to the client's state being too old, or the server being unable to produce an update to an intermediate state when there are too many updates. The client MUST invalidate its Message cache. The error object MUST also include a `newState: String` property with the current state for the type. ### setMessages +<aside class="warning"> +Not implemented +</aside> The *setMessages* method encompasses: @@ -351,6 +387,9 @@ The following errors may be returned instead of the *messagesSet* response: `stateMismatch`: Returned if an *ifInState* argument was supplied and it does not match the current state. ### importMessages +<aside class="warning"> +Not implemented +</aside> The *importMessages* method adds RFC2822 messages to a user's set of messages. The messages must first be uploaded as a file using the standard upload mechanism. It takes the following arguments: @@ -398,6 +437,9 @@ The following errors may be returned instead of the *messageImported* response: `maxQuotaReached`: Returned if the user has reached their mail quota so the message cannot be imported. ### copyMessages +<aside class="warning"> +Not implemented +</aside> The only way to move messages **between** two different accounts is to copy them using the *copyMessages* method, then once the copy has succeeded, delete the original. It takes the following arguments: @@ -459,6 +501,9 @@ The following errors may be returned instead of the *messagesCopied* response: `invalidArguments`: Returned if one of the arguments is of the wrong type, or otherwise invalid. A `description` property MAY be present on the response object to help debug with an explanation of what the problem was. ### reportMessages +<aside class="warning"> +Not implemented +</aside> Messages can be reported as spam or non-spam to help train the user's spam filter. This MUST NOT affect the state of the Message objects (it DOES NOT move a message into or out of the Spam mailbox). --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org