diff --git a/README.md b/README.md
index 66c74a69d..a426e9125 100644
--- a/README.md
+++ b/README.md
@@ -106,7 +106,7 @@ problems.
 
 #### Roadmap for service
 
-- [x] **Phase One**: Matrix clients using HTTPS.
+- [x] **Phase One**: Matrix clients using HTTPS. [Implementation Status](STATUS.md)
 - [ ] **Phase Two**: Legacy IRC network TS6 protocol.
 - [ ] **Phase Three**: Legacy IRC clients using RFC1459 / RFC2812 legacy grammars.
 
diff --git a/STATUS.md b/STATUS.md
new file mode 100644
index 000000000..f25d41dd1
--- /dev/null
+++ b/STATUS.md
@@ -0,0 +1,1185 @@
+# Construct Status
+
+The following chart shows the status of support for the endpoints in the [client-server API specification](https://matrix.org/docs/spec/client_server/latest.html).
+
+Legend:
+
+:heavy_check_mark: Supported :construction: Partially supported :no_entry_sign: Not supported
+
+<table>
+  <tr>
+    <th>Status</th>
+    <th>Issue</th>
+    <th>API endpoint</th>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>DELETE /_matrix/client/r0/devices/{deviceId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>DELETE /_matrix/client/r0/directory/room/{roomAlias}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>DELETE /_matrix/client/r0/pushrules/{scope}/{kind}/{ruleId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>DELETE /_matrix/client/r0/user/{userId}/rooms/{roomId}/tags/{tag}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /account_data</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /openid/userinfo</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /.well-known/matrix/client</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/account/3pid</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/account/whoami</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/admin/whois/{userId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/capabilities</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/devices</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/devices/{deviceId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/directory/list/room/{roomId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/directory/room/{roomAlias}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/events</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/events/{eventId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/initialSync</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/joined_rooms</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/keys/changes</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/login</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/login/sso/redirect</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/notifications</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/presence/{userId}/status</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/profile/{userId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/profile/{userId}/avatar_url</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/profile/{userId}/displayname</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/publicRooms</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/pushers</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/pushrules/</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/pushrules/{scope}/{kind}/{ruleId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/pushrules/{scope}/{kind}/{ruleId}/actions</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/pushrules/{scope}/{kind}/{ruleId}/enabled</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/register/available</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/rooms/{roomId}/context/{eventId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/rooms/{roomId}/event/{eventId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/rooms/{roomId}/initialSync</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/rooms/{roomId}/joined_members</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/rooms/{roomId}/members</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/rooms/{roomId}/messages</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/rooms/{roomId}/state</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/rooms/{roomId}/state/{eventType}/{stateKey}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/sync</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/thirdparty/location</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/thirdparty/location/{protocol}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/thirdparty/protocols</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/thirdparty/protocol/{protocol}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/thirdparty/user</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/thirdparty/user/{protocol}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/user/{userId}/account_data/{type}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/user/{userId}/filter/{filterId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/user/{userId}/rooms/{roomId}/account_data/{type}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/user/{userId}/rooms/{roomId}/tags</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/r0/voip/turnServer</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/client/versions</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/media/r0/config</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/media/r0/download/{serverName}/{mediaId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/media/r0/download/{serverName}/{mediaId}/{fileName}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/media/r0/preview_url</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>GET /_matrix/media/r0/thumbnail/{serverName}/{mediaId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /validate/email/submitToken</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/account/3pid</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/account/3pid/delete</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/account/3pid/email/requestToken</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/account/3pid/msisdn/requestToken</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/account/deactivate</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/account/password</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/account/password/email/requestToken</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/account/password/msisdn/requestToken</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/createRoom</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/delete_devices</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/join/{roomIdOrAlias}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/keys/claim</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/keys/query</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/keys/upload</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/login</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/logout</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/logout/all</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/publicRooms</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/pushers/set</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/register</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/register/email/requestToken</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/register/msisdn/requestToken</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/rooms/{roomId}/ban</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/rooms/{roomId}/forget</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/rooms/{roomId}/invite</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/rooms/{roomId}/join</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/rooms/{roomId}/kick</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/rooms/{roomId}/leave</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/rooms/{roomId}/read_markers</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/rooms/{roomId}/receipt/{receiptType}/{eventId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/rooms/{roomId}/report/{eventId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/rooms/{roomId}/unban</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/rooms/{roomId}/upgrade</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/search</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/user/{userId}/filter</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/user/{userId}/openid/request_token</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/client/r0/user_directory/search</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>POST /_matrix/media/r0/upload</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>PUT /_matrix/client/r0/devices/{deviceId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>PUT /_matrix/client/r0/directory/list/room/{roomId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>PUT /_matrix/client/r0/directory/room/{roomAlias}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>PUT /_matrix/client/r0/presence/{userId}/status</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>PUT /_matrix/client/r0/profile/{userId}/avatar_url</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>PUT /_matrix/client/r0/profile/{userId}/displayname</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>PUT /_matrix/client/r0/pushrules/{scope}/{kind}/{ruleId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>PUT /_matrix/client/r0/pushrules/{scope}/{kind}/{ruleId}/actions</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>PUT /_matrix/client/r0/pushrules/{scope}/{kind}/{ruleId}/enabled</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>PUT /_matrix/client/r0/rooms/{roomId}/redact/{eventId}/{txnId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>PUT /_matrix/client/r0/rooms/{roomId}/send/{eventType}/{txnId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>PUT /_matrix/client/r0/rooms/{roomId}/state/{eventType}/{stateKey}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>PUT /_matrix/client/r0/rooms/{roomId}/typing/{userId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>PUT /_matrix/client/r0/sendToDevice/{eventType}/{txnId}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>PUT /_matrix/client/r0/user/{userId}/account_data/{type}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>PUT /_matrix/client/r0/user/{userId}/rooms/{roomId}/account_data/{type}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>PUT /_matrix/client/r0/user/{userId}/rooms/{roomId}/tags/{tag}</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>.m.rule.call</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>.m.rule.encrypted</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>.m.rule.master</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>.m.rule.message</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>.m.rule.roomnotif</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>.m.rule.tombstone</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>.m.rule.contains_display_name</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>.m.rule.contains_user_name</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>.m.rule.encrypted_room_one_to_one</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>.m.rule.invite_for_me</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>.m.rule.member_event</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>.m.rule.room_one_to_one</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>.m.rule.suppress_notices</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.accepted</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.audio</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.call.answer</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.call.candidates</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.call.hangup</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.call.invite</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.direct</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.dummy</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.emote</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.favourite</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.federate</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.file</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.heroes</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.homeserver</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.id.phone</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.id.thirdparty</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.id.user</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.image</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.key.verfication.cancel</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.key.verification</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.key.verification.accept</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.key.verification.cancel</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.key.verification.key</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.key.verification.mac</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.key.verification.request</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.key.verification.start</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.location</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.login.cas</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.login.dummy</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.login.email.identity</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.login.msisdn</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.login.oauth2</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.login.password</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.login.recaptcha</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.login.sso</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.login.token</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.lowpriority</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.message</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.notice</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.olm.v1</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.presence</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.read</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.receipt</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.alias</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.aliases</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.avatar</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.create</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.encrypted</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.encryption</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.member</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.message</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.message.feedback</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.name</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.redaction</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.tombstone</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.topic</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.sas.v1</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.sticker</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.tag</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.text</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.timeout</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.typing</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.user</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.video</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.change_password</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.forwarded_room_key</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.fully_read</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.identity_server</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.ignored_user_list</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.invalid_message</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.in_reply_to</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.joined_member_count + m.invited_member_count</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.joined_member_count + m.invited_member_count - 1</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.key_mismatch</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.login.recaptcha, m.login.dummy</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.login.recaptcha, m.login.email.identity</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.megolm.v1.aes-sha2</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.mismatched_commitment</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.mismatched_sas</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.olm.v1.curve25519-aes-sha2</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.olm.v1.ecdh-curve25519-hdkfsha256.hmacsha256.hkdfsha256-aes256-cbc-hmac64sha256</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.push_rules</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.relates_to</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.canonical_alias</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.guest_access</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.history_visibility</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.join_rules</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.member_event</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.message (m.server_notice)</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.pinned_events</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.power_levels</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.server_acl</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room.third_party_invite</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room_key</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room_key_request</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.room_versions</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.server_notice</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.server_notice.usage_limit_reached</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.third_party_invite</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.unexpected_message</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.unknown_method</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.unknown_transaction</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.user_mismatch</td>
+  </tr>
+  <tr>
+    <td></td>
+    <td></td>
+    <td>m.*</td>
+  </tr>
+</table>