The implementation status of Matrix's client-server API, version r0.6.1 is listed below.
Legend:
- ✅ - implemented
- 🚧 - partially implemented / work in progress
- ❌ - not implemented yet
- 🗑️ - deprecated according to the specification, will not be implemented
Note: The parts that are marked as deprecated by the specification will not get implemented.
- ❌ CORS headers
- ✅ 4.1.1 GET /.well-known/matrix/client
- ✅ 5.5.1 GET /_matrix/client/r0/login
- ✅ 5.5.2 POST /_matrix/client/r0/login
- ✅ 5.5.3 POST /_matrix/client/r0/logout
- ✅ 5.5.4 POST /_matrix/client/r0/logout/all
- ✅ 5.6.1 POST /_matrix/client/r0/register
- ✅ 5.6.2 POST /_matrix/client/r0/register/email/requestToken
- ✅ 5.6.3 POST /_matrix/client/r0/register/msisdn/requestToken
- ✅ 5.6.4 POST /_matrix/client/r0/account/password
- ✅ 5.6.5 POST /_matrix/client/r0/account/password/email/requestToken
- ✅ 5.6.6 POST /_matrix/client/r0/account/password/msisdn/requestToken
- ✅ 5.6.7 POST /_matrix/client/r0/account/deactivate
- ✅ 5.6.8 GET /_matrix/client/r0/register/available
The server currently rejects passwords with less than 12 characters as weak
passwords with error code M_WEAK_PASSWORD.
- ✅ 5.7.1 GET /_matrix/client/r0/account/3pid
- 🗑️ 5.7.2 Deprecated: POST /_matrix/client/r0/account/3pid
- ✅ 5.7.3 POST /_matrix/client/r0/account/3pid/add
- ✅ 5.7.4 POST /_matrix/client/r0/account/3pid/bind
- ✅ 5.7.5 POST /_matrix/client/r0/account/3pid/delete
- ✅ 5.7.6 POST /_matrix/client/r0/account/3pid/unbind
- ✅ 5.7.7 POST /_matrix/client/r0/account/3pid/email/requestToken
- ✅ 5.7.8 POST /_matrix/client/r0/account/3pid/msisdn/requestToken
- ✅ 6.1 GET /_matrix/client/r0/capabilities
- ✅ 6.2 m.change_password capability
- ✅ 6.3 m.room_versions capability
- ❌ Not implemented.
- ❌ Not implemented.
- ❌ 8.2.1 POST /_matrix/client/r0/user/{userId}/filter
- ❌ 8.2.2 GET /_matrix/client/r0/user/{userId}/filter/{filterId}
- ✅ 9.1.1 Event Fields
- ✅ 9.1.2 Room Event Fields
- ✅ 9.1.3 State Event Fields
- ❌ Not implemented.
- ✅ 9.3.1 m.room.canonical_alias
- ✅ 9.3.2 m.room.create
- ✅ 9.3.3 m.room.join_rules
- ✅ 9.3.4 m.room.member
- ✅ 9.3.5 m.room.power_levels
- ❌ 9.3.6 m.room.redaction
- ✅ 9.3.7 Historical events
- 🚧 9.4.1 GET /_matrix/client/r0/sync
- 🗑️ 9.4.2 Deprecated: GET /_matrix/client/r0/events
- 🗑️ 9.4.3 Deprecated: GET /_matrix/client/r0/initialSync
- 🗑️ 9.4.4 Deprecated: GET /_matrix/client/r0/events/{eventId}
- ❌ 9.5.1 GET /_matrix/client/r0/rooms/{roomId}/event/{eventId}
- ❌ 9.5.2 GET /_matrix/client/r0/rooms/{roomId}/state/{eventType}/{stateKey}
- ❌ 9.5.3 GET /_matrix/client/r0/rooms/{roomId}/state
- ❌ 9.5.4 GET /_matrix/client/r0/rooms/{roomId}/members
- ❌ 9.5.5 GET /_matrix/client/r0/rooms/{roomId}/joined_members
- ❌ 9.5.6 GET /_matrix/client/r0/rooms/{roomId}/messages
- 🗑️ 9.5.7 Deprecated: GET /_matrix/client/r0/rooms/{roomId}/initialSync
- ❌ 9.6.1 PUT /_matrix/client/r0/rooms/{roomId}/state/{eventType}/{stateKey}
- ❌ 9.6.2 PUT /_matrix/client/r0/rooms/{roomId}/send/{eventType}/{txnId}
- ❌ 9.7.1.1 m.room.redaction
- 🚧 10.1.1 POST /_matrix/client/r0/createRoom
- ❌ 10.2.1 PUT /_matrix/client/r0/directory/room/{roomAlias}
- 🚧 10.2.2 GET /_matrix/client/r0/directory/room/{roomAlias}
- ❌ 10.2.3 DELETE /_matrix/client/r0/directory/room/{roomAlias}
- ✅ 10.2.4 GET /_matrix/client/r0/rooms/{roomId}/aliases
❌Not implemented.
- ✅ 10.4.1 GET /_matrix/client/r0/joined_rooms
- ❌ 10.4.2.1 POST /_matrix/client/r0/rooms/{roomId}/invite
- ❌ 10.4.2.2 POST /_matrix/client/r0/rooms/{roomId}/join
- ❌ 10.4.2.3 POST /_matrix/client/r0/join/{roomIdOrAlias}
- ❌ 10.4.3.1 POST /_matrix/client/r0/rooms/{roomId}/leave
- ❌ 10.4.3.2 POST /_matrix/client/r0/rooms/{roomId}/forget
- ❌ 10.4.3.3 POST /_matrix/client/r0/rooms/{roomId}/kick
- ❌ 10.4.4.1 POST /_matrix/client/r0/rooms/{roomId}/ban
- ❌ 10.4.4.2 POST /_matrix/client/r0/rooms/{roomId}/unban
- ✅ 10.5.1 GET /_matrix/client/r0/directory/list/room/{roomId}
- ✅ 10.5.2 PUT /_matrix/client/r0/directory/list/room/{roomId}
- ❌ 10.5.3 GET /_matrix/client/r0/publicRooms
- ❌ 10.5.4 POST /_matrix/client/r0/publicRooms
- ✅ 11.2.1 PUT /_matrix/client/r0/profile/{userId}/displayname
- ✅ 11.2.2 GET /_matrix/client/r0/profile/{userId}/displayname
- ✅ 11.2.3 PUT /_matrix/client/r0/profile/{userId}/avatar_url
- ✅ 11.2.4 GET /_matrix/client/r0/profile/{userId}/avatar_url
- ✅ 11.2.5 GET /_matrix/client/r0/profile/{userId}
- 🚧 11.2.6 Events on Change of Profile Information
- ❌ Currently, the server does not have any kind of rate limiting.
13.1 Feature profiles
TODO
- ✅ 13.2.1.1 m.room.message
- ✅ 13.2.1.2 m.room.message.feedback
- ✅ 13.2.1.3 m.room.name
- ✅ 13.2.1.4 m.room.topic
- ✅ 13.2.1.5 m.room.avatar
- ✅ 13.2.1.6 m.room.pinned_events
- ✅ 13.2.1.7 m.room.message msgtypes
13.2.2 Client behaviour
13.2.3 Server behaviour
- ❌ Homeservers SHOULD reject
m.room.messageevents which don't have amsgtypekey, or which don't have a textualbodykey, with an HTTP status code of 400.
13.2.4 Security considerations
- ❌ Not implemented.
- ✅ 13.3.1.1 m.call.invite
- ✅ 13.3.1.2 m.call.candidates
- ✅ 13.3.1.3 m.call.answer
- ✅ 13.3.1.4 m.call.hangup
- ❌ 13.3.3.1 GET /_matrix/client/r0/voip/turnServer
13.3.4 Security considerations
- ❌ Not implemented.
- ❌ 13.4.1.1 m.typing
- ❌ 13.5.1.1 m.receipt
- ❌ Not implemented yet.
13.5.4 Security considerations
- ❌ 13.6.1.1 m.fully_read
- ❌ Not implemented.
- ❌ 13.7.1.1 m.presence
- ❌ 13.7.2.1 PUT /_matrix/client/r0/presence/{userId}/status
- ❌ 13.7.2.2 GET /_matrix/client/r0/presence/{userId}/status
- ❌ 13.7.2.3 Last active ago
- ❌ 13.7.2.4 Idle timeout
✅ Implemented.
- ✅ 13.8.2.1 POST /_matrix/media/r0/upload
- ✅ 13.8.2.2 GET /_matrix/media/r0/download/{serverName}/{mediaId}
- ✅ 13.8.2.3 GET /_matrix/media/r0/download/{serverName}/{mediaId}/{fileName}
- ❌ 13.8.2.4 GET /_matrix/media/r0/thumbnail/{serverName}/{mediaId}
- ❌ 13.8.2.5 GET /_matrix/media/r0/preview_url
- ✅ 13.8.2.6 GET /_matrix/media/r0/config
- ❌ 13.8.2.7 Thumbnails
- 🚧 Partially implemented.
- ❌ Not implemented.
- ❌ 13.9.3.1 PUT /_matrix/client/r0/sendToDevice/{eventType}/{txnId}
- ❌ 13.9.3.2 Extensions to /sync
- ✅ 13.10.1.1 GET /_matrix/client/r0/devices
- ✅ 13.10.1.2 GET /_matrix/client/r0/devices/{deviceId}
- ✅ 13.10.1.3 PUT /_matrix/client/r0/devices/{deviceId}
- ✅ 13.10.1.4 DELETE /_matrix/client/r0/devices/{deviceId}
- ✅ 13.10.1.5 POST /_matrix/client/r0/delete_devices
- ✅ User-interactive authentication is implemented for device deletion, requiring the user to re-submit the current password to allow deletion.
13.11 End-to-End Encryption
TODO
- ✅ 13.12.1.1 m.room.history_visibility
13.12.3 Server behaviour
- ❌ Not implemented yet.
13.12.4 Security considerations
TODO
- ✅ 13.18.1.1 m.tag
- ✅ 13.18.2.1 GET /_matrix/client/r0/user/{userId}/rooms/{roomId}/tags
- ✅ 13.18.2.2 PUT /_matrix/client/r0/user/{userId}/rooms/{roomId}/tags/{tag}
- ✅ 13.18.2.3 DELETE /_matrix/client/r0/user/{userId}/rooms/{roomId}/tags/{tag}
✅ Implemented. Global account data, room-specific account data and tag data
events (type m.tag) are returned by the /sync endpoint.
- ✅ 13.19.2.1 PUT /_matrix/client/r0/user/{userId}/account_data/{type}
- ✅ 13.19.2.2 GET /_matrix/client/r0/user/{userId}/account_data/{type}
- ✅ 13.19.2.3 PUT /_matrix/client/r0/user/{userId}/rooms/{roomId}/account_data/{type}
- ✅ 13.19.2.4 GET /_matrix/client/r0/user/{userId}/rooms/{roomId}/account_data/{type}
✅ The server prevents clients from setting account data for server-managed types
(currently only m.fully_read).
- ❌ 13.20.1.1 GET /_matrix/client/r0/admin/whois/{userId}
❌ Not implemented yet.
- ❌ 13.22.1.1 GET /_matrix/client/r0/login/sso/redirect
13.22.2.1 Handling the redirect endpoint
- ❌ Not implemented.
13.22.2.2 Handling the authentication endpoint
- ❌ Not implemented.
- ❌ 13.23.1.1 m.direct
Can only be implemented on client side, not on server side.
- ❌ Not implemented.
- ❌ 13.24.1.1 m.ignored_user_list
❌ Not implemented.
❌ Not implemented.
- ❌ 13.25.1.1 m.sticker
Affects client only, there is no need for changes on server.
❌ Not implemented.
- ❌ 13.27.1.1 GET /_matrix/client/r0/thirdparty/protocols
- ❌ 13.27.1.2 GET /_matrix/client/r0/thirdparty/protocol/{protocol}
- ❌ 13.27.1.3 GET /_matrix/client/r0/thirdparty/location/{protocol}
- ❌ 13.27.1.4 GET /_matrix/client/r0/thirdparty/user/{protocol}
- ❌ 13.27.1.5 GET /_matrix/client/r0/thirdparty/location
- ❌ 13.27.1.6 GET /_matrix/client/r0/thirdparty/user
-
❌ 13.29.1 m.room.server_acl
-
✅ 13.29.2 Client behaviour
No changes required on server side to guarantee client behaviour.
-
❌ 13.29.3 Server behaviour
-
❌ 13.29.4 Security considerations
✅ This module does not have any server-specific behaviour to it.
- ❌ 13.31.1.1 m.room.tombstone
- ❌ 13.31.2.1 POST /_matrix/client/r0/rooms/{roomId}/upgrade
❌ Not implemented.
TODO