commit
2c88f02daa
@ -0,0 +1,148 @@
|
||||
# Copyright 2016 OpenMarket Ltd
|
||||
# Copyright 2017 Kamax.io
|
||||
# Copyright 2017 New Vector Ltd
|
||||
# Copyright 2018 New Vector Ltd
|
||||
# Copyright 2019 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 Identity Service Lookup API"
|
||||
version: "2.0.0"
|
||||
host: localhost:8090
|
||||
schemes:
|
||||
- https
|
||||
basePath: /_matrix/identity/v2
|
||||
consumes:
|
||||
- application/json
|
||||
produces:
|
||||
- application/json
|
||||
securityDefinitions:
|
||||
$ref: definitions/security.yaml
|
||||
paths:
|
||||
"/hash_details":
|
||||
get:
|
||||
summary: Gets hash function information from the server.
|
||||
description: |-
|
||||
Gets parameters for hashing identifiers from the server. This can include
|
||||
any of the algorithms defined in this specification.
|
||||
operationId: getHashDetails
|
||||
security:
|
||||
- accessToken: []
|
||||
parameters: []
|
||||
responses:
|
||||
200:
|
||||
description: The hash function information.
|
||||
examples:
|
||||
application/json: {
|
||||
"lookup_pepper": "matrixrocks",
|
||||
"algorithms": ["none", "sha256"]
|
||||
}
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
lookup_pepper:
|
||||
type: string
|
||||
description: |-
|
||||
The pepper the client MUST use in hashing identifiers, and MUST
|
||||
supply to the ``/lookup`` endpoint when performing lookups.
|
||||
|
||||
Servers SHOULD rotate this string often.
|
||||
algorithms:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
description: |-
|
||||
The algorithms the server supports. Must contain at least ``sha256``.
|
||||
required: ['lookup_pepper', 'algorithms']
|
||||
"/lookup":
|
||||
post:
|
||||
summary: Look up Matrix User IDs for a set of 3PIDs.
|
||||
description: |-
|
||||
Looks up the set of Matrix User IDs which have bound the 3PIDs given, if
|
||||
bindings are available. Note that the format of the addresses is defined
|
||||
later in this specification.
|
||||
operationId: lookupUsersV2
|
||||
security:
|
||||
- accessToken: []
|
||||
parameters:
|
||||
- in: body
|
||||
name: body
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
algorithm:
|
||||
type: string
|
||||
description: |-
|
||||
The algorithm the client is using to encode the ``addresses``. This
|
||||
should be one of the available options from ``/hash_details``.
|
||||
example: "sha256"
|
||||
pepper:
|
||||
type: string
|
||||
description: |-
|
||||
The pepper from ``/hash_details``. This is required even when the
|
||||
``algorithm`` does not make use of it.
|
||||
example: "matrixrocks"
|
||||
addresses:
|
||||
type: array
|
||||
items:
|
||||
type: string
|
||||
description: |-
|
||||
The addresses to look up. The format of the entries here depend on
|
||||
the ``algorithm`` used. Note that queries which have been incorrectly
|
||||
hashed or formatted will lead to no matches.
|
||||
example: [
|
||||
"4kenr7N9drpCJ4AfalmlGQVsOn3o2RHjkADUpXJWZUc",
|
||||
"nlo35_T5fzSGZzJApqu8lgIudJvmOQtDaHtr-I4rU7I"
|
||||
]
|
||||
required: ['algorithm', 'pepper', 'addresses']
|
||||
responses:
|
||||
200:
|
||||
description:
|
||||
The associations for any matched ``addresses``.
|
||||
examples:
|
||||
application/json: {
|
||||
"mappings": {
|
||||
"4kenr7N9drpCJ4AfalmlGQVsOn3o2RHjkADUpXJWZUc": "@alice:example.org"
|
||||
}
|
||||
}
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
mappings:
|
||||
type: object
|
||||
description: |-
|
||||
Any applicable mappings of ``addresses`` to Matrix User IDs. Addresses
|
||||
which do not have associations will not be included, which can make
|
||||
this property be an empty object.
|
||||
title: AssociatedMappings
|
||||
additionalProperties:
|
||||
type: string
|
||||
required: ['mappings']
|
||||
400:
|
||||
description:
|
||||
The client's request was invalid in some way. One possible problem could
|
||||
be the ``pepper`` being invalid after the server has rotated it - this is
|
||||
presented with the ``M_INVALID_PEPPER`` error code. Clients SHOULD make
|
||||
a call to ``/hash_details`` to get a new pepper in this scenario, being
|
||||
careful to avoid retry loops.
|
||||
|
||||
``M_INVALID_PARAM`` can also be returned to indicate the client supplied
|
||||
an ``algorithm`` that is unknown to the server.
|
||||
examples:
|
||||
application/json: {
|
||||
"errcode": "M_INVALID_PEPPER",
|
||||
"error": "Unknown or invalid pepper - has it been rotated?"
|
||||
}
|
||||
schema:
|
||||
$ref: "../client-server/definitions/errors/error.yaml"
|
@ -0,0 +1 @@
|
||||
Add ``/hash_details`` and a new ``/lookup`` endpoint for performing hashed association lookups.
|
Loading…
Reference in New Issue