/rooms:
    post:
        operationId: createRoom
        summary: Create a room
        description: >
            Creates a new OpenVidu Meet room.
            The room will be available for participants to join using the generated URLs.
        tags:
            - OpenVidu Meet - Rooms
        security:
            - apiKeyInHeader: []
            - accessTokenCookie: []
        requestBody:
            $ref: '../components/requestBodies/create-room-request.yaml'
        responses:
            '201':
                $ref: '../components/responses/success-create-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'
    get:
        operationId: getRooms
        summary: Get all rooms
        description: >
            Retrieves a paginated list of all rooms available in the system.
            You can apply filters to narrow down the results based on specific criteria.
        tags:
            - OpenVidu Meet - Rooms
        security:
            - apiKeyInHeader: []
            - accessTokenCookie: []
        parameters:
            - $ref: '../components/parameters/room-name.yaml'
            - $ref: '../components/parameters/room-fields.yaml'
            - $ref: '../components/parameters/max-items.yaml'
            - $ref: '../components/parameters/next-page-token.yaml'
        responses:
            '200':
                $ref: '../components/responses/success-get-rooms.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: bulkDeleteRooms
        summary: Bulk delete rooms
        description: |
            Delete multiple OpenVidu Meet rooms at once with the specified room IDs.

            If a room has active participants, it will be marked for deletion
            and will be removed once all participants leave.

            If the "force" parameter is set to true, all rooms will be deleted immediately
            regardless of active participants.
        tags:
            - OpenVidu Meet - Rooms
        security:
            - apiKeyInHeader: []
            - accessTokenCookie: []
        parameters:
            - $ref: '../components/parameters/room-ids.yaml'
            - $ref: '../components/parameters/force-deletion.yaml'
        responses:
            '200':
                $ref: '../components/responses/success-bulk-delete-rooms.yaml'
            '202':
                $ref: '../components/responses/success-rooms-marked-for-deletion.yaml'
            '204':
                description: >
                    All specified rooms were successfully deleted immediately.
                    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'
/rooms/{roomId}:
    get:
        operationId: getRoom
        summary: Get a room
        description: >
            Retrieves the details of an OpenVidu Meet room with the specified room ID.
        tags:
            - OpenVidu Meet - Rooms
        security:
            - apiKeyInHeader: []
            - accessTokenCookie: []
            - participantTokenCookie: []
        parameters:
            - $ref: '../components/parameters/room-id-path.yaml'
            - $ref: '../components/parameters/room-fields.yaml'
            - $ref: '../components/parameters/internal/x-participant-role.yaml'
        responses:
            '200':
                $ref: '../components/responses/success-get-room.yaml'
            '400':
                $ref: '../components/responses/internal/error-invalid-participant-role.yaml'
            '401':
                $ref: '../components/responses/unauthorized-error.yaml'
            '403':
                $ref: '../components/responses/forbidden-error.yaml'
            '404':
                $ref: '../components/responses/error-room-not-found.yaml'
            '422':
                $ref: '../components/responses/validation-error.yaml'
            '500':
                $ref: '../components/responses/internal-server-error.yaml'
    delete:
        operationId: deleteRoom
        summary: Delete a room
        description: |
            Deletes an OpenVidu Meet room with the specified room ID.

            If the room has active participants, it will be marked for deletion
            and will be removed once all participants leave.

            If the "force" parameter is set to true, the room will be deleted immediately
            regardless of active participants.
        tags:
            - OpenVidu Meet - Rooms
        security:
            - apiKeyInHeader: []
            - accessTokenCookie: []
        parameters:
            - $ref: '../components/parameters/room-id-path.yaml'
            - $ref: '../components/parameters/force-deletion.yaml'
        responses:
            '202':
                $ref: '../components/responses/success-room-marked-for-deletion.yaml'
            '204':
                description: Successfully deleted the OpenVidu Meet room. No content is returned.
            '401':
                $ref: '../components/responses/unauthorized-error.yaml'
            '403':
                $ref: '../components/responses/forbidden-error.yaml'
            '404':
                $ref: '../components/responses/error-room-not-found.yaml'
            '422':
                $ref: '../components/responses/validation-error.yaml'
            '500':
                $ref: '../components/responses/internal-server-error.yaml'
/rooms/{roomId}/preferences:
    get:
        operationId: getRoomPreferences
        summary: Get room preferences
        description: >
            Retrieves the preferences of an OpenVidu Meet room with the specified room ID.
        tags:
            - OpenVidu Meet - Rooms
        security:
            - apiKeyInHeader: []
            - accessTokenCookie: []
            - participantTokenCookie: []
        parameters:
            - $ref: '../components/parameters/room-id-path.yaml'
            - $ref: '../components/parameters/internal/x-participant-role.yaml'
        responses:
            '200':
                $ref: '../components/responses/success-get-room-preferences.yaml'
            '400':
                $ref: '../components/responses/internal/error-invalid-participant-role.yaml'
            '401':
                $ref: '../components/responses/unauthorized-error.yaml'
            '403':
                $ref: '../components/responses/forbidden-error.yaml'
            '404':
                $ref: '../components/responses/error-room-not-found.yaml'
            '422':
                $ref: '../components/responses/validation-error.yaml'
            '500':
                $ref: '../components/responses/internal-server-error.yaml'
    put:
        operationId: updateRoomPreferences
        summary: Update room preferences
        description: >
            Updates the preferences of an OpenVidu Meet room with the specified room ID.
        tags:
            - OpenVidu Meet - Rooms
        security:
            - apiKeyInHeader: []
            - accessTokenCookie: []
        parameters:
            - $ref: '../components/parameters/room-id-path.yaml'
        requestBody:
            $ref: '../components/requestBodies/update-room-preferences-request.yaml'
        responses:
            '200':
                $ref: '../components/responses/success-update-room-preferences.yaml'
            '401':
                $ref: '../components/responses/unauthorized-error.yaml'
            '403':
                $ref: '../components/responses/forbidden-error.yaml'
            '404':
                $ref: '../components/responses/error-room-not-found.yaml'
            '422':
                $ref: '../components/responses/validation-error.yaml'
            '500':
                $ref: '../components/responses/internal-server-error.yaml'
