Add spec for Matrix auth endpoints

This commit is contained in:
Tulir Asokan 2019-02-04 11:38:23 +02:00
parent 8b5c637f76
commit 360743f1c9
2 changed files with 132 additions and 1 deletions

View File

@ -15,6 +15,7 @@
# along with this program. If not, see <https://www.gnu.org/licenses/>. # along with this program. If not, see <https://www.gnu.org/licenses/>.
from typing import Dict, Tuple, NamedTuple, Optional from typing import Dict, Tuple, NamedTuple, Optional
from json import JSONDecodeError from json import JSONDecodeError
from http import HTTPStatus
import hmac import hmac
import hashlib import hashlib
@ -95,7 +96,8 @@ async def register(request: web.Request) -> web.Response:
return web.json_response({ return web.json_response({
"errcode": e.errcode, "errcode": e.errcode,
"error": e.message, "error": e.message,
}, status=e.http_status) "http_status": e.http_status,
}, status=HTTPStatus.INTERNAL_SERVER_ERROR)
@routes.post("/client/auth/{server}/login") @routes.post("/client/auth/{server}/login")

View File

@ -399,6 +399,107 @@ paths:
application/json: application/json:
schema: schema:
$ref: '#/components/schemas/Error' $ref: '#/components/schemas/Error'
/client/auth/servers:
get:
operationId: get_client_auth_servers
summary: Get the list of servers you can register or log in on via the maubot server
tags: [Clients]
responses:
200:
description: OK
content:
application/json:
schema:
type: array
items:
type: string
example:
- maunium.net
- example.com
- matrix.org
401:
$ref: '#/components/responses/Unauthorized'
'/client/auth/{server}/register':
parameters:
- name: server
in: path
description: The server name to register the account on.
required: true
schema:
type: string
post:
operationId: client_auth_register
summary: |
Register a new account on the given Matrix server using the shared registration
secret configured into the maubot server.
tags: [Clients]
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MatrixAuthentication'
responses:
200:
description: Registration successful
content:
application/json:
schema:
type: object
properties:
access_token:
type: string
example: token_here
user_id:
type: string
example: '@putkiteippi:maunium.net'
home_server:
type: string
example: maunium.net
device_id:
type: string
example: device_id_here
401:
$ref: '#/components/responses/Unauthorized'
500:
$ref: '#/components/responses/MatrixServerError'
'/client/auth/{server}/login':
parameters:
- name: server
in: path
description: The server name to log in to.
required: true
schema:
type: string
post:
operationId: client_auth_login
summary: Log in to the given Matrix server via the maubot server
tags: [Clients]
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MatrixAuthentication'
responses:
200:
description: Login successful
content:
application/json:
schema:
type: object
properties:
user_id:
type: string
example: '@putkiteippi:maunium.net'
access_token:
type: string
example: token_here
device_id:
type: string
example: device_id_here
401:
$ref: '#/components/responses/Unauthorized'
500:
$ref: '#/components/responses/MatrixServerError'
components: components:
responses: responses:
@ -432,6 +533,23 @@ components:
application/json: application/json:
schema: schema:
$ref: '#/components/schemas/Error' $ref: '#/components/schemas/Error'
MatrixServerError:
description: The Matrix server returned an error
content:
application/json:
schema:
type: object
properties:
errcode:
type: string
description: The `errcode` returned by the server.
error:
type: string
description: The human-readable error returned by the server.
http_status:
type: integer
description: The HTTP status returned by the server.
securitySchemes: securitySchemes:
bearer: bearer:
type: http type: http
@ -516,3 +634,14 @@ components:
readOnly: true readOnly: true
items: items:
$ref: '#/components/schemas/PluginInstance' $ref: '#/components/schemas/PluginInstance'
MatrixAuthentication:
type: object
properties:
username:
type: string
example: putkiteippi
description: The user ID localpart to register/log in as.
password:
type: string
example: p455w0rd
description: The password for/of the user.