/rooms:
    post:
        operationId: createRoom
        summary: Create a room
        description: >
            Creates a new OpenVidu Meet room with the specified expiration date.
            The room will be available for participants to join using the generated URLs.
        tags:
            - OpenVidu Meet - Room
        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.
        tags:
            - OpenVidu Meet - Room
        security:
            - apiKeyInHeader: []
            - accessTokenCookie: []
        parameters:
            - $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 - Room
        security:
            - apiKeyInHeader: []
            - accessTokenCookie: []
        parameters:
            - $ref: '../components/parameters/room-ids.yaml'
            - $ref: '../components/parameters/force-deletion.yaml'
        responses:
            '200':
                description: >
                    **Mixed results**. Some rooms were deleted immediately while others were
                    marked for deletion (due to active participants).
                $ref: '../components/responses/success-bulk-delete-rooms.yaml'
            '202':
                description: >
                    All specified rooms were marked for deletion (due to active participants)
                    and will be removed once all participants leave.
                $ref: '../components/responses/success-room-marked-for-deletion.yaml'
            '204':
                description: >
                    All specified rooms were successfully deleted immediately.
                    No content is returned in the response body.
            '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 - Room
        security:
            - apiKeyInHeader: []
            - accessTokenCookie: []
            - participantTokenCookie: []
        parameters:
            - $ref: '../components/parameters/room-id-path.yaml'
            - $ref: '../components/parameters/room-fields.yaml'
        responses:
            '200':
                $ref: '../components/responses/success-get-room.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 - Room
        security:
            - apiKeyInHeader: []
            - accessTokenCookie: []
        parameters:
            - $ref: '../components/parameters/room-id-path.yaml'
        responses:
            '202':
                description: >
                    The room was marked for deletion (due to active participants)
                    and will be removed once all participants leave.
                $ref: '../components/responses/success-room-marked-for-deletion.yaml'
            '204':
                description: Successfully deleted the OpenVidu Meet room
            '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'
