# JSON Schema for Matrix events. http://json-schema.org/ title: "Matrix Event" type: object properties: auth_events: description: The events needed to authenticate this event $ref: "#/definitions/event_reference_list" content: type: object description: The body of the event. depth: type: integer description: A number one greater than that of any preceeding event. minimum: 0 event_id: $ref: "#/definitions/event_id" hashes: $ref: "#/definitions/hashes" origin: $ref: "#/definitions/server_id" origin_server_ts: type: integer description: Posix timestamp on the originating server minimum: 0 prev_events: description: The event(s) this event came after. $ref: "#/definitions/event_reference_list" prev_state: description: The state event(s) this event replaces. $ref: "#/definitions/event_reference_list" room_id: $ref: "#/definitions/room_id" sender: oneOf: - $ref: "#/definitions/user_id" - $ref: "#/definitions/server_id" state_key: type: string type: type: string unsigned: type: object required: - auth_events - content - depth - event_id - hashes - origin - origin_server_ts - prev_events - room_id - sender - type dependencies: state_key: - prev_state prev_state: - state_key definitions: server_id: type: string description: Identifies a server. pattern: "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*\ ([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\ (:[0-9]*[0-9])?$" event_id: type: string description: Identifies an event. pattern: "^\\$[^:]+:\ (([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*\ ([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\ (:[0-9]*[0-9])?$" room_id: type: string description: Identifies a room. pattern: "^\\![^:]+:\ (([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*\ ([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\ (:[0-9]*[0-9])?$" user_id: type: string description: Identifies a user. pattern: "^\\@[^:]+:\ (([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*\ ([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\ (:[0-9]*[0-9])?$" base64: type: string description: Base64 string without padding. pattern: "^[a-zA-Z0-9/+]*$" hashes: type: object description: Hashes minProperties: 1 additionalProperties: $ref: "#/definitions/base64" signatures: type: object description: Signatures additionalProperties: type: object minProperties: 1 additionalProperties: $ref: "#/definitions/base64" event_reference: type: array minItems: 2 maxItems: 2 items: - type: string description: Event id of the referenced event. $ref: "#/definitions/event_id" - type: object description: Reference hashes of the referenced event. $ref: "#/definitions/hashes" event_reference_list: type: array items: $ref: "#/definitions/event_reference"