matrix-spec/data/api/client-server/relations.yaml

166 lines
6.5 KiB
YAML
Raw Normal View History

2022-05-18 05:43:47 +02:00
# Copyright 2022 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.
swagger: '2.0'
info:
title: "Matrix Client-Server Relations API"
version: "1.0.0"
host: localhost:8008
schemes:
- https
- http
basePath: /_matrix/client/v1
consumes:
- application/json
produces:
- application/json
securityDefinitions:
$ref: definitions/security.yaml
paths:
"/rooms/{roomId}/relations/{eventId}/{relType}/{eventType}":
get:
summary: Get the related events for a given event, with optional filter.
description: |-
Retrieve all of the related events for a given event, optionally filtering
down by relationship type and related event type.
Note that while this endpoint indicates `relType` and `eventType` being
required, they can be individually omitted to retrieve all matching events.
When omitting the path parameters, a trailing slash must not be included
(otherwise the search will be for an empty string).
operationId: getEventsRelatingToEvent
security:
- accessToken: []
parameters:
- in: path
type: string
name: roomId
description: The ID of the room the supposed parent event is in.
required: true
x-example: "!636q39766251:matrix.org"
- in: path
type: string
name: eventId
description: The supposed parent event ID.
required: true
x-example: "$asfDuShaf7Gafaw"
- in: path
type: string
name: relType
description: |-
The [relationship type](/client-server-api/#relationship-types) to search
for, if any. Exclude to find all events which relate to the supposed parent
event with any `rel_type`.
required: true # we can't say false, annoyingly
x-example: "org.example.my_relation"
- in: path
type: string
name: eventType
description: |-
The event type of related events to search for, if any. Exclude to find all
events of any type which relate to the supposed parent event.
Note that in encrypted rooms this will typically always be `m.room.encrypted`
regardless of the event type contained within the encrypted payload.
required: true # we can't say false, annoyingly
x-example: "m.room.message"
- in: query
type: string
name: from
description: |-
The pagination token to start returning results from. If not supplied, results
start at the earliest topological event known to the server.
Can be a `next_batch` or `prev_batch` token from a previous call, or an equivalent
token from [`/messages`](/client-server-api/#get_matrixclientv3roomsroomidmessages)
or [`/sync`](/client-server-api/#get_matrixclientv3sync) to limit results to the
events returned by that section of timeline.
required: false
x-example: "page2_token"
- in: query
type: string
name: to
description: |-
The pagination token to stop returning results at. If not supplied, results
continue up to `limit` or until there are no more events.
Like `from`, this can be a previous token from a prior call to this endpoint
or from `/messages` or `/sync` to limit to a section of timeline.
required: false
x-example: "page3_token"
- in: query
type: integer
name: limit
description: |-
The maximum number of results to return in a single `chunk`. The server can
and should apply a maximum value to this parameter to avoid large responses.
Similarly, the server should apply a default value when not supplied.
required: false
x-example: 20
responses:
# note: this endpoint deliberately does not support rate limiting, therefore a
# 429 error response is not included.
200:
description: |-
The paginated events which relate to the supposed parent. If no events are
related to the parent, an empty `chunk` is returned.
examples:
application/json: {
"chunk": [{
"room_id": "!636q39766251:matrix.org",
"$ref": "../../event-schemas/examples/m.room.message$m.text.yaml",
"content": {
"m.relates_to": {
"rel_type": "org.example.my_relation",
"event_id": "$asfDuShaf7Gafaw"
}
}
}],
"next_batch": "page2_token",
"prev_batch": "page1_token"
}
schema:
type: object
properties:
chunk:
title: "RelatedEventsChunk"
type: array
description: |-
The events which relate to the parent event, after applicable filters.
items:
allOf:
- "$ref": "definitions/client_event.yaml"
next_batch:
type: string
description: |-
An opaque string representing a pagination token. The absence of this token
means there are no more results to fetch and the client should stop paginating.
prev_batch:
type: string
description: |-
An opaque string representing a pagination token. The absence of this token
means there are no prior results to fetch, i.e. this is the first batch.
404:
description: The supposed parent event was not found or you do not have permission to read this event.
examples:
application/json: {
"errcode": "M_NOT_FOUND",
"error": "Event not found."
}
schema:
"$ref": "definitions/errors/error.yaml"
tags:
- Event relationships