Skip to content

HTTP APIs #1

@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.

Version
Version

  • GET /_matrix/client/versions

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

Assignees

No one assigned

    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