Skip to content

HTTP APIs #1

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}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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