diff --git a/MessagingClient.markdown b/MessagingClient.markdown new file mode 100644 index 0000000..f96025f --- /dev/null +++ b/MessagingClient.markdown @@ -0,0 +1,29 @@ +MessagingClient is a [BSP client](BSP) that synchronises private messages between pairs of devices. + +### Channel identifiers + +MessagingClient has a single channel with the following random identifier: +`6bcd c006 c091 0b0f 44e4 0644 c3b3 1f1a 8bf9 a6d6 021d 40d2 19c8 6b73 1b90 3070` + +### Message types + +**0: PRIVATE_MESSAGE** - The content is a [BDF](BDF) list with two elements: `body` (string) and `attachments` (dictionary, may be null). Each key in `attachments` is the name of an attachment, and the value is a list with two elements: `mime_type` (string) and `message_id` (raw). + +**1: ATTACHMENT** - The content is raw data. + +### Validity policy + +* A private message is valid if it is well-formed. +* An attachment is always valid. + +Note that a private message can be validated before its attachments have been received, and an attachment can be validated before it has been completely received. + +### Storage policy + +* All local messages are stored. +* All remote messages are stored. + +### Sharing policy + +* Each local message is shared with one remote peer. +* Each remote message is shared with the remote peer that created it.