diff --git a/protocol-spec/json-schema/BaseMessage.schema.json b/protocol-spec/json-schema/BaseMessage.schema.json new file mode 100644 index 0000000..03829ff --- /dev/null +++ b/protocol-spec/json-schema/BaseMessage.schema.json @@ -0,0 +1,75 @@ +{ + "definitions": {}, + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "http://example.com/root.json", + "type": "object", + "title": "Base Message Schema", + "required": [ + "id", + "type", + "from", + "to", + "payload" + ], + "additionalProperties": false, + "properties": { + "id": { + "$id": "#/properties/id", + "type": "string", + "title": "id", + "description": "Message identifier (used to track the request-response chain)", + "examples": [ + "abcd" + ], + "pattern": "^(.*)$" + }, + "type": { + "$id": "#/properties/type", + "type": "string", + "title": "type", + "description": "Type of message (used to determine which extension this message belongs to)", + "examples": [ + "profile:register", + "profile:login", + "incorrectMessageType:error" + ], + "pattern": "^(.*)$" + }, + "from": { + "$id": "#/properties/from", + "type": "string", + "title": "from", + "description": "From which entity this message is send. May be set to \"anonymous\" value, if action doesn't require authorization. This is EntityID", + "examples": [ + "396277b7dcd0f1173f2007baa604de7593529cc3fbf335fb7924851cb25c1fdf", + "@juliet@396277b7dcd0f1173f2007baa604de7593529cc3fbf335fb7924851cb25c1fdf", + "#chpok@b9966d89028b120145dad38961bed0b3b2eac0a2915c0bb1665ffcc1586f6f59", + "anonymous" + ], + "pattern": "^(.*)$" + }, + "to": { + "$id": "#/properties/to", + "type": "string", + "title": "to", + "description": "Message recipient. This is Entity ID.", + "examples": [ + "@juliet@02a6f23250868e903ff62e99e664a5717e945ca8153bf0ebc4f505cbe3a0860c", + "#white_house_garden@8baef2426dc6a92e16d39d79d90ae6d5a0080aaeccc5f02f1e83a959bc4d0be7", + "%phone:1234567890@6dfea40d98f71b3191f94c31af887a00eaeef2fe3501226e3fbb302fc5269eec", + "@romeo@cadmium.im" + ], + "pattern": "^(.*)$" + }, + "payload": { + "$id": "#/properties/payload", + "type": "object", + "title": "payload", + "description": "Message payload (used to store extra information in message, list of permissible fields in the payload depends on \"type\" field)", + "patternProperties": { + "^(.*)$": {} + } + } + } + } + \ No newline at end of file