Compare commits

...

5 commits

Author SHA1 Message Date
Hugh Nimmo-Smith 76e14fe8cf
Merge 07cef68485 into 2baca03e6b 2026-03-04 10:22:53 +00:00
Hugh Nimmo-Smith 07cef68485 Format as definition 2026-03-04 10:22:49 +00:00
Hugh Nimmo-Smith 0445ab222e Merge remote-tracking branch 'upstream/main' into msc4335 2026-03-04 10:19:33 +00:00
Kim Brose 2baca03e6b
Typos and clarifications (#2318)
Some checks failed
Spec / 🔎 Validate OpenAPI specifications (push) Has been cancelled
Spec / 🔎 Check Event schema examples (push) Has been cancelled
Spec / 🔎 Check OpenAPI definitions examples (push) Has been cancelled
Spec / 🔎 Check JSON Schemas inline examples (push) Has been cancelled
Spec / ⚙️ Calculate baseURL for later jobs (push) Has been cancelled
Spec / 📢 Run towncrier for changelog (push) Has been cancelled
Spell Check / Spell Check with Typos (push) Has been cancelled
Spec / 🐍 Build OpenAPI definitions (push) Has been cancelled
Spec / 📖 Build the spec (push) Has been cancelled
Spec / 🔎 Validate generated HTML (push) Has been cancelled
Spec / 📖 Build the historical backup spec (push) Has been cancelled
Spec / Create release (push) Has been cancelled
Signed-off-by: HarHarLinks <2803622+HarHarLinks@users.noreply.github.com>
2026-03-03 16:41:50 +00:00
Hugh Nimmo-Smith 9726841e01 Spec for MSC4335: M_USER_LIMIT_EXCEEDED error code 2026-02-20 09:44:27 +00:00
18 changed files with 61 additions and 28 deletions

View file

@ -0,0 +1 @@
Add `M_USER_LIMIT_EXCEEDED` common error code, as per [MSC4335](https://github.com/matrix-org/matrix-spec-proposals/pull/4335).

View file

@ -0,0 +1 @@
Fix various typos throughout the specification. Contributed by @HarHarLinks.

View file

@ -0,0 +1 @@
Fix various typos throughout the specification. Contributed by @HarHarLinks.

View file

@ -65,7 +65,7 @@ description = "Home of the Matrix specification for decentralised communication"
# Everything below this are Site Params # Everything below this are Site Params
[params] [params]
copyright = "The Matrix.org Foundation CIC" copyright = "The Matrix.org Foundation C.I.C."
[params.version] [params.version]
# must be one of "unstable", "current", "historical" # must be one of "unstable", "current", "historical"

View file

@ -147,6 +147,37 @@ state (e.g.: sending messages, account data, etc) and not routes which
only read state (e.g.: [`/sync`](#get_matrixclientv3sync), only read state (e.g.: [`/sync`](#get_matrixclientv3sync),
[`/user/{userId}/account_data/{type}`](#get_matrixclientv3useruseridaccount_datatype), etc). [`/user/{userId}/account_data/{type}`](#get_matrixclientv3useruseridaccount_datatype), etc).
`M_USER_LIMIT_EXCEEDED`
: {{% added-in v="1.18" %}} The request cannot be completed because the user has
exceeded (or the request would cause them to exceed) a limit associated with
their account. For example, a user may have reached their allocated storage
quota, reached a maximum number of allowed rooms, devices, or other
account-scoped resources, or exceeded usage limits for specific features.
: The error response MUST have an `info_uri` field (string), which is a URI
that the client can present to the user to provide more context on the
encountered limit and, if applicable, guidance on how to increase the limit.
The homeserver MAY return different values for `info_uri` depending on the type
of limit reached.
: The error response MAY include a `can_upgrade` field (boolean, default `false`).
If `true`, it indicates that the specific limit encountered can be increased,
for example by upgrading the user's account tier. If absent or `false`, the
limit is a hard limit that cannot be increased.
: The HTTP status code will depend on depend on the particular endpoint.
: Example response:
```json
{
"errcode": "M_USER_LIMIT_EXCEEDED",
"error": "You have exceeded your storage quota of 10GB",
"info_uri": "https://example.com/homeserver/about?limit_type=quota",
"can_upgrade": true
}
```
`M_UNKNOWN` `M_UNKNOWN`
: An unknown error has occurred. : An unknown error has occurred.
@ -3320,7 +3351,7 @@ PUT /rooms/!roomid:domain/state/m.room.bgd.color
### Redactions ### Redactions
Since events are extensible it is possible for malicious users and/or Since events are extensible it is possible for malicious users and/or
servers to add keys that are, for example offensive or illegal. Since servers to add keys that are, for example, offensive or illegal. Since
some events cannot be simply deleted, e.g. membership events, we instead some events cannot be simply deleted, e.g. membership events, we instead
'redact' events. This involves removing all keys from an event that are 'redact' events. This involves removing all keys from an event that are
not required by the protocol. This stripped down event is thereafter not required by the protocol. This stripped down event is thereafter
@ -3418,7 +3449,7 @@ This specification describes the following relationship types:
* [Event replacements](#event-replacements). * [Event replacements](#event-replacements).
* [Event annotations](#event-annotations-and-reactions). * [Event annotations](#event-annotations-and-reactions).
* [Threads](#threading). * [Threads](#threading).
* [References](#reference-relations) * [References](#reference-relations).
#### Aggregations of child events #### Aggregations of child events

View file

@ -107,7 +107,7 @@ flag to `true`.
``` ```
{{% boxes/note %}} {{% boxes/note %}}
Clients which are acutely aware of threads (they do not render threads, but are otherwise Clients which are aware of threads (they do not render threads, but are otherwise
aware of the feature existing in the spec) can treat rich replies to an event with a `rel_type` aware of the feature existing in the spec) can treat rich replies to an event with a `rel_type`
of `m.thread` as a threaded reply, for conversation continuity on the threaded client's side. of `m.thread` as a threaded reply, for conversation continuity on the threaded client's side.

View file

@ -23,14 +23,14 @@ properties:
not_senders: not_senders:
description: A list of sender IDs to exclude. If this list is absent then no 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 are excluded. A matching sender will be excluded even if it is listed in the
`'senders'` filter. `senders` filter.
items: items:
type: string type: string
type: array type: array
not_types: not_types:
description: A list of event types to exclude. If this list is absent then no 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 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 in the `types` filter. A `*` can be used as a wildcard to match any sequence
of characters. of characters.
items: items:
type: string type: string
@ -43,7 +43,7 @@ properties:
type: array type: array
types: types:
description: A list of event types to include. If this list is absent then all 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 event types are included. A `*` can be used as a wildcard to match any sequence
of characters. of characters.
items: items:
type: string type: string

View file

@ -39,7 +39,7 @@ allOf:
for more information. Defaults to `false`. for more information. Defaults to `false`.
not_rooms: not_rooms:
description: A list of room IDs to exclude. If this list is absent then no 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'` are excluded. A matching room will be excluded even if it is listed in the `rooms`
filter. filter.
items: items:
type: string type: string

View file

@ -17,15 +17,15 @@ properties:
event_fields: event_fields:
description: List of event fields to include. If this list is absent then all description: List of event fields to include. If this list is absent then all
fields are included. The entries are [dot-separated paths for each property](/appendices#dot-separated-property-paths) fields are included. The entries are [dot-separated paths for each property](/appendices#dot-separated-property-paths)
to include. So ['content.body'] will include the 'body' field of the 'content' object. to include. So `['content.body']` will include the `body` field of the `content` object.
A server may include more fields than were requested. A server may include more fields than were requested.
items: items:
type: string type: string
type: array type: array
event_format: event_format:
description: The format to use for events. 'client' will return the events in 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 received a format suitable for clients. `federation` will return the raw event as received
over federation. The default is 'client'. over federation. The default is `client`.
enum: enum:
- client - client
- federation - federation
@ -45,7 +45,7 @@ properties:
properties: properties:
not_rooms: not_rooms:
description: A list of room IDs to exclude. If this list is absent then no 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'` are excluded. A matching room will be excluded even if it is listed in the `rooms`
filter. This filter is applied before the filters in `ephemeral`, filter. This filter is applied before the filters in `ephemeral`,
`state`, `timeline` or `account_data` `state`, `timeline` or `account_data`
items: items:
@ -65,7 +65,7 @@ properties:
events that appear in the `ephemeral` property in the `/sync` events that appear in the `ephemeral` property in the `/sync`
response. response.
include_leave: include_leave:
description: Include rooms that the user has left in the sync, default false description: Include rooms that the user has left in the sync. Defaults to `false`.
type: boolean type: boolean
state: state:
type: object type: object

View file

@ -226,7 +226,7 @@ paths:
type: boolean type: boolean
description: |- description: |-
Whether or not to include all known networks/protocols from Whether or not to include all known networks/protocols from
application services on the homeserver. Defaults to false. application services on the homeserver. Defaults to `false`.
example: false example: false
third_party_instance_id: third_party_instance_id:
type: string type: string
@ -277,4 +277,4 @@ components:
accessTokenQuery: accessTokenQuery:
$ref: definitions/security.yaml#/accessTokenQuery $ref: definitions/security.yaml#/accessTokenQuery
accessTokenBearer: accessTokenBearer:
$ref: definitions/security.yaml#/accessTokenBearer $ref: definitions/security.yaml#/accessTokenBearer

View file

@ -163,7 +163,7 @@ paths:
known client device, a new device will be created. The given known client device, a new device will be created. The given
device ID must not be the same as a device ID must not be the same as a
[cross-signing](/client-server-api/#cross-signing) key ID. [cross-signing](/client-server-api/#cross-signing) key ID.
The server will auto-generate a device_id The server will auto-generate a `device_id`
if this is not specified. if this is not specified.
initial_device_display_name: initial_device_display_name:
type: string type: string

View file

@ -57,7 +57,7 @@ paths:
type: boolean type: boolean
description: |- description: |-
Whether the user's other access tokens, and their associated devices, should be Whether the user's other access tokens, and their associated devices, should be
revoked if the request succeeds. Defaults to true. revoked if the request succeeds. Defaults to `true`.
When `false`, the server can still take advantage of the [soft logout method](/client-server-api/#soft-logout) When `false`, the server can still take advantage of the [soft logout method](/client-server-api/#soft-logout)
for the user's remaining devices. for the user's remaining devices.

View file

@ -126,7 +126,7 @@ paths:
description: |- description: |-
ID of the client device. If this does not correspond to a ID of the client device. If this does not correspond to a
known client device, a new device will be created. The server known client device, a new device will be created. The server
will auto-generate a device_id if this is not specified. will auto-generate a `device_id` if this is not specified.
example: GHTYAJCE example: GHTYAJCE
initial_device_display_name: initial_device_display_name:
type: string type: string
@ -139,11 +139,11 @@ paths:
description: |- description: |-
If true, an `access_token` and `device_id` should not be If true, an `access_token` and `device_id` should not be
returned from this call, therefore preventing an automatic returned from this call, therefore preventing an automatic
login. Defaults to false. login. Defaults to `false`.
example: false example: false
refresh_token: refresh_token:
type: boolean type: boolean
description: If true, the client supports refresh tokens. description: If `true`, the client supports refresh tokens.
x-addedInMatrixVersion: "1.3" x-addedInMatrixVersion: "1.3"
required: true required: true
responses: responses:

View file

@ -31,7 +31,7 @@ paths:
The body of the request should be the content object of the event; the The body of the request should be the content object of the event; the
fields in this object will vary depending on the type of event. See fields in this object will vary depending on the type of event. See
[Room Events](/client-server-api/#room-events) for the m. event specification. [Room Events](/client-server-api/#room-events) for the `m.` event specification.
Homeservers MUST allow clients to send `m.room.redaction` events with this Homeservers MUST allow clients to send `m.room.redaction` events with this
endpoint for all room versions. In rooms with a version older than 11 they endpoint for all room versions. In rooms with a version older than 11 they

View file

@ -49,7 +49,7 @@ paths:
name: include_all_networks name: include_all_networks
description: |- description: |-
Whether or not to include all networks/protocols defined by application Whether or not to include all networks/protocols defined by application
services on the homeserver. Defaults to false. services on the homeserver. Defaults to `false`.
example: false example: false
schema: schema:
type: boolean type: boolean
@ -121,7 +121,7 @@ paths:
type: boolean type: boolean
description: |- description: |-
Whether or not to include all known networks/protocols from Whether or not to include all known networks/protocols from
application services on the homeserver. Defaults to false. application services on the homeserver. Defaults to `false`.
example: false example: false
third_party_instance_id: third_party_instance_id:
type: string type: string

View file

@ -7,8 +7,7 @@ properties:
When interacting with the REST API, this is the HTTP body. When interacting with the REST API, this is the HTTP body.
type: object type: object
type: type:
description: The type of event. This SHOULD be namespaced similar to Java package description: The type of event, as defined by [the event type specification](/client-server-api/#types-of-room-events).
naming conventions e.g. 'com.example.subdomain.event.type'
type: string type: string
required: required:
- type - type

View file

@ -54,7 +54,7 @@ properties:
type: boolean type: boolean
description: |- description: |-
True to allow server names that are IP address literals. False to True to allow server names that are IP address literals. False to
deny. Defaults to true if missing or otherwise not a boolean. deny. Defaults to `true` if missing or otherwise not a boolean.
This is strongly recommended to be set to `false` as servers running This is strongly recommended to be set to `false` as servers running
with IP literal names are strongly discouraged in order to require with IP literal names are strongly discouraged in order to require

View file

@ -49,7 +49,7 @@
</tr> </tr>
{{ if $state_key }} {{ if $state_key }}
<tr> <tr>
<th>State key</th> <th>State key:</th>
<td>{{ $state_key.description | markdownify }}</td> <td>{{ $state_key.description | markdownify }}</td>
</tr> </tr>
{{ end }} {{ end }}