Compare commits

..

6 commits

Author SHA1 Message Date
Hugh Nimmo-Smith b898a29c1e
Merge 205fa06076 into fda3be5ee3 2025-10-08 11:35:18 -04:00
Hugh Nimmo-Smith fda3be5ee3
Add note where an endpoint uses capability negotiation (#2223)
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
2025-10-08 16:32:44 +01:00
Travis Ralston 7f4072d993
Spec device ID masquerading (#2221) 2025-10-08 16:52:18 +03:00
Sarthak Kumar Shailendra 58744f4734
fix: update twitter icon to x (#2219)
Some checks are pending
Spec / 🔎 Validate OpenAPI specifications (push) Waiting to run
Spec / 🔎 Check Event schema examples (push) Waiting to run
Spec / 🔎 Check OpenAPI definitions examples (push) Waiting to run
Spec / 🔎 Check JSON Schemas inline examples (push) Waiting to run
Spec / ⚙️ Calculate baseURL for later jobs (push) Waiting to run
Spec / 🐍 Build OpenAPI definitions (push) Blocked by required conditions
Spec / 📢 Run towncrier for changelog (push) Waiting to run
Spec / 📖 Build the spec (push) Blocked by required conditions
Spec / 🔎 Validate generated HTML (push) Blocked by required conditions
Spec / 📖 Build the historical backup spec (push) Blocked by required conditions
Spell Check / Spell Check with Typos (push) Waiting to run
2025-10-07 19:40:33 +01:00
Johannes Marbach dfdb1d09b8
Add missing bracket (#2224) 2025-10-07 13:18:05 -04:00
Johannes Marbach f82d8ab15b
Clarify that additional OpenGraph properties can be present in URL previews (#2225)
Some checks are pending
Spec / 🔎 Validate OpenAPI specifications (push) Waiting to run
Spec / 🔎 Check Event schema examples (push) Waiting to run
Spec / 🔎 Check OpenAPI definitions examples (push) Waiting to run
Spec / 🔎 Check JSON Schemas inline examples (push) Waiting to run
Spec / ⚙️ Calculate baseURL for later jobs (push) Waiting to run
Spec / 🐍 Build OpenAPI definitions (push) Blocked by required conditions
Spec / 📢 Run towncrier for changelog (push) Waiting to run
Spec / 📖 Build the spec (push) Blocked by required conditions
Spec / 🔎 Validate generated HTML (push) Blocked by required conditions
Spec / 📖 Build the historical backup spec (push) Blocked by required conditions
Spell Check / Spell Check with Typos (push) Waiting to run
Fixes: #1753

Signed-off-by: Johannes Marbach <n0-0ne+github@mailbox.org>
2025-10-07 10:44:20 +02:00
15 changed files with 55 additions and 5 deletions

View file

@ -0,0 +1 @@
Allow application services to masquerade as specific devices belonging to users, as per [MSC4326](https://github.com/matrix-org/matrix-spec-proposals/pull/4326).

View file

@ -0,0 +1 @@
Allow application services to masquerade as specific devices belonging to users, as per [MSC4326](https://github.com/matrix-org/matrix-spec-proposals/pull/4326).

View file

@ -0,0 +1 @@
Add note to each endpoint that uses capability negotiation.

View file

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

View file

@ -0,0 +1 @@
Additional OpenGraph properties can be present in URL previews.

View file

@ -0,0 +1 @@
Swapped icon for X (fka. twitter) to updated logo in footer.

View file

@ -110,7 +110,7 @@ sidebar_menu_compact = true
[[params.links.bottom]] [[params.links.bottom]]
name = "Twitter" name = "Twitter"
url = "https://twitter.com/matrixdotorg" url = "https://twitter.com/matrixdotorg"
icon = "fab fa-twitter" icon = "fab fa-x-twitter"
desc = "Matrix on Twitter" desc = "Matrix on Twitter"

View file

@ -356,6 +356,7 @@ service would like to masquerade as.
Inputs: Inputs:
- Application service token (`as_token`) - Application service token (`as_token`)
- User ID in the AS namespace to act as. - User ID in the AS namespace to act as.
- Device ID belonging to the User ID to act with.
Notes: Notes:
- This applies to all aspects of the Client-Server API, except for - This applies to all aspects of the Client-Server API, except for
@ -375,9 +376,19 @@ service's `user` namespaces. If the parameter is missing, the homeserver
is to assume the application service intends to act as the user implied is to assume the application service intends to act as the user implied
by the `sender_localpart` property of the registration. by the `sender_localpart` property of the registration.
{{% added-in v="1.17" %}} Application services MAY similarly masquerade
as a specific device ID belonging the user ID through use of the `device_id`
query string parameter on the request. If the given device ID is not known
to belong to the user, the server will return a 400 `M_UNKNOWN_DEVICE` error.
If no `user_id` is supplied, the `device_id` MUST belong to the user implied
by the `sender_localpart` property of the application service's registration.
If no `device_id` is supplied, the homeserver is to assume the request is
being made without a device ID and will fail to complete operations which
require a device ID (such as uploading one-time keys).
An example request would be: An example request would be:
GET /_matrix/client/v3/account/whoami?user_id=@_irc_user:example.org GET /_matrix/client/v3/account/whoami?user_id=@_irc_user:example.org&device_id=ABC123
Authorization: Bearer YourApplicationServiceTokenHere Authorization: Bearer YourApplicationServiceTokenHere
#### Timestamp massaging #### Timestamp massaging

View file

@ -132,6 +132,10 @@ The server did not understand the request. This is expected to be returned with
a 404 HTTP status code if the endpoint is not implemented or a 405 HTTP status a 404 HTTP status code if the endpoint is not implemented or a 405 HTTP status
code if the endpoint is implemented, but the incorrect HTTP method is used. code if the endpoint is implemented, but the incorrect HTTP method is used.
`M_UNKNOWN_DEVICE`
{{% added-in v="1.17" %}} The device ID supplied by the application service does
not belong to the user ID during [identity assertion](/application-service-api/#identity-assertion).
`M_UNKNOWN` `M_UNKNOWN`
An unknown error has occurred. An unknown error has occurred.

View file

@ -99,6 +99,10 @@ paths:
has been removed, making this endpoint behave as though it was `false`. has been removed, making this endpoint behave as though it was `false`.
This results in this endpoint being an equivalent to `/3pid/bind` rather This results in this endpoint being an equivalent to `/3pid/bind` rather
than dual-purpose. than dual-purpose.
This endpoint uses [capabilities negotiation](/client-server-api/#capabilities-negotiation).
Clients SHOULD check the value of the [`m.3pid_changes` capability](/client-server-api/#m3pid_changes-capability)
to determine if this endpoint is available.
operationId: post3PIDs operationId: post3PIDs
deprecated: true deprecated: true
security: security:
@ -214,6 +218,10 @@ paths:
Homeservers should prevent the caller from adding a 3PID to their account if it has Homeservers should prevent the caller from adding a 3PID to their account if it has
already been added to another user's account on the homeserver. already been added to another user's account on the homeserver.
This endpoint uses [capabilities negotiation](/client-server-api/#capabilities-negotiation).
Clients SHOULD check the value of the [`m.3pid_changes` capability](/client-server-api/#m3pid_changes-capability)
to determine if this endpoint is available.
{{% boxes/warning %}} {{% boxes/warning %}}
Since this endpoint uses User-Interactive Authentication, it cannot be used when the access token was obtained Since this endpoint uses User-Interactive Authentication, it cannot be used when the access token was obtained
via the [OAuth 2.0 API](/client-server-api/#oauth-20-api). via the [OAuth 2.0 API](/client-server-api/#oauth-20-api).
@ -355,6 +363,10 @@ paths:
Unlike other endpoints, this endpoint does not take an `id_access_token` Unlike other endpoints, this endpoint does not take an `id_access_token`
parameter because the homeserver is expected to sign the request to the parameter because the homeserver is expected to sign the request to the
identity server instead. identity server instead.
This endpoint uses [capabilities negotiation](/client-server-api/#capabilities-negotiation).
Clients SHOULD check the value of the [`m.3pid_changes` capability](/client-server-api/#m3pid_changes-capability)
to determine if this endpoint is available.
operationId: delete3pidFromAccount operationId: delete3pidFromAccount
security: security:
- accessTokenQuery: [] - accessTokenQuery: []

View file

@ -379,7 +379,8 @@ paths:
description: |- description: |-
The OpenGraph data for the URL, which may be empty. Some values are The OpenGraph data for the URL, which may be empty. Some values are
replaced with matrix equivalents if they are provided in the response. replaced with matrix equivalents if they are provided in the response.
The differences from the OpenGraph protocol are described here. The differences from the [OpenGraph protocol](https://ogp.me/) are
described here.
content: content:
application/json: application/json:
schema: schema:
@ -394,6 +395,9 @@ paths:
format: uri format: uri
description: An [`mxc://` URI](/client-server-api/#matrix-content-mxc-uris) to description: An [`mxc://` URI](/client-server-api/#matrix-content-mxc-uris) to
the image. Omitted if there is no image. the image. Omitted if there is no image.
additionalProperties:
description: |-
Additional properties as per the [OpenGraph](https://ogp.me/) protocol.
examples: examples:
response: response:
value: { value: {

View file

@ -605,7 +605,8 @@ paths:
description: |- description: |-
The OpenGraph data for the URL, which may be empty. Some values are The OpenGraph data for the URL, which may be empty. Some values are
replaced with matrix equivalents if they are provided in the response. replaced with matrix equivalents if they are provided in the response.
The differences from the OpenGraph protocol are described here. The differences from the [OpenGraph](https://ogp.me/) protocol are
described here.
content: content:
application/json: application/json:
schema: schema:
@ -620,6 +621,9 @@ paths:
format: uri format: uri
description: An [`mxc://` URI](/client-server-api/#matrix-content-mxc-uris) to description: An [`mxc://` URI](/client-server-api/#matrix-content-mxc-uris) to
the image. Omitted if there is no image. the image. Omitted if there is no image.
additionalProperties:
description: |-
Additional properties as per the [OpenGraph](https://ogp.me/) protocol.
examples: examples:
response: response:
value: { value: {

View file

@ -324,7 +324,7 @@ paths:
This endpoint was deprecated in r0 of this specification. Clients This endpoint was deprecated in r0 of this specification. Clients
should instead call the should instead call the
[/rooms/{roomId}/event/{eventId}](/client-server-api/#get_matrixclientv3roomsroomideventeventid) API [/rooms/{roomId}/event/{eventId}](/client-server-api/#get_matrixclientv3roomsroomideventeventid) API
or the [/rooms/{roomId}/context/{eventId](/client-server-api/#get_matrixclientv3roomsroomidcontexteventid) API. or the [/rooms/{roomId}/context/{eventId}](/client-server-api/#get_matrixclientv3roomsroomidcontexteventid) API.
operationId: getOneEvent operationId: getOneEvent
security: security:
- accessTokenQuery: [] - accessTokenQuery: []

View file

@ -34,6 +34,10 @@ paths:
valid access token is provided. The homeserver SHOULD NOT revoke the valid access token is provided. The homeserver SHOULD NOT revoke the
access token provided in the request. Whether other access tokens for access token provided in the request. Whether other access tokens for
the user are revoked depends on the request parameters. the user are revoked depends on the request parameters.
This endpoint uses [capabilities negotiation](/client-server-api/#capabilities-negotiation).
Clients SHOULD check the value of the [`m.change_password` capability](/client-server-api/#mchange_password-capability)
to determine if this endpoint is available.
security: security:
- {} - {}
- accessTokenQuery: [] - accessTokenQuery: []

View file

@ -29,6 +29,11 @@ paths:
Servers MAY reject `null` values. Servers that accept `null` values SHOULD store Servers MAY reject `null` values. Servers that accept `null` values SHOULD store
them rather than treating `null` as a deletion request. Clients that want to delete a them rather than treating `null` as a deletion request. Clients that want to delete a
field, including its key and value, SHOULD use the `DELETE` endpoint instead. field, including its key and value, SHOULD use the `DELETE` endpoint instead.
This endpoint uses [capabilities negotiation](/client-server-api/#capabilities-negotiation)
depending on the `keyName`. Clients SHOULD check the value of the
[`m.profile_fields` capability](/client-server-api/#mprofile_fields-capability) to detect
which `keyName`s they are allowed to modify.
operationId: setProfileField operationId: setProfileField
security: security:
- accessTokenQuery: [] - accessTokenQuery: []