| { |
| "$schema": "https://json-schema.org/draft/2020-12/schema", |
| "$id": "https://hypercortex.org/schemas/message_schema.json", |
| "title": "HMP Message Schema", |
| "description": "Validates all message types in the HyperCortex Mesh Protocol (HMP): P2P, Broadcast, Relay, Topiccast.", |
| "type": "object", |
| "oneOf": [ |
| { "$ref": "#/definitions/p2p" }, |
| { "$ref": "#/definitions/broadcast" }, |
| { "$ref": "#/definitions/relay" }, |
| { "$ref": "#/definitions/topiccast" } |
| ], |
| "definitions": { |
| "common": { |
| "type": "object", |
| "properties": { |
| "type": { "type": "string" }, |
| "timestamp": { "type": "string", "format": "date-time" } |
| }, |
| "required": ["type", "timestamp"], |
| "additionalProperties": true |
| }, |
| "p2p": { |
| "allOf": [ |
| { "$ref": "#/definitions/common" }, |
| { |
| "type": "object", |
| "properties": { |
| "type": { "const": "p2p" }, |
| "from": { "type": "string" }, |
| "to": { "type": "string" }, |
| "payload": { "type": "string" }, |
| "encryption": { "type": "string" } |
| }, |
| "required": ["from", "to", "payload"] |
| } |
| ] |
| }, |
| "broadcast": { |
| "allOf": [ |
| { "$ref": "#/definitions/common" }, |
| { |
| "type": "object", |
| "properties": { |
| "type": { "const": "broadcast" }, |
| "content": { "type": "string" }, |
| "tags": { |
| "type": "array", |
| "items": { "type": "string" } |
| }, |
| "ttl": { "type": "string", "format": "date-time" } |
| }, |
| "required": ["content"] |
| } |
| ] |
| }, |
| "relay": { |
| "allOf": [ |
| { "$ref": "#/definitions/common" }, |
| { |
| "type": "object", |
| "properties": { |
| "type": { "const": "relay" }, |
| "from": { "type": "string" }, |
| "to": { "type": "string" }, |
| "relay": { "type": "string" }, |
| "payload": { "type": "string" }, |
| "encryption": { "type": "string" } |
| }, |
| "required": ["from", "to", "relay", "payload"] |
| } |
| ] |
| }, |
| "topiccast": { |
| "allOf": [ |
| { "$ref": "#/definitions/common" }, |
| { |
| "type": "object", |
| "properties": { |
| "type": { "const": "topiccast" }, |
| "payload": { "type": "string" }, |
| "tags": { |
| "type": "array", |
| "items": { "type": "string" } |
| }, |
| "hash": { "type": "string" } |
| }, |
| "required": ["payload", "tags"] |
| } |
| ] |
| } |
| } |
| } |