# Register endpoints implemented GET /register yields a set of flows POST /register can create a user POST /register downcases capitals in usernames POST /register rejects registration of usernames with '!' POST /register rejects registration of usernames with '"' POST /register rejects registration of usernames with ':' POST /register rejects registration of usernames with '?' POST /register rejects registration of usernames with '\' POST /register rejects registration of usernames with '@' POST /register rejects registration of usernames with '[' POST /register rejects registration of usernames with ']' POST /register rejects registration of usernames with '{' POST /register rejects registration of usernames with '|' POST /register rejects registration of usernames with '}' POST /register rejects registration of usernames with '£' POST /register rejects registration of usernames with 'é' POST /register rejects registration of usernames with '\n' POST /register rejects registration of usernames with ''' # Login endpoints implemented GET /login yields a set of flows POST /login can log in as a user POST /login returns the same device_id as that in the request POST /login can log in as a user with just the local part of the id POST /login as non-existing user is rejected POST /login wrong password is rejected # Room creation endpoints implemented POST /createRoom makes a public room POST /createRoom makes a private room POST /createRoom makes a private room with invites POST /createRoom makes a room with a name POST /createRoom makes a room with a topic Can /sync newly created room GET /rooms/:room_id/state/m.room.member/:user_id fetches my membership GET /rooms/:room_id/state/m.room.power_levels fetches powerlevels POST /join/:room_alias can join a room POST /join/:room_id can join a room POST /join/:room_id can join a room with custom content POST /join/:room_alias can join a room with custom content POST /rooms/:room_id/join can join a room POST /rooms/:room_id/leave can leave a room POST /rooms/:room_id/invite can send an invite POST /rooms/:room_id/ban can ban a user POST /rooms/:room_id/send/:event_type sends a message PUT /rooms/:room_id/send/:event_type/:txn_id sends a message PUT /rooms/:room_id/send/:event_type/:txn_id deduplicates the same txn id GET /rooms/:room_id/state/m.room.power_levels can fetch levels PUT /rooms/:room_id/state/m.room.power_levels can set levels PUT power_levels should not explode if the old power levels were empty Both GET and PUT work POST /rooms/:room_id/read_markers can create read marker User signups are forbidden from starting with '_' Request to logout with invalid an access token is rejected Request to logout without an access token is rejected Room creation reports m.room.create to myself Room creation reports m.room.member to myself Version responds 200 OK with valid structure PUT /profile/:user_id/displayname sets my name GET /profile/:user_id/displayname publicly accessible GET /device/{deviceId} gives a 404 for unknown devices PUT /device/{deviceId} gives a 404 for unknown devices After deactivating account, can't log in with an email Can create filter Should reject keys claiming to belong to a different user Can add account data Checking local federation server Alternative server names do not cause a routing loop Can read configuration endpoint AS cannot create users outside its own namespace Changing the actions of an unknown default rule fails with 404 Changing the actions of an unknown rule fails with 404 Trying to add push rule with invalid scope fails with 400 Trying to add push rule with invalid template fails with 400 Trying to add push rule with rule_id with slashes fails with 400 Trying to add push rule with override rule without conditions fails with 400 Trying to add push rule with underride rule without conditions fails with 400 Trying to add push rule with condition without kind fails with 400 Trying to add push rule with content rule without pattern fails with 400 Trying to add push rule with no actions fails with 400 Trying to add push rule with invalid action fails with 400 Trying to get push rules with unknown rule_id fails with 404 GET /events with non-numeric 'limit' GET /events with negative 'limit' GET /events with non-numeric 'timeout' Getting push rules doesn't corrupt the cache SYN-390