From e333a3ffe6f0ff1c72d5592c34615ec9f189dd66 Mon Sep 17 00:00:00 2001 From: Kierre Date: Sun, 22 Feb 2026 18:02:56 -0500 Subject: [PATCH] fix absence of make_leave I am stupid --- content/server-server-api.md | 2 + data/api/server-server/leaving-v1.yaml | 156 +++++++++++++++++++++++++ 2 files changed, 158 insertions(+) create mode 100644 data/api/server-server/leaving-v1.yaml diff --git a/content/server-server-api.md b/content/server-server-api.md index f6c4b4e7..1ab7e3ba 100644 --- a/content/server-server-api.md +++ b/content/server-server-api.md @@ -977,6 +977,8 @@ and replaces the `event_id` with its own. This is then sent to the resident server via `/send_leave`. The resident server will then send the event to other servers in the room. +{{% http-api spec="server-server" api="leaving-v1" %}} + {{% http-api spec="server-server" api="leaving-v2" %}} ## Third-party invites diff --git a/data/api/server-server/leaving-v1.yaml b/data/api/server-server/leaving-v1.yaml new file mode 100644 index 00000000..339be337 --- /dev/null +++ b/data/api/server-server/leaving-v1.yaml @@ -0,0 +1,156 @@ +# Copyright 2018 New Vector Ltd +# Copyright 2020 The Matrix.org Foundation C.I.C. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +openapi: 3.1.0 +info: + title: Matrix Federation Leave Room API + version: 1.0.0 +paths: + "/make_leave/{roomId}/{userId}": + get: + summary: Get information required to make a leave event for a room + description: |- + Asks the receiving server to return information that the sending + server will need to prepare a leave event to get out of the room. + operationId: makeLeave + security: + - signedRequest: [] + parameters: + - in: path + name: roomId + description: The room ID that is about to be left. + required: true + example: "!abc123:matrix.org" + schema: + type: string + - in: path + name: userId + description: The user ID the leave event will be for. + required: true + example: "@someone:example.org" + schema: + type: string + responses: + "200": + description: |- + A template to be used to call `/send_leave`. Note that + events have a different format depending on the room version - check the + [room version specification](/rooms) for precise event formats. **The response body + here describes the common event fields in more detail and may be missing other + required fields for a PDU.** + content: + application/json: + schema: + type: object + properties: + room_version: + type: string + description: |- + The version of the room where the server is trying to leave. If not provided, + the room version is assumed to be either "1" or "2". + example: "2" + event: + description: |- + An unsigned template event. Note that events have a different format + depending on the room version - check the [room version specification](/rooms) + for precise event formats. + type: object + title: Event Template + properties: + sender: + type: string + description: The user ID of the leaving member. + example: "@someone:example.org" + origin: + type: string + description: The name of the resident homeserver. + example: matrix.org + origin_server_ts: + type: integer + format: int64 + description: A timestamp added by the resident homeserver. + example: 1234567890 + type: + type: string + description: The value `m.room.member`. + example: m.room.member + state_key: + type: string + description: The user ID of the leaving member. + example: "@someone:example.org" + content: + type: object + title: Membership Event Content + description: The content of the event. + example: + membership: leave + properties: + membership: + type: string + description: The value `leave`. + example: leave + required: + - membership + required: + - state_key + - sender + - origin + - origin_server_ts + - type + - content + examples: + response: + value: { + "room_version": "2", + "event": { + "room_id": "!somewhere:example.org", + "type": "m.room.member", + "state_key": "@someone:example.org", + "origin": "example.org", + "origin_server_ts": 1549041175876, + "sender": "@someone:example.org", + "content": { + "membership": "leave" + } + } + } + "403": + description: The request is not authorized. This could mean that the user is not + in the room. + content: + application/json: + schema: + $ref: ../client-server/definitions/errors/error.yaml + examples: + response: + value: { + "errcode": "M_FORBIDDEN", + "error": "User is not in the room." + } +servers: + - url: "{protocol}://{hostname}{basePath}" + variables: + protocol: + enum: + - http + - https + default: https + hostname: + default: localhost:8448 + basePath: + default: /_matrix/federation/v1 +components: + securitySchemes: + signedRequest: + $ref: definitions/security.yaml#/signedRequest \ No newline at end of file