{ "$id": "websocket-message.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "WebSocket Message", "description": "Schema describing a complete WebSocket message. A message may consist of one or more frames and carries either text or binary data between endpoints.", "type": "object", "required": [ "type", "data" ], "properties": { "type": { "type": "string", "enum": [ "text", "binary" ], "description": "The type of the message, determined by the opcode of the first frame. Text messages contain UTF-8 data; binary messages contain raw bytes." }, "data": { "type": "string", "description": "The message payload. For text messages this is a UTF-8 string. For binary messages this is base64-encoded binary data." }, "size": { "type": "integer", "minimum": 0, "description": "The size of the message payload in bytes." }, "fragmented": { "type": "boolean", "default": false, "description": "Whether the message was delivered across multiple frames using fragmentation." }, "compressed": { "type": "boolean", "default": false, "description": "Whether the message was compressed using a negotiated extension such as permessage-deflate." }, "timestamp": { "type": "string", "format": "date-time", "description": "The time at which the message was sent or received." } }, "additionalProperties": false }