Skip to content

HTTP APIs #3

@xmclark

Description

@xmclark

The Matrix client-server spec describes http endpoints. Let's implement some of those endpoints.

Below is a large list of endpoints for the homeserver. It is not the complete API, but it is a large piece of it. We can follow up with additional features in another epic. We may also choose to exclude some APIs to reduce scope.

We will need to get really familiar with this spec:
https://matrix.org/docs/spec/client_server/r0.4.0.html

Each endpoint should require at least one PR.

Service Discovery
Well-known URI

  • GET /.well-known/matrix/client

Authentication
Login

  • GET /_matrix/client/r0/login
  • POST /_matrix/client/r0/login
  • POST /_matrix/client/r0/logout
  • POST /_matrix/client/r0/logout/all

Account registration and management

  • POST /_matrix/client/r0/register
  • POST /_matrix/client/r0/register/email/requestToken
  • POST /_matrix/client/r0/register/msisdn/requestToken
  • POST /_matrix/client/r0/account/password
  • POST /_matrix/client/r0/account/password/email/requestToken
  • POST /_matrix/client/r0/account/password/msisdn/requestToken
  • POST /_matrix/client/r0/account/deactivate
  • GET /_matrix/client/r0/register/available

Adding Account Administrative Contact Information

  • GET /_matrix/client/r0/account/3pid
  • POST /_matrix/client/r0/account/3pid
  • POST /_matrix/client/r0/account/3pid/delete
  • POST /_matrix/client/r0/account/3pid/email/requestToken
  • POST /_matrix/client/r0/account/3pid/msisdn/requestToken

Current account information

  • GET /_matrix/client/r0/account/whoami

Events

Syncing

  • GET /_matrix/client/r0/sync
  • GET /_matrix/client/r0/events
  • GET /_matrix/client/r0/initialSync
  • GET /_matrix/client/r0/events/{eventId}

Getting events for a room

  • GET /_matrix/client/r0/rooms/{roomId}/event/{eventId}
  • GET /_matrix/client/r0/rooms/{roomId}/state/{eventType}/{stateKey}
  • GET /_matrix/client/r0/rooms/{roomId}/state/{eventType}
  • GET /_matrix/client/r0/rooms/{roomId}/state
  • GET /_matrix/client/r0/rooms/{roomId}/members
  • GET /_matrix/client/r0/rooms/{roomId}/joined_members
  • GET /_matrix/client/r0/rooms/{roomId}/messages
  • GET /_matrix/client/r0/rooms/{roomId}/initialSync

Sending events to a room

  • PUT /_matrix/client/r0/rooms/{roomId}/state/{eventType}/{stateKey}
  • PUT /_matrix/client/r0/rooms/{roomId}/state/{eventType}
  • PUT /_matrix/client/r0/rooms/{roomId}/send/{eventType}/{txnId}

Redactions Events

  • PUT /_matrix/client/r0/rooms/{roomId}/redact/{eventId}/{txnId}

Rooms

Creation

  • POST /_matrix/client/r0/createRoom

Room aliases

  • PUT /_matrix/client/r0/directory/room/{roomAlias}
  • GET /_matrix/client/r0/directory/room/{roomAlias}
  • DELETE /_matrix/client/r0/directory/room/{roomAlias}

Permissions/Room membership

  • GET /_matrix/client/r0/joined_rooms

Joining rooms

  • POST /_matrix/client/r0/rooms/{roomId}/invite
  • POST /_matrix/client/r0/rooms/{roomId}/join
  • POST /_matrix/client/r0/join/{roomIdOrAlias}

Leaving rooms

  • POST /_matrix/client/r0/rooms/{roomId}/leave
  • POST /_matrix/client/r0/rooms/{roomId}/forget
  • POST /_matrix/client/r0/rooms/{roomId}/kick

Banning users in a room

  • POST /_matrix/client/r0/rooms/{roomId}/ban
  • POST /_matrix/client/r0/rooms/{roomId}/unban

Listing rooms

  • GET /_matrix/client/r0/directory/list/room/{roomId}
  • PUT /_matrix/client/r0/directory/list/room/{roomId}
  • GET /_matrix/client/r0/publicRooms
  • POST /_matrix/client/r0/publicRooms

User Data

User Directory

  • POST /_matrix/client/r0/user_directory/search

Profiles

  • PUT /_matrix/client/r0/profile/{userId}/displayname
  • GET /_matrix/client/r0/profile/{userId}/displayname
  • PUT /_matrix/client/r0/profile/{userId}/avatar_url
  • GET /_matrix/client/r0/profile/{userId}/avatar_url
  • GET /_matrix/client/r0/profile/{userId}

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions