Relativity Short Message Format

Note: Relativity Short Message Format was released to RelativityOne in Blazingstar 10.1.169.1.

Among the many file types you're able to ingest into your Relativity environment is Relativity Short Message Format (RSMF). An RSMF file is an RFC 5322 (Internet Message Format) standards compliant file that encapsulates normalized short message data. The data can come from text messages like SMS or Apple iMessage or it can come from instant messenger services such as Skype, Bloomberg, or Slack.

This document provides a list of requirements for RSMF files, the process you use to prepare those files for ingestion into Relativity, and how to use the Short Message Viewer once they are in your workspace.

See these related pages:

Watch the Relativity Short Message Format video for more information.

RSMF file specification version 1.0.0

In addition to being RFC 5322 compliant, an RSMF file must meet the following conditions before you can bring it into Relativity:

  • It must have a .rsmf extension.
  • It must have an <X-RSMF-Version> header field that defines the version of the RSMF spec that the file conforms to.
  • It must have exactly one attachment with a Content-Transfer-Encoding header type of base64 (RFC 2045) and a Content-Disposition header of type attachment with a parameter filename equal to "rsmf.zip" (RFC 6266). See the rsmf.zip section for more details.

Relativity Short Message Format also supports a number of optional headers that provide roll-up of short message data contained within the file. Here are all the supported headers:

Header Required Description
X-RSMF-Version Yes The version of the RSMF specification that the file adheres to.
X-RSMF-Generator No Identifies the author of the RSMF file.
X-RSMF-BeginDate No The timestamp (ISO8601) of the earliest short message event within the file.
X-RSMF-EndDate No The timestamp (ISO8601) of the latest short message event within the file.
X-RSMF-EventCount No The number of short message events captured within the file.

Requirements for rsmf.zip

The rsmf.zip attachment is where the detailed short message data resides. It must contain at least a single manifest file named rsmf_manifest.json at the root level, but it may also contain any number of additional files which may be referenced from within the manifest file. Additional files, such as attachments and avatars, are required to be at the root level as well.

Note: If a container file or files are included in the rsmf.zip file, they cannot be opened or interacted with in the Short Message Viewer. To see a list of container files, visit Supported file types for processing.

The rsmf.zip file must be a ZIP attachment that uses DEFLATE compression and must not leverage ZIP encryption.

Example RSMF file

X-RSMF-Version: 1.0.0
X-RSMF-Generator: Relativity
X-RSMF-BeginDate: 2010-02-18T10:05:11.0000000Z
X-RSMF-EndDate: 2011-01-26T13:33:20.0000000Z
X-RSMF-EventCount: 4662
To: Keith Kaminski, Karl Knoernschild, Jim Witte
Content-Type: multipart/mixed; boundary="_RSMF_Boundary_Delimiter_"
MIME-Version: 1.0
 
 
--_RSMF_Boundary_Delimiter_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
 
You there?
Yeah.
 
 
 
--_RSMF_Boundary_Delimiter_
Content-Type: application/zip; name="rsmf.zip"
Content-Disposition: attachment; filename="rsmf.zip"
Content-Transfer-Encoding: base64
 
                   BASE64 encoded RSMF.ZIP goes here
 
 
--_RSMF_Boundary_Delimiter_--

rsmf_manifest.json file

The rsmf_manifest.json file is a JSON file that describes short message activity. The root of a manifest file has a version, a list of participants, a list of conversations, and a list of events.

{  
   "version":"1.0.0",
   "participants":"...",
   "conversations":"...",
   "events":"..."
}
Name Required Type Description
version Yes string The version of the RSMF specification that the file adheres to.
participants Yes array An array of participants. A participant is someone who has participated in at least one of the conversations described in the manifest. See Participants for more details.
conversations Yes array An array of conversations. A conversation is a time-bound set of short message events that occur on a specific platform, such as Slack, Bloomberg, or SMS. See Conversations for more details.
events Yes array An array of events. An event is any discrete activity that can happen within the confines a conversation. See Events for more details.

Participants

A participant is someone who has participated in at least one of the conversations described in the manifest file.

[  
   {  
      "id":"P1",
      "display":"Keith Kaminski",
      "avatar":"kk.png",
      "email":"keith.kaminski@relativity.com",
      "custom":[  
         {  
            "name":"Employer",
            "value":"Relativity"
         },
         {  
            "name":"Department",
            "value":"Engineering"
         }
      ]
   }
]
Name Required Type Description
id Yes string Uniquely identifies a participant within the manifest file.
display Yes string Display value for the participant.
avatar No string The name of a file within the rsmf.zip, including any extension that contains an image to display for the avatar for the participant.
email No string The primary email address of the participant.
custom No object An array of optional name/value objects that can be used to store additional metadata about the participant.

Conversations

A conversation is a time-bound set of short message events that occur on a specific platform, such as Slack, Bloomberg, or SMS. Conversations either have a fixed set of participants for their entire duration, such as with SMS messages, or can change over time, such as with a Slack channel or Bloomberg room.

[  
   {  
      "id":"C1",
      "display":"Keith and Karl",
      "platform":"SMS",
      "type":"direct",
      "participants":[  
         "P1",
         "P2"
      ],
      "custom":[  
         {  
            "name":"Source",
            "value":"Keith's iPhone"
         }
      ]
   }
]
Name Required Type Description
id Yes string Uniquely identifies a conversation within the manifest file.
display Yes string Display value for the conversation.
platform Yes string The name of the messaging platform from which the conversation originated.
type Yes string

The type of the conversation. Valid values are:

  • "direct"
  • "channel"

"direct": Indicates the participants are fixed for the duration of the conversation.

"channel": Indicates that participants may enter and leave the conversation at various points in time.

participants Yes array

The participants included in the conversation. Each participant must map back to the id of a participant defined in the root of the manifest. The participant list has different meanings depending the type of the conversation:

  • When the type is "direct", this indicates all of the participants that took part in the conversation.
  • When the type is "channel", this indicates only the participants who were in the conversation at the time of the earliest event for that conversation within the manifest file.
custom No object An array of optional name/value objects that can be used to store additional metadata about the conversation.

Events

An event is a discrete activity that can happen within the confines a conversation, such as a message or a join/leave notification.

[
   {
      "id":"m2",
      "type":"message",
      "parent":"m1",
      "body":"Looks good!",
      "participant":"P1",
      "conversation":"C1",
      "deleted":false,
      "importance":"normal",
      "timestamp":"2018-09-11T09:55:00",
      "reactions":[
         {
            "value":"thumbs up",
            "count":2,
            "participants":[
               "P1",
               "P2"
            ]
         }
      ],
      "attachments":[
         {
            "id":"A1",
            "display":"partyon.png",
            "size":4254
         }
      ],
      "edits":[
         {
            "participant":"P1",
            "timestamp":"2018-09-12T12:53:00"
         }
      ],
      "custom":[
         {
            "name":"GPS",
            "value":"41 24.2028, 2 10.4418"
         }
      ]
   }
]
Name Required Type Description
id No string Uniquely identifies an event within the conversation. An event only needs to have an identifier if it is part of a thread.
type Yes string

Defines the type of event. Valid values are:

  • "message"
  • "disclaimer"
  • "join"
  • "leave"
parent No string Identifies the parent event of the event. This needs to be set if the event is a message which is a part of a thread. Parent must map back to the id of another event.
body No string Content associated with the event. Not all event types require a body. For a message type, this would be the text of the message. If not included, the default value is assumed to be an empty string.
participant Yes string The participant that is the source of the event. This must map to the id of a participant defined in the root of the manifest.
timestamp Yes string The timestamp (ISO8601) of when the event occurred.
conversation Yes string Identifies the conversation in which the event occurred. This must map back to the id of a conversation.
deleted No bool Identifies whether a message has been deleted. If not included, the default value is assumed to be false.
importance No string

Sets an importance value for the message. Valid values are:

  • "normal"
  • "high"

If not included, the default value is assumed to be "normal".

reactions No array An array of reactions associated with the event. See the Reaction section for more information.
attachments No array An array of attachments associated with the event. See the Attachment section for more information.
edits No array An array of edits that have been made to the event. See the Edits section for more information.
custom No object An array of optional name/value objects that can be used to store additional metadata about the event.

Reaction

Name Required Type Descriptions
value Yes string Identifies the reaction. The maximum length for a reaction is 30 characters.
count Yes whole number The number of times this reaction was added to the event.
participants Yes array Identifies the participants that used the reaction. Each participant must map back to the id of a participant defined in the root of the manifest.

Attachment

Name Required Type Descriptions
id Yes string Identifies the attachment. The value should correspond to the name of a file within the rsmf.zip, including any extension.
display Yes string Display value for the attachment. Relativity renders attachments based on the extension of the display value of an attachment.
size Yes whole number

The size of the file in bytes.

Edits

Name Required Type Description
participant Yes string The participant that made the edit. This must map to the id of a participant defined in the root of the manifest.
timestamp Yes string The timestamp (ISO8601) of when the edit occurred.