Add a JSON schema for matrix federation events
parent
569d496430
commit
ae9aacd89d
@ -0,0 +1,120 @@
|
|||||||
|
# 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
|
||||||
|
items:
|
||||||
|
- type: string
|
||||||
|
description: Event id of the referenced event.
|
||||||
|
$ref: "#/definitions/event_id"
|
||||||
|
- type: object
|
||||||
|
description: Reference hashes of the reference event.
|
||||||
|
$ref: "#/definitions/hashes"
|
||||||
|
event_reference_list:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: "#/definitions/event_reference"
|
Loading…
Reference in New Issue