backend: Include authentication and internal room routes in OpenAPI specification
This commit is contained in:
parent
d308850705
commit
aad16bc28c
@ -15,12 +15,288 @@ servers:
|
|||||||
- url: http://localhost:6080/meet/internal-api/v1
|
- url: http://localhost:6080/meet/internal-api/v1
|
||||||
description: Development server
|
description: Development server
|
||||||
tags:
|
tags:
|
||||||
|
- name: Internal API - Authentication
|
||||||
|
description: Authentication operations
|
||||||
|
- name: Internal API - Rooms
|
||||||
|
description: Operations related to managing OpenVidu Meet rooms
|
||||||
- name: Internal API - Participant
|
- name: Internal API - Participant
|
||||||
description: Operations related to managing participants in OpenVidu Meet rooms
|
description: Operations related to managing participants in OpenVidu Meet rooms
|
||||||
- name: Internal API - Recordings
|
- name: Internal API - Recordings
|
||||||
description: Operations related to managing OpenVidu Meet recordings
|
description: Operations related to managing OpenVidu Meet recordings
|
||||||
|
|
||||||
paths:
|
paths:
|
||||||
|
/auth/login:
|
||||||
|
post:
|
||||||
|
operationId: loginUser
|
||||||
|
summary: Login to OpenVidu Meet
|
||||||
|
description: >
|
||||||
|
Authenticates a user and returns an access and refresh token in cookies.
|
||||||
|
tags:
|
||||||
|
- Internal API - Authentication
|
||||||
|
requestBody:
|
||||||
|
description: User credentials
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
username:
|
||||||
|
type: string
|
||||||
|
example: 'admin'
|
||||||
|
description: The username of the user.
|
||||||
|
password:
|
||||||
|
type: string
|
||||||
|
example: 'password123'
|
||||||
|
description: The password of the user.
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: Successfully logged in
|
||||||
|
headers:
|
||||||
|
Set-Cookie:
|
||||||
|
description: >
|
||||||
|
The cookie containing the access token.
|
||||||
|
This cookie is used to authenticate the user in subsequent requests.
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: 'OvMeetAccessToken=token_123456; Path=/; HttpOnly; SameSite=Strict'
|
||||||
|
Set-Cookie-Refresh:
|
||||||
|
description: >
|
||||||
|
The cookie containing the refresh token.
|
||||||
|
This cookie is used to refresh the access token when it expires.
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: 'OvMeetRefreshToken=token_123456; Path=/meet/internal-api/v1/auth; HttpOnly; SameSite=Strict'
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
example: 'Login succeeded'
|
||||||
|
'404':
|
||||||
|
description: Invalid credentials
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
|
example:
|
||||||
|
message: 'Login failed. Invalid username or password'
|
||||||
|
'422':
|
||||||
|
description: Unprocessable Entity — The request body is invalid
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
error:
|
||||||
|
type: string
|
||||||
|
example: 'Unprocessable Entity'
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
example: 'Invalid request body'
|
||||||
|
details:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
field:
|
||||||
|
type: string
|
||||||
|
example: 'username'
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
example: 'Username must be at least 4 characters long'
|
||||||
|
'500':
|
||||||
|
description: Internal server error
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
|
example:
|
||||||
|
message: 'Internal server error'
|
||||||
|
/auth/logout:
|
||||||
|
post:
|
||||||
|
operationId: logoutUser
|
||||||
|
summary: Logout from OpenVidu Meet
|
||||||
|
description: >
|
||||||
|
Logs out the user and clears the access and refresh tokens from cookies.
|
||||||
|
tags:
|
||||||
|
- Internal API - Authentication
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: Successfully logged out
|
||||||
|
headers:
|
||||||
|
Set-Cookie:
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: 'OvMeetAccessToken=; Path=/; HttpOnly; SameSite=Strict'
|
||||||
|
Set-Cookie-Refresh:
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: 'OvMeetRefreshToken=; Path=/meet/internal-api/v1/auth; HttpOnly; SameSite=Strict'
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
example: 'Logout successful'
|
||||||
|
/auth/refresh:
|
||||||
|
post:
|
||||||
|
operationId: refreshAccessToken
|
||||||
|
summary: Refresh the access token
|
||||||
|
description: >
|
||||||
|
Refreshes the access token using the refresh token.
|
||||||
|
The new access token is returned in a cookie.
|
||||||
|
tags:
|
||||||
|
- Internal API - Authentication
|
||||||
|
security:
|
||||||
|
- refreshTokenCookie: []
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: Successfully refreshed the access token
|
||||||
|
headers:
|
||||||
|
Set-Cookie:
|
||||||
|
description: >
|
||||||
|
The cookie containing the new access token.
|
||||||
|
This cookie is used to authenticate the user in subsequent requests.
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: 'OvMeetAccessToken=token_123456; Path=/; HttpOnly; SameSite=Strict'
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
example: 'Token refreshed'
|
||||||
|
'400':
|
||||||
|
description: Bad Request — The refresh token is missing or invalid
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
|
example:
|
||||||
|
message: 'No refresh token provided'
|
||||||
|
'500':
|
||||||
|
description: Internal server error
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
|
example:
|
||||||
|
message: 'Internal server error'
|
||||||
|
/auth/profile:
|
||||||
|
get:
|
||||||
|
operationId: getUserProfile
|
||||||
|
summary: Get user profile
|
||||||
|
description: >
|
||||||
|
Retrieves the profile information of the authenticated user.
|
||||||
|
tags:
|
||||||
|
- Internal API - Authentication
|
||||||
|
security:
|
||||||
|
- accessTokenCookie: []
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: Successfully retrieved user profile
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
username:
|
||||||
|
type: string
|
||||||
|
example: 'admin'
|
||||||
|
description: The username of the authenticated user.
|
||||||
|
role:
|
||||||
|
type: string
|
||||||
|
example: 'admin'
|
||||||
|
description: The role assigned to the authenticated user.
|
||||||
|
'401':
|
||||||
|
description: Unauthorized — The access token is missing or invalid
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
|
example:
|
||||||
|
message: 'Unauthorized'
|
||||||
|
/rooms/{roomName}/participant-role:
|
||||||
|
get:
|
||||||
|
operationId: getParticipantRole
|
||||||
|
summary: Get participant role in a room
|
||||||
|
description: >
|
||||||
|
Retrieves the role that a participant will have in a specified OpenVidu Meet room when using the URL thant contains the secret token.
|
||||||
|
This endpoint is useful for checking the participant's role before joining the room.
|
||||||
|
tags:
|
||||||
|
- Internal API - Rooms
|
||||||
|
security:
|
||||||
|
- accessTokenCookie: []
|
||||||
|
parameters:
|
||||||
|
- name: roomName
|
||||||
|
in: path
|
||||||
|
required: true
|
||||||
|
description: The name of the room to check the participant's role
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- name: secret
|
||||||
|
in: query
|
||||||
|
required: true
|
||||||
|
description: The secret token from the room URL to check the participant's role
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
responses:
|
||||||
|
'200':
|
||||||
|
description: Successfully retrieved participant role
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: 'moderator'
|
||||||
|
description: The role that the participant will have in the room.
|
||||||
|
'404':
|
||||||
|
description: Room not found
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
|
example:
|
||||||
|
name: 'Room Error'
|
||||||
|
message: 'The room does not exist'
|
||||||
|
'422':
|
||||||
|
description: Unprocessable Entity — Invalid request query parameters
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
error:
|
||||||
|
type: string
|
||||||
|
example: 'Unprocessable Entity'
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
example: 'Invalid request query'
|
||||||
|
details:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
field:
|
||||||
|
type: string
|
||||||
|
example: 'secret'
|
||||||
|
message:
|
||||||
|
type: string
|
||||||
|
example: 'secret is required'
|
||||||
|
'500':
|
||||||
|
description: Internal server error
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/Error'
|
||||||
|
example:
|
||||||
|
message: 'Internal server error'
|
||||||
/recordings/{recordingId}/stream:
|
/recordings/{recordingId}/stream:
|
||||||
get:
|
get:
|
||||||
operationId: getRecordingStream
|
operationId: getRecordingStream
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user