Add spec for Matrix auth endpoints
This commit is contained in:
parent
8b5c637f76
commit
360743f1c9
@ -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")
|
||||||
|
@ -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.
|
||||||
|
Loading…
Reference in New Issue
Block a user