|
|
|
# Copyright 2018, 2021 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 Public Rooms API
|
|
|
|
version: 1.0.0
|
|
|
|
paths:
|
|
|
|
/publicRooms:
|
|
|
|
get:
|
|
|
|
summary: Get all the public rooms for a homeserver
|
|
|
|
description: |-
|
|
|
|
Gets all the public rooms for the homeserver. This should not return
|
|
|
|
rooms that are listed on another homeserver's directory, just those
|
|
|
|
listed on the receiving homeserver's directory.
|
|
|
|
operationId: getPublicRooms
|
|
|
|
security:
|
|
|
|
- signedRequest: []
|
|
|
|
parameters:
|
|
|
|
- in: query
|
|
|
|
name: limit
|
|
|
|
description: The maximum number of rooms to return. Defaults to 0 (no limit).
|
|
|
|
example: 10
|
|
|
|
schema:
|
|
|
|
type: integer
|
|
|
|
- in: query
|
|
|
|
name: since
|
|
|
|
description: |-
|
|
|
|
A pagination token from a previous call to this endpoint to fetch more
|
|
|
|
rooms.
|
|
|
|
example: GetMoreRoomsTokenHere
|
|
|
|
schema:
|
|
|
|
type: string
|
|
|
|
- in: query
|
|
|
|
name: include_all_networks
|
|
|
|
description: |-
|
|
|
|
Whether or not to include all networks/protocols defined by application
|
|
|
|
services on the homeserver. Defaults to false.
|
|
|
|
example: false
|
|
|
|
schema:
|
|
|
|
type: boolean
|
|
|
|
- in: query
|
|
|
|
name: third_party_instance_id
|
|
|
|
description: |-
|
|
|
|
The specific third-party network/protocol to request from the homeserver.
|
|
|
|
Can only be used if `include_all_networks` is false.
|
|
|
|
example: irc
|
|
|
|
schema:
|
|
|
|
type: string
|
|
|
|
responses:
|
|
|
|
"200":
|
|
|
|
description: The public room list for the homeserver.
|
|
|
|
content:
|
|
|
|
application/json:
|
|
|
|
schema:
|
|
|
|
$ref: ../client-server/definitions/public_rooms_response.yaml
|
|
|
|
post:
|
|
|
|
summary: Gets the public rooms on the server with optional filter.
|
|
|
|
description: |-
|
|
|
|
Lists the public rooms on the server, with optional filter.
|
|
|
|
|
|
|
|
This API returns paginated responses. The rooms are ordered by the number
|
|
|
|
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
|
|
|
|
security:
|
|
|
|
- signedRequest: []
|
|
|
|
requestBody:
|
|
|
|
content:
|
|
|
|
application/json:
|
|
|
|
schema:
|
|
|
|
type: object
|
|
|
|
properties:
|
|
|
|
limit:
|
|
|
|
type: integer
|
|
|
|
description: Limit the number of results returned.
|
|
|
|
since:
|
|
|
|
type: string
|
|
|
|
description: |-
|
|
|
|
A pagination token from a previous request, allowing servers
|
|
|
|
to get the next (or previous) batch of rooms. The direction
|
|
|
|
of pagination is specified solely by which token is supplied,
|
|
|
|
rather than via an explicit flag.
|
|
|
|
filter:
|
|
|
|
type: object
|
|
|
|
title: Filter
|
|
|
|
description: Filter to apply to the results.
|
|
|
|
properties:
|
|
|
|
generic_search_term:
|
|
|
|
type: string
|
|
|
|
description: |-
|
|
|
|
An optional string to search for in the room metadata, e.g. name,
|
|
|
|
topic, canonical alias, etc.
|
|
|
|
room_types:
|
|
|
|
type: array
|
|
|
|
x-addedInMatrixVersion: "1.4"
|
|
|
|
items:
|
|
|
|
type: ["string", "null"]
|
|
|
|
description: |-
|
|
|
|
An optional list of [room types](/client-server-api/#types) to search
|
|
|
|
for. To include rooms without a room type, specify `null` within this
|
|
|
|
list. When not specified, all applicable rooms (regardless of type)
|
|
|
|
are returned.
|
|
|
|
include_all_networks:
|
|
|
|
type: boolean
|
|
|
|
description: |-
|
|
|
|
Whether or not to include all known networks/protocols from
|
|
|
|
application services on the homeserver. Defaults to false.
|
|
|
|
example: false
|
|
|
|
third_party_instance_id:
|
|
|
|
type: string
|
|
|
|
description: |-
|
|
|
|
The specific third-party network/protocol to request from the
|
|
|
|
homeserver. Can only be used if `include_all_networks` is false.
|
|
|
|
example: irc
|
|
|
|
example: {
|
|
|
|
"limit": 10,
|
|
|
|
"filter": {
|
|
|
|
"generic_search_term": "foo",
|
|
|
|
"room_types": [
|
|
|
|
null,
|
|
|
|
"m.space"
|
|
|
|
]
|
|
|
|
},
|
|
|
|
"include_all_networks": false,
|
|
|
|
"third_party_instance_id": "irc"
|
|
|
|
}
|
|
|
|
description: Options for which rooms to return, or empty object to use defaults.
|
|
|
|
required: true
|
|
|
|
responses:
|
|
|
|
"200":
|
|
|
|
description: A list of the rooms on the server.
|
|
|
|
content:
|
|
|
|
application/json:
|
|
|
|
schema:
|
|
|
|
type: object
|
|
|
|
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:
|
|
|
|
- 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
|