mirror of
https://github.com/matrix-org/matrix-spec
synced 2026-04-25 20:14:09 +02:00
Compare commits
4 commits
1bec94b958
...
ec7d439dcd
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ec7d439dcd | ||
|
|
974b0b721e | ||
|
|
fda3be5ee3 | ||
|
|
7f4072d993 |
|
|
@ -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).
|
||||||
1
changelogs/client_server/newsfragments/2221.feature
Normal file
1
changelogs/client_server/newsfragments/2221.feature
Normal 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).
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Add note to each endpoint that uses capability negotiation.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Fix various typos throughout the specification.
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,9 +20,9 @@ Previously, a rich reply could only reference another `m.room.message` event.
|
||||||
{{% boxes/note %}}
|
{{% boxes/note %}}
|
||||||
{{% changed-in v="1.13" %}}
|
{{% changed-in v="1.13" %}}
|
||||||
In previous versions of the specification, rich replies could include a fallback
|
In previous versions of the specification, rich replies could include a fallback
|
||||||
representation of the original message message in the `body` (using a prefix
|
representation of the original message in the `body` (using a prefix sequence)
|
||||||
sequence) and `formatted_body` (using a custom HTML element) for clients that do
|
and `formatted_body` (using a custom HTML element) for clients that do not
|
||||||
not support rich replies. This is no longer the case, but clients SHOULD still
|
support rich replies. This is no longer the case, but clients SHOULD still
|
||||||
remove this fallback before rendering the event.
|
remove this fallback before rendering the event.
|
||||||
|
|
||||||
To strip the fallback on the `body`, the client should iterate over each
|
To strip the fallback on the `body`, the client should iterate over each
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
@ -202,6 +206,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).
|
||||||
|
|
@ -331,6 +339,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: []
|
||||||
|
|
|
||||||
|
|
@ -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: []
|
||||||
|
|
|
||||||
|
|
@ -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: []
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue