An &IQ; of type "get" is used, containing a single element <inbox/>, containing an optional RSM - filter as specified by &xep0059;. This will typically be sent only to the user's own bare jid. The server + filter as specified by &xep0059;. This will typically be sent only to the user's own bare jid. If a client + requests the inbox without RSM, the server MAY limit the number of conversations arbitrarily by either time or number. This element has a number of attributes:
+The server responds with a sequence of &MESSAGE; stanzas, each containing an <entry/> element qualified by the &ns; namespace with a number of attributes:
The <entry/> element contains the latest instant message, if any, which is encapsulated as a +
If the messages attribute is missing or set to true, the <entry/> element is followed by the latest instant message, if any, which is encapsulated as a <result/> element as defined by &xep0313;. This contains collated fastenings if supported by the server.
After all entries required have been returned, the server then responds with an &IQ; result containing a <fin/> element qualified by &ns;. This contains the RSM data, a total count of conversation entries within the inbox, a count of conversations with unread messages, and a total count of unread messages.
-Any counter of unread SHOULD be accurate, however client implementors please note that due to heuristics - involved and other issues these counters can be inaccurate at times.
-A client MAY at any time set a conversation as marked by sending an &IQ; of type "set" containing something or - other. This causes the server to set the "marked" flag on a conversation. A client SHOULD display a marked - conversation in the same way as an unread conversation, and explicitly removed the marked flag when the - conversation is considered re-read.
-Removing a marked flag, even when the conversation is not currently marked, causes the unread counter for that - conversation to be set to zero.
Let us assume a user has only two contacts they have exchanges messages with, and a single chatroom. Asking for their inbox is simple:
+Let us assume a user has only three jids they have exchanged messages with. Asking for their inbox is simple:
The server responds with a list of conversations:
After the list of messages, the server completes its response with a the reply to the original IQ.
+If the id of a conversation has changed, a client might fetch the missing messages and metadata by requesting the MAM archive with the jid of the entry, and after the previous known id for the conversation.
+After the list of conversations, the server completes its response with a the reply to the original IQ.
The author notes that this protocol is heavily based on the mod_inbox system of MongooseIM. In addition, Kevin Smith provided useful feedback which has shaped this specification.
+The author notes that this protocol is heavily based on the mod_inbox system of MongooseIM. In addition, Kevin Smith and several others at the XMPP Summit 24 provided useful feedback which has shaped this specification.