openvidu/backend/openapi/paths/recordings.yaml

281 lines
12 KiB
YAML

/recordings:
get:
operationId: getRecordings
summary: Get all recordings
description: |
Retrieves a paginated list of all recordings available in the system.
You can apply filters to narrow down the results based on specific criteria.
> **Note:** If this endpoint is called using the `recordingTokenCookie` authentication method,
> the `roomId` filter will be ignored and only recordings associated with the room included in the token will be returned.
tags:
- OpenVidu Meet - Recordings
security:
- apiKeyInHeader: []
- accessTokenCookie: []
- recordingTokenCookie: []
parameters:
# - $ref: '../components/parameters/recording-status.yaml'
- $ref: '../components/parameters/recording-fields.yaml'
- $ref: '../components/parameters/room-id-query.yaml'
- $ref: '../components/parameters/max-items.yaml'
- $ref: '../components/parameters/next-page-token.yaml'
responses:
'200':
$ref: '../components/responses/success-get-recordings.yaml'
'401':
$ref: '../components/responses/unauthorized-error.yaml'
'403':
$ref: '../components/responses/forbidden-error.yaml'
'422':
$ref: '../components/responses/validation-error.yaml'
'500':
$ref: '../components/responses/internal-server-error.yaml'
delete:
operationId: bulkDeleteRecordings
summary: Bulk delete recordings
description: |
Deletes multiple recordings at once with the specified recording IDs.
> **Note:** If this endpoint is called using the `recordingTokenCookie` authentication method,
> all specified recordings must belong to the same room included in the token.
> If a recording does not belong to that room, it will not be deleted.
tags:
- OpenVidu Meet - Recordings
security:
- apiKeyInHeader: []
- accessTokenCookie: []
- recordingTokenCookie: []
parameters:
- $ref: '../components/parameters/recording-ids.yaml'
responses:
'200':
$ref: '../components/responses/success-bulk-delete-recordings.yaml'
'204':
description: >
All specified recordings were deleted successfully.
No content is returned.
'401':
$ref: '../components/responses/unauthorized-error.yaml'
'403':
$ref: '../components/responses/forbidden-error.yaml'
'422':
$ref: '../components/responses/validation-error.yaml'
'500':
$ref: '../components/responses/internal-server-error.yaml'
/recordings/download:
get:
operationId: downloadRecordings
summary: Download recordings
description: |
Downloads multiple recordings as a ZIP file with the specified recording IDs.
The ZIP file will contain all recordings in MP4 format.
> **Note:** If this endpoint is called using the `recordingTokenCookie` authentication method,
> all specified recordings must belong to the same room included in the token.
> If a recording does not belong to that room, it will not be included in the ZIP file.
tags:
- OpenVidu Meet - Recordings
security:
- apiKeyInHeader: []
- accessTokenCookie: []
- recordingTokenCookie: []
parameters:
- $ref: '../components/parameters/recording-ids.yaml'
responses:
'200':
description: Successfully created a ZIP file containing the requested recordings
headers:
Content-Disposition:
description: >
Indicates that the response is a file download.
The filename will be `recordings.zip`.
schema:
type: string
example: attachment; filename="recordings.zip"
content:
application/zip:
schema:
type: string
format: binary
'400':
$ref: '../components/responses/error-recordings-not-same-room.yaml'
'401':
$ref: '../components/responses/unauthorized-error.yaml'
'403':
$ref: '../components/responses/forbidden-error.yaml'
'422':
$ref: '../components/responses/validation-error.yaml'
'500':
$ref: '../components/responses/internal-server-error.yaml'
/recordings/{recordingId}:
get:
operationId: getRecording
summary: Get a recording
description: >
Retrieves the details of a recording with the specified recording ID.
tags:
- OpenVidu Meet - Recordings
security:
- apiKeyInHeader: []
- accessTokenCookie: []
- recordingTokenCookie: []
parameters:
- $ref: '../components/parameters/recording-id.yaml'
- $ref: '../components/parameters/recording-secret.yaml'
responses:
'200':
$ref: '../components/responses/success-get-recording.yaml'
'400':
$ref: '../components/responses/error-invalid-recording-secret.yaml'
'401':
$ref: '../components/responses/unauthorized-error.yaml'
'403':
$ref: '../components/responses/forbidden-error.yaml'
'404':
$ref: '../components/responses/error-recording-not-found.yaml'
'422':
$ref: '../components/responses/validation-error.yaml'
'500':
$ref: '../components/responses/internal-server-error.yaml'
delete:
operationId: deleteRecording
summary: Delete a recording
description: |
Deletes a recording with the specified recording ID.
> ⚠️ **Note:** The recording will only be deleted if it exists and is not in progress
> (i.e., not in a state such as `ACTIVE`, `STARTING`, or `ENDING`).
tags:
- OpenVidu Meet - Recordings
security:
- apiKeyInHeader: []
- accessTokenCookie: []
- recordingTokenCookie: []
parameters:
- $ref: '../components/parameters/recording-id.yaml'
responses:
'204':
description: Recording successfully deleted. No content is returned.
'401':
$ref: '../components/responses/unauthorized-error.yaml'
'403':
$ref: '../components/responses/forbidden-error.yaml'
'404':
$ref: '../components/responses/error-recording-not-found.yaml'
'409':
$ref: '../components/responses/error-recording-in-progress.yaml'
'422':
$ref: '../components/responses/validation-error.yaml'
'500':
$ref: '../components/responses/internal-server-error.yaml'
/recordings/{recordingId}/media:
get:
operationId: getRecordingMedia
summary: Get recording media
description: |
Retrieves the media of a recording with the specified recording ID.
The media is returned in a binary format suitable for video playback.
This endpoint supports range requests, allowing partial content retrieval
for video playback without downloading the entire file.
tags:
- OpenVidu Meet - Recordings
security:
- apiKeyInHeader: []
- accessTokenCookie: []
- recordingTokenCookie: []
parameters:
- $ref: '../components/parameters/recording-id.yaml'
- $ref: '../components/parameters/recording-secret.yaml'
- $ref: '../components/parameters/recording-range.yaml'
responses:
'200':
description: Successfully retrieved the full recording media
headers:
Accept-Ranges:
$ref: '../components/headers/accept-ranges.yaml'
Content-Length:
$ref: '../components/headers/content-length.yaml'
Cache-Control:
$ref: '../components/headers/cache-control.yaml'
content:
video/mp4:
schema:
type: string
format: binary
'206':
description: Successfully retrieved a partial range of the recording media
headers:
Accept-Ranges:
$ref: '../components/headers/accept-ranges.yaml'
Content-Length:
$ref: '../components/headers/content-length.yaml'
Cache-Control:
$ref: '../components/headers/cache-control.yaml'
Content-Range:
$ref: '../components/headers/content-range.yaml'
content:
video/mp4:
schema:
type: string
format: binary
'400':
$ref: '../components/responses/error-invalid-recording-secret.yaml'
'401':
$ref: '../components/responses/unauthorized-error.yaml'
'403':
$ref: '../components/responses/forbidden-error.yaml'
'404':
$ref: '../components/responses/error-recording-not-found.yaml'
'409':
$ref: '../components/responses/error-recording-in-progress.yaml'
'416':
description: Requested range not satisfiable
content:
application/json:
schema:
$ref: '../components/schemas/error.yaml'
example:
error: Recording Error
message: 'Recording "room-123--EG_XYZ--XX445" range not satisfiable. File size: 123456789'
'422':
$ref: '../components/responses/validation-error.yaml'
'500':
$ref: '../components/responses/internal-server-error.yaml'
/recordings/{recordingId}/url:
get:
operationId: getRecordingUrl
summary: Get recording URL
description: |
Retrieves the URL of a recording with the specified recording ID.
This URL is intended to be shared with people who do not have direct access to the recording.
# It can be configured to be accessible by anyone (public access) or restricted to authenticated users only,
# depending on the `privateAccess` query parameter.
tags:
- OpenVidu Meet - Recordings
security:
- apiKeyInHeader: []
- accessTokenCookie: []
- recordingTokenCookie: []
parameters:
- $ref: '../components/parameters/recording-id.yaml'
# - $ref: '../components/parameters/private-access.yaml'
responses:
'200':
$ref: '../components/responses/success-get-recording-url.yaml'
'401':
$ref: '../components/responses/unauthorized-error.yaml'
'403':
$ref: '../components/responses/forbidden-error.yaml'
'404':
$ref: '../components/responses/error-recording-not-found.yaml'
'422':
$ref: '../components/responses/validation-error.yaml'
'500':
$ref: '../components/responses/internal-server-error.yaml'