From d53943c8c2aa266d894d7fa0b5a2a3a8545f5c25 Mon Sep 17 00:00:00 2001 From: Daniel Wagner-Hall Date: Tue, 8 Sep 2015 16:35:08 +0100 Subject: [PATCH] Spec /room/{roomId}/join This is just replacing the existing spec with a swagger version. Subsequent pull requests will add 3pid join to this, as well as specing the invite, leave, ban, and kick endpoints. --- api/client-server/v1/membership.yaml | 68 +++++++++++++++++++++++++ specification/10_client_server_api.rst | 38 +------------- templating/matrix_templates/sections.py | 6 +++ 3 files changed, 75 insertions(+), 37 deletions(-) create mode 100644 api/client-server/v1/membership.yaml diff --git a/api/client-server/v1/membership.yaml b/api/client-server/v1/membership.yaml new file mode 100644 index 00000000..24f3835d --- /dev/null +++ b/api/client-server/v1/membership.yaml @@ -0,0 +1,68 @@ +swagger: '2.0' +info: + title: "Matrix Client-Server v1 Room Membership API" + version: "1.0.0" +host: localhost:8008 +schemes: + - https + - http +basePath: /_matrix/client/api/v1 +consumes: + - application/json +produces: + - application/json +securityDefinitions: + accessToken: + type: apiKey + description: The user_id or application service access_token + name: access_token + in: query +paths: + "/room/{roomId}/join": + post: + summary: Start the requesting user participating in a particular room. + description: |- + This API starts a user participating in a particular room, if that user + is allowed to participate in that room. After this call, the client is + allowed to see all current state events in the room, and all subsequent + events associated with the room until the user leaves the room. + security: + - accessToken: [] + parameters: + - in: path + type: string + name: roomId + description: The room identifier or room alias to join. + required: true + x-example: "#monkeys:matrix.org" + responses: + 200: + description: |- + The room has been joined. + + If the room was joined with an room alias, rather than a room ID, + the room ID must be returned in the room_id field. + + If the room was joined with a room ID, the room_id field must not be + present. + examples: + application/json: |- + {"room_id": "!primates:matrix.org"} + schema: + type: object # empty json object + 403: + description: |- + You do not have permission to join the room. A meaningful errcode and description error text will be returned. Example reasons for rejection are: + - The room is invite-only and the user was not invited. + - The user has been banned from the room. + examples: + application/json: |- + {"errcode": "M_FORBIDDEN", "error": "You are not invited to this room."} + 429: + description: This request was rate-limited. + schema: + "$ref": "definitions/error.yaml" + "/join/{roomId}": + post: + x-alias-for-path: "/room/{roomId}/join" + x-alias-link: "post-matrix-client-api-v1-room-roomid-join" diff --git a/specification/10_client_server_api.rst b/specification/10_client_server_api.rst index 83c8b7a8..d0942ad6 100644 --- a/specification/10_client_server_api.rst +++ b/specification/10_client_server_api.rst @@ -880,43 +880,7 @@ certain operations such as kicking, banning and sending state events. See `m.room.power_levels`_ for more information. -Joining rooms -~~~~~~~~~~~~~ -.. TODO-doc What does the home server have to do to join a user to a room? - - See SPEC-30. - -Users need to join a room in order to send and receive events in that room. A -user can join a room by making a request to |/join/|_ with:: - - {} - -Alternatively, a user can make a request to |/rooms//join|_ with the -same request content. This is only provided for symmetry with the other -membership APIs: ``/rooms//invite`` and ``/rooms//leave``. If -a room alias was specified, it will be automatically resolved to a room ID, -which will then be joined. The room ID that was joined will be returned in -response:: - - { - "room_id": "!roomid:domain" - } - -The membership state for the joining user can also be modified directly to be -``join`` by sending the following request to -``/rooms//state/m.room.member/``:: - - { - "membership": "join" - } - -See the `Room events`_ section for more information on ``m.room.member``. - -After the user has joined a room, they will receive subsequent events in that -room. This room will now appear as an entry in the |initialSync|_ API. - -Some rooms enforce that a user is *invited* to a room before they can join that -room. Other rooms will allow anyone to join the room even if they have not -received an invite. +{{membership_http_api}} Inviting users ~~~~~~~~~~~~~~ diff --git a/templating/matrix_templates/sections.py b/templating/matrix_templates/sections.py index 7bc25095..7e21434f 100644 --- a/templating/matrix_templates/sections.py +++ b/templating/matrix_templates/sections.py @@ -90,6 +90,12 @@ class MatrixSections(Sections): title_kind="~" ) + def render_membership_http_api(self): + return self._render_http_api_group( + "membership", + title_kind="~" + ) + def render_room_events(self): def filterFn(eventType): return (