Use patternProperties
in more places with supported formats (#1813)
Allows to have more places where the property name's type is better defined. Signed-off-by: Kévin Commaille <zecakeh@tedomum.fr>
This commit is contained in:
parent
df1e799c51
commit
b0df8e7fb5
18 changed files with 489 additions and 407 deletions
|
@ -0,0 +1 @@
|
||||||
|
Use `patternProperties` in more places with supported formats.
|
|
@ -0,0 +1 @@
|
||||||
|
Use `patternProperties` in more places with supported formats.
|
|
@ -165,10 +165,12 @@ paths:
|
||||||
type: object
|
type: object
|
||||||
description: |-
|
description: |-
|
||||||
A map of user ID to a map of key ID to signed JSON object.
|
A map of user ID to a map of key ID to signed JSON object.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
type: object
|
"^@":
|
||||||
additionalProperties:
|
x-pattern-format: mx-user-id
|
||||||
type: object
|
type: object
|
||||||
|
additionalProperties:
|
||||||
|
type: object
|
||||||
example: {
|
example: {
|
||||||
"@alice:example.com": {
|
"@alice:example.com": {
|
||||||
"HIJKLMN": {
|
"HIJKLMN": {
|
||||||
|
@ -238,11 +240,13 @@ paths:
|
||||||
A map from user ID to key ID to an error for any signatures
|
A map from user ID to key ID to an error for any signatures
|
||||||
that failed. If a signature was invalid, the `errcode` will
|
that failed. If a signature was invalid, the `errcode` will
|
||||||
be set to `M_INVALID_SIGNATURE`.
|
be set to `M_INVALID_SIGNATURE`.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
type: object
|
"^@":
|
||||||
additionalProperties:
|
|
||||||
type: object
|
type: object
|
||||||
title: Error
|
x-pattern-format: mx-user-id
|
||||||
|
additionalProperties:
|
||||||
|
type: object
|
||||||
|
title: Error
|
||||||
example:
|
example:
|
||||||
"@alice:example.com":
|
"@alice:example.com":
|
||||||
HIJKLMN:
|
HIJKLMN:
|
||||||
|
|
|
@ -53,10 +53,12 @@ properties:
|
||||||
`<algorithm>:<device_id>` to the signature.
|
`<algorithm>:<device_id>` to the signature.
|
||||||
|
|
||||||
The signature is calculated using the process described at [Signing JSON](/appendices/#signing-json).
|
The signature is calculated using the process described at [Signing JSON](/appendices/#signing-json).
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
type: object
|
"^@":
|
||||||
additionalProperties:
|
x-pattern-format: mx-user-id
|
||||||
type: string
|
type: object
|
||||||
|
additionalProperties:
|
||||||
|
type: string
|
||||||
example:
|
example:
|
||||||
"@alice:example.com":
|
"@alice:example.com":
|
||||||
"ed25519:JLAFKJWSCS": "dSO80A01XiigH3uBiDVx/EjzaoycHcjq9lfQX0uWsqxl2giMIiSPR8a4d291W1ihKJL/a+myXS367WT6NAIcBA"
|
"ed25519:JLAFKJWSCS": "dSO80A01XiigH3uBiDVx/EjzaoycHcjq9lfQX0uWsqxl2giMIiSPR8a4d291W1ihKJL/a+myXS367WT6NAIcBA"
|
||||||
|
|
|
@ -20,6 +20,8 @@ additionalProperties:
|
||||||
Signature for the device. Mapped from user ID to signature object,
|
Signature for the device. Mapped from user ID to signature object,
|
||||||
containing mapping from _key signing identifier_ to the signature
|
containing mapping from _key signing identifier_ to the signature
|
||||||
(see also: [Signing JSON](/appendices/#signing-json))
|
(see also: [Signing JSON](/appendices/#signing-json))
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
type: object
|
"^@":
|
||||||
|
x-pattern-format: mx-user-id
|
||||||
|
type: object
|
||||||
required: ['key', 'signatures']
|
required: ['key', 'signatures']
|
||||||
|
|
|
@ -840,8 +840,11 @@ paths:
|
||||||
rooms:
|
rooms:
|
||||||
type: object
|
type: object
|
||||||
description: A map of room IDs to room key backup data.
|
description: A map of room IDs to room key backup data.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
$ref: definitions/room_key_backup.yaml
|
"^!":
|
||||||
|
x-pattern-format: mx-room-id
|
||||||
|
allOf:
|
||||||
|
- $ref: definitions/room_key_backup.yaml
|
||||||
example:
|
example:
|
||||||
"!room:example.org":
|
"!room:example.org":
|
||||||
sessions:
|
sessions:
|
||||||
|
@ -944,8 +947,11 @@ paths:
|
||||||
rooms:
|
rooms:
|
||||||
type: object
|
type: object
|
||||||
description: A map of room IDs to room key backup data.
|
description: A map of room IDs to room key backup data.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
$ref: definitions/room_key_backup.yaml
|
"^!":
|
||||||
|
x-pattern-format: mx-room-id
|
||||||
|
allOf:
|
||||||
|
- $ref: definitions/room_key_backup.yaml
|
||||||
example:
|
example:
|
||||||
"!room:example.org":
|
"!room:example.org":
|
||||||
sessions:
|
sessions:
|
||||||
|
|
|
@ -137,11 +137,13 @@ paths:
|
||||||
The keys to be downloaded. A map from user ID, to a list of
|
The keys to be downloaded. A map from user ID, to a list of
|
||||||
device IDs, or to an empty list to indicate all devices for the
|
device IDs, or to an empty list to indicate all devices for the
|
||||||
corresponding user.
|
corresponding user.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
type: array
|
"^@":
|
||||||
items:
|
x-pattern-format: mx-user-id
|
||||||
type: string
|
type: array
|
||||||
description: device ID
|
items:
|
||||||
|
type: string
|
||||||
|
description: device ID
|
||||||
example:
|
example:
|
||||||
"@alice:example.com": []
|
"@alice:example.com": []
|
||||||
required:
|
required:
|
||||||
|
@ -177,24 +179,26 @@ paths:
|
||||||
the information returned will be the same as uploaded via
|
the information returned will be the same as uploaded via
|
||||||
`/keys/upload`, with the addition of an `unsigned`
|
`/keys/upload`, with the addition of an `unsigned`
|
||||||
property.
|
property.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
type: object
|
"^@":
|
||||||
additionalProperties:
|
x-pattern-format: mx-user-id
|
||||||
title: DeviceInformation
|
type: object
|
||||||
allOf:
|
additionalProperties:
|
||||||
- $ref: definitions/device_keys.yaml
|
title: DeviceInformation
|
||||||
properties:
|
allOf:
|
||||||
unsigned:
|
- $ref: definitions/device_keys.yaml
|
||||||
title: UnsignedDeviceInfo
|
properties:
|
||||||
type: object
|
unsigned:
|
||||||
description: |-
|
title: UnsignedDeviceInfo
|
||||||
Additional data added to the device key information
|
type: object
|
||||||
by intermediate servers, and not covered by the
|
description: |-
|
||||||
signatures.
|
Additional data added to the device key information
|
||||||
properties:
|
by intermediate servers, and not covered by the
|
||||||
device_display_name:
|
signatures.
|
||||||
type: string
|
properties:
|
||||||
description: The display name which the user set on the device.
|
device_display_name:
|
||||||
|
type: string
|
||||||
|
description: The display name which the user set on the device.
|
||||||
example:
|
example:
|
||||||
"@alice:example.com":
|
"@alice:example.com":
|
||||||
JLAFKJWSCS:
|
JLAFKJWSCS:
|
||||||
|
@ -221,8 +225,11 @@ paths:
|
||||||
`/keys/device_signing/upload`, along with the signatures
|
`/keys/device_signing/upload`, along with the signatures
|
||||||
uploaded via `/keys/signatures/upload` that the requesting user
|
uploaded via `/keys/signatures/upload` that the requesting user
|
||||||
is allowed to see.
|
is allowed to see.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
$ref: definitions/cross_signing_key.yaml
|
"^@":
|
||||||
|
x-pattern-format: mx-user-id
|
||||||
|
allOf:
|
||||||
|
- $ref: definitions/cross_signing_key.yaml
|
||||||
example:
|
example:
|
||||||
"@alice:example.com":
|
"@alice:example.com":
|
||||||
user_id: "@alice:example.com"
|
user_id: "@alice:example.com"
|
||||||
|
@ -238,8 +245,11 @@ paths:
|
||||||
from user ID, to self-signing key information. For each key, the
|
from user ID, to self-signing key information. For each key, the
|
||||||
information returned will be the same as uploaded via
|
information returned will be the same as uploaded via
|
||||||
`/keys/device_signing/upload`.
|
`/keys/device_signing/upload`.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
$ref: definitions/cross_signing_key.yaml
|
"^@":
|
||||||
|
x-pattern-format: mx-user-id
|
||||||
|
allOf:
|
||||||
|
- $ref: definitions/cross_signing_key.yaml
|
||||||
example:
|
example:
|
||||||
"@alice:example.com":
|
"@alice:example.com":
|
||||||
user_id: "@alice:example.com"
|
user_id: "@alice:example.com"
|
||||||
|
@ -258,8 +268,11 @@ paths:
|
||||||
from user ID, to user-signing key information. The
|
from user ID, to user-signing key information. The
|
||||||
information returned will be the same as uploaded via
|
information returned will be the same as uploaded via
|
||||||
`/keys/device_signing/upload`.
|
`/keys/device_signing/upload`.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
$ref: definitions/cross_signing_key.yaml
|
"^@":
|
||||||
|
x-pattern-format: mx-user-id
|
||||||
|
allOf:
|
||||||
|
- $ref: definitions/cross_signing_key.yaml
|
||||||
example:
|
example:
|
||||||
"@alice:example.com":
|
"@alice:example.com":
|
||||||
user_id: "@alice:example.com"
|
user_id: "@alice:example.com"
|
||||||
|
@ -297,12 +310,14 @@ paths:
|
||||||
description: |-
|
description: |-
|
||||||
The keys to be claimed. A map from user ID, to a map from
|
The keys to be claimed. A map from user ID, to a map from
|
||||||
device ID to algorithm name.
|
device ID to algorithm name.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
type: object
|
"^@":
|
||||||
additionalProperties:
|
x-pattern-format: mx-user-id
|
||||||
type: string
|
type: object
|
||||||
description: algorithm
|
additionalProperties:
|
||||||
example: signed_curve25519
|
type: string
|
||||||
|
description: algorithm
|
||||||
|
example: signed_curve25519
|
||||||
example:
|
example:
|
||||||
"@alice:example.com":
|
"@alice:example.com":
|
||||||
JLAFKJWSCS: signed_curve25519
|
JLAFKJWSCS: signed_curve25519
|
||||||
|
@ -342,10 +357,12 @@ paths:
|
||||||
|
|
||||||
If necessary, the claimed key might be a fallback key. Fallback
|
If necessary, the claimed key might be a fallback key. Fallback
|
||||||
keys are re-used by the server until replaced by the device.
|
keys are re-used by the server until replaced by the device.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
type: object
|
"^@":
|
||||||
additionalProperties:
|
x-pattern-format: mx-user-id
|
||||||
$ref: "definitions/one_time_keys.yaml"
|
type: object
|
||||||
|
additionalProperties:
|
||||||
|
$ref: "definitions/one_time_keys.yaml"
|
||||||
example:
|
example:
|
||||||
"@alice:example.com":
|
"@alice:example.com":
|
||||||
JLAFKJWSCS:
|
JLAFKJWSCS:
|
||||||
|
|
|
@ -299,18 +299,20 @@ paths:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
joined:
|
joined:
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
title: RoomMember
|
"^@":
|
||||||
type: object
|
x-pattern-format: mx-user-id
|
||||||
properties:
|
title: RoomMember
|
||||||
display_name:
|
type: object
|
||||||
type: string
|
properties:
|
||||||
description: The display name of the user this object is representing.
|
display_name:
|
||||||
avatar_url:
|
type: string
|
||||||
type: string
|
description: The display name of the user this object is representing.
|
||||||
format: uri
|
avatar_url:
|
||||||
description: The avatar of the user this object is representing, as an [`mxc://`
|
type: string
|
||||||
URI](/client-server-api/#matrix-content-mxc-uris).
|
format: uri
|
||||||
|
description: The avatar of the user this object is representing, as an [`mxc://`
|
||||||
|
URI](/client-server-api/#matrix-content-mxc-uris).
|
||||||
description: A map from user ID to a RoomMember object.
|
description: A map from user ID to a RoomMember object.
|
||||||
type: object
|
type: object
|
||||||
examples:
|
examples:
|
||||||
|
|
|
@ -225,19 +225,21 @@ paths:
|
||||||
The historic profile information of the
|
The historic profile information of the
|
||||||
users that sent the events returned.
|
users that sent the events returned.
|
||||||
|
|
||||||
The `string` key is the user ID for which
|
The key is the user ID for which
|
||||||
the profile belongs to.
|
the profile belongs to.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
type: object
|
"^@":
|
||||||
title: User Profile
|
x-pattern-format: mx-user-id
|
||||||
properties:
|
type: object
|
||||||
displayname:
|
title: User Profile
|
||||||
type: string
|
properties:
|
||||||
title: Display name
|
displayname:
|
||||||
avatar_url:
|
type: string
|
||||||
type: string
|
title: Display name
|
||||||
format: uri
|
avatar_url:
|
||||||
title: Avatar Url
|
type: string
|
||||||
|
format: uri
|
||||||
|
title: Avatar Url
|
||||||
events_before:
|
events_before:
|
||||||
type: array
|
type: array
|
||||||
title: Events Before
|
title: Events Before
|
||||||
|
@ -262,13 +264,15 @@ paths:
|
||||||
This is included if the request had the
|
This is included if the request had the
|
||||||
`include_state` key set with a value of `true`.
|
`include_state` key set with a value of `true`.
|
||||||
|
|
||||||
The `string` key is the room ID for which the `State
|
The key is the room ID for which the `State
|
||||||
Event` array belongs to.
|
Event` array belongs to.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
type: array
|
"^!":
|
||||||
title: Room State
|
x-pattern-format: mx-room-id
|
||||||
items:
|
type: array
|
||||||
$ref: definitions/client_event.yaml
|
title: Room State
|
||||||
|
items:
|
||||||
|
$ref: definitions/client_event.yaml
|
||||||
groups:
|
groups:
|
||||||
type: object
|
type: object
|
||||||
title: Groups
|
title: Groups
|
||||||
|
|
|
@ -141,223 +141,233 @@ paths:
|
||||||
description: |-
|
description: |-
|
||||||
The rooms that the user has joined, mapped as room ID to
|
The rooms that the user has joined, mapped as room ID to
|
||||||
room information.
|
room information.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
title: Joined Room
|
"^!":
|
||||||
type: object
|
x-pattern-format: mx-room-id
|
||||||
properties:
|
title: Joined Room
|
||||||
summary:
|
type: object
|
||||||
title: RoomSummary
|
properties:
|
||||||
type: object
|
summary:
|
||||||
description: |-
|
title: RoomSummary
|
||||||
Information about the room which clients may need to
|
|
||||||
correctly render it to users.
|
|
||||||
properties:
|
|
||||||
m.heroes:
|
|
||||||
type: array
|
|
||||||
description: |-
|
|
||||||
The users which can be used to generate a room name
|
|
||||||
if the room does not have one. Required if the room's
|
|
||||||
`m.room.name` or `m.room.canonical_alias` state events
|
|
||||||
are unset or empty.
|
|
||||||
|
|
||||||
This should be the first 5 members of the room, ordered
|
|
||||||
by stream ordering, which are joined or invited. The
|
|
||||||
list must never include the client's own user ID. When
|
|
||||||
no joined or invited members are available, this should
|
|
||||||
consist of the banned and left users. More than 5 members
|
|
||||||
may be provided, however less than 5 should only be provided
|
|
||||||
when there are less than 5 members to represent.
|
|
||||||
|
|
||||||
When lazy-loading room members is enabled, the membership
|
|
||||||
events for the heroes MUST be included in the `state`,
|
|
||||||
unless they are redundant. When the list of users changes,
|
|
||||||
the server notifies the client by sending a fresh list of
|
|
||||||
heroes. If there are no changes since the last sync, this
|
|
||||||
field may be omitted.
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
m.joined_member_count:
|
|
||||||
type: integer
|
|
||||||
description: |-
|
|
||||||
The number of users with `membership` of `join`,
|
|
||||||
including the client's own user ID. If this field has
|
|
||||||
not changed since the last sync, it may be omitted.
|
|
||||||
Required otherwise.
|
|
||||||
m.invited_member_count:
|
|
||||||
type: integer
|
|
||||||
description: |-
|
|
||||||
The number of users with `membership` of `invite`.
|
|
||||||
If this field has not changed since the last sync, it
|
|
||||||
may be omitted. Required otherwise.
|
|
||||||
state:
|
|
||||||
title: State
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
Updates to the state, between the time indicated by
|
|
||||||
the `since` parameter, and the start of the
|
|
||||||
`timeline` (or all state up to the start of the
|
|
||||||
`timeline`, if `since` is not given, or
|
|
||||||
`full_state` is true).
|
|
||||||
|
|
||||||
N.B. state updates for `m.room.member` events will
|
|
||||||
be incomplete if `lazy_load_members` is enabled in
|
|
||||||
the `/sync` filter, and only return the member events
|
|
||||||
required to display the senders of the timeline events
|
|
||||||
in this response.
|
|
||||||
allOf:
|
|
||||||
- $ref: definitions/state_event_batch.yaml
|
|
||||||
timeline:
|
|
||||||
title: Timeline
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
The timeline of messages and state changes in the
|
|
||||||
room.
|
|
||||||
allOf:
|
|
||||||
- $ref: definitions/timeline_batch.yaml
|
|
||||||
ephemeral:
|
|
||||||
title: Ephemeral
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
The new ephemeral events in the room (events that
|
|
||||||
aren't recorded in the timeline or state of the
|
|
||||||
room). In this version of the spec, these are
|
|
||||||
[typing notification](#typing-notifications) and
|
|
||||||
[read receipt](#receipts) events.
|
|
||||||
allOf:
|
|
||||||
- $ref: definitions/event_batch.yaml
|
|
||||||
account_data:
|
|
||||||
title: Account Data
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
The private data that this user has attached to
|
|
||||||
this room.
|
|
||||||
allOf:
|
|
||||||
- $ref: definitions/event_batch.yaml
|
|
||||||
unread_notifications:
|
|
||||||
title: Unread Notification Counts
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
Counts of unread notifications for this room. See the
|
|
||||||
[Receiving notifications](/client-server-api/#receiving-notifications) section
|
|
||||||
for more information on how these are calculated.
|
|
||||||
|
|
||||||
If `unread_thread_notifications` was specified as `true` on the `RoomEventFilter`,
|
|
||||||
these counts will only be for the main timeline rather than all events in the room.
|
|
||||||
See the [threading module](#threading) for more information.
|
|
||||||
x-changedInMatrixVersion:
|
|
||||||
"1.4": |
|
|
||||||
Updated to reflect behaviour of having `unread_thread_notifications` as `true` in
|
|
||||||
the `RoomEventFilter` for `/sync`.
|
|
||||||
properties:
|
|
||||||
highlight_count:
|
|
||||||
title: Highlighted notification count
|
|
||||||
type: integer
|
|
||||||
description: The number of unread notifications for this room with the highlight
|
|
||||||
flag set.
|
|
||||||
notification_count:
|
|
||||||
title: Total notification count
|
|
||||||
type: integer
|
|
||||||
description: The total number of unread notifications for this room.
|
|
||||||
unread_thread_notifications:
|
|
||||||
title: Unread Thread Notification Counts
|
|
||||||
type: object
|
|
||||||
description: |-
|
|
||||||
If `unread_thread_notifications` was specified as `true` on the `RoomEventFilter`,
|
|
||||||
the notification counts for each [thread](#threading) in this room. The object is
|
|
||||||
keyed by thread root ID, with values matching `unread_notifications`.
|
|
||||||
|
|
||||||
If a thread does not have any notifications it can be omitted from this object. If
|
|
||||||
no threads have notification counts, this whole object can be omitted.
|
|
||||||
x-addedInMatrixVersion: "1.4"
|
|
||||||
additionalProperties:
|
|
||||||
title: ThreadNotificationCounts
|
|
||||||
type: object
|
type: object
|
||||||
|
description: |-
|
||||||
|
Information about the room which clients may need to
|
||||||
|
correctly render it to users.
|
||||||
|
properties:
|
||||||
|
m.heroes:
|
||||||
|
type: array
|
||||||
|
description: |-
|
||||||
|
The users which can be used to generate a room name
|
||||||
|
if the room does not have one. Required if the room's
|
||||||
|
`m.room.name` or `m.room.canonical_alias` state events
|
||||||
|
are unset or empty.
|
||||||
|
|
||||||
|
This should be the first 5 members of the room, ordered
|
||||||
|
by stream ordering, which are joined or invited. The
|
||||||
|
list must never include the client's own user ID. When
|
||||||
|
no joined or invited members are available, this should
|
||||||
|
consist of the banned and left users. More than 5 members
|
||||||
|
may be provided, however less than 5 should only be provided
|
||||||
|
when there are less than 5 members to represent.
|
||||||
|
|
||||||
|
When lazy-loading room members is enabled, the membership
|
||||||
|
events for the heroes MUST be included in the `state`,
|
||||||
|
unless they are redundant. When the list of users changes,
|
||||||
|
the server notifies the client by sending a fresh list of
|
||||||
|
heroes. If there are no changes since the last sync, this
|
||||||
|
field may be omitted.
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
m.joined_member_count:
|
||||||
|
type: integer
|
||||||
|
description: |-
|
||||||
|
The number of users with `membership` of `join`,
|
||||||
|
including the client's own user ID. If this field has
|
||||||
|
not changed since the last sync, it may be omitted.
|
||||||
|
Required otherwise.
|
||||||
|
m.invited_member_count:
|
||||||
|
type: integer
|
||||||
|
description: |-
|
||||||
|
The number of users with `membership` of `invite`.
|
||||||
|
If this field has not changed since the last sync, it
|
||||||
|
may be omitted. Required otherwise.
|
||||||
|
state:
|
||||||
|
title: State
|
||||||
|
type: object
|
||||||
|
description: |-
|
||||||
|
Updates to the state, between the time indicated by
|
||||||
|
the `since` parameter, and the start of the
|
||||||
|
`timeline` (or all state up to the start of the
|
||||||
|
`timeline`, if `since` is not given, or
|
||||||
|
`full_state` is true).
|
||||||
|
|
||||||
|
N.B. state updates for `m.room.member` events will
|
||||||
|
be incomplete if `lazy_load_members` is enabled in
|
||||||
|
the `/sync` filter, and only return the member events
|
||||||
|
required to display the senders of the timeline events
|
||||||
|
in this response.
|
||||||
|
allOf:
|
||||||
|
- $ref: definitions/state_event_batch.yaml
|
||||||
|
timeline:
|
||||||
|
title: Timeline
|
||||||
|
type: object
|
||||||
|
description: |-
|
||||||
|
The timeline of messages and state changes in the
|
||||||
|
room.
|
||||||
|
allOf:
|
||||||
|
- $ref: definitions/timeline_batch.yaml
|
||||||
|
ephemeral:
|
||||||
|
title: Ephemeral
|
||||||
|
type: object
|
||||||
|
description: |-
|
||||||
|
The new ephemeral events in the room (events that
|
||||||
|
aren't recorded in the timeline or state of the
|
||||||
|
room). In this version of the spec, these are
|
||||||
|
[typing notification](#typing-notifications) and
|
||||||
|
[read receipt](#receipts) events.
|
||||||
|
allOf:
|
||||||
|
- $ref: definitions/event_batch.yaml
|
||||||
|
account_data:
|
||||||
|
title: Account Data
|
||||||
|
type: object
|
||||||
|
description: |-
|
||||||
|
The private data that this user has attached to
|
||||||
|
this room.
|
||||||
|
allOf:
|
||||||
|
- $ref: definitions/event_batch.yaml
|
||||||
|
unread_notifications:
|
||||||
|
title: Unread Notification Counts
|
||||||
|
type: object
|
||||||
|
description: |-
|
||||||
|
Counts of unread notifications for this room. See the
|
||||||
|
[Receiving notifications](/client-server-api/#receiving-notifications) section
|
||||||
|
for more information on how these are calculated.
|
||||||
|
|
||||||
|
If `unread_thread_notifications` was specified as `true` on the `RoomEventFilter`,
|
||||||
|
these counts will only be for the main timeline rather than all events in the room.
|
||||||
|
See the [threading module](#threading) for more information.
|
||||||
|
x-changedInMatrixVersion:
|
||||||
|
"1.4": |
|
||||||
|
Updated to reflect behaviour of having `unread_thread_notifications` as `true` in
|
||||||
|
the `RoomEventFilter` for `/sync`.
|
||||||
properties:
|
properties:
|
||||||
highlight_count:
|
highlight_count:
|
||||||
title: ThreadedHighlightNotificationCount
|
title: Highlighted notification count
|
||||||
type: integer
|
type: integer
|
||||||
description: The number of unread notifications for this *thread* with the
|
description: The number of unread notifications for this room with the highlight
|
||||||
highlight flag set.
|
flag set.
|
||||||
notification_count:
|
notification_count:
|
||||||
title: ThreadedTotalNotificationCount
|
title: Total notification count
|
||||||
type: integer
|
type: integer
|
||||||
description: The total number of unread notifications for this *thread*.
|
description: The total number of unread notifications for this room.
|
||||||
|
unread_thread_notifications:
|
||||||
|
title: Unread Thread Notification Counts
|
||||||
|
type: object
|
||||||
|
description: |-
|
||||||
|
If `unread_thread_notifications` was specified as `true` on the `RoomEventFilter`,
|
||||||
|
the notification counts for each [thread](#threading) in this room. The object is
|
||||||
|
keyed by thread root ID, with values matching `unread_notifications`.
|
||||||
|
|
||||||
|
If a thread does not have any notifications it can be omitted from this object. If
|
||||||
|
no threads have notification counts, this whole object can be omitted.
|
||||||
|
x-addedInMatrixVersion: "1.4"
|
||||||
|
patternProperties:
|
||||||
|
"^\\$":
|
||||||
|
x-pattern-format: mx-event-id
|
||||||
|
title: ThreadNotificationCounts
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
highlight_count:
|
||||||
|
title: ThreadedHighlightNotificationCount
|
||||||
|
type: integer
|
||||||
|
description: The number of unread notifications for this *thread* with the
|
||||||
|
highlight flag set.
|
||||||
|
notification_count:
|
||||||
|
title: ThreadedTotalNotificationCount
|
||||||
|
type: integer
|
||||||
|
description: The total number of unread notifications for this *thread*.
|
||||||
invite:
|
invite:
|
||||||
title: Invited Rooms
|
title: Invited Rooms
|
||||||
type: object
|
type: object
|
||||||
description: |-
|
description: |-
|
||||||
The rooms that the user has been invited to, mapped as room ID to
|
The rooms that the user has been invited to, mapped as room ID to
|
||||||
room information.
|
room information.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
title: Invited Room
|
"^!":
|
||||||
type: object
|
x-pattern-format: mx-room-id
|
||||||
properties:
|
title: Invited Room
|
||||||
invite_state:
|
type: object
|
||||||
title: InviteState
|
properties:
|
||||||
type: object
|
invite_state:
|
||||||
description: |-
|
title: InviteState
|
||||||
The [stripped state](#stripped-state) of a room that the user has been invited
|
type: object
|
||||||
to.
|
description: |-
|
||||||
properties:
|
The [stripped state](#stripped-state) of a room that the user has been invited
|
||||||
events:
|
to.
|
||||||
description: The [stripped state events](#stripped-state) that form the invite
|
properties:
|
||||||
state.
|
events:
|
||||||
items:
|
description: The [stripped state events](#stripped-state) that form the invite
|
||||||
$ref: ../../event-schemas/schema/core-event-schema/stripped_state.yaml
|
state.
|
||||||
type: array
|
items:
|
||||||
|
$ref: ../../event-schemas/schema/core-event-schema/stripped_state.yaml
|
||||||
|
type: array
|
||||||
knock:
|
knock:
|
||||||
title: Knocked rooms
|
title: Knocked rooms
|
||||||
type: object
|
type: object
|
||||||
description: The rooms that the user has knocked upon, mapped as room ID to room
|
description: The rooms that the user has knocked upon, mapped as room ID to room
|
||||||
information.
|
information.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
title: Knocked Room
|
"^!":
|
||||||
type: object
|
x-pattern-format: mx-room-id
|
||||||
properties:
|
title: Knocked Room
|
||||||
knock_state:
|
type: object
|
||||||
title: KnockState
|
properties:
|
||||||
type: object
|
knock_state:
|
||||||
description: The [stripped state](#stripped-state) of a room that the user has
|
title: KnockState
|
||||||
knocked upon.
|
type: object
|
||||||
properties:
|
description: The [stripped state](#stripped-state) of a room that the user has
|
||||||
events:
|
knocked upon.
|
||||||
description: The [stripped state events](#stripped-state) that form the knock
|
properties:
|
||||||
state.
|
events:
|
||||||
items:
|
description: The [stripped state events](#stripped-state) that form the knock
|
||||||
$ref: ../../event-schemas/schema/core-event-schema/stripped_state.yaml
|
state.
|
||||||
type: array
|
items:
|
||||||
|
$ref: ../../event-schemas/schema/core-event-schema/stripped_state.yaml
|
||||||
|
type: array
|
||||||
leave:
|
leave:
|
||||||
title: Left rooms
|
title: Left rooms
|
||||||
type: object
|
type: object
|
||||||
description: |-
|
description: |-
|
||||||
The rooms that the user has left or been banned from, mapped as room ID to
|
The rooms that the user has left or been banned from, mapped as room ID to
|
||||||
room information.
|
room information.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
title: Left Room
|
"^!":
|
||||||
type: object
|
x-pattern-format: mx-room-id
|
||||||
properties:
|
title: Left Room
|
||||||
state:
|
type: object
|
||||||
title: State
|
properties:
|
||||||
type: object
|
state:
|
||||||
description: The state updates for the room up to the start of the timeline.
|
title: State
|
||||||
allOf:
|
type: object
|
||||||
- $ref: definitions/state_event_batch.yaml
|
description: The state updates for the room up to the start of the timeline.
|
||||||
timeline:
|
allOf:
|
||||||
title: Timeline
|
- $ref: definitions/state_event_batch.yaml
|
||||||
type: object
|
timeline:
|
||||||
description: |-
|
title: Timeline
|
||||||
The timeline of messages and state changes in the
|
type: object
|
||||||
room up to the point when the user left.
|
description: |-
|
||||||
allOf:
|
The timeline of messages and state changes in the
|
||||||
- $ref: definitions/timeline_batch.yaml
|
room up to the point when the user left.
|
||||||
account_data:
|
allOf:
|
||||||
title: Account Data
|
- $ref: definitions/timeline_batch.yaml
|
||||||
type: object
|
account_data:
|
||||||
description: |-
|
title: Account Data
|
||||||
The private data that this user has attached to
|
type: object
|
||||||
this room.
|
description: |-
|
||||||
allOf:
|
The private data that this user has attached to
|
||||||
- $ref: definitions/event_batch.yaml
|
this room.
|
||||||
|
allOf:
|
||||||
|
- $ref: definitions/event_batch.yaml
|
||||||
presence:
|
presence:
|
||||||
title: Presence
|
title: Presence
|
||||||
type: object
|
type: object
|
||||||
|
|
|
@ -57,12 +57,14 @@ paths:
|
||||||
The messages to send. A map from user ID, to a map from
|
The messages to send. A map from user ID, to a map from
|
||||||
device ID to message body. The device ID may also be `*`,
|
device ID to message body. The device ID may also be `*`,
|
||||||
meaning all known devices for the user.
|
meaning all known devices for the user.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
type: object
|
"^@":
|
||||||
additionalProperties:
|
x-pattern-format: mx-user-id
|
||||||
type: object
|
type: object
|
||||||
title: EventContent
|
additionalProperties:
|
||||||
description: Message content
|
type: object
|
||||||
|
title: EventContent
|
||||||
|
description: Message content
|
||||||
example:
|
example:
|
||||||
"@alice:example.com":
|
"@alice:example.com":
|
||||||
TLLBEANAAG:
|
TLLBEANAAG:
|
||||||
|
|
|
@ -51,13 +51,15 @@ allOf:
|
||||||
The contents of the messages to be sent. These are arranged in
|
The contents of the messages to be sent. These are arranged in
|
||||||
a map of user IDs to a map of device IDs to message bodies.
|
a map of user IDs to a map of device IDs to message bodies.
|
||||||
The device ID may also be `*`, meaning all known devices for the user.
|
The device ID may also be `*`, meaning all known devices for the user.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
type: object
|
"^@":
|
||||||
title: User Devices
|
x-pattern-format: mx-user-id
|
||||||
additionalProperties:
|
|
||||||
type: object
|
type: object
|
||||||
title: Device Message Contents
|
title: User Devices
|
||||||
properties: {}
|
additionalProperties:
|
||||||
|
type: object
|
||||||
|
title: Device Message Contents
|
||||||
|
properties: {}
|
||||||
example: {
|
example: {
|
||||||
"@alice:example.org": {
|
"@alice:example.org": {
|
||||||
"IWHQUZUIAH": {
|
"IWHQUZUIAH": {
|
||||||
|
|
|
@ -33,54 +33,58 @@ allOf:
|
||||||
description: |-
|
description: |-
|
||||||
Receipts for a particular room. The string key is the room ID for
|
Receipts for a particular room. The string key is the room ID for
|
||||||
which the receipts under it belong.
|
which the receipts under it belong.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
type: object
|
"^!":
|
||||||
title: Room Receipts
|
x-pattern-format: mx-room-id
|
||||||
properties:
|
type: object
|
||||||
# We strongly define the receipt type to help spec future ones later
|
title: Room Receipts
|
||||||
# on. At that point, m.read can become optional (maybe).
|
properties:
|
||||||
"m.read":
|
# We strongly define the receipt type to help spec future ones later
|
||||||
type: object
|
# on. At that point, m.read can become optional (maybe).
|
||||||
description: |-
|
"m.read":
|
||||||
Read receipts for users in the room. The string key is the user
|
|
||||||
ID the receipt belongs to.
|
|
||||||
additionalProperties:
|
|
||||||
type: object
|
type: object
|
||||||
title: User Read Receipt
|
description: |-
|
||||||
properties:
|
Read receipts for users in the room. The string key is the user
|
||||||
event_ids:
|
ID the receipt belongs to.
|
||||||
type: array
|
patternProperties:
|
||||||
description: |-
|
"^@":
|
||||||
The extremity event IDs that the user has read up to.
|
x-pattern-format: mx-user-id
|
||||||
minItems: 1
|
|
||||||
maxItems: 1
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
example: ['$read_this_event:matrix.org']
|
|
||||||
data:
|
|
||||||
type: object
|
type: object
|
||||||
description: Metadata for the read receipt.
|
title: User Read Receipt
|
||||||
title: Read Receipt Metadata
|
|
||||||
properties:
|
properties:
|
||||||
ts:
|
event_ids:
|
||||||
type: integer
|
type: array
|
||||||
format: int64
|
|
||||||
description: |-
|
description: |-
|
||||||
A POSIX timestamp in milliseconds for when the user read
|
The extremity event IDs that the user has read up to.
|
||||||
the event specified in the read receipt.
|
minItems: 1
|
||||||
example: 1533358089009
|
maxItems: 1
|
||||||
thread_id:
|
items:
|
||||||
type: string
|
type: string
|
||||||
x-addedInMatrixVersion: "1.4"
|
example: ['$read_this_event:matrix.org']
|
||||||
description: |-
|
data:
|
||||||
The root thread event's ID (or `main`) for which
|
type: object
|
||||||
thread this receipt is intended to be under. If
|
description: Metadata for the read receipt.
|
||||||
not specified, the read receipt is *unthreaded*
|
title: Read Receipt Metadata
|
||||||
(default).
|
properties:
|
||||||
example: "$threadroot"
|
ts:
|
||||||
required: ['ts']
|
type: integer
|
||||||
required: ['event_ids', 'data']
|
format: int64
|
||||||
required: ['m.read']
|
description: |-
|
||||||
|
A POSIX timestamp in milliseconds for when the user read
|
||||||
|
the event specified in the read receipt.
|
||||||
|
example: 1533358089009
|
||||||
|
thread_id:
|
||||||
|
type: string
|
||||||
|
x-addedInMatrixVersion: "1.4"
|
||||||
|
description: |-
|
||||||
|
The root thread event's ID (or `main`) for which
|
||||||
|
thread this receipt is intended to be under. If
|
||||||
|
not specified, the read receipt is *unthreaded*
|
||||||
|
(default).
|
||||||
|
example: "$threadroot"
|
||||||
|
required: ['ts']
|
||||||
|
required: ['event_ids', 'data']
|
||||||
|
required: ['m.read']
|
||||||
example: {
|
example: {
|
||||||
"!some_room:example.org": {
|
"!some_room:example.org": {
|
||||||
"m.read": {
|
"m.read": {
|
||||||
|
|
|
@ -74,17 +74,19 @@ paths:
|
||||||
description: |-
|
description: |-
|
||||||
The PDUs from the original transaction. The string key represents the ID of the
|
The PDUs from the original transaction. The string key represents the ID of the
|
||||||
PDU (event) that was processed.
|
PDU (event) that was processed.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
type: object
|
"^\\$":
|
||||||
title: PDU Processing Result
|
x-pattern-format: mx-event-id
|
||||||
description: Information about how the PDU was handled.
|
type: object
|
||||||
properties:
|
title: PDU Processing Result
|
||||||
error:
|
description: Information about how the PDU was handled.
|
||||||
type: string
|
properties:
|
||||||
description: |-
|
error:
|
||||||
A human readable description about what went wrong in processing this PDU.
|
type: string
|
||||||
If no error is present, the PDU can be considered successfully handled.
|
description: |-
|
||||||
example: You are not allowed to send a message to this room.
|
A human readable description about what went wrong in processing this PDU.
|
||||||
|
If no error is present, the PDU can be considered successfully handled.
|
||||||
|
example: You are not allowed to send a message to this room.
|
||||||
required:
|
required:
|
||||||
- pdus
|
- pdus
|
||||||
examples:
|
examples:
|
||||||
|
|
|
@ -36,12 +36,14 @@ paths:
|
||||||
The keys to be claimed. A map from user ID, to a map from
|
The keys to be claimed. A map from user ID, to a map from
|
||||||
device ID to algorithm name. Requested users must be local
|
device ID to algorithm name. Requested users must be local
|
||||||
to the receiving homeserver.
|
to the receiving homeserver.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
type: object
|
"^@":
|
||||||
additionalProperties:
|
x-pattern-format: mx-user-id
|
||||||
type: string
|
type: object
|
||||||
description: algorithm
|
additionalProperties:
|
||||||
example: signed_curve25519
|
type: string
|
||||||
|
description: algorithm
|
||||||
|
example: signed_curve25519
|
||||||
example:
|
example:
|
||||||
"@alice:example.com":
|
"@alice:example.com":
|
||||||
JLAFKJWSCS: signed_curve25519
|
JLAFKJWSCS: signed_curve25519
|
||||||
|
@ -65,35 +67,37 @@ paths:
|
||||||
See the [Client-Server Key Algorithms](/client-server-api/#key-algorithms) section for more information on
|
See the [Client-Server Key Algorithms](/client-server-api/#key-algorithms) section for more information on
|
||||||
the Key Object format.
|
the Key Object format.
|
||||||
# User
|
# User
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
type: object
|
"^@":
|
||||||
# Device
|
x-pattern-format: mx-user-id
|
||||||
additionalProperties:
|
|
||||||
type: object
|
type: object
|
||||||
# Key
|
# Device
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
oneOf:
|
type: object
|
||||||
- type: string
|
# Key
|
||||||
- type: object
|
additionalProperties:
|
||||||
title: KeyObject
|
oneOf:
|
||||||
properties:
|
- type: string
|
||||||
key:
|
- type: object
|
||||||
type: string
|
title: KeyObject
|
||||||
description: The key, encoded using unpadded base64.
|
properties:
|
||||||
signatures:
|
key:
|
||||||
type: object
|
type: string
|
||||||
title: Signatures
|
description: The key, encoded using unpadded base64.
|
||||||
additionalProperties:
|
signatures:
|
||||||
type: object
|
type: object
|
||||||
|
title: Signatures
|
||||||
additionalProperties:
|
additionalProperties:
|
||||||
type: string
|
type: object
|
||||||
description: |-
|
additionalProperties:
|
||||||
Signature of the key object.
|
type: string
|
||||||
|
description: |-
|
||||||
|
Signature of the key object.
|
||||||
|
|
||||||
The signature is calculated using the process described at [Signing JSON](/appendices/#signing-json).
|
The signature is calculated using the process described at [Signing JSON](/appendices/#signing-json).
|
||||||
required:
|
required:
|
||||||
- key
|
- key
|
||||||
- signatures
|
- signatures
|
||||||
example:
|
example:
|
||||||
"@alice:example.com":
|
"@alice:example.com":
|
||||||
JLAFKJWSCS:
|
JLAFKJWSCS:
|
||||||
|
@ -124,11 +128,13 @@ paths:
|
||||||
device IDs, or to an empty list to indicate all devices for the
|
device IDs, or to an empty list to indicate all devices for the
|
||||||
corresponding user. Requested users must be local to the
|
corresponding user. Requested users must be local to the
|
||||||
receiving homeserver.
|
receiving homeserver.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
type: array
|
"^@":
|
||||||
items:
|
x-pattern-format: mx-user-id
|
||||||
type: string
|
type: array
|
||||||
description: Device ID
|
items:
|
||||||
|
type: string
|
||||||
|
description: Device ID
|
||||||
example:
|
example:
|
||||||
"@alice:example.com": []
|
"@alice:example.com": []
|
||||||
required:
|
required:
|
||||||
|
@ -150,23 +156,25 @@ paths:
|
||||||
the information returned will be the same as uploaded via
|
the information returned will be the same as uploaded via
|
||||||
`/keys/upload`, with the addition of an `unsigned`
|
`/keys/upload`, with the addition of an `unsigned`
|
||||||
property.
|
property.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
type: object
|
"^@":
|
||||||
additionalProperties:
|
x-pattern-format: mx-user-id
|
||||||
allOf:
|
type: object
|
||||||
- $ref: ../client-server/definitions/device_keys.yaml
|
additionalProperties:
|
||||||
properties:
|
allOf:
|
||||||
unsigned:
|
- $ref: ../client-server/definitions/device_keys.yaml
|
||||||
title: UnsignedDeviceInfo
|
properties:
|
||||||
type: object
|
unsigned:
|
||||||
description: |-
|
title: UnsignedDeviceInfo
|
||||||
Additional data added to the device key information
|
type: object
|
||||||
by intermediate servers, and not covered by the
|
description: |-
|
||||||
signatures.
|
Additional data added to the device key information
|
||||||
properties:
|
by intermediate servers, and not covered by the
|
||||||
device_display_name:
|
signatures.
|
||||||
type: string
|
properties:
|
||||||
description: The display name which the user set on the device.
|
device_display_name:
|
||||||
|
type: string
|
||||||
|
description: The display name which the user set on the device.
|
||||||
master_keys:
|
master_keys:
|
||||||
x-addedInMatrixVersion: "1.1"
|
x-addedInMatrixVersion: "1.1"
|
||||||
type: object
|
type: object
|
||||||
|
@ -177,8 +185,11 @@ paths:
|
||||||
`/keys/device_signing/upload`, along with the signatures
|
`/keys/device_signing/upload`, along with the signatures
|
||||||
uploaded via `/keys/signatures/upload` that the user is
|
uploaded via `/keys/signatures/upload` that the user is
|
||||||
allowed to see.
|
allowed to see.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
$ref: ../client-server/definitions/cross_signing_key.yaml
|
"^@":
|
||||||
|
x-pattern-format: mx-user-id
|
||||||
|
allOf:
|
||||||
|
- $ref: ../client-server/definitions/cross_signing_key.yaml
|
||||||
example:
|
example:
|
||||||
"@alice:example.com":
|
"@alice:example.com":
|
||||||
user_id: "@alice:example.com"
|
user_id: "@alice:example.com"
|
||||||
|
@ -194,8 +205,11 @@ paths:
|
||||||
from user ID, to self-signing key information. For each key, the
|
from user ID, to self-signing key information. For each key, the
|
||||||
information returned will be the same as uploaded via
|
information returned will be the same as uploaded via
|
||||||
`/keys/device_signing/upload`.
|
`/keys/device_signing/upload`.
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
$ref: ../client-server/definitions/cross_signing_key.yaml
|
"^@":
|
||||||
|
x-pattern-format: mx-user-id
|
||||||
|
allOf:
|
||||||
|
- $ref: ../client-server/definitions/cross_signing_key.yaml
|
||||||
example:
|
example:
|
||||||
"@alice:example.com":
|
"@alice:example.com":
|
||||||
user_id: "@alice:example.com"
|
user_id: "@alice:example.com"
|
||||||
|
|
|
@ -32,6 +32,11 @@ mx-event-id:
|
||||||
url: /appendices#event-ids
|
url: /appendices#event-ids
|
||||||
# regex: "^\\$"
|
# regex: "^\\$"
|
||||||
|
|
||||||
|
mx-room-id:
|
||||||
|
title: Room ID
|
||||||
|
url: /appendices#room-ids
|
||||||
|
# regex: "^!"
|
||||||
|
|
||||||
uri:
|
uri:
|
||||||
title: URI
|
title: URI
|
||||||
url: http://tools.ietf.org/html/rfc3986
|
url: http://tools.ietf.org/html/rfc3986
|
||||||
|
|
|
@ -9,10 +9,12 @@ description: |-
|
||||||
that user ID.
|
that user ID.
|
||||||
properties:
|
properties:
|
||||||
content:
|
content:
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
type: array
|
"^@":
|
||||||
items:
|
x-pattern-format: mx-user-id
|
||||||
type: string
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
type: object
|
type: object
|
||||||
description: |-
|
description: |-
|
||||||
The mapping of user ID to a list of room IDs of the 'direct' rooms for
|
The mapping of user ID to a list of room IDs of the 'direct' rooms for
|
||||||
|
|
|
@ -67,8 +67,10 @@ properties:
|
||||||
by the `events` key. Defaults to 50 if unspecified.
|
by the `events` key. Defaults to 50 if unspecified.
|
||||||
type: integer
|
type: integer
|
||||||
users:
|
users:
|
||||||
additionalProperties:
|
patternProperties:
|
||||||
type: integer
|
"^@":
|
||||||
|
x-pattern-format: mx-user-id
|
||||||
|
type: integer
|
||||||
description: The power levels for specific users. This is a mapping from `user_id` to power level for that user.
|
description: The power levels for specific users. This is a mapping from `user_id` to power level for that user.
|
||||||
title: User power levels
|
title: User power levels
|
||||||
type: object
|
type: object
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue