# Swarm Chat MRU Protocol >Chat protocol built directly ontop of swarm mutable resources. ## Metadata All data structures are wrapped in a JSON object envelope with the following fields. The payload field is a JSON object confoming to the respective data type. ```json { "protocol": "<protocol name>/<version>", "type": "<string handled by protocol>", "extensions": <Optional array of strings>, "utc_timestamp": <number>, "previous_event_pointer": "<<0x...>>", "payload": <JSON Object> } ``` ## Data Types ### Channel ```json { "protocol": "swarmchat/v0.1", "utc_timestamp": 1529686580, "type": "channel", "previous_event_pointer": "<<0x...>>", "payload":{ "name": "<<string>>", "identities": [ "<<Swarm Feed or ens>>", "<<Swarm Feed or ens>>" ] } } ``` ### Event :::info For now this is just conversation 'content', eventually though this will have events that enable reactions to messages. (think slack) ::: ```json { "protocol": "swarmchat/v0.1", "utc_timestamp": 1529686580, "type": "message", "extensions": "<Optional array of strings>", "previous_event_pointer": "<<0x...>>", "payload":{ "body": "Hello World! 👋" } } ``` Clients may support `event type extensions`, such as `html` shown in the following example. ### Event Type Extension ```json { "protocol": "swarmchat/v1", "type": "chat_message", "extensions": ["html"] "utc_timestamp": 1529686580, "payload": { "message": "<fallback message string>", "html": "<HTML message>" } } ```