Make all the schema files yaml
This commit is contained in:
parent
4b70dd8bac
commit
f81b967e2d
64 changed files with 395 additions and 457 deletions
|
@ -49,7 +49,8 @@ def check_parameter(filepath, request, parameter):
|
||||||
# Setting the 'id' tells jsonschema where the file is so that it
|
# Setting the 'id' tells jsonschema where the file is so that it
|
||||||
# can correctly resolve relative $ref references in the schema
|
# can correctly resolve relative $ref references in the schema
|
||||||
schema['id'] = fileurl
|
schema['id'] = fileurl
|
||||||
jsonschema.validate(example, schema)
|
resolver = jsonschema.RefResolver(filepath, schema, handlers={"file": load_yaml})
|
||||||
|
jsonschema.validate(example, schema, resolver=resolver)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise ValueError("Error validating JSON schema for %r" % (
|
raise ValueError("Error validating JSON schema for %r" % (
|
||||||
request
|
request
|
||||||
|
@ -76,7 +77,8 @@ def check_response(filepath, request, code, response):
|
||||||
# Setting the 'id' tells jsonschema where the file is so that it
|
# Setting the 'id' tells jsonschema where the file is so that it
|
||||||
# can correctly resolve relative $ref references in the schema
|
# can correctly resolve relative $ref references in the schema
|
||||||
schema['id'] = fileurl
|
schema['id'] = fileurl
|
||||||
jsonschema.validate(example, schema)
|
resolver = jsonschema.RefResolver(filepath, schema, handlers={"file": load_yaml})
|
||||||
|
jsonschema.validate(example, schema, resolver=resolver)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise ValueError("Error validating JSON schema for %r %r" % (
|
raise ValueError("Error validating JSON schema for %r %r" % (
|
||||||
request, code
|
request, code
|
||||||
|
@ -103,6 +105,14 @@ def check_swagger_file(filepath):
|
||||||
check_response(filepath, request, code, response)
|
check_response(filepath, request, code, response)
|
||||||
|
|
||||||
|
|
||||||
|
def load_yaml(path):
|
||||||
|
if not path.startswith("file:///"):
|
||||||
|
raise Exception("Bad ref: %s" % (path,))
|
||||||
|
path = path[len("file://"):]
|
||||||
|
with open(path, "r") as f:
|
||||||
|
return yaml.load(f)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
paths = sys.argv[1:]
|
paths = sys.argv[1:]
|
||||||
if not paths:
|
if not paths:
|
||||||
|
|
|
@ -1,49 +0,0 @@
|
||||||
{
|
|
||||||
"type": "object",
|
|
||||||
"title": "Event",
|
|
||||||
"properties": {
|
|
||||||
"content": {
|
|
||||||
"type": "object",
|
|
||||||
"title": "EventContent",
|
|
||||||
"description": "The content of this event. The fields in this object will vary depending on the type of event."
|
|
||||||
},
|
|
||||||
"origin_server_ts": {
|
|
||||||
"type": "integer",
|
|
||||||
"format": "int64",
|
|
||||||
"description": "Timestamp in milliseconds on originating homeserver when this event was sent."
|
|
||||||
},
|
|
||||||
"sender": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "The MXID of the user who sent this event."
|
|
||||||
},
|
|
||||||
"state_key": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Optional. This key will only be present for state events. A unique key which defines the overwriting semantics for this piece of room state."
|
|
||||||
},
|
|
||||||
"type": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "The type of event."
|
|
||||||
},
|
|
||||||
"unsigned": {
|
|
||||||
"type": "object",
|
|
||||||
"title": "Unsigned",
|
|
||||||
"description": "Information about this event which was not sent by the originating homeserver",
|
|
||||||
"properties": {
|
|
||||||
"age": {
|
|
||||||
"type": "integer",
|
|
||||||
"format": "int64",
|
|
||||||
"description": "Time in milliseconds since the event was sent."
|
|
||||||
},
|
|
||||||
"prev_content": {
|
|
||||||
"title": "EventContent",
|
|
||||||
"type": "object",
|
|
||||||
"description": "Optional. The previous ``content`` for this state. This will be present only for state events appearing in the ``timeline``. If this is not a state event, or there is no previous content, this key will be missing."
|
|
||||||
},
|
|
||||||
"transaction_id": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Optional. The transaction ID set when this message was sent. This key will only be present for message events sent by the device calling this API."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
45
api/client-server/definitions/event.yaml
Normal file
45
api/client-server/definitions/event.yaml
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
properties:
|
||||||
|
content:
|
||||||
|
description: The content of this event. The fields in this object will vary depending
|
||||||
|
on the type of event.
|
||||||
|
title: EventContent
|
||||||
|
type: object
|
||||||
|
origin_server_ts:
|
||||||
|
description: Timestamp in milliseconds on originating homeserver when this event
|
||||||
|
was sent.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
sender:
|
||||||
|
description: The MXID of the user who sent this event.
|
||||||
|
type: string
|
||||||
|
state_key:
|
||||||
|
description: Optional. This key will only be present for state events. A unique
|
||||||
|
key which defines the overwriting semantics for this piece of room state.
|
||||||
|
type: string
|
||||||
|
type:
|
||||||
|
description: The type of event.
|
||||||
|
type: string
|
||||||
|
unsigned:
|
||||||
|
description: Information about this event which was not sent by the originating
|
||||||
|
homeserver
|
||||||
|
properties:
|
||||||
|
age:
|
||||||
|
description: Time in milliseconds since the event was sent.
|
||||||
|
format: int64
|
||||||
|
type: integer
|
||||||
|
prev_content:
|
||||||
|
description: Optional. The previous ``content`` for this state. This will
|
||||||
|
be present only for state events appearing in the ``timeline``. If this
|
||||||
|
is not a state event, or there is no previous content, this key will be
|
||||||
|
missing.
|
||||||
|
title: EventContent
|
||||||
|
type: object
|
||||||
|
transaction_id:
|
||||||
|
description: Optional. The transaction ID set when this message was sent.
|
||||||
|
This key will only be present for message events sent by the device calling
|
||||||
|
this API.
|
||||||
|
type: string
|
||||||
|
title: Unsigned
|
||||||
|
type: object
|
||||||
|
title: Event
|
||||||
|
type: object
|
|
@ -1,13 +0,0 @@
|
||||||
{
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"events": {
|
|
||||||
"type": "array",
|
|
||||||
"description": "List of events",
|
|
||||||
"items": {
|
|
||||||
"type": "object",
|
|
||||||
"allOf": [{"$ref": "event.json" }]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
9
api/client-server/definitions/event_batch.yaml
Normal file
9
api/client-server/definitions/event_batch.yaml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
properties:
|
||||||
|
events:
|
||||||
|
description: List of events
|
||||||
|
items:
|
||||||
|
allOf:
|
||||||
|
- $ref: event.yaml
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
type: object
|
|
@ -1,42 +0,0 @@
|
||||||
{
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"limit": {
|
|
||||||
"type": "integer",
|
|
||||||
"description":
|
|
||||||
"The maximum number of events to return."
|
|
||||||
},
|
|
||||||
"types": {
|
|
||||||
"type": "array",
|
|
||||||
"description":
|
|
||||||
"A list of event types to include. If this list is absent then all event types are included. A '*' can be used as a wildcard to match any sequence of characters.",
|
|
||||||
"items": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"not_types": {
|
|
||||||
"type": "array",
|
|
||||||
"description":
|
|
||||||
"A list of event types to exclude. If this list is absent then no event types are excluded. A matching type will be excluded even if it is listed in the 'types' filter. A '*' can be used as a wildcard to match any sequence of characters.",
|
|
||||||
"items": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"senders": {
|
|
||||||
"type": "array",
|
|
||||||
"description":
|
|
||||||
"A list of senders IDs to include. If this list is absent then all senders are included. A '*' can be used as a wildcard to match any sequence of characters.",
|
|
||||||
"items": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"not_senders": {
|
|
||||||
"type": "array",
|
|
||||||
"description":
|
|
||||||
"A list of sender IDs to exclude. If this list is absent then no senders are excluded. A matching sender will be excluded even if it is listed in the 'senders' filter. A '*' can be used as a wildcard to match any sequence of characters.",
|
|
||||||
"items": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
34
api/client-server/definitions/event_filter.yaml
Normal file
34
api/client-server/definitions/event_filter.yaml
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
properties:
|
||||||
|
limit:
|
||||||
|
description: The maximum number of events to return.
|
||||||
|
type: integer
|
||||||
|
not_senders:
|
||||||
|
description: A list of sender IDs to exclude. If this list is absent then no senders
|
||||||
|
are excluded. A matching sender will be excluded even if it is listed in the
|
||||||
|
'senders' filter. A '*' can be used as a wildcard to match any sequence of characters.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
not_types:
|
||||||
|
description: A list of event types to exclude. If this list is absent then no
|
||||||
|
event types are excluded. A matching type will be excluded even if it is listed
|
||||||
|
in the 'types' filter. A '*' can be used as a wildcard to match any sequence
|
||||||
|
of characters.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
senders:
|
||||||
|
description: A list of senders IDs to include. If this list is absent then all
|
||||||
|
senders are included. A '*' can be used as a wildcard to match any sequence
|
||||||
|
of characters.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
types:
|
||||||
|
description: A list of event types to include. If this list is absent then all
|
||||||
|
event types are included. A '*' can be used as a wildcard to match any sequence
|
||||||
|
of characters.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
type: object
|
|
@ -1,9 +0,0 @@
|
||||||
{
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"kind": {
|
|
||||||
"type": "string",
|
|
||||||
"enum": ["event_match", "profile_tag", "contains_display_name", "room_member_count"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
9
api/client-server/definitions/push_condition.yaml
Normal file
9
api/client-server/definitions/push_condition.yaml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
properties:
|
||||||
|
kind:
|
||||||
|
enum:
|
||||||
|
- event_match
|
||||||
|
- profile_tag
|
||||||
|
- contains_display_name
|
||||||
|
- room_member_count
|
||||||
|
type: string
|
||||||
|
type: object
|
|
@ -1,21 +0,0 @@
|
||||||
{
|
|
||||||
"title": "PushRule",
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"default": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"enabled": {
|
|
||||||
"type": "boolean"
|
|
||||||
},
|
|
||||||
"rule_id": {
|
|
||||||
"type": "string"
|
|
||||||
},
|
|
||||||
"actions": {
|
|
||||||
"items": {
|
|
||||||
"type": ["object", "string"]
|
|
||||||
},
|
|
||||||
"type": "array"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
15
api/client-server/definitions/push_rule.yaml
Normal file
15
api/client-server/definitions/push_rule.yaml
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
properties:
|
||||||
|
actions:
|
||||||
|
items:
|
||||||
|
type:
|
||||||
|
- object
|
||||||
|
- string
|
||||||
|
type: array
|
||||||
|
default:
|
||||||
|
type: boolean
|
||||||
|
enabled:
|
||||||
|
type: boolean
|
||||||
|
rule_id:
|
||||||
|
type: string
|
||||||
|
title: PushRule
|
||||||
|
type: object
|
|
@ -1,65 +0,0 @@
|
||||||
{
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"content": {
|
|
||||||
"items": {
|
|
||||||
"type": "object",
|
|
||||||
"title": "PushRule",
|
|
||||||
"allOf": [
|
|
||||||
{
|
|
||||||
"$ref": "push_rule.json"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"type": "array"
|
|
||||||
},
|
|
||||||
"override": {
|
|
||||||
"items": {
|
|
||||||
"type": "object",
|
|
||||||
"title": "PushRule",
|
|
||||||
"allOf": [
|
|
||||||
{
|
|
||||||
"$ref": "push_rule.json"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"type": "array"
|
|
||||||
},
|
|
||||||
"sender": {
|
|
||||||
"items": {
|
|
||||||
"type": "object",
|
|
||||||
"title": "PushRule",
|
|
||||||
"allOf": [
|
|
||||||
{
|
|
||||||
"$ref": "push_rule.json"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"type": "array"
|
|
||||||
},
|
|
||||||
"underride": {
|
|
||||||
"items": {
|
|
||||||
"type": "object",
|
|
||||||
"title": "PushRule",
|
|
||||||
"allOf": [
|
|
||||||
{
|
|
||||||
"$ref": "push_rule.json"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"type": "array"
|
|
||||||
},
|
|
||||||
"room": {
|
|
||||||
"items": {
|
|
||||||
"type": "object",
|
|
||||||
"title": "PushRule",
|
|
||||||
"allOf": [
|
|
||||||
{
|
|
||||||
"$ref": "push_rule.json"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"type": "array"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
37
api/client-server/definitions/push_ruleset.yaml
Normal file
37
api/client-server/definitions/push_ruleset.yaml
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
properties:
|
||||||
|
content:
|
||||||
|
items:
|
||||||
|
allOf:
|
||||||
|
- $ref: push_rule.yaml
|
||||||
|
title: PushRule
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
override:
|
||||||
|
items:
|
||||||
|
allOf:
|
||||||
|
- $ref: push_rule.yaml
|
||||||
|
title: PushRule
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
room:
|
||||||
|
items:
|
||||||
|
allOf:
|
||||||
|
- $ref: push_rule.yaml
|
||||||
|
title: PushRule
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
sender:
|
||||||
|
items:
|
||||||
|
allOf:
|
||||||
|
- $ref: push_rule.yaml
|
||||||
|
title: PushRule
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
underride:
|
||||||
|
items:
|
||||||
|
allOf:
|
||||||
|
- $ref: push_rule.yaml
|
||||||
|
title: PushRule
|
||||||
|
type: object
|
||||||
|
type: array
|
||||||
|
type: object
|
|
@ -1,22 +0,0 @@
|
||||||
{
|
|
||||||
"type": "object",
|
|
||||||
"allOf": [{"$ref": "event_filter.json"}],
|
|
||||||
"properties": {
|
|
||||||
"rooms": {
|
|
||||||
"type": "array",
|
|
||||||
"description":
|
|
||||||
"A list of room IDs to include. If this list is absent then all rooms are included. A '*' can be used as a wildcard to match any sequence of characters.",
|
|
||||||
"items": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"not_rooms": {
|
|
||||||
"type": "array",
|
|
||||||
"description":
|
|
||||||
"A list of room IDs to exclude. If this list is absent then no rooms are excluded. A matching room will be excluded even if it is listed in the 'rooms' filter. A '*' can be used as a wildcard to match any sequence of characters.",
|
|
||||||
"items": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
17
api/client-server/definitions/room_event_filter.yaml
Normal file
17
api/client-server/definitions/room_event_filter.yaml
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
allOf:
|
||||||
|
- $ref: event_filter.yaml
|
||||||
|
properties:
|
||||||
|
not_rooms:
|
||||||
|
description: A list of room IDs to exclude. If this list is absent then no rooms
|
||||||
|
are excluded. A matching room will be excluded even if it is listed in the 'rooms'
|
||||||
|
filter. A '*' can be used as a wildcard to match any sequence of characters.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
rooms:
|
||||||
|
description: A list of room IDs to include. If this list is absent then all rooms
|
||||||
|
are included. A '*' can be used as a wildcard to match any sequence of characters.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
type: object
|
|
@ -1,49 +0,0 @@
|
||||||
{
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"room": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"state": {
|
|
||||||
"description":
|
|
||||||
"The state events to include for rooms.",
|
|
||||||
"allOf": [{"$ref": "room_event_filter.json"}]
|
|
||||||
},
|
|
||||||
"timeline": {
|
|
||||||
"description":
|
|
||||||
"The message and state update events to include for rooms.",
|
|
||||||
"allOf": [{"$ref": "room_event_filter.json"}]
|
|
||||||
},
|
|
||||||
"ephemeral": {
|
|
||||||
"description":
|
|
||||||
"The events that aren't recorded in the room history, e.g. typing and receipts, to include for rooms.",
|
|
||||||
"allOf": [{"$ref": "room_event_filter.json"}]
|
|
||||||
},
|
|
||||||
"include_leave": {
|
|
||||||
"description":
|
|
||||||
"Include rooms that the user has left in the sync, default false",
|
|
||||||
"type": "boolean"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"presence": {
|
|
||||||
"description":
|
|
||||||
"The presence updates to include.",
|
|
||||||
"allOf": [{"$ref": "event_filter.json"}]
|
|
||||||
},
|
|
||||||
"event_format": {
|
|
||||||
"description":
|
|
||||||
"The format to use for events. 'client' will return the events in a format suitable for clients. 'federation' will return the raw event as receieved over federation. The default is 'client'.",
|
|
||||||
"type": "string",
|
|
||||||
"enum": ["client", "federation"]
|
|
||||||
},
|
|
||||||
"event_fields": {
|
|
||||||
"type": "array",
|
|
||||||
"description":
|
|
||||||
"List of event fields to include. If this list is absent then all fields are included. The entries may include '.' charaters to indicate sub-fields. So ['content.body'] will include the 'body' field of the 'content' object. A literal '.' character in a field name may be escaped using a '\\'. A server may include more fields than were requested.",
|
|
||||||
"items": {
|
|
||||||
"type": "string"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
42
api/client-server/definitions/sync_filter.yaml
Normal file
42
api/client-server/definitions/sync_filter.yaml
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
properties:
|
||||||
|
event_fields:
|
||||||
|
description: List of event fields to include. If this list is absent then all
|
||||||
|
fields are included. The entries may include '.' charaters to indicate sub-fields.
|
||||||
|
So ['content.body'] will include the 'body' field of the 'content' object. A
|
||||||
|
literal '.' character in a field name may be escaped using a '\'. A server may
|
||||||
|
include more fields than were requested.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
type: array
|
||||||
|
event_format:
|
||||||
|
description: The format to use for events. 'client' will return the events in
|
||||||
|
a format suitable for clients. 'federation' will return the raw event as receieved
|
||||||
|
over federation. The default is 'client'.
|
||||||
|
enum:
|
||||||
|
- client
|
||||||
|
- federation
|
||||||
|
type: string
|
||||||
|
presence:
|
||||||
|
allOf:
|
||||||
|
- $ref: event_filter.yaml
|
||||||
|
description: The presence updates to include.
|
||||||
|
room:
|
||||||
|
properties:
|
||||||
|
ephemeral:
|
||||||
|
allOf:
|
||||||
|
- $ref: room_event_filter.yaml
|
||||||
|
description: The events that aren't recorded in the room history, e.g. typing
|
||||||
|
and receipts, to include for rooms.
|
||||||
|
include_leave:
|
||||||
|
description: Include rooms that the user has left in the sync, default false
|
||||||
|
type: boolean
|
||||||
|
state:
|
||||||
|
allOf:
|
||||||
|
- $ref: room_event_filter.yaml
|
||||||
|
description: The state events to include for rooms.
|
||||||
|
timeline:
|
||||||
|
allOf:
|
||||||
|
- $ref: room_event_filter.yaml
|
||||||
|
description: The message and state update events to include for rooms.
|
||||||
|
type: object
|
||||||
|
type: object
|
|
@ -1,14 +0,0 @@
|
||||||
{
|
|
||||||
"type": "object",
|
|
||||||
"allOf": [{"$ref":"event_batch.json"}],
|
|
||||||
"properties": {
|
|
||||||
"limited": {
|
|
||||||
"type": "boolean",
|
|
||||||
"description": "True if the number of events returned was limited by the ``limit`` on the filter"
|
|
||||||
},
|
|
||||||
"prev_batch": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "If the batch was limited then this is a token that can be supplied to the server to retrieve earlier events"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
12
api/client-server/definitions/timeline_batch.yaml
Normal file
12
api/client-server/definitions/timeline_batch.yaml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
allOf:
|
||||||
|
- $ref: event_batch.yaml
|
||||||
|
properties:
|
||||||
|
limited:
|
||||||
|
description: True if the number of events returned was limited by the ``limit``
|
||||||
|
on the filter
|
||||||
|
type: boolean
|
||||||
|
prev_batch:
|
||||||
|
description: If the batch was limited then this is a token that can be supplied
|
||||||
|
to the server to retrieve earlier events
|
||||||
|
type: string
|
||||||
|
type: object
|
|
@ -42,7 +42,7 @@ paths:
|
||||||
schema:
|
schema:
|
||||||
type: object
|
type: object
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: "definitions/sync_filter.json"
|
- $ref: "definitions/sync_filter.yaml"
|
||||||
example: |-
|
example: |-
|
||||||
{
|
{
|
||||||
"room": {
|
"room": {
|
||||||
|
@ -138,6 +138,6 @@ paths:
|
||||||
schema:
|
schema:
|
||||||
type: object
|
type: object
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: "definitions/sync_filter.json"
|
- $ref: "definitions/sync_filter.yaml"
|
||||||
tags:
|
tags:
|
||||||
- Room participation
|
- Room participation
|
||||||
|
|
|
@ -98,7 +98,7 @@ paths:
|
||||||
type: object
|
type: object
|
||||||
title: Event
|
title: Event
|
||||||
allOf:
|
allOf:
|
||||||
- "$ref": "../../event-schemas/schema/core-event-schema/room_event.json"
|
- "$ref": "../../event-schemas/schema/core-event-schema/room_event.yaml"
|
||||||
400:
|
400:
|
||||||
description: "Bad pagination ``from`` parameter."
|
description: "Bad pagination ``from`` parameter."
|
||||||
# No tags to exclude this from the swagger UI - use the non-guest version instead.
|
# No tags to exclude this from the swagger UI - use the non-guest version instead.
|
||||||
|
|
|
@ -84,7 +84,7 @@ paths:
|
||||||
type: object
|
type: object
|
||||||
title: Event
|
title: Event
|
||||||
allOf:
|
allOf:
|
||||||
- "$ref": "../../event-schemas/schema/core-event-schema/room_event.json"
|
- "$ref": "../../event-schemas/schema/core-event-schema/room_event.yaml"
|
||||||
400:
|
400:
|
||||||
description: "Bad pagination ``from`` parameter."
|
description: "Bad pagination ``from`` parameter."
|
||||||
tags:
|
tags:
|
||||||
|
@ -286,7 +286,7 @@ paths:
|
||||||
type: object
|
type: object
|
||||||
title: Event
|
title: Event
|
||||||
allOf:
|
allOf:
|
||||||
- "$ref": "../../event-schemas/schema/core-event-schema/event.json"
|
- "$ref": "../../event-schemas/schema/core-event-schema/event.yaml"
|
||||||
rooms:
|
rooms:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
|
@ -333,7 +333,7 @@ paths:
|
||||||
type: object
|
type: object
|
||||||
title: RoomEvent
|
title: RoomEvent
|
||||||
allOf:
|
allOf:
|
||||||
- "$ref": "../../event-schemas/schema/core-event-schema/room_event.json"
|
- "$ref": "../../event-schemas/schema/core-event-schema/room_event.yaml"
|
||||||
required: ["start", "end", "chunk"]
|
required: ["start", "end", "chunk"]
|
||||||
state:
|
state:
|
||||||
type: array
|
type: array
|
||||||
|
@ -346,7 +346,7 @@ paths:
|
||||||
title: StateEvent
|
title: StateEvent
|
||||||
type: object
|
type: object
|
||||||
allOf:
|
allOf:
|
||||||
- "$ref": "../../event-schemas/schema/core-event-schema/state_event.json"
|
- "$ref": "../../event-schemas/schema/core-event-schema/state_event.yaml"
|
||||||
visibility:
|
visibility:
|
||||||
type: string
|
type: string
|
||||||
enum: ["private", "public"]
|
enum: ["private", "public"]
|
||||||
|
@ -362,7 +362,7 @@ paths:
|
||||||
title: Event
|
title: Event
|
||||||
type: object
|
type: object
|
||||||
allOf:
|
allOf:
|
||||||
- "$ref": "../../event-schemas/schema/core-event-schema/event.json"
|
- "$ref": "../../event-schemas/schema/core-event-schema/event.yaml"
|
||||||
required: ["room_id", "membership"]
|
required: ["room_id", "membership"]
|
||||||
required: ["end", "rooms", "presence"]
|
required: ["end", "rooms", "presence"]
|
||||||
404:
|
404:
|
||||||
|
@ -401,7 +401,7 @@ paths:
|
||||||
}
|
}
|
||||||
schema:
|
schema:
|
||||||
allOf:
|
allOf:
|
||||||
- "$ref": "../../event-schemas/schema/core-event-schema/event.json"
|
- "$ref": "../../event-schemas/schema/core-event-schema/event.yaml"
|
||||||
404:
|
404:
|
||||||
description: The event was not found or you do not have permission to read this event.
|
description: The event was not found or you do not have permission to read this event.
|
||||||
tags:
|
tags:
|
||||||
|
|
|
@ -210,6 +210,6 @@ paths:
|
||||||
type: object
|
type: object
|
||||||
title: PresenceEvent
|
title: PresenceEvent
|
||||||
allOf:
|
allOf:
|
||||||
- "$ref": "../../event-schemas/schema/core-event-schema/event.json"
|
- "$ref": "../../event-schemas/schema/core-event-schema/event.yaml"
|
||||||
tags:
|
tags:
|
||||||
- Presence
|
- Presence
|
||||||
|
|
|
@ -45,14 +45,14 @@ paths:
|
||||||
description: The ruleset for this profile tag.
|
description: The ruleset for this profile tag.
|
||||||
title: Ruleset
|
title: Ruleset
|
||||||
allOf: [
|
allOf: [
|
||||||
"$ref": "definitions/push_ruleset.json"
|
"$ref": "definitions/push_ruleset.yaml"
|
||||||
]
|
]
|
||||||
global:
|
global:
|
||||||
type: object
|
type: object
|
||||||
description: The global ruleset.
|
description: The global ruleset.
|
||||||
title: Ruleset
|
title: Ruleset
|
||||||
allOf: [
|
allOf: [
|
||||||
"$ref": "definitions/push_ruleset.json"
|
"$ref": "definitions/push_ruleset.yaml"
|
||||||
]
|
]
|
||||||
examples:
|
examples:
|
||||||
application/json: |-
|
application/json: |-
|
||||||
|
@ -297,7 +297,7 @@ paths:
|
||||||
description: The push rule.
|
description: The push rule.
|
||||||
title: PushRule
|
title: PushRule
|
||||||
allOf: [
|
allOf: [
|
||||||
"$ref": "definitions/push_rule.json"
|
"$ref": "definitions/push_rule.yaml"
|
||||||
]
|
]
|
||||||
tags:
|
tags:
|
||||||
- Push notifications
|
- Push notifications
|
||||||
|
@ -420,7 +420,7 @@ paths:
|
||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
title: conditions
|
title: conditions
|
||||||
allOf: [ "$ref": "definitions/push_condition.json" ]
|
allOf: [ "$ref": "definitions/push_condition.yaml" ]
|
||||||
required: ["actions"]
|
required: ["actions"]
|
||||||
responses:
|
responses:
|
||||||
200:
|
200:
|
||||||
|
|
|
@ -214,7 +214,7 @@ paths:
|
||||||
title: StateEvent
|
title: StateEvent
|
||||||
type: object
|
type: object
|
||||||
allOf:
|
allOf:
|
||||||
- "$ref": "../../event-schemas/schema/core-event-schema/state_event.json"
|
- "$ref": "../../event-schemas/schema/core-event-schema/state_event.yaml"
|
||||||
403:
|
403:
|
||||||
description: >
|
description: >
|
||||||
You aren't a member of the room and weren't previously a
|
You aren't a member of the room and weren't previously a
|
||||||
|
@ -396,7 +396,7 @@ paths:
|
||||||
type: object
|
type: object
|
||||||
title: RoomEvent
|
title: RoomEvent
|
||||||
allOf:
|
allOf:
|
||||||
- "$ref": "../../event-schemas/schema/core-event-schema/room_event.json"
|
- "$ref": "../../event-schemas/schema/core-event-schema/room_event.yaml"
|
||||||
required: ["start", "end", "chunk"]
|
required: ["start", "end", "chunk"]
|
||||||
state:
|
state:
|
||||||
type: array
|
type: array
|
||||||
|
@ -409,7 +409,7 @@ paths:
|
||||||
title: StateEvent
|
title: StateEvent
|
||||||
type: object
|
type: object
|
||||||
allOf:
|
allOf:
|
||||||
- "$ref": "../../event-schemas/schema/core-event-schema/state_event.json"
|
- "$ref": "../../event-schemas/schema/core-event-schema/state_event.yaml"
|
||||||
visibility:
|
visibility:
|
||||||
type: string
|
type: string
|
||||||
enum: ["private", "public"]
|
enum: ["private", "public"]
|
||||||
|
@ -424,7 +424,7 @@ paths:
|
||||||
title: Event
|
title: Event
|
||||||
type: object
|
type: object
|
||||||
allOf:
|
allOf:
|
||||||
- "$ref": "../../event-schemas/schema/core-event-schema/event.json"
|
- "$ref": "../../event-schemas/schema/core-event-schema/event.yaml"
|
||||||
required: ["room_id"]
|
required: ["room_id"]
|
||||||
403:
|
403:
|
||||||
description: >
|
description: >
|
||||||
|
|
|
@ -111,7 +111,7 @@ paths:
|
||||||
title: Event
|
title: Event
|
||||||
description: The event that matched.
|
description: The event that matched.
|
||||||
allOf:
|
allOf:
|
||||||
- "$ref": "../../event-schemas/schema/core-event-schema/room_event.json"
|
- "$ref": "../../event-schemas/schema/core-event-schema/room_event.yaml"
|
||||||
examples:
|
examples:
|
||||||
application/json: |-
|
application/json: |-
|
||||||
{
|
{
|
||||||
|
|
|
@ -114,7 +114,7 @@ paths:
|
||||||
``timeline``, if ``since`` is not given, or
|
``timeline``, if ``since`` is not given, or
|
||||||
``full_state`` is true).
|
``full_state`` is true).
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: "definitions/event_batch.json"
|
- $ref: "definitions/event_batch.yaml"
|
||||||
timeline:
|
timeline:
|
||||||
title: Timeline
|
title: Timeline
|
||||||
type: object
|
type: object
|
||||||
|
@ -122,7 +122,7 @@ paths:
|
||||||
The timeline of messages and state changes in the
|
The timeline of messages and state changes in the
|
||||||
room.
|
room.
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: "definitions/timeline_batch.json"
|
- $ref: "definitions/timeline_batch.yaml"
|
||||||
ephemeral:
|
ephemeral:
|
||||||
title: Ephemeral
|
title: Ephemeral
|
||||||
type: object
|
type: object
|
||||||
|
@ -131,7 +131,7 @@ paths:
|
||||||
recorded in the timeline or state of the room.
|
recorded in the timeline or state of the room.
|
||||||
e.g. typing.
|
e.g. typing.
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: "definitions/event_batch.json"
|
- $ref: "definitions/event_batch.yaml"
|
||||||
account_data:
|
account_data:
|
||||||
title: Account Data
|
title: Account Data
|
||||||
type: object
|
type: object
|
||||||
|
@ -139,7 +139,7 @@ paths:
|
||||||
The private data that this user has attached to
|
The private data that this user has attached to
|
||||||
this room.
|
this room.
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: "definitions/event_batch.json"
|
- $ref: "definitions/event_batch.yaml"
|
||||||
invite:
|
invite:
|
||||||
title: Invited Rooms
|
title: Invited Rooms
|
||||||
type: object
|
type: object
|
||||||
|
@ -166,7 +166,7 @@ paths:
|
||||||
delta against the archived ``state`` not the
|
delta against the archived ``state`` not the
|
||||||
``invite_state``.
|
``invite_state``.
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: "definitions/event_batch.json"
|
- $ref: "definitions/event_batch.yaml"
|
||||||
leave:
|
leave:
|
||||||
title: Left rooms
|
title: Left rooms
|
||||||
type: object
|
type: object
|
||||||
|
@ -182,7 +182,7 @@ paths:
|
||||||
description: |-
|
description: |-
|
||||||
The state updates for the room up to the start of the timeline.
|
The state updates for the room up to the start of the timeline.
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: "definitions/event_batch.json"
|
- $ref: "definitions/event_batch.yaml"
|
||||||
timeline:
|
timeline:
|
||||||
title: Timeline
|
title: Timeline
|
||||||
type: object
|
type: object
|
||||||
|
@ -190,14 +190,14 @@ paths:
|
||||||
The timeline of messages and state changes in the
|
The timeline of messages and state changes in the
|
||||||
room up to the point when the user left.
|
room up to the point when the user left.
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: "definitions/timeline_batch.json"
|
- $ref: "definitions/timeline_batch.yaml"
|
||||||
presence:
|
presence:
|
||||||
title: Presence
|
title: Presence
|
||||||
type: object
|
type: object
|
||||||
description: |-
|
description: |-
|
||||||
The updates to the presence status of other users.
|
The updates to the presence status of other users.
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: "definitions/event_batch.json"
|
- $ref: "definitions/event_batch.yaml"
|
||||||
examples:
|
examples:
|
||||||
application/json: |-
|
application/json: |-
|
||||||
{
|
{
|
||||||
|
|
|
@ -38,13 +38,12 @@ def check_example_file(examplepath, schemapath):
|
||||||
schema = yaml.load(f)
|
schema = yaml.load(f)
|
||||||
|
|
||||||
fileurl = "file://" + os.path.abspath(schemapath)
|
fileurl = "file://" + os.path.abspath(schemapath)
|
||||||
|
schema["id"] = fileurl
|
||||||
|
resolver = jsonschema.RefResolver(schemapath, schema, handlers={"file": load_yaml})
|
||||||
|
|
||||||
print ("Checking schema for: %r %r" % (examplepath, schemapath))
|
print ("Checking schema for: %r %r" % (examplepath, schemapath))
|
||||||
# Setting the 'id' tells jsonschema where the file is so that it
|
|
||||||
# can correctly resolve relative $ref references in the schema
|
|
||||||
schema['id'] = fileurl
|
|
||||||
try:
|
try:
|
||||||
jsonschema.validate(example, schema)
|
jsonschema.validate(example, schema, resolver=resolver)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise ValueError("Error validating JSON schema for %r %r" % (
|
raise ValueError("Error validating JSON schema for %r %r" % (
|
||||||
examplepath, schemapath
|
examplepath, schemapath
|
||||||
|
@ -71,6 +70,15 @@ def check_example_dir(exampledir, schemadir):
|
||||||
if errors:
|
if errors:
|
||||||
raise ValueError("Error validating examples")
|
raise ValueError("Error validating examples")
|
||||||
|
|
||||||
|
|
||||||
|
def load_yaml(path):
|
||||||
|
if not path.startswith("file:///"):
|
||||||
|
raise Exception("Bad ref: %s" % (path,))
|
||||||
|
path = path[len("file://"):]
|
||||||
|
with open(path, "r") as f:
|
||||||
|
return yaml.load(f)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
try:
|
try:
|
||||||
check_example_dir("examples", "schema")
|
check_example_dir("examples", "schema")
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
{
|
|
||||||
"type": "object",
|
|
||||||
"title": "Event",
|
|
||||||
"description": "The basic set of fields all events must have.",
|
|
||||||
"properties": {
|
|
||||||
"content": {
|
|
||||||
"type": "object",
|
|
||||||
"title": "EventContent",
|
|
||||||
"description": "The fields in this object will vary depending on the type of event. When interacting with the REST API, this is the HTTP body."
|
|
||||||
},
|
|
||||||
"type": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "The type of event. This SHOULD be namespaced similar to Java package naming conventions e.g. 'com.example.subdomain.event.type'"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
13
event-schemas/schema/core-event-schema/event.yaml
Normal file
13
event-schemas/schema/core-event-schema/event.yaml
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
description: The basic set of fields all events must have.
|
||||||
|
properties:
|
||||||
|
content:
|
||||||
|
description: The fields in this object will vary depending on the type of event.
|
||||||
|
When interacting with the REST API, this is the HTTP body.
|
||||||
|
title: EventContent
|
||||||
|
type: object
|
||||||
|
type:
|
||||||
|
description: The type of event. This SHOULD be namespaced similar to Java package
|
||||||
|
naming conventions e.g. 'com.example.subdomain.event.type'
|
||||||
|
type: string
|
||||||
|
title: Event
|
||||||
|
type: object
|
|
@ -1,23 +0,0 @@
|
||||||
{
|
|
||||||
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
||||||
"title": "ImageInfo",
|
|
||||||
"description": "Metadata about an image.",
|
|
||||||
"properties": {
|
|
||||||
"size": {
|
|
||||||
"type": "integer",
|
|
||||||
"description": "Size of the image in bytes."
|
|
||||||
},
|
|
||||||
"w": {
|
|
||||||
"type": "integer",
|
|
||||||
"description": "The width of the image in pixels."
|
|
||||||
},
|
|
||||||
"h": {
|
|
||||||
"type": "integer",
|
|
||||||
"description": "The height of the image in pixels."
|
|
||||||
},
|
|
||||||
"mimetype": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "The mimetype of the image, e.g. ``image/jpeg``."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
$schema: http://json-schema.org/draft-04/schema#
|
||||||
|
description: Metadata about an image.
|
||||||
|
properties:
|
||||||
|
h:
|
||||||
|
description: The height of the image in pixels.
|
||||||
|
type: integer
|
||||||
|
mimetype:
|
||||||
|
description: The mimetype of the image, e.g. ``image/jpeg``.
|
||||||
|
type: string
|
||||||
|
size:
|
||||||
|
description: Size of the image in bytes.
|
||||||
|
type: integer
|
||||||
|
w:
|
||||||
|
description: The width of the image in pixels.
|
||||||
|
type: integer
|
||||||
|
title: ImageInfo
|
|
@ -1,42 +0,0 @@
|
||||||
{
|
|
||||||
"type": "object",
|
|
||||||
"title": "Room Event",
|
|
||||||
"description": "In addition to the Event fields, Room Events may have the following additional fields.",
|
|
||||||
"allOf":[{
|
|
||||||
"$ref": "event.json"
|
|
||||||
}],
|
|
||||||
"properties": {
|
|
||||||
"event_id": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Required. The globally unique event identifier."
|
|
||||||
},
|
|
||||||
"room_id": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Required. The ID of the room associated with this event."
|
|
||||||
},
|
|
||||||
"sender": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "Required. Contains the fully-qualified ID of the user who *sent* this event."
|
|
||||||
},
|
|
||||||
"unsigned": {
|
|
||||||
"type": "object",
|
|
||||||
"description": "Contains optional extra information about the event.",
|
|
||||||
"title": "UnsignedData",
|
|
||||||
"properties": {
|
|
||||||
"age": {
|
|
||||||
"type": "integer",
|
|
||||||
"description": "The time in milliseconds that has elapsed since the event was sent"
|
|
||||||
},
|
|
||||||
"redacted_because": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "The reason this event was redacted, if it was redacted"
|
|
||||||
},
|
|
||||||
"transaction_id": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "The client-supplied transaction ID, if the client being given the event is the same one which sent it."
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": ["event_id", "room_id", "sender"]
|
|
||||||
}
|
|
37
event-schemas/schema/core-event-schema/room_event.yaml
Normal file
37
event-schemas/schema/core-event-schema/room_event.yaml
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
allOf:
|
||||||
|
- $ref: event.yaml
|
||||||
|
description: In addition to the Event fields, Room Events may have the following additional
|
||||||
|
fields.
|
||||||
|
properties:
|
||||||
|
event_id:
|
||||||
|
description: Required. The globally unique event identifier.
|
||||||
|
type: string
|
||||||
|
room_id:
|
||||||
|
description: Required. The ID of the room associated with this event.
|
||||||
|
type: string
|
||||||
|
sender:
|
||||||
|
description: Required. Contains the fully-qualified ID of the user who *sent*
|
||||||
|
this event.
|
||||||
|
type: string
|
||||||
|
unsigned:
|
||||||
|
description: Contains optional extra information about the event.
|
||||||
|
properties:
|
||||||
|
age:
|
||||||
|
description: The time in milliseconds that has elapsed since the event was
|
||||||
|
sent
|
||||||
|
type: integer
|
||||||
|
redacted_because:
|
||||||
|
description: The reason this event was redacted, if it was redacted
|
||||||
|
type: string
|
||||||
|
transaction_id:
|
||||||
|
description: The client-supplied transaction ID, if the client being given
|
||||||
|
the event is the same one which sent it.
|
||||||
|
type: string
|
||||||
|
title: UnsignedData
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- event_id
|
||||||
|
- room_id
|
||||||
|
- sender
|
||||||
|
title: Room Event
|
||||||
|
type: object
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
"type": "object",
|
|
||||||
"title": "State Event",
|
|
||||||
"description": "In addition to the Room Event fields, State Events have the following additional fields.",
|
|
||||||
"allOf":[{
|
|
||||||
"$ref": "room_event.json"
|
|
||||||
}],
|
|
||||||
"properties": {
|
|
||||||
"state_key": {
|
|
||||||
"type": "string",
|
|
||||||
"description": "A unique key which defines the overwriting semantics for this piece of room state. This value is often a zero-length string. The presence of this key makes this event a State Event. The key MUST NOT start with '_'."
|
|
||||||
},
|
|
||||||
"prev_content": {
|
|
||||||
"title": "EventContent",
|
|
||||||
"type": "object",
|
|
||||||
"description": "Optional. The previous ``content`` for this event. If there is no previous content, this key will be missing."
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": ["state_key"]
|
|
||||||
}
|
|
19
event-schemas/schema/core-event-schema/state_event.yaml
Normal file
19
event-schemas/schema/core-event-schema/state_event.yaml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
allOf:
|
||||||
|
- $ref: room_event.yaml
|
||||||
|
description: In addition to the Room Event fields, State Events have the following
|
||||||
|
additional fields.
|
||||||
|
properties:
|
||||||
|
prev_content:
|
||||||
|
description: Optional. The previous ``content`` for this event. If there is no
|
||||||
|
previous content, this key will be missing.
|
||||||
|
title: EventContent
|
||||||
|
type: object
|
||||||
|
state_key:
|
||||||
|
description: A unique key which defines the overwriting semantics for this piece
|
||||||
|
of room state. This value is often a zero-length string. The presence of this
|
||||||
|
key makes this event a State Event. The key MUST NOT start with '_'.
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- state_key
|
||||||
|
title: State Event
|
||||||
|
type: object
|
|
@ -2,7 +2,7 @@
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"description": "This event is sent by the callee when they wish to answer the call.",
|
"description": "This event is sent by the callee when they wish to answer the call.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/room_event.json"
|
"$ref": "core-event-schema/room_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"description": "This event is sent by callers after sending an invite and by the callee after answering. Its purpose is to give the other party additional ICE candidates to try using to communicate.",
|
"description": "This event is sent by callers after sending an invite and by the callee after answering. Its purpose is to give the other party additional ICE candidates to try using to communicate.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/room_event.json"
|
"$ref": "core-event-schema/room_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"description": "Sent by either party to signal their termination of the call. This can be sent either once the call has has been established or before to abort the call.",
|
"description": "Sent by either party to signal their termination of the call. This can be sent either once the call has has been established or before to abort the call.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/room_event.json"
|
"$ref": "core-event-schema/room_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"description": "This event is sent by the caller when they wish to establish a call.",
|
"description": "This event is sent by the caller when they wish to establish a call.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/room_event.json"
|
"$ref": "core-event-schema/room_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"title": "Informs the room about what room aliases it has been given.",
|
"title": "Informs the room about what room aliases it has been given.",
|
||||||
"description": "This event is sent by a homeserver directly to inform of changes to the list of aliases it knows about for that room. The ``state_key`` for this event is set to the homeserver which owns the room alias. The entire set of known aliases for the room is the union of all the ``m.room.aliases`` events, one for each homeserver. Clients **should** check the validity of any room alias given in this list before presenting it to the user as trusted fact. The lists given by this event should be considered simply as advice on which aliases might exist, for which the client can perform the lookup to confirm whether it receives the correct room ID.",
|
"description": "This event is sent by a homeserver directly to inform of changes to the list of aliases it knows about for that room. The ``state_key`` for this event is set to the homeserver which owns the room alias. The entire set of known aliases for the room is the union of all the ``m.room.aliases`` events, one for each homeserver. Clients **should** check the validity of any room alias given in this list before presenting it to the user as trusted fact. The lists given by this event should be considered simply as advice on which aliases might exist, for which the client can perform the lookup to confirm whether it receives the correct room ID.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/state_event.json"
|
"$ref": "core-event-schema/state_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"description": "A picture that is associated with the room. This can be displayed alongside the room information.",
|
"description": "A picture that is associated with the room. This can be displayed alongside the room information.",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/state_event.json"
|
"$ref": "core-event-schema/state_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
"title": "ImageInfo",
|
"title": "ImageInfo",
|
||||||
"description": "Metadata about the image referred to in ``thumbnail_url``.",
|
"description": "Metadata about the image referred to in ``thumbnail_url``.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/msgtype_infos/image_info.json"
|
"$ref": "core-event-schema/msgtype_infos/image_info.yaml"
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
"info": {
|
"info": {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"title": "Informs the room as to which alias is the canonical one.",
|
"title": "Informs the room as to which alias is the canonical one.",
|
||||||
"description": "This event is used to inform the room about which alias should be considered the canonical one. This could be for display purposes or as suggestion to users which alias to use to advertise the room.",
|
"description": "This event is used to inform the room about which alias should be considered the canonical one. This could be for display purposes or as suggestion to users which alias to use to advertise the room.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/state_event.json"
|
"$ref": "core-event-schema/state_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"title": "The first event in the room.",
|
"title": "The first event in the room.",
|
||||||
"description": "This is the first event in a room and cannot be changed. It acts as the root of all other events.",
|
"description": "This is the first event in a room and cannot be changed. It acts as the root of all other events.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/state_event.json"
|
"$ref": "core-event-schema/state_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"title": "Controls whether guest users are allowed to join rooms.",
|
"title": "Controls whether guest users are allowed to join rooms.",
|
||||||
"description": "This event controls whether guest users are allowed to join rooms. If this event is absent, servers should act as if it is present and has the guest_access value \"forbidden\".",
|
"description": "This event controls whether guest users are allowed to join rooms. If this event is absent, servers should act as if it is present and has the guest_access value \"forbidden\".",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/state_event.json"
|
"$ref": "core-event-schema/state_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"title": "Controls visibility of history.",
|
"title": "Controls visibility of history.",
|
||||||
"description": "This event controls whether a user can see the events that happened in a room from before they joined.",
|
"description": "This event controls whether a user can see the events that happened in a room from before they joined.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/state_event.json"
|
"$ref": "core-event-schema/state_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"title": "Describes how users are allowed to join the room.",
|
"title": "Describes how users are allowed to join the room.",
|
||||||
"description": "A room may be ``public`` meaning anyone can join the room without any prior action. Alternatively, it can be ``invite`` meaning that a user who wishes to join the room must first receive an invite to the room from someone already inside of the room. Currently, ``knock`` and ``private`` are reserved keywords which are not implemented.",
|
"description": "A room may be ``public`` meaning anyone can join the room without any prior action. Alternatively, it can be ``invite`` meaning that a user who wishes to join the room must first receive an invite to the room from someone already inside of the room. Currently, ``knock`` and ``private`` are reserved keywords which are not implemented.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/state_event.json"
|
"$ref": "core-event-schema/state_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"title": "The current membership state of a user in the room.",
|
"title": "The current membership state of a user in the room.",
|
||||||
"description": "Adjusts the membership state for a user in a room. It is preferable to use the membership APIs (``/rooms/<room id>/invite`` etc) when performing membership actions rather than adjusting the state directly as there are a restricted set of valid transformations. For example, user A cannot force user B to join a room, and trying to force this state change directly will fail. \n\nThe ``third_party_invite`` property will be set if this invite is an ``invite`` event and is the successor of an ``m.room.third_party_invite`` event, and absent otherwise.\n\nThis event may also include an ``invite_room_state`` key **outside the** ``content`` **key**. If present, this contains an array of ``StrippedState`` Events. These events provide information on a few select state events such as the room name.",
|
"description": "Adjusts the membership state for a user in a room. It is preferable to use the membership APIs (``/rooms/<room id>/invite`` etc) when performing membership actions rather than adjusting the state directly as there are a restricted set of valid transformations. For example, user A cannot force user B to join a room, and trying to force this state change directly will fail. \n\nThe ``third_party_invite`` property will be set if this invite is an ``invite`` event and is the successor of an ``m.room.third_party_invite`` event, and absent otherwise.\n\nThis event may also include an ``invite_room_state`` key **outside the** ``content`` **key**. If present, this contains an array of ``StrippedState`` Events. These events provide information on a few select state events such as the room name.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/state_event.json"
|
"$ref": "core-event-schema/state_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"title": "Message",
|
"title": "Message",
|
||||||
"description": "This event is used when sending messages in a room. Messages are not limited to be text. The ``msgtype`` key outlines the type of message, e.g. text, audio, image, video, etc. The ``body`` key is text and MUST be used with every kind of ``msgtype`` as a fallback mechanism for when a client cannot render a message. This allows clients to display *something* even if it is just plain text.",
|
"description": "This event is used when sending messages in a room. Messages are not limited to be text. The ``msgtype`` key outlines the type of message, e.g. text, audio, image, video, etc. The ``body`` key is text and MUST be used with every kind of ``msgtype`` as a fallback mechanism for when a client cannot render a message. This allows clients to display *something* even if it is just plain text.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/room_event.json"
|
"$ref": "core-event-schema/room_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"title": "AudioMessage",
|
"title": "AudioMessage",
|
||||||
"description": "This message represents a single audio clip.",
|
"description": "This message represents a single audio clip.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/room_event.json"
|
"$ref": "core-event-schema/room_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"title": "EmoteMessage",
|
"title": "EmoteMessage",
|
||||||
"description": "This message is similar to ``m.text`` except that the sender is 'performing' the action contained in the ``body`` key, similar to ``/me`` in IRC. This message should be prefixed by the name of the sender. This message could also be represented in a different colour to distinguish it from regular ``m.text`` messages.",
|
"description": "This message is similar to ``m.text`` except that the sender is 'performing' the action contained in the ``body`` key, similar to ``/me`` in IRC. This message should be prefixed by the name of the sender. This message could also be represented in a different colour to distinguish it from regular ``m.text`` messages.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/room_event.json"
|
"$ref": "core-event-schema/room_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"title": "FileMessage",
|
"title": "FileMessage",
|
||||||
"description": "This message represents a generic file.",
|
"description": "This message represents a generic file.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/room_event.json"
|
"$ref": "core-event-schema/room_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
@ -49,7 +49,7 @@
|
||||||
"title": "ImageInfo",
|
"title": "ImageInfo",
|
||||||
"description": "Metadata about the image referred to in ``thumbnail_url``.",
|
"description": "Metadata about the image referred to in ``thumbnail_url``.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/msgtype_infos/image_info.json"
|
"$ref": "core-event-schema/msgtype_infos/image_info.yaml"
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"title": "ImageMessage",
|
"title": "ImageMessage",
|
||||||
"description": "This message represents a single image and an optional thumbnail.",
|
"description": "This message represents a single image and an optional thumbnail.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/room_event.json"
|
"$ref": "core-event-schema/room_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
"title": "ImageInfo",
|
"title": "ImageInfo",
|
||||||
"description": "Metadata about the image referred to in ``thumbnail_url``.",
|
"description": "Metadata about the image referred to in ``thumbnail_url``.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/msgtype_infos/image_info.json"
|
"$ref": "core-event-schema/msgtype_infos/image_info.yaml"
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
"info": {
|
"info": {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"title": "LocationMessage",
|
"title": "LocationMessage",
|
||||||
"description": "This message represents a real-world location.",
|
"description": "This message represents a real-world location.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/room_event.json"
|
"$ref": "core-event-schema/room_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"title": "ImageInfo",
|
"title": "ImageInfo",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/msgtype_infos/image_info.json"
|
"$ref": "core-event-schema/msgtype_infos/image_info.yaml"
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"title": "NoticeMessage",
|
"title": "NoticeMessage",
|
||||||
"description": "A m.notice message should be considered similar to a plain m.text message except that clients should visually distinguish it in some way. It is intended to be used by automated clients, such as bots, bridges, and other entities, rather than humans. Additionally, such automated agents which watch a room for messages and respond to them ought to ignore m.notice messages. This helps to prevent infinite-loop situations where two automated clients continuously exchange messages, as each responds to the other.",
|
"description": "A m.notice message should be considered similar to a plain m.text message except that clients should visually distinguish it in some way. It is intended to be used by automated clients, such as bots, bridges, and other entities, rather than humans. Additionally, such automated agents which watch a room for messages and respond to them ought to ignore m.notice messages. This helps to prevent infinite-loop situations where two automated clients continuously exchange messages, as each responds to the other.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/room_event.json"
|
"$ref": "core-event-schema/room_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"title": "TextMessage",
|
"title": "TextMessage",
|
||||||
"description": "This message is the most basic message and is used to represent text.",
|
"description": "This message is the most basic message and is used to represent text.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/room_event.json"
|
"$ref": "core-event-schema/room_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"title": "VideoMessage",
|
"title": "VideoMessage",
|
||||||
"description": "This message represents a single video clip.",
|
"description": "This message represents a single video clip.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/room_event.json"
|
"$ref": "core-event-schema/room_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
@ -54,7 +54,7 @@
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"title": "ImageInfo",
|
"title": "ImageInfo",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/msgtype_infos/image_info.json"
|
"$ref": "core-event-schema/msgtype_infos/image_info.yaml"
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"title": "MessageFeedback",
|
"title": "MessageFeedback",
|
||||||
"description": "**NB: Usage of this event is discouraged in favour of the** `receipts module`_. **Most clients will not recognise this event.** Feedback events are events sent to acknowledge a message in some way. There are two supported acknowledgements: ``delivered`` (sent when the event has been received) and ``read`` (sent when the event has been observed by the end-user). The ``target_event_id`` should reference the ``m.room.message`` event being acknowledged.",
|
"description": "**NB: Usage of this event is discouraged in favour of the** `receipts module`_. **Most clients will not recognise this event.** Feedback events are events sent to acknowledge a message in some way. There are two supported acknowledgements: ``delivered`` (sent when the event has been received) and ``read`` (sent when the event has been observed by the end-user). The ``target_event_id`` should reference the ``m.room.message`` event being acknowledged.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/room_event.json"
|
"$ref": "core-event-schema/room_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"description": "A room has an opaque room ID which is not human-friendly to read. A room alias is human-friendly, but not all rooms have room aliases. The room name is a human-friendly string designed to be displayed to the end-user. The room name is not unique, as multiple rooms can have the same room name set. The room name can also be set when creating a room using ``/createRoom`` with the ``name`` key.",
|
"description": "A room has an opaque room ID which is not human-friendly to read. A room alias is human-friendly, but not all rooms have room aliases. The room name is a human-friendly string designed to be displayed to the end-user. The room name is not unique, as multiple rooms can have the same room name set. The room name can also be set when creating a room using ``/createRoom`` with the ``name`` key.",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/state_event.json"
|
"$ref": "core-event-schema/state_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"title": "Defines the power levels (privileges) of users in the room.",
|
"title": "Defines the power levels (privileges) of users in the room.",
|
||||||
"description": "This event specifies the minimum level a user must have in order to perform a certain action. It also specifies the levels of each user in the room. If a ``user_id`` is in the ``users`` list, then that ``user_id`` has the associated power level. Otherwise they have the default level ``users_default``. If ``users_default`` is not supplied, it is assumed to be 0. The level required to send a certain event is governed by ``events``, ``state_default`` and ``events_default``. If an event type is specified in ``events``, then the user must have at least the level specified in order to send that event. If the event type is not supplied, it defaults to ``events_default`` for Message Events and ``state_default`` for State Events.",
|
"description": "This event specifies the minimum level a user must have in order to perform a certain action. It also specifies the levels of each user in the room. If a ``user_id`` is in the ``users`` list, then that ``user_id`` has the associated power level. Otherwise they have the default level ``users_default``. If ``users_default`` is not supplied, it is assumed to be 0. The level required to send a certain event is governed by ``events``, ``state_default`` and ``events_default``. If an event type is specified in ``events``, then the user must have at least the level specified in order to send that event. If the event type is not supplied, it defaults to ``events_default`` for Message Events and ``state_default`` for State Events.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/state_event.json"
|
"$ref": "core-event-schema/state_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"title": "Redaction",
|
"title": "Redaction",
|
||||||
"description": "Events can be redacted by either room or server admins. Redacting an event means that all keys not required by the protocol are stripped off, allowing admins to remove offensive or illegal content that may have been attached to any event. This cannot be undone, allowing server owners to physically delete the offending data. There is also a concept of a moderator hiding a message event, which can be undone, but cannot be applied to state events. The event that has been redacted is specified in the ``redacts`` event level key.",
|
"description": "Events can be redacted by either room or server admins. Redacting an event means that all keys not required by the protocol are stripped off, allowing admins to remove offensive or illegal content that may have been attached to any event. This cannot be undone, allowing server owners to physically delete the offending data. There is also a concept of a moderator hiding a message event, which can be undone, but cannot be applied to state events. The event that has been redacted is specified in the ``redacts`` event level key.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/room_event.json"
|
"$ref": "core-event-schema/room_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
"title": "An invitation to a room issued to a third party identifier, rather than a matrix user ID.",
|
"title": "An invitation to a room issued to a third party identifier, rather than a matrix user ID.",
|
||||||
"description": "Acts as an ``m.room.member`` invite event, where there isn't a target user_id to invite. This event contains a token and a public key whose private key must be used to sign the token. Any user who can present that signature may use this invitation to join the target room.",
|
"description": "Acts as an ``m.room.member`` invite event, where there isn't a target user_id to invite. This event contains a token and a public key whose private key must be used to sign the token. Any user who can present that signature may use this invitation to join the target room.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/state_event.json"
|
"$ref": "core-event-schema/state_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
"title": "Topic",
|
"title": "Topic",
|
||||||
"description": "A topic is a short message detailing what is currently being discussed in the room. It can also be used as a way to display extra information about the room, which may not be suitable for the room name. The room topic can also be set when creating a room using ``/createRoom`` with the ``topic`` key.",
|
"description": "A topic is a short message detailing what is currently being discussed in the room. It can also be used as a way to display extra information about the room, which may not be suitable for the room name. The room topic can also be set when creating a room using ``/createRoom`` with the ``topic`` key.",
|
||||||
"allOf": [{
|
"allOf": [{
|
||||||
"$ref": "core-event-schema/state_event.json"
|
"$ref": "core-event-schema/state_event.yaml"
|
||||||
}],
|
}],
|
||||||
"properties": {
|
"properties": {
|
||||||
"content": {
|
"content": {
|
||||||
|
|
|
@ -24,8 +24,8 @@ CORE_EVENT_SCHEMA = "../event-schemas/schema/core-event-schema"
|
||||||
CHANGELOG = "../CHANGELOG.rst"
|
CHANGELOG = "../CHANGELOG.rst"
|
||||||
TARGETS = "../specification/targets.yaml"
|
TARGETS = "../specification/targets.yaml"
|
||||||
|
|
||||||
ROOM_EVENT = "core-event-schema/room_event.json"
|
ROOM_EVENT = "core-event-schema/room_event.yaml"
|
||||||
STATE_EVENT = "core-event-schema/state_event.json"
|
STATE_EVENT = "core-event-schema/state_event.yaml"
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ def resolve_references(path, schema):
|
||||||
if key == "$ref":
|
if key == "$ref":
|
||||||
path = os.path.join(os.path.dirname(path), value)
|
path = os.path.join(os.path.dirname(path), value)
|
||||||
with open(path) as f:
|
with open(path) as f:
|
||||||
schema = json.load(f)
|
schema = yaml.load(f)
|
||||||
return resolve_references(path, schema)
|
return resolve_references(path, schema)
|
||||||
else:
|
else:
|
||||||
result[key] = resolve_references(path, value)
|
result[key] = resolve_references(path, value)
|
||||||
|
@ -571,14 +571,14 @@ class MatrixUnits(Units):
|
||||||
|
|
||||||
for (root, dirs, files) in os.walk(path):
|
for (root, dirs, files) in os.walk(path):
|
||||||
for filename in files:
|
for filename in files:
|
||||||
if not filename.endswith(".json"):
|
if not filename.endswith(".yaml"):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
event_type = filename[:-5] # strip the ".json"
|
event_type = filename[:-5] # strip the ".yaml"
|
||||||
filepath = os.path.join(root, filename)
|
filepath = os.path.join(root, filename)
|
||||||
with open(filepath) as f:
|
with open(filepath) as f:
|
||||||
try:
|
try:
|
||||||
event_info = json.load(f)
|
event_info = yaml.load(f)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
"Error reading file %r" % (filepath,), e
|
"Error reading file %r" % (filepath,), e
|
||||||
|
@ -631,7 +631,7 @@ class MatrixUnits(Units):
|
||||||
filepath = os.path.join(path, filename)
|
filepath = os.path.join(path, filename)
|
||||||
self.log("Reading %s" % filepath)
|
self.log("Reading %s" % filepath)
|
||||||
with open(filepath, "r") as f:
|
with open(filepath, "r") as f:
|
||||||
json_schema = json.loads(f.read())
|
json_schema = yaml.load(f)
|
||||||
schema = {
|
schema = {
|
||||||
"typeof": None,
|
"typeof": None,
|
||||||
"typeof_info": "",
|
"typeof_info": "",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue