OpenChatProtocol Extensions

8 minute read

OpenChatProtocol is designed to last, and that means being extensible. All packets contain a data-header that is designed for extensions.

The data header includes the core edition, the type in the standard format (module:item), and the modules version explictly stringed. Any paramaters off the standard list (see "standard paramaters list" later in this document), MUST be prefixed with the extension. For example: messages:special_property: value.

core: 2021
type: messages:message
version: "1.0.0"

messages:special_property: value

Standard Property List

Property Required Pourpose
core Yes To define which version of the core sped you are using
type Yes To define what type of packet you are sending, and what you intend to operate on.
version Yes To define what version of the module you are using is
operation No (default: GET) Defines what the packet intends to do.
guid Sometimes Stores an objects GUID.
language No Defines the language of the conten you are sending. This does not affect its keys.
time No Defines when an operation happned. This should be a time string in the ISO format of DD-MM-YYYY HH:MM:SS. ms are not allowed, and the year can expand if needed (e.g., to 12020).
content_type if non-text Defines the data type of the content is not text data.
content Sometimes Defines the content of a message. This could be a ban message, reaction, text message, or voice packet.
target Sometimes GUID of the object you want to target with this operation.
author Defines WHO created the content

Content Type Values

Common/Wikipedia:

binary/image

Extension Type Code
.png binary/image/png
.qoi binary/image/qoi
.jpeg / .jpg binary/image/jpeg
.bmp binary/image/bmp
.gif binary/image/gif
.tiff / .tif binary/image/tiff

binary/video

Extension Type Code
.gifv binary/video/gifv
.qif binary/video/qif
.ogg binary/video/ogg
.mp4 binary/video/mp4
.mp5 binary/video/mp5
.mov binary/video/mov
.avi binary/video/avi
.webm binary/video/webm
.mkv binary/video/mkv
.mpeg binary/video/mpeg

binary/audio

Often used for sending voice data in calls.

Extension Type Code
.mp1 binary/audio/mp1
.mp2 binary/audio/mp2
.mp3 binary/audio/mp3

binary/archive

Extension Type Code
.zip binary/archive/zip
.tar binary/archive/tar
.tar.xz binary/archive/tar.xz
.tar.gz binary/archive/tar.gz
.xz binary/archive/xz
.gz binary/archive/gz
.zipx binary/archive/zipx
.iso binary/archive/iso
.rar binary/archive/rar
.bak text/archive/bak
.a text/archive/generic

text/image

Extension Type Code
.svg text/image/svg

text/rich

Likely going to be split up further.

Extension Type Code
.ods text/rich/ods
.odt text/rich/odt
.doc text/rich/ms-doc
.docx text/rich/ms-docx
.ppt text/rich/ms-ppt

text/plain

Extension Type Code
.txt text/plain/generic
.md text/plain/markdown
.yaml text/plain/yaml
.json text/plain/json
.csv text/plain/csv

(Skipped binary/executeable, text/code)