Merge remote-tracking branch 'matrix-org/master' into travis/s2s/presence
This commit is contained in:
commit
a53fa9300d
33 changed files with 1513 additions and 417 deletions
148
api/server-server/backfill.yaml
Normal file
148
api/server-server/backfill.yaml
Normal file
|
@ -0,0 +1,148 @@
|
|||
# Copyright 2018 New Vector Ltd
|
||||
#
|
||||
# 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 Federation Events API"
|
||||
version: "1.0.0"
|
||||
host: localhost:8448
|
||||
schemes:
|
||||
- https
|
||||
basePath: /_matrix/federation/v1
|
||||
consumes:
|
||||
- application/json
|
||||
produces:
|
||||
- application/json
|
||||
securityDefinitions:
|
||||
$ref: definitions/security.yaml
|
||||
paths:
|
||||
"/backfill/{roomId}":
|
||||
get:
|
||||
summary: Retrieves the events which precede the given event
|
||||
description: |-
|
||||
Retrieves a sliding-window history of previous PDUs that occurred in the given room.
|
||||
Starting from the PDU ID(s) given in the ``v`` argument, the PDUs that preceded it
|
||||
are retrieved, up to the total number given by the ``limit``.
|
||||
operationId: backfillRoom
|
||||
security:
|
||||
- signedRequest: []
|
||||
parameters:
|
||||
- in: path
|
||||
name: roomId
|
||||
type: string
|
||||
description: The room ID to backfill.
|
||||
required: true
|
||||
x-example: "!SomeRoom:matrix.org"
|
||||
- in: query
|
||||
name: v
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
description: The event IDs to backfill from.
|
||||
required: true
|
||||
x-example: ["$abc123:matrix.org"]
|
||||
- in: query
|
||||
name: limit
|
||||
type: integer
|
||||
description: The maximum number of PDUs to retrieve, including the given events.
|
||||
required: true
|
||||
x-example: 2
|
||||
responses:
|
||||
200:
|
||||
description: |-
|
||||
A transaction containing the PDUs that preceded the given event(s), including the given
|
||||
event(s), up to the given limit.
|
||||
schema:
|
||||
$ref: "definitions/transaction.yaml"
|
||||
# Override the example to show the response of the request a bit better
|
||||
examples:
|
||||
application/json: {
|
||||
"$ref": "examples/transaction.json",
|
||||
"pdus": [
|
||||
{
|
||||
"$ref": "pdu.json",
|
||||
"room_id": "!SomeRoom:matrix.org",
|
||||
"event_id": "$abc123:matrix.org"
|
||||
},
|
||||
{
|
||||
"$ref": "pdu.json",
|
||||
"room_id": "!SomeRoom:matrix.org"
|
||||
},
|
||||
]
|
||||
}
|
||||
"/get_missing_events/{roomId}":
|
||||
post:
|
||||
summary: Retrieves events that the sender is missing
|
||||
description: |-
|
||||
Retrieves previous events that the sender is missing. This is done by doing a breadth-first
|
||||
walk of the ``prev_events`` for the ``latest_events``, ignoring any events in ``earliest_events``
|
||||
and stopping at the ``limit``.
|
||||
operationId: getMissingPreviousEvents
|
||||
security:
|
||||
- signedRequest: []
|
||||
parameters:
|
||||
- in: path
|
||||
name: roomId
|
||||
type: string
|
||||
description: The room ID to search in.
|
||||
required: true
|
||||
x-example: "!SomeRoom:matrix.org"
|
||||
- in: body
|
||||
name: body
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
limit:
|
||||
type: integer
|
||||
description: The maximum number of events to retrieve. Defaults to 10.
|
||||
example: 10
|
||||
min_depth:
|
||||
type: integer
|
||||
description: The minimum depth of events to retrieve. Defaults to 0.
|
||||
example: 0
|
||||
earliest_events:
|
||||
type: array
|
||||
description: |-
|
||||
The latest events that the sender already has. These are skipped when retrieving
|
||||
the previous events of ``latest_events``.
|
||||
items:
|
||||
type: string
|
||||
example: ["$missing_event:domain.com"]
|
||||
latest_events:
|
||||
type: array
|
||||
description: The events to retrieve the previous events for.
|
||||
items:
|
||||
type: string
|
||||
example: ["$event_that_has_the_missing_event_as_a_previous_event:domain.com"]
|
||||
required: ['earliest_events', 'latest_events']
|
||||
responses:
|
||||
200:
|
||||
description: |-
|
||||
The previous events for ``latest_events``, excluding any ``earliest_events``, up to the
|
||||
provided ``limit``.
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
events:
|
||||
type: array
|
||||
description: The missing events.
|
||||
items:
|
||||
$ref: definitions/pdu.yaml
|
||||
required: ['events']
|
||||
examples:
|
||||
application/json: {
|
||||
"events": [
|
||||
{"$ref": "examples/pdu.json"}
|
||||
]
|
||||
}
|
45
api/server-server/definitions/event-schemas/m.typing.yaml
Normal file
45
api/server-server/definitions/event-schemas/m.typing.yaml
Normal file
|
@ -0,0 +1,45 @@
|
|||
# Copyright 2018 New Vector Ltd
|
||||
#
|
||||
# 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: Typing Notification EDU
|
||||
description: A typing notification EDU for a user in a room.
|
||||
allOf:
|
||||
- $ref: ../edu.yaml
|
||||
- type: object
|
||||
properties:
|
||||
edu_type:
|
||||
type: string
|
||||
description: The string ``m.typing``
|
||||
example: "m.typing"
|
||||
content:
|
||||
type: object
|
||||
description: The typing notification.
|
||||
title: Typing Notification
|
||||
properties:
|
||||
room_id:
|
||||
type: string
|
||||
description: |-
|
||||
The room where the user's typing status has been updated.
|
||||
example: "!somewhere:matrix.org"
|
||||
user_id:
|
||||
type: string
|
||||
description: |-
|
||||
The user ID that has had their typing status changed.
|
||||
example: "@john:matrix.org"
|
||||
typing:
|
||||
type: boolean
|
||||
description: Whether the user is typing in the room or not.
|
||||
example: true
|
||||
required: ['room_id', 'user_id', 'typing']
|
19
api/server-server/definitions/security.yaml
Normal file
19
api/server-server/definitions/security.yaml
Normal file
|
@ -0,0 +1,19 @@
|
|||
# Copyright 2018 New Vector Ltd
|
||||
#
|
||||
# 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.
|
||||
signedRequest:
|
||||
type: apiKey
|
||||
description: |-
|
||||
The ``Authorization`` header defined in the `Authentication`_ section.
|
||||
name: Authorization
|
||||
in: header
|
|
@ -24,6 +24,8 @@ consumes:
|
|||
- application/json
|
||||
produces:
|
||||
- application/json
|
||||
securityDefinitions:
|
||||
$ref: definitions/security.yaml
|
||||
paths:
|
||||
"/event_auth/{roomId}/{eventId}":
|
||||
get:
|
||||
|
@ -31,6 +33,8 @@ paths:
|
|||
description: |-
|
||||
Retrieves the complete auth chain for a given event.
|
||||
operationId: getEventAuth
|
||||
security:
|
||||
- signedRequest: []
|
||||
parameters:
|
||||
- in: path
|
||||
name: roomId
|
||||
|
@ -72,6 +76,8 @@ paths:
|
|||
bottom-up after sorting each chain by depth then by event ID. The differences
|
||||
are then discovered and returned as the response to this API call.
|
||||
operationId: compareEventAuth
|
||||
security:
|
||||
- signedRequest: []
|
||||
parameters:
|
||||
- in: path
|
||||
name: roomId
|
||||
|
|
|
@ -22,6 +22,8 @@ schemes:
|
|||
basePath: /_matrix/federation/v1
|
||||
produces:
|
||||
- application/json
|
||||
securityDefinitions:
|
||||
$ref: definitions/security.yaml
|
||||
paths:
|
||||
"/state/{roomId}":
|
||||
get:
|
||||
|
@ -29,6 +31,8 @@ paths:
|
|||
description: |-
|
||||
Retrieves a snapshot of a room's state at a given event.
|
||||
operationId: getRoomState
|
||||
security:
|
||||
- signedRequest: []
|
||||
parameters:
|
||||
- in: path
|
||||
name: roomId
|
||||
|
@ -74,6 +78,8 @@ paths:
|
|||
event IDs. This performs the same function as calling ``/state/{roomId}``,
|
||||
however this returns just the event IDs rather than the full events.
|
||||
operationId: getRoomStateIds
|
||||
security:
|
||||
- signedRequest: []
|
||||
parameters:
|
||||
- in: path
|
||||
name: roomId
|
||||
|
@ -117,6 +123,8 @@ paths:
|
|||
description: |-
|
||||
Retrieves a single event.
|
||||
operationId: getEvent
|
||||
security:
|
||||
- signedRequest: []
|
||||
parameters:
|
||||
- in: path
|
||||
name: eventId
|
||||
|
@ -129,35 +137,3 @@ paths:
|
|||
description: A transaction containing a single PDU which is the event requested.
|
||||
schema:
|
||||
$ref: "definitions/transaction.yaml"
|
||||
"/backfill/{roomId}":
|
||||
get:
|
||||
summary: Retrieves the events which precede the given event
|
||||
description: |-
|
||||
Retreives a sliding-window history of previous PDUs that occurred in the given room.
|
||||
Starting from the PDU ID(s) given in the ``v`` argument, the PDUs that preceded it
|
||||
are retrieved, up to the total number given by the ``limit``.
|
||||
operationId: backfillRoom
|
||||
parameters:
|
||||
- in: path
|
||||
name: roomId
|
||||
type: string
|
||||
description: The room ID to backfill.
|
||||
required: true
|
||||
x-example: "!abc123:matrix.org"
|
||||
- in: query
|
||||
name: v
|
||||
type: string # TODO: The description says this is plural - figure out how to specify multiple, and spec it
|
||||
description: The event ID to backfill from.
|
||||
required: true
|
||||
x-example: "$abc123:matrix.org"
|
||||
- in: query
|
||||
name: limit
|
||||
type: integer
|
||||
description: The maximum number of events to retrieve.
|
||||
required: true
|
||||
x-example: 10
|
||||
responses:
|
||||
200:
|
||||
description: A transaction containing the PDUs that preceded the given event(s).
|
||||
schema:
|
||||
$ref: "definitions/transaction.yaml"
|
||||
|
|
|
@ -24,6 +24,8 @@ consumes:
|
|||
- application/json
|
||||
produces:
|
||||
- application/json
|
||||
securityDefinitions:
|
||||
$ref: definitions/security.yaml
|
||||
paths:
|
||||
"/invite/{roomId}/{eventId}":
|
||||
put:
|
||||
|
@ -33,6 +35,8 @@ paths:
|
|||
homeserver and the invited homeserver, it can be sent to all of the servers in the
|
||||
room by the inviting homeserver.
|
||||
operationId: sendInvite
|
||||
security:
|
||||
- signedRequest: []
|
||||
parameters:
|
||||
- in: path
|
||||
name: roomId
|
||||
|
|
|
@ -24,6 +24,8 @@ consumes:
|
|||
- application/json
|
||||
produces:
|
||||
- application/json
|
||||
securityDefinitions:
|
||||
$ref: definitions/security.yaml
|
||||
paths:
|
||||
"/make_join/{roomId}/{userId}":
|
||||
get:
|
||||
|
@ -32,6 +34,8 @@ paths:
|
|||
Asks the receiving server to return information that the sending
|
||||
server will need to prepare a join event to get into the room.
|
||||
operationId: makeJoin
|
||||
security:
|
||||
- signedRequest: []
|
||||
parameters:
|
||||
- in: path
|
||||
name: roomId
|
||||
|
@ -145,6 +149,8 @@ paths:
|
|||
Submits a signed join event to the resident server for it
|
||||
to accept it into the room's graph.
|
||||
operationId: sendJoin
|
||||
security:
|
||||
- signedRequest: []
|
||||
parameters:
|
||||
- in: path
|
||||
name: roomId
|
||||
|
|
|
@ -24,6 +24,8 @@ consumes:
|
|||
- application/json
|
||||
produces:
|
||||
- application/json
|
||||
securityDefinitions:
|
||||
$ref: definitions/security.yaml
|
||||
paths:
|
||||
"/make_leave/{roomId}/{userId}":
|
||||
get:
|
||||
|
@ -32,6 +34,8 @@ paths:
|
|||
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
|
||||
|
@ -151,6 +155,8 @@ paths:
|
|||
Submits a signed leave event to the resident server for it
|
||||
to accept it into the room's graph.
|
||||
operationId: sendLeave
|
||||
security:
|
||||
- signedRequest: []
|
||||
parameters:
|
||||
- in: path
|
||||
name: roomId
|
||||
|
|
63
api/server-server/openid.yaml
Normal file
63
api/server-server/openid.yaml
Normal file
|
@ -0,0 +1,63 @@
|
|||
# Copyright 2017 Kamax.io
|
||||
# Copyright 2018 New Vector Ltd
|
||||
#
|
||||
# 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 Federation OpenID API"
|
||||
version: "1.0.0"
|
||||
host: localhost:8448
|
||||
schemes:
|
||||
- https
|
||||
basePath: /_matrix/federation/v1
|
||||
produces:
|
||||
- application/json
|
||||
paths:
|
||||
"/openid/userinfo":
|
||||
get:
|
||||
summary: Exchange an OpenID token for user information
|
||||
description: |-
|
||||
Exchanges an OpenID access token for information about the user
|
||||
who generated the token. Currently this only exposes the Matrix
|
||||
User ID of the owner.
|
||||
operationId: exchangeOpenIdToken
|
||||
parameters:
|
||||
- in: path
|
||||
name: access_token
|
||||
type: string
|
||||
description: |-
|
||||
The OpenID access token to get information about the owner for.
|
||||
required: true
|
||||
x-example: SomeT0kenHere
|
||||
responses:
|
||||
200:
|
||||
description: |-
|
||||
Information about the user who generated the OpenID access token.
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
sub:
|
||||
type: string
|
||||
description: The Matrix User ID who generated the token.
|
||||
example: "@alice:example.com"
|
||||
required: ['sub']
|
||||
401:
|
||||
description: The token was not recognized or has expired.
|
||||
schema:
|
||||
$ref: "../client-server/definitions/errors/error.yaml"
|
||||
examples:
|
||||
application/json: {
|
||||
"errcode": "M_UNKNOWN_TOKEN",
|
||||
"error": "Access token unknown or expired"
|
||||
}
|
|
@ -22,6 +22,8 @@ schemes:
|
|||
basePath: /_matrix/federation/v1
|
||||
produces:
|
||||
- application/json
|
||||
securityDefinitions:
|
||||
$ref: definitions/security.yaml
|
||||
paths:
|
||||
"/publicRooms":
|
||||
get:
|
||||
|
@ -31,6 +33,8 @@ paths:
|
|||
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
|
||||
|
|
|
@ -23,6 +23,8 @@ schemes:
|
|||
basePath: /_matrix/federation/v1
|
||||
produces:
|
||||
- application/json
|
||||
securityDefinitions:
|
||||
$ref: definitions/security.yaml
|
||||
paths:
|
||||
"/query/{queryType}":
|
||||
get:
|
||||
|
@ -32,6 +34,8 @@ paths:
|
|||
arguments are dependent on which type of query is being made. Known query types
|
||||
are specified as their own endpoints as an extension to this definition.
|
||||
operationId: queryInfo
|
||||
security:
|
||||
- signedRequest: []
|
||||
parameters:
|
||||
- in: path
|
||||
name: queryType
|
||||
|
@ -54,6 +58,8 @@ paths:
|
|||
Servers may wish to cache the response to this query to avoid requesting the
|
||||
information too often.
|
||||
operationId: queryRoomDirectory
|
||||
security:
|
||||
- signedRequest: []
|
||||
parameters:
|
||||
- in: query
|
||||
name: room_alias
|
||||
|
@ -110,6 +116,9 @@ paths:
|
|||
|
||||
Servers may wish to cache the response to this query to avoid requesting the
|
||||
information too often.
|
||||
operationId: queryProfile
|
||||
security:
|
||||
- signedRequest: []
|
||||
parameters:
|
||||
- in: query
|
||||
name: user_id
|
||||
|
|
|
@ -24,6 +24,8 @@ consumes:
|
|||
- application/json
|
||||
produces:
|
||||
- application/json
|
||||
securityDefinitions:
|
||||
$ref: definitions/security.yaml
|
||||
paths:
|
||||
"/exchange_third_party_invite/{roomId}":
|
||||
put:
|
||||
|
@ -34,6 +36,8 @@ paths:
|
|||
an invite as per the `Inviting to a room`_ section before returning a
|
||||
response to this request.
|
||||
operationId: exchangeThirdPartyInvite
|
||||
security:
|
||||
- signedRequest: []
|
||||
parameters:
|
||||
- in: path
|
||||
name: roomId
|
||||
|
|
|
@ -24,6 +24,8 @@ consumes:
|
|||
- application/json
|
||||
produces:
|
||||
- application/json
|
||||
securityDefinitions:
|
||||
$ref: definitions/security.yaml
|
||||
paths:
|
||||
"/send/{txnId}":
|
||||
put:
|
||||
|
@ -36,6 +38,8 @@ paths:
|
|||
The sending server must wait and retry for a 200 OK response before sending a
|
||||
transaction with a different ``txnId`` to the receiving server.
|
||||
operationId: sendTransaction
|
||||
security:
|
||||
- signedRequest: []
|
||||
parameters:
|
||||
- in: path
|
||||
name: txnId
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue