# Matrix Matrix Prototype in Go to test the energy efficiency # API ## Begriffserklärung Persisted Data Unit (PDU): Are transmitted between homerservers of one room. Part of the history (persisted). reply needed. (mostly events) Ephemeral Data Unit (EDU): Are transmitted between 2 homeservers. Not part of the history (not persisted). No reply needed. (for example user presence, typing notification, etc.) Transaction: Collection of up to 50 PDUs and 100 EDUs Query: HTTP GET Request. Not persisted ## Client-Server ### Users Check Username Availability: GET /_matrix/client/r0/register/available Register: POST /_matrix/client/r0/register Login: POST /_matrix/client/r0/login Logout: POST /_matrix/client/r0/logout Deactivate: POST /_matrix/client/r0/account/deactivate Change Password: POST /_matrix/client/r0/account/password Sync (After Login): GET /_matrix/client/r0/sync ### Rooms Create Room: POST /_matrix/client/r0/createRoom Get Room Members: GET /_matrix/client/r0/rooms/{roomId}/members / GET /_matrix/client/r0/rooms/{roomId}/joined_members Join Room: POST /_matrix/client/r0/rooms/{roomId}/join Leave Room: POST /_matrix/client/r0/rooms/{roomId}/leave ### Events Create Event: PUT /_matrix/client/r0/rooms/{roomId}/send/{eventType}/{txnId} Create State Event: PUT /_matrix/client/r0/rooms/{roomId}/state/{eventType}/{stateKey} Change Event: PUT /_matrix/client/r0/rooms/{roomId}/redact/{eventId}/{txnId} Get Events: GET /_matrix/client/r0/rooms/{roomId}/messages Get State Events: GET /_matrix/client/r0/rooms/{roomId}/state Get Event: GET /_matrix/client/r0/rooms/{roomId}/event/{eventId} Get State Event: GET /_matrix/client/r0/rooms/{roomId}/state/{eventType}/{stateKey} ## Server-Server ### General Resolve Server Name: GET /.well-known/matrix/server Get Server Implementation: GET /_matrix/federation/v1/version ### Keys Get Signing Key: GET /_matrix/key/v2/server/{keyId} Get Signing Key from another Server: GET /_matrix/key/v2/query/{serverName}/{keyId} Get Signing Keys from multiple Servers: POST /_matrix/key/v2/query ### Rooms Get Prep Information for Join: GET /_matrix/federation/v1/make_join/{roomId}/{userId} Join Room: PUT /_matrix/federation/v2/send_join/{roomId}/{eventId} Get Prep Information for Leave: GET /_matrix/federation/v1/make_leave/{roomId}/{userId} Leave Room: PUT /_matrix/federation/v2/send_leave/{roomId}/{eventId} ### Events Get State: GET /_matrix/federation/v1/state/{roomId} / GET /_matrix/federation/v1/state_ids/{roomId} Get Event: GET /_matrix/federation/v1/event/{eventId} Sync Events (trough transactions with multiple events): PUT /_matrix/federation/v1/send/{txnId} Backfill: GET /_matrix/federation/v1/backfill/{roomId} / POST /_matrix/federation/v1/get_missing_events/{roomId}