update openapi spec with links and callback for search

pull/2915/head
Rigel Kent 2020-06-27 11:43:43 +02:00
parent cc0e0d32ea
commit 2c31866430
No known key found for this signature in database
GPG Key ID: 5E53E96A494E452F
2 changed files with 94 additions and 20 deletions

View File

@ -205,7 +205,7 @@ async function createUser (req: express.Request, res: express.Response) {
Hooks.runAction('action:api.user.created', { body, user, account, videoChannel })
return res.json({
return res.status(201).json({
user: {
id: user.id,
account: {

View File

@ -484,12 +484,30 @@ paths:
tags:
- Users
responses:
'200':
description: successful operation
'201':
description: user created
content:
application/json:
schema:
$ref: '#/components/schemas/AddUserResponse'
links:
# GET /users/{id}
GetUserId:
operationId: getUserId
parameters:
id: '$response.body#/user/id'
# PUT /users/{id}
PutUserId:
operationId: putUserId
parameters:
id: '$response.body#/user/id'
# DELETE /users/{id}
DelUserId:
operationId: delUserId
parameters:
id: '$response.body#/user/id'
'403':
description: insufficient authority to create an admin or moderator
requestBody:
content:
application/json:
@ -517,6 +535,8 @@ paths:
items:
$ref: '#/components/schemas/User'
'/users/{id}':
parameters:
- $ref: '#/components/parameters/id'
delete:
summary: Delete a user
security:
@ -524,8 +544,7 @@ paths:
- admin
tags:
- Users
parameters:
- $ref: '#/components/parameters/id'
operationId: delUserId
responses:
'204':
description: successful operation
@ -535,8 +554,7 @@ paths:
- OAuth2: []
tags:
- Users
parameters:
- $ref: '#/components/parameters/id'
operationId: getUserId
responses:
'200':
description: successful operation
@ -550,8 +568,7 @@ paths:
- OAuth2: []
tags:
- Users
parameters:
- $ref: '#/components/parameters/id'
operationId: putUserId
responses:
'204':
description: successful operation
@ -701,12 +718,28 @@ paths:
'200':
description: successful operation
post:
tags:
- My Subscriptions
summary: Add subscription to my user
security:
- OAuth2:
- user
tags:
- My Subscriptions
requestBody:
content:
application/json:
schema:
type: object
properties:
uri:
type: string
format: uri
description: uri of the video channels to subscribe to
required:
- uri
examples:
default:
value:
uri: 008a0e54-375d-49d0-8379-143202e24152@video.lqdn.fr
responses:
'200':
description: successful operation
@ -816,7 +849,7 @@ paths:
- My Notifications
requestBody:
content:
multipart/form-data:
application/json:
schema:
type: object
properties:
@ -849,7 +882,7 @@ paths:
- My Notifications
requestBody:
content:
multipart/form-data:
application/json:
schema:
type: object
properties:
@ -1930,6 +1963,9 @@ paths:
type: integer
required:
- displayName
encoding:
thumbnailfile:
contentType: image/jpeg
/video-playlists/{id}:
get:
@ -1978,6 +2014,9 @@ paths:
videoChannelId:
description: Video channel in which the playlist will be published
type: integer
encoding:
thumbnailfile:
contentType: image/jpeg
delete:
summary: Delete a video playlist
security:
@ -2242,6 +2281,8 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/CommentThreadPostResponse'
'404':
description: video does not exist
requestBody:
content:
application/json:
@ -2286,6 +2327,8 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/CommentThreadPostResponse'
'404':
description: thread or video does not exist
requestBody:
content:
application/json:
@ -2328,6 +2371,8 @@ paths:
responses:
'204':
description: successful operation
'404':
description: video does not exist
/search/videos:
get:
tags:
@ -2390,6 +2435,9 @@ paths:
description: Get videos that have this maximum duration
schema:
type: integer
callbacks:
'searchTarget === search-index':
$ref: '#/components/callbacks/searchIndex'
responses:
'200':
description: successful operation
@ -2397,6 +2445,8 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/VideoListResponse'
'500':
description: search index unavailable
/search/video-channels:
get:
tags:
@ -2416,6 +2466,9 @@ paths:
- $ref: '#/components/parameters/count'
- $ref: '#/components/parameters/searchTarget'
- $ref: '#/components/parameters/sort'
callbacks:
'searchTarget === search-index':
$ref: '#/components/callbacks/searchIndex'
responses:
'200':
description: successful operation
@ -2425,6 +2478,8 @@ paths:
type: array
items:
$ref: '#/components/schemas/VideoChannel'
'500':
description: search index unavailable
/blocklist/accounts:
get:
tags:
@ -3455,6 +3510,7 @@ components:
- 1
- 2
description: 'The user role (Admin = `0`, Moderator = `1`, User = `2`)'
example: 2
VideoStateConstant:
properties:
@ -4480,13 +4536,19 @@ components:
type: string
format: date-time
AddUserResponse:
properties:
user:
type: object
properties:
id:
type: integer
uuid:
type: string
format: uuid
example: 9c9de5e8-0a1e-484a-b099-e80766180a6d
example: 8
account:
type: object
properties:
id:
type: integer
example: 37
VideoUploadResponse:
properties:
video:
@ -5157,3 +5219,15 @@ components:
maxItems: 100
items:
$ref: '#/components/schemas/Plugin'
callbacks:
searchIndex:
'{%CONFIG.SEARCH.SEARCH_INDEX.URL%}/api/v1/search/videos/':
post:
summary: third-party search index MAY be used instead of the local index, if enabled by the instance admin. see `searchTarget`
responses:
'200':
description: successful operation
content:
application/json:
schema:
$ref: '#/components/schemas/VideoListResponse'