/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 any of the rooms have active meetings or recordings, 
            deletion behavior is determined by the provided `withMeeting` and `withRecordings` deletion policies.

            Depending on these policies, the rooms may be deleted/closed immediately, scheduled to be deleted/closed once the meetings end, 
            or the operation may fail if deletion is not permitted.
        tags:
            - OpenVidu Meet - Rooms
        security:
            - apiKeyInHeader: []
            - accessTokenCookie: []
        parameters:
            - $ref: '../components/parameters/room-ids.yaml'
            - $ref: '../components/parameters/meeting-deletion-policy.yaml'
            - $ref: '../components/parameters/recordings-deletion-policy.yaml'
        responses:
            '200':
                $ref: '../components/responses/success-bulk-delete-rooms.yaml'
            '400':
                $ref: '../components/responses/error-bulk-delete-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'
/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 the specified OpenVidu Meet room by its room ID.

            If the room has an active meeting or existing recordings, 
            deletion behavior is determined by the provided `withMeeting` and `withRecordings` deletion policies.

            Depending on these policies, the room may be deleted/closed immediately, scheduled to be deleted/closed once the meeting ends, 
            or the operation may fail if deletion is not permitted.
        tags:
            - OpenVidu Meet - Rooms
        security:
            - apiKeyInHeader: []
            - accessTokenCookie: []
        parameters:
            - $ref: '../components/parameters/room-id-path.yaml'
            - $ref: '../components/parameters/meeting-deletion-policy.yaml'
            - $ref: '../components/parameters/recordings-deletion-policy.yaml'
        responses:
            '200':
                $ref: '../components/responses/success-room-process-deletion.yaml'
            '202':
                $ref: '../components/responses/success-room-schedule-deletion.yaml'
            '401':
                $ref: '../components/responses/unauthorized-error.yaml'
            '403':
                $ref: '../components/responses/forbidden-error.yaml'
            '404':
                $ref: '../components/responses/error-room-not-found.yaml'
            '409':
                $ref: '../components/responses/error-room-process-deletion.yaml'
            '422':
                $ref: '../components/responses/validation-error.yaml'
            '500':
                $ref: '../components/responses/internal-server-error.yaml'
/rooms/{roomId}/config:
    get:
        operationId: getRoomConfig
        summary: Get room config
        description: >
            Retrieves the config 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-config.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: updateRoomConfig
        summary: Update room config
        description: >
            Updates the config 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-config-request.yaml'
        responses:
            '200':
                $ref: '../components/responses/success-update-room-config.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'
