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