/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.
        tags:
            - OpenVidu Meet - Recordings
        security:
            - apiKeyInHeader: []
            - accessTokenCookie: []
        parameters:
            # - name: status
            #   in: query
            #   required: false
            #   description: |
            #       Filter recordings by their status.

            #       Possible values:
            #       - `STARTING`
            #       - `ACTIVE`
            #       - `ENDING`
            #       - `COMPLETE`
            #       - `FAILED`
            #       - `ABORTED`
            #       - `LIMITED_REACHED`

            #       You can provide multiple statuses as a comma-separated list (e.g., `status=ACTIVE,FAILED`).
            #       If not specified, recordings with any status will be returned.

            #       > ⚠️ **Note:** Using this filter may impact performance for large datasets.
            #   schema:
            #       type: string
            - $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.
        tags:
            - OpenVidu Meet - Recordings
        security:
            - apiKeyInHeader: []
            - accessTokenCookie: []
        parameters:
            - $ref: '../components/parameters/recording-ids.yaml'
        responses:
            '200':
                $ref: '../components/responses/success-bulk-delete-recordings.yaml'
                description: >
                    **Mixed results**. Some recordings were deleted successfully while others
                    could not be deleted (e.g., due to being in progress or not found).
            '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/{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: []
        parameters:
            - $ref: '../components/parameters/recording-id.yaml'
        responses:
            '200':
                $ref: '../components/responses/success-get-recording.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.
            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: []
        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: []
        parameters:
            - $ref: '../components/parameters/recording-id.yaml'
            - $ref: '../components/parameters/recording-range.yaml'
        responses:
            '200':
                description: Successfully streaming the full recording
                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: Partial content streaming based on byte range
                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
            '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:
                            code: 416
                            message: 'Requested range not satisfiable'
            '422':
                $ref: '../components/responses/validation-error.yaml'
            '500':
                $ref: '../components/responses/internal-server-error.yaml'
