mirror of
https://github.com/matrix-org/matrix-spec
synced 2026-04-25 12:04:09 +02:00
Compare commits
7 commits
d6c115aba3
...
b6eaf7e4f2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b6eaf7e4f2 | ||
|
|
2c734c3c5b | ||
|
|
075d203ecd | ||
|
|
7b3083885b | ||
|
|
a96aeb5882 | ||
|
|
54842585db | ||
|
|
cbcbde8f3c |
|
|
@ -0,0 +1 @@
|
||||||
|
Rooms published in `/publicRooms` don't necessarily have `public` join rules or `world_readable` history visibility.
|
||||||
1
changelogs/client_server/newsfragments/2125.feature
Normal file
1
changelogs/client_server/newsfragments/2125.feature
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Add `/_matrix/client/v1/room_summary/{roomIdOrAlias}` and extend `/_matrix/client/v1/rooms/{roomId}/hierarchy` with the new optional properties `allowed_room_ids`, `encryption` and `room_version` as per [MSC3266](https://github.com/matrix-org/matrix-spec-proposals/pull/3266).
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Fix typo: as->has.
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Rooms published in `/publicRooms` don't necessarily have `public` join rules or `world_readable` history visibility.
|
||||||
1
changelogs/server_server/newsfragments/2125.feature
Normal file
1
changelogs/server_server/newsfragments/2125.feature
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Extend `/_matrix/federation/v1/hierarchy/{roomId}` with the new optional properties `encryption` and `room_version` as per [MSC3266](https://github.com/matrix-org/matrix-spec-proposals/pull/3266).
|
||||||
|
|
@ -492,10 +492,10 @@ via the query string). It is expected that the application service use
|
||||||
the transactions pushed to it to handle events rather than syncing with
|
the transactions pushed to it to handle events rather than syncing with
|
||||||
the user implied by `sender_localpart`.
|
the user implied by `sender_localpart`.
|
||||||
|
|
||||||
#### Application service room directories
|
#### Published room directories
|
||||||
|
|
||||||
Application services can maintain their own room directories for their
|
Application services can maintain their own published room directories for
|
||||||
defined third-party protocols. These room directories may be accessed by
|
their defined third-party protocols. These directories may be accessed by
|
||||||
clients through additional parameters on the `/publicRooms`
|
clients through additional parameters on the `/publicRooms`
|
||||||
client-server endpoint.
|
client-server endpoint.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2846,10 +2846,42 @@ re-invited.
|
||||||
|
|
||||||
{{% http-api spec="client-server" api="banning" %}}
|
{{% http-api spec="client-server" api="banning" %}}
|
||||||
|
|
||||||
### Listing rooms
|
### Published room directory
|
||||||
|
|
||||||
|
Homeservers MAY publish a room directory to allow users to discover rooms. A room
|
||||||
|
can have one of two visibility settings in the directory:
|
||||||
|
|
||||||
|
- `public`: The room will be shown in the published room directory.
|
||||||
|
- `private`: The room will be hidden from the published room directory.
|
||||||
|
|
||||||
|
Clients can define a room's initial visibility in the directory via the `visibility`
|
||||||
|
parameter in [`/createRoom`](#post_matrixclientv3createroom). Irrespective of room
|
||||||
|
creation, clients can query and change a room's visibility in the directory through
|
||||||
|
the endpoints listed below, provided that the server permits this.
|
||||||
|
|
||||||
|
{{% boxes/warning %}}
|
||||||
|
The visibility setting merely defines whether a room is included in the published
|
||||||
|
room directory or not. It doesn't make any guarantees about the room's
|
||||||
|
[join rule](#mroomjoin_rules) or [history visibility](#room-history-visibility).
|
||||||
|
|
||||||
|
In particular, a visibility setting of `public` should not be confused with a `public`
|
||||||
|
join rule. Rooms with a join rule of `knock`, for instance, could reasonably be published
|
||||||
|
in the directory, too.
|
||||||
|
|
||||||
|
Similarly, a visibility setting of `public` does not necessarily imply a `world_readable`
|
||||||
|
history visibility.
|
||||||
|
|
||||||
|
To increase performance or by preference, servers MAY apply additional filters when listing the
|
||||||
|
directory, for instance, by automatically excluding rooms with `invite` join rules
|
||||||
|
that are not `world_readable` regardless of their visibility.
|
||||||
|
{{% /boxes/warning %}}
|
||||||
|
|
||||||
{{% http-api spec="client-server" api="list_public_rooms" %}}
|
{{% http-api spec="client-server" api="list_public_rooms" %}}
|
||||||
|
|
||||||
|
### Room Summaries
|
||||||
|
|
||||||
|
{{% http-api spec="client-server" api="room_summary" %}}
|
||||||
|
|
||||||
## User Data
|
## User Data
|
||||||
|
|
||||||
### User Directory
|
### User Directory
|
||||||
|
|
|
||||||
|
|
@ -528,7 +528,7 @@ messages, Alice only sends one request event (an event with type
|
||||||
`m.room.message` with `msgtype: m.key.verification.request`, rather than an
|
`m.room.message` with `msgtype: m.key.verification.request`, rather than an
|
||||||
event with type `m.key.verification.request`), to the room. In addition, Alice
|
event with type `m.key.verification.request`), to the room. In addition, Alice
|
||||||
does not send an `m.key.verification.cancel` event to tell Bob's other devices
|
does not send an `m.key.verification.cancel` event to tell Bob's other devices
|
||||||
that the request as already been accepted; instead, when Bob's other devices
|
that the request has already been accepted; instead, when Bob's other devices
|
||||||
see his `m.key.verification.ready` event, they will know that the request has
|
see his `m.key.verification.ready` event, they will know that the request has
|
||||||
already been accepted, and that they should ignore the request.
|
already been accepted, and that they should ignore the request.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1048,11 +1048,10 @@ user's Matrix ID and the token delivered when the invite was stored,
|
||||||
this verification will prove that the `m.room.member` invite event comes
|
this verification will prove that the `m.room.member` invite event comes
|
||||||
from the user owning the invited third-party identifier.
|
from the user owning the invited third-party identifier.
|
||||||
|
|
||||||
## Public Room Directory
|
## Published Room Directory
|
||||||
|
|
||||||
To complement the [Client-Server
|
To complement the [room directory in the Client-Server API](/client-server-api#published-room-directory),
|
||||||
API](/client-server-api)'s room directory,
|
homeservers need a way to query the published rooms of another server.
|
||||||
homeservers need a way to query the public rooms for another server.
|
|
||||||
This can be done by making a request to the `/publicRooms` endpoint for
|
This can be done by making a request to the `/publicRooms` endpoint for
|
||||||
the server the room directory should be retrieved for.
|
the server the room directory should be retrieved for.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,18 +13,21 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
openapi: 3.1.0
|
openapi: 3.1.0
|
||||||
info:
|
info:
|
||||||
title: Matrix Client-Server Application Service Room Directory API
|
title: Matrix Client-Server Application Service Published Room Directory API
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
paths:
|
paths:
|
||||||
"/directory/list/appservice/{networkId}/{roomId}":
|
"/directory/list/appservice/{networkId}/{roomId}":
|
||||||
put:
|
put:
|
||||||
summary: Updates a room's visibility in the application service's room directory.
|
summary: |-
|
||||||
description: |-
|
Updates a room's visibility in the application service's published room
|
||||||
Updates the visibility of a given room on the application service's room
|
|
||||||
directory.
|
directory.
|
||||||
|
description: |-
|
||||||
|
Updates the visibility of a given room in the application service's
|
||||||
|
published room directory.
|
||||||
|
|
||||||
This API is similar to the room directory visibility API used by clients
|
This API is similar to the
|
||||||
to update the homeserver's more general room directory.
|
[visibility API](/client-server-api#put_matrixclientv3directorylistroomroomid)
|
||||||
|
used by clients to update the homeserver's more general published room directory.
|
||||||
|
|
||||||
This API requires the use of an application service access token (`as_token`)
|
This API requires the use of an application service access token (`as_token`)
|
||||||
instead of a typical client's access_token. This API cannot be invoked by
|
instead of a typical client's access_token. This API cannot be invoked by
|
||||||
|
|
|
||||||
|
|
@ -87,12 +87,9 @@ paths:
|
||||||
- public
|
- public
|
||||||
- private
|
- private
|
||||||
description: |-
|
description: |-
|
||||||
A `public` visibility indicates that the room will be shown
|
The room's visibility in the server's
|
||||||
in the published room list. A `private` visibility will hide
|
[published room directory](/client-server-api#published-room-directory).
|
||||||
the room from the published room list. Rooms default to
|
Defaults to `private`.
|
||||||
`private` visibility if this key is not included. NB: This
|
|
||||||
should not be confused with `join_rules` which also uses the
|
|
||||||
word `public`.
|
|
||||||
room_alias_name:
|
room_alias_name:
|
||||||
type: string
|
type: string
|
||||||
description: |-
|
description: |-
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
type: object
|
type: object
|
||||||
title: "PublicRoomsChunk"
|
title: "PublishedRoomsChunk"
|
||||||
properties:
|
properties:
|
||||||
canonical_alias:
|
canonical_alias:
|
||||||
type: string
|
type: string
|
||||||
|
|
|
||||||
|
|
@ -13,28 +13,15 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
type: object
|
type: object
|
||||||
description: A list of the rooms on the server.
|
description: A list of the published rooms on the server.
|
||||||
required: ["chunk"]
|
required: ["chunk"]
|
||||||
properties:
|
properties:
|
||||||
chunk:
|
chunk:
|
||||||
type: array
|
type: array
|
||||||
description: |-
|
description: |-
|
||||||
A paginated chunk of public rooms.
|
A paginated chunk of published rooms.
|
||||||
items:
|
items:
|
||||||
allOf:
|
$ref: "public_rooms_chunk.yaml"
|
||||||
- $ref: "public_rooms_chunk.yaml"
|
|
||||||
- type: object
|
|
||||||
title: PublicRoomsChunk
|
|
||||||
properties:
|
|
||||||
# Override description of join_rule
|
|
||||||
join_rule:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The room's join rule. When not present, the room is assumed to
|
|
||||||
be `public`. Note that rooms with `invite` join rules are not
|
|
||||||
expected here, but rooms with `knock` rules are given their
|
|
||||||
near-public nature.
|
|
||||||
example: "public"
|
|
||||||
next_batch:
|
next_batch:
|
||||||
type: string
|
type: string
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -50,7 +37,7 @@ properties:
|
||||||
total_room_count_estimate:
|
total_room_count_estimate:
|
||||||
type: integer
|
type: integer
|
||||||
description: |-
|
description: |-
|
||||||
An estimate on the total number of public rooms, if the
|
An estimate on the total number of published rooms, if the
|
||||||
server has an estimate.
|
server has an estimate.
|
||||||
example: {
|
example: {
|
||||||
"chunk": [
|
"chunk": [
|
||||||
|
|
|
||||||
48
data/api/client-server/definitions/room_summary.yaml
Normal file
48
data/api/client-server/definitions/room_summary.yaml
Normal file
|
|
@ -0,0 +1,48 @@
|
||||||
|
# Copyright 2025 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.
|
||||||
|
|
||||||
|
type: object
|
||||||
|
title: RoomSummary
|
||||||
|
allOf:
|
||||||
|
- $ref: public_rooms_chunk.yaml
|
||||||
|
- type: object
|
||||||
|
properties:
|
||||||
|
room_type:
|
||||||
|
type: string
|
||||||
|
description: The `type` of room (from
|
||||||
|
[`m.room.create`](/client-server-api/#mroomcreate)),
|
||||||
|
if any.
|
||||||
|
allowed_room_ids:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
description: |-
|
||||||
|
If the room is a [restricted room](/server-server-api/#restricted-rooms), these are the room IDs which
|
||||||
|
are specified by the join rules. Empty or omitted otherwise.
|
||||||
|
encryption:
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- "m.megolm.v1.aes-sha2"
|
||||||
|
description: |-
|
||||||
|
The encryption algorithm to be used to encrypt messages sent in the
|
||||||
|
room.
|
||||||
|
room_version:
|
||||||
|
description: The version of the room.
|
||||||
|
type: string
|
||||||
|
|
||||||
|
required:
|
||||||
|
- room_id
|
||||||
|
- num_joined_members
|
||||||
|
- world_readable
|
||||||
|
- guest_can_join
|
||||||
|
|
@ -13,14 +13,15 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
openapi: 3.1.0
|
openapi: 3.1.0
|
||||||
info:
|
info:
|
||||||
title: Matrix Client-Server Room Directory API
|
title: Matrix Client-Server Published Room Directory API
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
paths:
|
paths:
|
||||||
"/directory/list/room/{roomId}":
|
"/directory/list/room/{roomId}":
|
||||||
get:
|
get:
|
||||||
summary: Gets the visibility of a room in the directory
|
summary: Gets the visibility of a room in the directory
|
||||||
description: Gets the visibility of a given room on the server's public room
|
description: |-
|
||||||
directory.
|
Gets the visibility of a given room in the server's
|
||||||
|
published room directory.
|
||||||
operationId: getRoomVisibilityOnDirectory
|
operationId: getRoomVisibilityOnDirectory
|
||||||
parameters:
|
parameters:
|
||||||
- in: path
|
- in: path
|
||||||
|
|
@ -32,7 +33,7 @@ paths:
|
||||||
type: string
|
type: string
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: The visibility of the room in the directory
|
description: The visibility of the room in the directory.
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
|
|
@ -50,7 +51,7 @@ paths:
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
"404":
|
"404":
|
||||||
description: The room is not known to the server
|
description: The room is not known to the server.
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
|
|
@ -64,14 +65,13 @@ paths:
|
||||||
tags:
|
tags:
|
||||||
- Room discovery
|
- Room discovery
|
||||||
put:
|
put:
|
||||||
summary: Sets the visibility of a room in the room directory
|
summary: Sets the visibility of a room in the directory
|
||||||
description: |-
|
description: |-
|
||||||
Sets the visibility of a given room in the server's public room
|
Sets the visibility of a given room in the server's published room directory.
|
||||||
directory.
|
|
||||||
|
|
||||||
Servers may choose to implement additional access control checks
|
Servers MAY implement additional access control checks, for instance,
|
||||||
here, for instance that room visibility can only be changed by
|
to ensure that a room's visibility can only be changed by the room creator
|
||||||
the room creator or a server administrator.
|
or a server administrator.
|
||||||
operationId: setRoomVisibilityOnDirectory
|
operationId: setRoomVisibilityOnDirectory
|
||||||
security:
|
security:
|
||||||
- accessTokenQuery: []
|
- accessTokenQuery: []
|
||||||
|
|
@ -97,11 +97,11 @@ paths:
|
||||||
- public
|
- public
|
||||||
description: |-
|
description: |-
|
||||||
The new visibility setting for the room.
|
The new visibility setting for the room.
|
||||||
Defaults to 'public'.
|
Defaults to `public`.
|
||||||
example: {
|
example: {
|
||||||
"visibility": "public"
|
"visibility": "public"
|
||||||
}
|
}
|
||||||
description: The new visibility for the room on the room directory.
|
description: The new visibility for the room in the published room directory.
|
||||||
required: true
|
required: true
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
|
|
@ -114,7 +114,7 @@ paths:
|
||||||
response:
|
response:
|
||||||
value: {}
|
value: {}
|
||||||
"404":
|
"404":
|
||||||
description: The room is not known to the server
|
description: The room is not known to the server.
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
|
|
@ -129,9 +129,9 @@ paths:
|
||||||
- Room discovery
|
- Room discovery
|
||||||
/publicRooms:
|
/publicRooms:
|
||||||
get:
|
get:
|
||||||
summary: Lists the public rooms on the server.
|
summary: Lists a server's published room directory
|
||||||
description: |-
|
description: |-
|
||||||
Lists the public rooms on the server.
|
Lists a server's published room directory.
|
||||||
|
|
||||||
This API returns paginated responses. The rooms are ordered by the number
|
This API returns paginated responses. The rooms are ordered by the number
|
||||||
of joined members, with the largest rooms first.
|
of joined members, with the largest rooms first.
|
||||||
|
|
@ -154,13 +154,13 @@ paths:
|
||||||
- in: query
|
- in: query
|
||||||
name: server
|
name: server
|
||||||
description: |-
|
description: |-
|
||||||
The server to fetch the public room lists from. Defaults to the
|
The server to fetch the published room directory from. Defaults
|
||||||
local server. Case sensitive.
|
to the local server. Case sensitive.
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: A list of the rooms on the server.
|
description: A list of the published rooms on the server.
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
|
|
@ -168,9 +168,9 @@ paths:
|
||||||
tags:
|
tags:
|
||||||
- Room discovery
|
- Room discovery
|
||||||
post:
|
post:
|
||||||
summary: Lists the public rooms on the server with optional filter.
|
summary: Lists a server's published room directory with an optional filter
|
||||||
description: |-
|
description: |-
|
||||||
Lists the public rooms on the server, with optional filter.
|
Lists a server's published room directory with an optional filter.
|
||||||
|
|
||||||
This API returns paginated responses. The rooms are ordered by the number
|
This API returns paginated responses. The rooms are ordered by the number
|
||||||
of joined members, with the largest rooms first.
|
of joined members, with the largest rooms first.
|
||||||
|
|
@ -182,8 +182,8 @@ paths:
|
||||||
- in: query
|
- in: query
|
||||||
name: server
|
name: server
|
||||||
description: |-
|
description: |-
|
||||||
The server to fetch the public room lists from. Defaults to the
|
The server to fetch the published room directory from. Defaults
|
||||||
local server. Case sensitive.
|
to the local server. Case sensitive.
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
requestBody:
|
requestBody:
|
||||||
|
|
@ -253,7 +253,7 @@ paths:
|
||||||
required: true
|
required: true
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: A list of the rooms on the server.
|
description: A filtered list of the published rooms on the server.
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
|
|
|
||||||
138
data/api/client-server/room_summary.yaml
Normal file
138
data/api/client-server/room_summary.yaml
Normal file
|
|
@ -0,0 +1,138 @@
|
||||||
|
# Copyright 2025 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 Client-Server Room Summary API
|
||||||
|
version: 1.0.0
|
||||||
|
paths:
|
||||||
|
"/room_summary/{roomIdOrAlias}":
|
||||||
|
get:
|
||||||
|
x-addedInMatrixVersion: "1.15"
|
||||||
|
summary: Retrieves a summary for a room.
|
||||||
|
description: |-
|
||||||
|
Retrieves a summary for a room.
|
||||||
|
|
||||||
|
Clients should note that requests for rooms where the user's membership
|
||||||
|
is `invite` or `knock` might yield outdated, partial or even no data
|
||||||
|
since the server may not have access to the current state of the room.
|
||||||
|
|
||||||
|
Servers MAY allow unauthenticated access to this API if at least one of
|
||||||
|
the following conditions holds true:
|
||||||
|
|
||||||
|
- The room has a [join rule](#mroomjoin_rules) of `public`, `knock` or
|
||||||
|
`knock_restricted`.
|
||||||
|
- The room has a `world_readable` [history visibility](#room-history-visibility).
|
||||||
|
|
||||||
|
Servers should consider rate limiting federation requests more heavily,
|
||||||
|
if the client is unauthenticated.
|
||||||
|
operationId: getRoomSummary
|
||||||
|
security:
|
||||||
|
- signedRequest: []
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: roomIdOrAlias
|
||||||
|
description: The room identifier or alias to summarise.
|
||||||
|
required: true
|
||||||
|
example: "#monkeys:matrix.org"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- in: query
|
||||||
|
name: via
|
||||||
|
description: |-
|
||||||
|
The servers to attempt to request the summary from when
|
||||||
|
the local server cannot generate it (for instance, because
|
||||||
|
it has no local user in the room).
|
||||||
|
example:
|
||||||
|
- matrix.org
|
||||||
|
- elsewhere.ca
|
||||||
|
schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: A summary of the room.
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
description: A summary of the room.
|
||||||
|
allOf:
|
||||||
|
- $ref: ../client-server/definitions/room_summary.yaml
|
||||||
|
- type: object
|
||||||
|
properties:
|
||||||
|
room_type:
|
||||||
|
x-addedInMatrixVersion: # Overrides room_summary.yaml
|
||||||
|
membership:
|
||||||
|
description: |-
|
||||||
|
The membership state of the user if the user is joined to the room. Absent
|
||||||
|
if the API was called unauthenticated.
|
||||||
|
enum:
|
||||||
|
- invite
|
||||||
|
- join
|
||||||
|
- knock
|
||||||
|
- leave
|
||||||
|
- ban
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- guest_can_join
|
||||||
|
- num_joined_members
|
||||||
|
- room_id
|
||||||
|
- world_readable
|
||||||
|
examples:
|
||||||
|
response:
|
||||||
|
value: {
|
||||||
|
room_id: "!ol19s:bleecker.street",
|
||||||
|
avatar_url: "mxc://bleecker.street/CHEDDARandBRIE",
|
||||||
|
guest_can_join: false,
|
||||||
|
name: "CHEESE",
|
||||||
|
num_joined_members: 37,
|
||||||
|
topic: "Tasty tasty cheese",
|
||||||
|
world_readable: true,
|
||||||
|
join_rule: "public",
|
||||||
|
room_type: "m.space",
|
||||||
|
membership: "invite",
|
||||||
|
encryption: "m.megolm.v1.aes-sha2",
|
||||||
|
room_version: "9001",
|
||||||
|
}
|
||||||
|
"404":
|
||||||
|
description: |-
|
||||||
|
The room could not be found.
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: ../client-server/definitions/errors/error.yaml
|
||||||
|
examples:
|
||||||
|
response:
|
||||||
|
value: {
|
||||||
|
"errcode": "M_NOT_FOUND",
|
||||||
|
"error": "Room not found."
|
||||||
|
}
|
||||||
|
servers:
|
||||||
|
- url: "{protocol}://{hostname}{basePath}"
|
||||||
|
variables:
|
||||||
|
protocol:
|
||||||
|
enum:
|
||||||
|
- http
|
||||||
|
- https
|
||||||
|
default: https
|
||||||
|
hostname:
|
||||||
|
default: localhost:8008
|
||||||
|
basePath:
|
||||||
|
default: /_matrix/client/v1
|
||||||
|
components:
|
||||||
|
securitySchemes:
|
||||||
|
accessTokenQuery:
|
||||||
|
$ref: definitions/security.yaml#/accessTokenQuery
|
||||||
|
accessTokenBearer:
|
||||||
|
$ref: definitions/security.yaml#/accessTokenBearer
|
||||||
|
|
@ -102,15 +102,10 @@ paths:
|
||||||
* The room's [`m.room.history_visibility`](#room-history-visibility) is set to `world_readable`.
|
* The room's [`m.room.history_visibility`](#room-history-visibility) is set to `world_readable`.
|
||||||
items:
|
items:
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: definitions/public_rooms_chunk.yaml
|
- $ref: definitions/room_summary.yaml
|
||||||
- type: object
|
- type: object
|
||||||
title: SpaceHierarchyRoomsChunk
|
title: SpaceHierarchyRoomsChunk
|
||||||
properties:
|
properties:
|
||||||
room_type:
|
|
||||||
type: string
|
|
||||||
description: The `type` of room (from
|
|
||||||
[`m.room.create`](/client-server-api/#mroomcreate)),
|
|
||||||
if any.
|
|
||||||
children_state:
|
children_state:
|
||||||
type: array
|
type: array
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -130,6 +125,12 @@ paths:
|
||||||
description: The `origin_server_ts` for the event.
|
description: The `origin_server_ts` for the event.
|
||||||
required:
|
required:
|
||||||
- origin_server_ts
|
- origin_server_ts
|
||||||
|
allowed_room_ids:
|
||||||
|
x-addedInMatrixVersion: "1.15" # Extends room_summary.yaml
|
||||||
|
encryption:
|
||||||
|
x-addedInMatrixVersion: "1.15" # Extends room_summary.yaml
|
||||||
|
room_version:
|
||||||
|
x-addedInMatrixVersion: "1.15" # Extends room_summary.yaml
|
||||||
required:
|
required:
|
||||||
- children_state
|
- children_state
|
||||||
next_batch:
|
next_batch:
|
||||||
|
|
|
||||||
|
|
@ -13,16 +13,20 @@
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
openapi: 3.1.0
|
openapi: 3.1.0
|
||||||
info:
|
info:
|
||||||
title: Matrix Federation Public Rooms API
|
title: Matrix Federation Published Room Directory API
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
paths:
|
paths:
|
||||||
/publicRooms:
|
/publicRooms:
|
||||||
get:
|
get:
|
||||||
summary: Get all the public rooms for a homeserver
|
summary: Lists the server's published room directory
|
||||||
description: |-
|
description: |-
|
||||||
Gets all the public rooms for the homeserver. This should not return
|
Lists the server's published room directory.
|
||||||
rooms that are listed on another homeserver's directory, just those
|
|
||||||
listed on the receiving homeserver's directory.
|
This API returns paginated responses. The rooms are ordered by the number
|
||||||
|
of joined members, with the largest rooms first.
|
||||||
|
|
||||||
|
This SHOULD not return rooms that are listed on another homeserver's directory,
|
||||||
|
just those listed on the receiving homeserver's directory.
|
||||||
operationId: getPublicRooms
|
operationId: getPublicRooms
|
||||||
security:
|
security:
|
||||||
- signedRequest: []
|
- signedRequest: []
|
||||||
|
|
@ -62,21 +66,18 @@ paths:
|
||||||
type: string
|
type: string
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: The public room list for the homeserver.
|
description: A list of the published rooms on the server.
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: ../client-server/definitions/public_rooms_response.yaml
|
$ref: ../client-server/definitions/public_rooms_response.yaml
|
||||||
post:
|
post:
|
||||||
summary: Gets the public rooms on the server with optional filter.
|
summary: Lists the server's published room directory with an optional filter
|
||||||
description: |-
|
description: |-
|
||||||
Lists the public rooms on the server, with optional filter.
|
Lists the server's published room directory with an optional filter.
|
||||||
|
|
||||||
This API returns paginated responses. The rooms are ordered by the number
|
This API returns paginated responses. The rooms are ordered by the number
|
||||||
of joined members, with the largest rooms first.
|
of joined members, with the largest rooms first.
|
||||||
|
|
||||||
Note that this endpoint receives and returns the same format that is seen
|
|
||||||
in the Client-Server API's `POST /publicRooms` endpoint.
|
|
||||||
operationId: queryPublicRooms
|
operationId: queryPublicRooms
|
||||||
security:
|
security:
|
||||||
- signedRequest: []
|
- signedRequest: []
|
||||||
|
|
@ -147,69 +148,11 @@ paths:
|
||||||
required: true
|
required: true
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: A list of the rooms on the server.
|
description: A filtered list of the published rooms on the server.
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
type: object
|
$ref: ../client-server/definitions/public_rooms_response.yaml
|
||||||
description: A list of the rooms on the server.
|
|
||||||
required:
|
|
||||||
- chunk
|
|
||||||
properties:
|
|
||||||
chunk:
|
|
||||||
title: PublicRoomsChunks
|
|
||||||
type: array
|
|
||||||
description: A paginated chunk of public rooms.
|
|
||||||
items:
|
|
||||||
allOf:
|
|
||||||
- $ref: ../client-server/definitions/public_rooms_chunk.yaml
|
|
||||||
- type: object
|
|
||||||
properties:
|
|
||||||
# Override description of join_rule
|
|
||||||
join_rule:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
The room's join rule. When not present, the room is assumed to
|
|
||||||
be `public`. Note that rooms with `invite` join rules are not
|
|
||||||
expected here, but rooms with `knock` rules are given their
|
|
||||||
near-public nature.
|
|
||||||
next_batch:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A pagination token for the response. The absence of this token
|
|
||||||
means there are no more results to fetch and the client should
|
|
||||||
stop paginating.
|
|
||||||
prev_batch:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
A pagination token that allows fetching previous results. The
|
|
||||||
absence of this token means there are no results before this
|
|
||||||
batch, i.e. this is the first batch.
|
|
||||||
total_room_count_estimate:
|
|
||||||
type: integer
|
|
||||||
description: |-
|
|
||||||
An estimate on the total number of public rooms, if the
|
|
||||||
server has an estimate.
|
|
||||||
examples:
|
|
||||||
response:
|
|
||||||
value: {
|
|
||||||
"chunk": [
|
|
||||||
{
|
|
||||||
"avatar_url": "mxc://bleecker.street/CHEDDARandBRIE",
|
|
||||||
"guest_can_join": false,
|
|
||||||
"name": "CHEESE",
|
|
||||||
"num_joined_members": 37,
|
|
||||||
"room_id": "!ol19s:bleecker.street",
|
|
||||||
"topic": "Tasty tasty cheese",
|
|
||||||
"world_readable": true,
|
|
||||||
"join_rule": "public",
|
|
||||||
"room_type": "m.space"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"next_batch": "p190q",
|
|
||||||
"prev_batch": "p1902",
|
|
||||||
"total_room_count_estimate": 115
|
|
||||||
}
|
|
||||||
servers:
|
servers:
|
||||||
- url: "{protocol}://{hostname}{basePath}"
|
- url: "{protocol}://{hostname}{basePath}"
|
||||||
variables:
|
variables:
|
||||||
|
|
|
||||||
|
|
@ -61,22 +61,10 @@ paths:
|
||||||
room:
|
room:
|
||||||
description: A summary of the room requested.
|
description: A summary of the room requested.
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: ../client-server/definitions/public_rooms_chunk.yaml
|
- $ref: ../client-server/definitions/room_summary.yaml
|
||||||
- type: object
|
- type: object
|
||||||
title: SpaceHierarchyParentRoom
|
title: SpaceHierarchyParentRoom
|
||||||
properties:
|
properties:
|
||||||
room_type:
|
|
||||||
type: string
|
|
||||||
description: The `type` of room (from
|
|
||||||
[`m.room.create`](/client-server-api/#mroomcreate)),
|
|
||||||
if any.
|
|
||||||
allowed_room_ids:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
If the room is a [restricted room](/server-server-api/#restricted-rooms), these are the room IDs which
|
|
||||||
are specified by the join rules. Empty or omitted otherwise.
|
|
||||||
children_state:
|
children_state:
|
||||||
type: array
|
type: array
|
||||||
description: |-
|
description: |-
|
||||||
|
|
@ -96,6 +84,10 @@ paths:
|
||||||
description: The `origin_server_ts` for the event.
|
description: The `origin_server_ts` for the event.
|
||||||
required:
|
required:
|
||||||
- origin_server_ts
|
- origin_server_ts
|
||||||
|
encryption:
|
||||||
|
x-addedInMatrixVersion: "1.15" # Extends room_summary.yaml
|
||||||
|
room_version:
|
||||||
|
x-addedInMatrixVersion: "1.15" # Extends room_summary.yaml
|
||||||
required:
|
required:
|
||||||
- children_state
|
- children_state
|
||||||
children:
|
children:
|
||||||
|
|
@ -105,22 +97,14 @@ paths:
|
||||||
be excluded.
|
be excluded.
|
||||||
items:
|
items:
|
||||||
allOf:
|
allOf:
|
||||||
- $ref: ../client-server/definitions/public_rooms_chunk.yaml
|
- $ref: ../client-server/definitions/room_summary.yaml
|
||||||
- type: object
|
- type: object
|
||||||
title: SpaceHierarchyChildRoomsChunk
|
title: SpaceHierarchyChildRoomsChunk
|
||||||
properties:
|
properties:
|
||||||
room_type:
|
encryption:
|
||||||
type: string
|
x-addedInMatrixVersion: "1.15" # Extends room_summary.yaml
|
||||||
description: The `type` of room (from
|
room_version:
|
||||||
[`m.room.create`](/client-server-api/#mroomcreate)),
|
x-addedInMatrixVersion: "1.15" # Extends room_summary.yaml
|
||||||
if any.
|
|
||||||
allowed_room_ids:
|
|
||||||
type: array
|
|
||||||
items:
|
|
||||||
type: string
|
|
||||||
description: |-
|
|
||||||
If the room is a [restricted room](/server-server-api/#restricted-rooms), these are the room IDs which
|
|
||||||
are specified by the join rules. Empty or omitted otherwise.
|
|
||||||
inaccessible_children:
|
inaccessible_children:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue