23 KiB
23 KiB
Implementation Process (r0.5.0)
- 2 API Standards
2.1 GET /_matrix/client/versions
3 Web Browser ClientsNot applicable- 4 Server Discovery
- 4.1 Well-known URI
4.1.1 GET /.well-known/matrix/client
- 4.1 Well-known URI
- 5 Client Authentication
5.1 Using access tokensOnly through Authorization header- 5.2 Relationship between access tokens and devices
- 5.3 User-Interactive Authentication API
- 5.3.1 Overview
- 5.3.2 User-interactive API in the REST API
- 5.3.3 Example
- 5.3.4 Authentication types
- 5.3.4.1 Password-based
- 5.3.4.2 Google ReCaptcha
- 5.3.4.3 Token-based
- 5.3.4.4 OAuth2-based
- 5.3.4.5 Email-based (identity / homeserver)
- 5.3.4.6 Phone number/MSISDN-based (identity / homeserver)
- 5.3.4.7 Dummy Auth
- 5.3.5 Fallback
- 5.3.5.1 Example
- 5.3.6 Identifier types
- 5.3.6.1 Matrix User ID
- 5.3.6.2 Third-party ID
- 5.3.6.3 Phone number
- 5.4 Login
- 5.4.1
GET /_matrix/client/r0/login - 5.4.2 POST /_matrix/client/r0/login
- 5.4.3 POST /_matrix/client/r0/logout
- 5.4.4 POST /_matrix/client/r0/logout/all
- 5.4.5 Login Fallback
- 5.4.1
- 5.5 Account registration and management
- 5.5.1 POST /_matrix/client/r0/register
- 5.5.2 POST /_matrix/client/r0/register/email/requestToken
- 5.5.3 POST /_matrix/client/r0/register/msisdn/requestToken
- 5.5.4 POST /_matrix/client/r0/account/password
- 5.5.5 POST /_matrix/client/r0/account/password/email/requestToken
- 5.5.6 POST /_matrix/client/r0/account/password/msisdn/requestToken
- 5.5.7 POST /_matrix/client/r0/account/deactivate
- 5.5.8 GET /_matrix/client/r0/register/available
- 5.5.9 Notes on password management
- 5.6 Adding Account Administrative Contact Information
- 5.6.1 GET /_matrix/client/r0/account/3pid
- 5.6.2 POST /_matrix/client/r0/account/3pid
- 5.6.3 POST /_matrix/client/r0/account/3pid/delete
- 5.6.4 POST /_matrix/client/r0/account/3pid/email/requestToken
- 5.6.5 POST /_matrix/client/r0/account/3pid/msisdn/requestToken
- 5.7 Current account information
- 5.7.1 GET /_matrix/client/r0/account/whoami
- 6 Capabilities negotiation
- 6.1 GET /_matrix/client/r0/capabilities
- 6.2 m.change_password capability
- 6.3 m.room_versions capability
- 7 Pagination
- 8 Filtering
- 8.1 Lazy-loading room members
- 8.2 API endpoints
- 8.2.1 POST /_matrix/client/r0/user/{userId}/filter
- 8.2.2 GET /_matrix/client/r0/user/{userId}/filter/{filterId}
- 9 Events
- 9.1 Types of room events
- 9.1.1 Event Fields
- 9.1.2 Room Event Fields
- 9.1.3 State Event Fields
- 9.2 Size limits
- 9.3 Room Events
- 9.3.1 m.room.aliases
- 9.3.2 m.room.canonical_alias
- 9.3.3 m.room.create
- 9.3.4 m.room.join_rules
- 9.3.5 m.room.member
- 9.3.6 m.room.power_levels
- 9.3.7 m.room.redaction
- 9.4 Syncing
- 9.4.1 GET /_matrix/client/r0/sync
9.4.2 GET /_matrix/client/r0/eventsDeprecated9.4.3 GET /_matrix/client/r0/initialSyncDeprecated9.4.4 GET /_matrix/client/r0/events/{eventId}Deprecated
- 9.5 Getting events for a room
- 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 GET /_matrix/client/r0/rooms/{roomId}/initialSyncDeprecated
- 9.6 Sending events to a room
- 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 Redactions
- 9.7.1 Events
- 9.7.1.1 m.room.redaction
- 9.7.2 Client behaviour
- 9.7.2.1 PUT /_matrix/client/r0/rooms/{roomId}/redact/{eventId}/{txnId}
- 9.7.1 Events
- 9.1 Types of room events
- 10 Rooms
- 10.1 Creation
- 10.1.1 POST /_matrix/client/r0/createRoom
- 10.2 Room aliases
- 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.3 Permissions
- 10.4 Room membership
- 10.4.1 GET /_matrix/client/r0/joined_rooms
- 10.4.2 Joining 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 Leaving rooms
- 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 Banning users in a room
- 10.4.4.1 POST /_matrix/client/r0/rooms/{roomId}/ban
- 10.4.4.2 POST /_matrix/client/r0/rooms/{roomId}/unban
- 10.5 Listing rooms
- 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
- 10.1 Creation
- 11 User Data
- 11.1 User Directory
- 11.1.1 POST /_matrix/client/r0/user_directory/search
- 11.2 Profiles
- 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
- 11.1 User Directory
- 12 Security
- 12.1 Rate limiting
- 13 Modules
- 13.1 Feature Profiles
- 13.1.1 Summary
- 13.1.2 Clients
- 13.1.2.1 Stand-alone web (Web)
- 13.1.2.2 Mobile (Mobile)
- 13.1.2.3 Desktop (Desktop)
- 13.1.2.4 Command Line Interface (CLI)
- 13.1.2.5 Embedded (Embedded)
- 13.1.2.5.1 Application
- 13.1.2.5.2 Device
- 13.2 Instant Messaging
- 13.2.1 Events
- 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.1.7.1 m.text
- 13.2.1.7.2 m.emote
- 13.2.1.7.3 m.notice
- 13.2.1.7.4 m.image
- 13.2.1.7.5 m.file
- 13.2.1.7.6 m.audio
- 13.2.1.7.7 m.location
- 13.2.1.7.8 m.video
- 13.2.2 Client behaviour
- 13.2.2.1 Recommendations when sending messages
- 13.2.2.2 Local echo
- 13.2.2.3 Calculating the display name for a user
- 13.2.2.4 Displaying membership information with messages
- 13.2.2.5 Calculating the display name for a room
- 13.2.2.6 Forming relationships between events
- 13.2.2.6.1 Rich replies
- 13.2.2.6.1.1 Fallbacks and event representation
- 13.2.2.6.1.1.1 Stripping the fallback
- 13.2.2.6.1.1.2 Fallback for m.text, m.notice, and unrecognised message types
- 13.2.2.6.1.1.3 Fallback for m.emote
- 13.2.2.6.1.1.4 Fallback for m.image, m.video, m.audio, and m.file
- 13.2.2.6.1.1 Fallbacks and event representation
- 13.2.2.6.1 Rich replies
- 13.2.3
Server behaviourNot applicable - 13.2.4 Security considerations
- 13.2.1 Events
- 13.3 Voice over IP
- 13.3.1 Events
- 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.2 Client behaviour
- 13.3.2.1 Glare
- 13.3.3
Server behaviourNot applicable- 13.3.3.1 GET /_matrix/client/r0/voip/turnServer
- 13.3.4 Security considerations
- 13.3.1 Events
- 13.4 Typing Notifications
- 13.4.1 Events
- 13.4.1.1 m.typing
- 13.4.2 Client behaviour
- 13.4.2.1 PUT /_matrix/client/r0/rooms/{roomId}/typing/{userId}
- 13.4.3 Security considerations
- 13.4.1 Events
- 13.5 Receipts
- 13.5.1 Events
- 13.5.1.1 m.receipt
- 13.5.2 Client behaviour
- 13.5.2.1 POST /_matrix/client/r0/rooms/{roomId}/receipt/{receiptType}/{eventId}
- 13.5.3
Server behaviourNot applicable - 13.5.4 Security considerations
- 13.5.1 Events
- 13.6 Fully read markers
- 13.6.1 Events
- 13.6.1.1 m.fully_read
- 13.6.2 Client behaviour
- 13.6.2.1 POST /_matrix/client/r0/rooms/{roomId}/read_markers
- 13.6.3
Server behaviourNot applicable
- 13.6.1 Events
- 13.7 Presence
- 13.7.1 Events
- 13.7.1.1 m.presence
- 13.7.2 Client behaviour
- 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
- 13.7.3 Security considerations
- 13.7.1 Events
- 13.8 Content repository
- 13.8.1 Matrix Content (MXC) URIs
- 13.8.2 Client behaviour
- 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
- 13.8.3 Security considerations
- 13.9 Send-to-Device messaging
- 13.9.1 Client behaviour
- 13.9.2
Server behaviourNot applicable - 13.9.3 Protocol definitions
- 13.9.3.1 PUT /_matrix/client/r0/sendToDevice/{eventType}/{txnId}
- 13.9.3.2 Extensions to /sync
- 13.10 Device Management
- 13.10.1 Client behaviour
- 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
- 13.10.2 Security considerations
- 13.10.1 Client behaviour
- 13.11 End-to-End Encryption
- 13.11.1 Key Distribution
- 13.11.1.1 Overview
- 13.11.1.2 Key algorithms
- 13.11.1.3 Device keys
- 13.11.1.4 Uploading keys
- 13.11.1.5 Tracking the device list for a user
- 13.11.1.6 Sending encrypted attachments
- 13.11.1.6.1 Extensions to m.message msgtypes
- 13.11.1.7 Claiming one-time keys
- 13.11.2 Device verification
- 13.11.2.1 Key verification framework
- 13.11.2.1.1 m.key.verification.request
- 13.11.2.1.2 m.key.verification.start
- 13.11.2.1.3 m.key.verification.cancel
- 13.11.2.2 Short Authentication String (SAS) verification
- 13.11.2.2.1 Error and exception handling
- 13.11.2.2.2 Verification messages specific to SAS
- 13.11.2.2.3 m.key.verification.start
- 13.11.2.2.4 m.key.verification.accept
- 13.11.2.2.5 m.key.verification.key
- 13.11.2.2.6 m.key.verification.mac
- 13.11.2.2.7 HKDF calculation
- 13.11.2.2.8 SAS method: decimal
- 13.11.2.2.9 SAS method: emoji
- 13.11.2.1 Key verification framework
- 13.11.3 Sharing keys between devices
- 13.11.3.1 Key requests
- 13.11.3.2 Key exports
- 13.11.3.2.1 Key export format
- 13.11.4 Messaging Algorithms
- 13.11.4.1 Messaging Algorithm Names
- 13.11.4.2 m.olm.v1.curve25519-aes-sha2
- 13.11.4.2.1 Recovering from undecryptable messages
- 13.11.4.3 m.megolm.v1.aes-sha2
- 13.11.5 Protocol definitions
- 13.11.5.1 Events
- 13.11.5.1.1 m.room.encryption
- 13.11.5.1.2 m.room.encrypted
- 13.11.5.1.3 m.room_key
- 13.11.5.1.4 m.room_key_request
- 13.11.5.1.5 m.forwarded_room_key
- 13.11.5.1.6 m.dummy
- 13.11.5.2 Key management API
- 13.11.5.2.1 POST /_matrix/client/r0/keys/upload
- 13.11.5.2.2 POST /_matrix/client/r0/keys/query
- 13.11.5.2.3 POST /_matrix/client/r0/keys/claim
- 13.11.5.2.4 GET /_matrix/client/r0/keys/changes
- 13.11.5.3 Extensions to /sync
- 13.11.5.1 Events
- 13.11.1 Key Distribution
- 13.12 Room History Visibility
- 13.12.1 Events
- 13.12.1.1 m.room.history_visibility
- 13.12.2 Client behaviour
- 13.12.3
Server behaviourNot applicable - 13.12.4 Security considerations
- 13.12.1 Events
- 13.13 Push Notifications
- 13.13.1 Client behaviour
- 13.13.1.1 GET /_matrix/client/r0/pushers
- 13.13.1.2 POST /_matrix/client/r0/pushers/set
- 13.13.1.3 Listing Notifications
- 13.13.1.3.1 GET /_matrix/client/r0/notifications
- 13.13.1.4 Receiving notifications
- 13.13.1.5 Push Rules
- 13.13.1.5.1 Actions
- 13.13.1.5.1.1 Tweaks
- 13.13.1.5.2 Predefined Rules
- 13.13.1.5.2.1 Default Override Rules
- 13.13.1.5.2.1.1 .m.rule.master
- 13.13.1.5.2.1.2 .m.rule.suppress_notices
- 13.13.1.5.2.1.3 .m.rule.invite_for_me
- 13.13.1.5.2.1.4 .m.rule.member_event
- 13.13.1.5.2.1.5 .m.rule.contains_display_name
- 13.13.1.5.2.1.6 .m.rule.tombstone
- 13.13.1.5.2.1.7 .m.rule.roomnotif
- 13.13.1.5.2.2 Default Content Rules
- 13.13.1.5.2.2.1 .m.rule.contains_user_name
- 13.13.1.5.2.3 Default Underride Rules
- 13.13.1.5.2.3.1 .m.rule.call
- 13.13.1.5.2.3.2 .m.rule.encrypted_room_one_to_one
- 13.13.1.5.2.3.3 .m.rule.room_one_to_one
- 13.13.1.5.2.3.4 .m.rule.message
- 13.13.1.5.2.3.5 .m.rule.encrypted
- 13.13.1.5.2.1 Default Override Rules
- 13.13.1.5.3 Conditions
- 13.13.1.5.1 Actions
- 13.13.1.6 Push Rules: API
- 13.13.1.6.1 GET /_matrix/client/r0/pushrules/
- 13.13.1.6.2 GET /_matrix/client/r0/pushrules/{scope}/{kind}/{ruleId}
- 13.13.1.6.3 DELETE /_matrix/client/r0/pushrules/{scope}/{kind}/{ruleId}
- 13.13.1.6.4 PUT /_matrix/client/r0/pushrules/{scope}/{kind}/{ruleId}
- 13.13.1.6.5 GET /_matrix/client/r0/pushrules/{scope}/{kind}/{ruleId}/enabled
- 13.13.1.6.6 PUT /_matrix/client/r0/pushrules/{scope}/{kind}/{ruleId}/enabled
- 13.13.1.6.7 GET /_matrix/client/r0/pushrules/{scope}/{kind}/{ruleId}/actions
- 13.13.1.6.8 PUT /_matrix/client/r0/pushrules/{scope}/{kind}/{ruleId}/actions
- 13.13.1.7 Push Rules: Events
- 13.13.1.7.1 m.push_rules
- 13.13.1.7.2 Examples
- 13.13.2
Server behaviourNot applicable - 13.13.3 Push Gateway behaviour
- 13.13.3.1 Recommendations for APNS
- 13.13.4 Security considerations
- 13.13.1 Client behaviour
- 13.14 Third party invites
- 13.14.1 Events
- 13.14.1.1 m.room.third_party_invite
- 13.14.2 Client behaviour
- 13.14.2.1 POST /_matrix/client/r0/rooms/{roomId}/invite
- 13.14.3
Server behaviourNot applicable - 13.14.4 Security considerations
- 13.14.1 Events
- 13.15 Server Side Search
- 13.15.1 Client behaviour
- 13.15.1.1 POST /_matrix/client/r0/search
- 13.15.2 Search Categories
- 13.15.2.1 room_events
- 13.15.3 Ordering
- 13.15.4 Groups
- 13.15.5 Pagination
- 13.15.6 Security considerations
- 13.15.1 Client behaviour
- 13.16 Guest Access
- 13.16.1 Events
- 13.16.1.1 m.room.guest_access
- 13.16.2 Client behaviour
- 13.16.3
Server behaviourNot applicable - 13.16.4 Security considerations
- 13.16.1 Events
- 13.17 Room Previews
- 13.17.1 Client behaviour
- 13.17.1.1 GET /_matrix/client/r0/events
- 13.17.2
Server behaviourNot applicable - 13.17.3 Security considerations
- 13.17.1 Client behaviour
- 13.18 Room Tagging
- 13.18.1 Events
- 13.18.1.1 m.tag
- 13.18.2 Client Behaviour
- 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}
- 13.18.1 Events
- 13.19 Client Config
- 13.19.1 Events
- 13.19.2 Client Behaviour
- 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}
- 13.19.3
Server behaviourNot applicable
- 13.20 Server Administration
- 13.20.1 Client Behaviour
- 13.20.1.1 GET /_matrix/client/r0/admin/whois/{userId}
- 13.20.1 Client Behaviour
- 13.21 Event Context
- 13.21.1 Client behaviour
- 13.21.1.1 GET /_matrix/client/r0/rooms/{roomId}/context/{eventId}
- 13.21.2 Security considerations
- 13.21.1 Client behaviour
- 13.22 SSO client login
- 13.22.1 Client behaviour
- 13.22.1.1 GET /_matrix/client/r0/login/sso/redirect
- 13.22.2
Server behaviourNot applicable- 13.22.2.1
Handling the redirect endpointNot applicable - 13.22.2.2
Handling the authentication endpointNot applicable
- 13.22.2.1
- 13.22.1 Client behaviour
- 13.23 Direct Messaging
- 13.23.1 Events
- 13.23.1.1 m.direct
- 13.23.2 Client behaviour
- 13.23.3
Server behaviourNot applicable
- 13.23.1 Events
- 13.24 Ignoring Users
- 13.24.1 Events
- 13.24.1.1 m.ignored_user_list
- 13.24.2 Client behaviour
- 13.24.3
Server behaviourNot applicable
- 13.24.1 Events
- 13.25 Sticker Messages
- 13.25.1 Events
- 13.25.1.1 m.sticker
- 13.25.2 Client behaviour
- 13.25.1 Events
- 13.26 Reporting Content
- 13.26.1 Client behaviour
- 13.26.1.1 POST /_matrix/client/r0/rooms/{roomId}/report/{eventId}
- 13.26.2
Server behaviourNot applicable
- 13.26.1 Client behaviour
- 13.27 Third Party Networks
- 13.27.1 Third Party Lookups
- 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.27.1 Third Party Lookups
- 13.28 OpenID
- 13.28.1 POST /_matrix/client/r0/user/{userId}/openid/request_token
- 13.29 Server Access Control Lists (ACLs) for rooms
- 13.29.1 m.room.server_acl
- 13.29.2 Client behaviour
- 13.29.3
Server behaviourNot applicable - 13.29.4 Security considerations
- 13.30 User, room, and group mentions
- 13.30.1 Client behaviour
- 13.31 Room Upgrades
- 13.31.1 Events
- 13.31.1.1 m.room.tombstone
- 13.31.2 Client behaviour
- 13.31.2.1 POST /_matrix/client/r0/rooms/{roomId}/upgrade
13.31.3 Server behaviourNot applicable
- 13.31.1 Events
- 13.32 Server Notices
- 13.32.1 Events
- 13.32.1.1 m.room.message (m.server_notice)
- 13.32.2 Client behaviour
13.32.3 Server behaviourNot applicable
- 13.32.1 Events
- 13.1 Feature Profiles