From 029802787ae025f36755adc6eb3325b4cf2ce88d Mon Sep 17 00:00:00 2001 From: juancarmore Date: Fri, 6 Mar 2026 17:00:20 +0100 Subject: [PATCH] Reapply "Revert commits 6c7bfd4 5638025 da7759d ba374ce cf84de4 39a9b7d e990c19" This reverts commit 450aa85b887e2ce56052c8abe75fbe4722a2ef69. --- .../parameters/internal/secret.yaml | 6 + .../parameters/internal/userId-path.yaml | 7 - .../components/parameters/member-id-path.yaml | 7 - .../parameters/room-member-fields.yaml | 9 - .../add-room-member-request.yaml | 68 ------ .../internal/create-user-request.yaml | 42 ---- .../requestBodies/internal/login-user.yaml | 14 +- .../internal/recording-token-request.yaml | 10 + .../update-room-anonymous-request.yaml | 6 - .../update-room-config-request.yaml | 4 +- .../update-room-member-request.yaml | 33 --- .../update-room-roles-request.yaml | 6 - .../error-room-member-not-found.yaml | 16 -- .../internal/error-user-not-found.yaml | 8 - .../internal/error-userId-already-exists.yaml | 8 - .../internal/success-create-user.yaml | 12 - .../internal/success-delete-user.yaml | 10 - .../responses/internal/success-get-me.yaml | 5 - ...get-user.yaml => success-get-profile.yaml} | 2 +- .../success-get-room-member-role.yaml | 5 + .../success-get-room-member-roles.yaml | 38 ++++ .../responses/internal/success-get-users.yaml | 40 ---- .../responses/success-add-room-member.yaml | 12 - .../responses/success-delete-room-member.yaml | 10 - .../responses/success-get-room-member.yaml | 5 - .../responses/success-get-room-members.yaml | 75 ------- .../responses/success-get-room.yaml | 70 ++---- .../responses/success-get-rooms.yaml | 116 ++-------- .../success-room-process-deletion.yaml | 100 +-------- .../success-room-schedule-deletion.yaml | 146 +------------ .../success-update-room-anonymous.yaml | 10 - .../responses/success-update-room-member.yaml | 5 - .../responses/success-update-room-roles.yaml | 10 - .../schemas/internal/meet-user.yaml | 28 +-- .../room-member-role-permissions.yaml | 74 +++++++ .../schemas/internal/user-credentials.yaml | 13 ++ .../components/schemas/meet-permissions.yaml | 58 ----- .../schemas/meet-room-anonymous-config.yaml | 24 -- .../components/schemas/meet-room-member.yaml | 53 ----- .../components/schemas/meet-room-options.yaml | 19 -- .../schemas/meet-room-roles-config.yaml | 40 ---- .../openapi/components/schemas/meet-room.yaml | 86 ++------ .../backend/openapi/openvidu-meet-api.yaml | 14 +- .../openapi/openvidu-meet-internal-api.yaml | 22 +- .../backend/openapi/paths/internal/rooms.yaml | 44 ++++ .../backend/openapi/paths/internal/users.yaml | 113 +--------- meet-ce/backend/openapi/paths/rooms.yaml | 206 ------------------ 47 files changed, 298 insertions(+), 1411 deletions(-) create mode 100644 meet-ce/backend/openapi/components/parameters/internal/secret.yaml delete mode 100644 meet-ce/backend/openapi/components/parameters/internal/userId-path.yaml delete mode 100644 meet-ce/backend/openapi/components/parameters/member-id-path.yaml delete mode 100644 meet-ce/backend/openapi/components/parameters/room-member-fields.yaml delete mode 100644 meet-ce/backend/openapi/components/requestBodies/add-room-member-request.yaml delete mode 100644 meet-ce/backend/openapi/components/requestBodies/internal/create-user-request.yaml create mode 100644 meet-ce/backend/openapi/components/requestBodies/internal/recording-token-request.yaml delete mode 100644 meet-ce/backend/openapi/components/requestBodies/update-room-anonymous-request.yaml delete mode 100644 meet-ce/backend/openapi/components/requestBodies/update-room-member-request.yaml delete mode 100644 meet-ce/backend/openapi/components/requestBodies/update-room-roles-request.yaml delete mode 100644 meet-ce/backend/openapi/components/responses/error-room-member-not-found.yaml delete mode 100644 meet-ce/backend/openapi/components/responses/internal/error-user-not-found.yaml delete mode 100644 meet-ce/backend/openapi/components/responses/internal/error-userId-already-exists.yaml delete mode 100644 meet-ce/backend/openapi/components/responses/internal/success-create-user.yaml delete mode 100644 meet-ce/backend/openapi/components/responses/internal/success-delete-user.yaml delete mode 100644 meet-ce/backend/openapi/components/responses/internal/success-get-me.yaml rename meet-ce/backend/openapi/components/responses/internal/{success-get-user.yaml => success-get-profile.yaml} (68%) create mode 100644 meet-ce/backend/openapi/components/responses/internal/success-get-room-member-role.yaml create mode 100644 meet-ce/backend/openapi/components/responses/internal/success-get-room-member-roles.yaml delete mode 100644 meet-ce/backend/openapi/components/responses/internal/success-get-users.yaml delete mode 100644 meet-ce/backend/openapi/components/responses/success-add-room-member.yaml delete mode 100644 meet-ce/backend/openapi/components/responses/success-delete-room-member.yaml delete mode 100644 meet-ce/backend/openapi/components/responses/success-get-room-member.yaml delete mode 100644 meet-ce/backend/openapi/components/responses/success-get-room-members.yaml delete mode 100644 meet-ce/backend/openapi/components/responses/success-update-room-anonymous.yaml delete mode 100644 meet-ce/backend/openapi/components/responses/success-update-room-member.yaml delete mode 100644 meet-ce/backend/openapi/components/responses/success-update-room-roles.yaml create mode 100644 meet-ce/backend/openapi/components/schemas/internal/room-member-role-permissions.yaml create mode 100644 meet-ce/backend/openapi/components/schemas/internal/user-credentials.yaml delete mode 100644 meet-ce/backend/openapi/components/schemas/meet-permissions.yaml delete mode 100644 meet-ce/backend/openapi/components/schemas/meet-room-anonymous-config.yaml delete mode 100644 meet-ce/backend/openapi/components/schemas/meet-room-member.yaml delete mode 100644 meet-ce/backend/openapi/components/schemas/meet-room-roles-config.yaml diff --git a/meet-ce/backend/openapi/components/parameters/internal/secret.yaml b/meet-ce/backend/openapi/components/parameters/internal/secret.yaml new file mode 100644 index 00000000..c5633f28 --- /dev/null +++ b/meet-ce/backend/openapi/components/parameters/internal/secret.yaml @@ -0,0 +1,6 @@ +name: secret +in: path +required: true +description: The secret value from the room URL used to access the room. +schema: + type: string diff --git a/meet-ce/backend/openapi/components/parameters/internal/userId-path.yaml b/meet-ce/backend/openapi/components/parameters/internal/userId-path.yaml deleted file mode 100644 index 8f4e6c05..00000000 --- a/meet-ce/backend/openapi/components/parameters/internal/userId-path.yaml +++ /dev/null @@ -1,7 +0,0 @@ -name: userId -in: path -required: true -description: The unique identifier of the user. -schema: - type: string -example: 'alice_smith' diff --git a/meet-ce/backend/openapi/components/parameters/member-id-path.yaml b/meet-ce/backend/openapi/components/parameters/member-id-path.yaml deleted file mode 100644 index 9a735438..00000000 --- a/meet-ce/backend/openapi/components/parameters/member-id-path.yaml +++ /dev/null @@ -1,7 +0,0 @@ -name: memberId -in: path -required: true -description: The unique identifier of the room member. -schema: - type: string -example: 'abc123' diff --git a/meet-ce/backend/openapi/components/parameters/room-member-fields.yaml b/meet-ce/backend/openapi/components/parameters/room-member-fields.yaml deleted file mode 100644 index d03dd414..00000000 --- a/meet-ce/backend/openapi/components/parameters/room-member-fields.yaml +++ /dev/null @@ -1,9 +0,0 @@ -name: fields -in: query -description: > - Specifies which fields to include in the response for the room member resource. - Provide a comma-separated list of field names. -required: false -schema: - type: string -example: 'accessUrl,baseRole' diff --git a/meet-ce/backend/openapi/components/requestBodies/add-room-member-request.yaml b/meet-ce/backend/openapi/components/requestBodies/add-room-member-request.yaml deleted file mode 100644 index 9aed5903..00000000 --- a/meet-ce/backend/openapi/components/requestBodies/add-room-member-request.yaml +++ /dev/null @@ -1,68 +0,0 @@ -description: Room member addition options -required: true -content: - application/json: - schema: - type: object - properties: - userId: - type: string - example: 'alice_smith' - description: | - The unique identifier for an internal OpenVidu Meet user. This field should be provided when adding an internal Meet user as a member. - - If provided: - - The member will be associated with the Meet user account identified by this userId. - - The 'name' field should be left blank or an error will be fired. It will be automatically set based on the Meet user's profile name. - - The memberId will be set to this userId value. - - If omitted, the member will be treated as an external user and 'name' must be provided. - - Important: You must provide either 'userId' (for internal users) or 'name' (for external users), but NOT both. - If both are provided, a validation error will be returned. - name: - type: string - maxLength: 50 - example: 'Alice Smith' - description: | - The display name for the participant when joining the meeting with this member access. It is recommended to be unique for the members of the room to easily identify them in the meeting. - - This field is required only when adding an external user. The 'userId' field should be left blank or an error will be fired. - - Important: You must provide either 'userId' (for internal users) or 'name' (for external users), but NOT both. - If both are provided, a validation error will be returned. - baseRole: - type: string - enum: - - moderator - - speaker - example: 'speaker' - description: | - The base role that defines the default permissions for this member. Options are: - - moderator: By default, has full permissions to manage the room and meeting. - - speaker: By default, has permissions to publish audio and video streams. - - Individual permissions can be overridden through the customPermissions object. - customPermissions: - type: object - additionalProperties: - type: boolean - example: - canShareScreen: false - canRecord: true - description: | - An optional object containing custom permission overrides for the base role. - Only include the permissions you want to override from the base role defaults. - Each property should be a permission name (e.g., 'canRecord', 'canShareScreen') with a boolean value. - - For the complete list of all available permissions, see the full permissions schema: - [MeetPermissions](#/schemas/MeetPermissions) - required: - - baseRole - description: | - Request body to add a new member to a room. - - Important: You must provide either 'userId' (for internal Meet users) or 'name' (for external users), but NOT both. - - If 'userId' is provided, the member will be linked to an internal user account and 'name' will be set from that account. - - If 'name' is provided, the member will be treated as an external user without a linked account. - - If both 'userId' and 'name' are provided or neither is provided, the request will fail with a validation error. diff --git a/meet-ce/backend/openapi/components/requestBodies/internal/create-user-request.yaml b/meet-ce/backend/openapi/components/requestBodies/internal/create-user-request.yaml deleted file mode 100644 index 73a98700..00000000 --- a/meet-ce/backend/openapi/components/requestBodies/internal/create-user-request.yaml +++ /dev/null @@ -1,42 +0,0 @@ -description: User creation options -required: true -content: - application/json: - schema: - type: object - properties: - userId: - type: string - pattern: '^[a-z0-9_]+$' - example: 'alice_smith' - description: | - The unique identifier for the new user. This must be unique across all users. - - Validation: Must contain only lowercase letters, numbers, and underscores. - name: - type: string - maxLength: 50 - example: 'Alice Smith' - description: | - The display name (profile name) for the user. - role: - type: string - enum: ['admin', 'user', 'room_member'] - example: 'user' - description: | - The role to assign to the user. Available roles: - - admin: Has full control over the entire application (configuration, users, rooms, recordings, etc). - - user: Can create and manage their own created rooms and associated recordings. Can also access rooms they are a member of, but without management permissions. - - room_member: Can only access rooms (and recordings) they are a member of, without ability to create or manage rooms. - password: - type: string - format: password - minLength: 5 - example: 'SecureP@ssw0rd' - description: | - The password for the new user account. - required: - - userId - - name - - role - - password diff --git a/meet-ce/backend/openapi/components/requestBodies/internal/login-user.yaml b/meet-ce/backend/openapi/components/requestBodies/internal/login-user.yaml index e03a825c..5147e08a 100644 --- a/meet-ce/backend/openapi/components/requestBodies/internal/login-user.yaml +++ b/meet-ce/backend/openapi/components/requestBodies/internal/login-user.yaml @@ -3,16 +3,4 @@ required: true content: application/json: schema: - type: object - properties: - username: - type: string - description: The username of the user. - example: 'admin' - password: - type: string - description: The password of the user. - example: 'password123' - required: - - username - - password + $ref: '../../schemas/internal/user-credentials.yaml' diff --git a/meet-ce/backend/openapi/components/requestBodies/internal/recording-token-request.yaml b/meet-ce/backend/openapi/components/requestBodies/internal/recording-token-request.yaml new file mode 100644 index 00000000..47d7ea5b --- /dev/null +++ b/meet-ce/backend/openapi/components/requestBodies/internal/recording-token-request.yaml @@ -0,0 +1,10 @@ +description: Room secret +required: true +content: + application/json: + schema: + type: object + properties: + secret: + type: string + description: The secret value from the room URL used to connect to the room. diff --git a/meet-ce/backend/openapi/components/requestBodies/update-room-anonymous-request.yaml b/meet-ce/backend/openapi/components/requestBodies/update-room-anonymous-request.yaml deleted file mode 100644 index 86195807..00000000 --- a/meet-ce/backend/openapi/components/requestBodies/update-room-anonymous-request.yaml +++ /dev/null @@ -1,6 +0,0 @@ -description: Room anonymous access configuration update options -required: true -content: - application/json: - schema: - $ref: '../schemas/meet-room-anonymous-config.yaml' diff --git a/meet-ce/backend/openapi/components/requestBodies/update-room-config-request.yaml b/meet-ce/backend/openapi/components/requestBodies/update-room-config-request.yaml index 20120bc4..5fe60832 100644 --- a/meet-ce/backend/openapi/components/requestBodies/update-room-config-request.yaml +++ b/meet-ce/backend/openapi/components/requestBodies/update-room-config-request.yaml @@ -8,10 +8,10 @@ content: $ref: '../schemas/meet-room-config.yaml#/MeetRoomConfig' example: config: + chat: + enabled: true recording: enabled: true encoding: H264_720P_30 - chat: - enabled: true virtualBackground: enabled: true diff --git a/meet-ce/backend/openapi/components/requestBodies/update-room-member-request.yaml b/meet-ce/backend/openapi/components/requestBodies/update-room-member-request.yaml deleted file mode 100644 index d303d320..00000000 --- a/meet-ce/backend/openapi/components/requestBodies/update-room-member-request.yaml +++ /dev/null @@ -1,33 +0,0 @@ -description: Room member update options -required: true -content: - application/json: - schema: - type: object - properties: - baseRole: - type: string - enum: - - moderator - - speaker - example: 'speaker' - description: | - The base role that defines the default permissions for this member. Options are: - - moderator: By default, has full permissions to manage the room and meeting. - - speaker: By default, has permissions to publish audio and video streams. - - Individual permissions can be overridden through the 'customPermissions' object. - customPermissions: - type: object - additionalProperties: - type: boolean - example: - canShareScreen: false - canRecord: true - description: | - An optional object containing custom permission overrides for the base role. - Only include the permissions you want to override from the base role defaults. - Each property should be a permission name (e.g., 'canRecord', 'canShareScreen') with a boolean value. - - For the complete list of all available permissions, see the full permissions schema: - [MeetPermissions](#/schemas/MeetPermissions) diff --git a/meet-ce/backend/openapi/components/requestBodies/update-room-roles-request.yaml b/meet-ce/backend/openapi/components/requestBodies/update-room-roles-request.yaml deleted file mode 100644 index 0c54e154..00000000 --- a/meet-ce/backend/openapi/components/requestBodies/update-room-roles-request.yaml +++ /dev/null @@ -1,6 +0,0 @@ -description: Room roles permissions update options -required: true -content: - application/json: - schema: - $ref: '../schemas/meet-room-roles-config.yaml' diff --git a/meet-ce/backend/openapi/components/responses/error-room-member-not-found.yaml b/meet-ce/backend/openapi/components/responses/error-room-member-not-found.yaml deleted file mode 100644 index 75a40058..00000000 --- a/meet-ce/backend/openapi/components/responses/error-room-member-not-found.yaml +++ /dev/null @@ -1,16 +0,0 @@ -description: Room member or room not found -content: - application/json: - schema: - $ref: '../schemas/error.yaml' - examples: - member_not_found: - summary: Room member does not exist in the specified room - value: - error: 'Room Error' - message: 'Room member "abc123" does not exist in room "room_123"' - room_not_found: - summary: Room does not exist - value: - error: 'Room Error' - message: 'Room "room_123" does not exist' diff --git a/meet-ce/backend/openapi/components/responses/internal/error-user-not-found.yaml b/meet-ce/backend/openapi/components/responses/internal/error-user-not-found.yaml deleted file mode 100644 index fedf37aa..00000000 --- a/meet-ce/backend/openapi/components/responses/internal/error-user-not-found.yaml +++ /dev/null @@ -1,8 +0,0 @@ -description: User not found -content: - application/json: - schema: - $ref: '../../schemas/error.yaml' - example: - error: 'User Error' - message: 'User "alice_smith" not found' diff --git a/meet-ce/backend/openapi/components/responses/internal/error-userId-already-exists.yaml b/meet-ce/backend/openapi/components/responses/internal/error-userId-already-exists.yaml deleted file mode 100644 index 07d0e643..00000000 --- a/meet-ce/backend/openapi/components/responses/internal/error-userId-already-exists.yaml +++ /dev/null @@ -1,8 +0,0 @@ -description: UserId already exists -content: - application/json: - schema: - $ref: '../../schemas/error.yaml' - example: - error: 'User Error' - message: 'User "alice_smith" already exists' diff --git a/meet-ce/backend/openapi/components/responses/internal/success-create-user.yaml b/meet-ce/backend/openapi/components/responses/internal/success-create-user.yaml deleted file mode 100644 index 713bb167..00000000 --- a/meet-ce/backend/openapi/components/responses/internal/success-create-user.yaml +++ /dev/null @@ -1,12 +0,0 @@ -description: User created successfully -content: - application/json: - schema: - $ref: '../../schemas/internal/meet-user.yaml' -headers: - Location: - description: URL of the newly created user - schema: - type: string - format: uri - example: https://your-api.com/internal-api/v1/users/alice_smith diff --git a/meet-ce/backend/openapi/components/responses/internal/success-delete-user.yaml b/meet-ce/backend/openapi/components/responses/internal/success-delete-user.yaml deleted file mode 100644 index e420d5fd..00000000 --- a/meet-ce/backend/openapi/components/responses/internal/success-delete-user.yaml +++ /dev/null @@ -1,10 +0,0 @@ -description: User deleted successfully -content: - application/json: - schema: - type: object - properties: - message: - type: string - example: - message: User 'alice_smith' deleted successfully diff --git a/meet-ce/backend/openapi/components/responses/internal/success-get-me.yaml b/meet-ce/backend/openapi/components/responses/internal/success-get-me.yaml deleted file mode 100644 index 2bdfe3ee..00000000 --- a/meet-ce/backend/openapi/components/responses/internal/success-get-me.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: Successfully retrieved authenticated user info -content: - application/json: - schema: - $ref: '../../schemas/internal/meet-user.yaml' diff --git a/meet-ce/backend/openapi/components/responses/internal/success-get-user.yaml b/meet-ce/backend/openapi/components/responses/internal/success-get-profile.yaml similarity index 68% rename from meet-ce/backend/openapi/components/responses/internal/success-get-user.yaml rename to meet-ce/backend/openapi/components/responses/internal/success-get-profile.yaml index 62744cdf..1ee87ee6 100644 --- a/meet-ce/backend/openapi/components/responses/internal/success-get-user.yaml +++ b/meet-ce/backend/openapi/components/responses/internal/success-get-profile.yaml @@ -1,4 +1,4 @@ -description: User retrieved successfully +description: Successfully retrieved user profile content: application/json: schema: diff --git a/meet-ce/backend/openapi/components/responses/internal/success-get-room-member-role.yaml b/meet-ce/backend/openapi/components/responses/internal/success-get-room-member-role.yaml new file mode 100644 index 00000000..19e125b9 --- /dev/null +++ b/meet-ce/backend/openapi/components/responses/internal/success-get-room-member-role.yaml @@ -0,0 +1,5 @@ +description: Successfully retrieved the room role and associated permissions +content: + application/json: + schema: + $ref: '../../schemas/internal/room-member-role-permissions.yaml' diff --git a/meet-ce/backend/openapi/components/responses/internal/success-get-room-member-roles.yaml b/meet-ce/backend/openapi/components/responses/internal/success-get-room-member-roles.yaml new file mode 100644 index 00000000..eef4ea5e --- /dev/null +++ b/meet-ce/backend/openapi/components/responses/internal/success-get-room-member-roles.yaml @@ -0,0 +1,38 @@ +description: Successfully retrieved all roles and associated permissions in a room +content: + application/json: + schema: + type: array + items: + $ref: '../../schemas/internal/room-member-role-permissions.yaml' + example: + - role: 'moderator' + permissions: + livekit: + roomJoin: true + room: 'room-123' + canPublish: true + canSubscribe: true + canPublishData: true + canUpdateOwnMetadata: true + openvidu: + canRecord: true + canRetrieveRecordings: true + canDeleteRecordings: true + canChat: true + canChangeVirtualBackground: true + - role: 'speaker' + permissions: + livekit: + roomJoin: true + room: 'room-123' + canPublish: true + canSubscribe: true + canPublishData: true + canUpdateOwnMetadata: true + openvidu: + canRecord: false + canRetrieveRecordings: true + canDeleteRecordings: false + canChat: true + canChangeVirtualBackground: true diff --git a/meet-ce/backend/openapi/components/responses/internal/success-get-users.yaml b/meet-ce/backend/openapi/components/responses/internal/success-get-users.yaml deleted file mode 100644 index 692023d3..00000000 --- a/meet-ce/backend/openapi/components/responses/internal/success-get-users.yaml +++ /dev/null @@ -1,40 +0,0 @@ -description: Successfully retrieved the list of users -content: - application/json: - schema: - type: object - properties: - users: - type: array - items: - $ref: '../../schemas/internal/meet-user.yaml' - pagination: - $ref: '../../schemas/meet-pagination.yaml' - examples: - multiple_users: - summary: Response with multiple users - value: - users: - - userId: 'admin' - name: 'Admin' - role: 'admin' - - userId: 'alice_smith' - name: 'Alice Smith' - role: 'user' - - userId: 'bob_jones' - name: 'Bob Jones' - role: 'room_member' - pagination: - nextPageToken: 'eyJvZmZzZXQiOjEwfQ==' - isTruncated: true - maxItems: 3 - single_page: - summary: Response with all users in a single page - value: - users: - - userId: 'admin' - name: 'Admin' - role: 'admin' - pagination: - isTruncated: false - maxItems: 10 diff --git a/meet-ce/backend/openapi/components/responses/success-add-room-member.yaml b/meet-ce/backend/openapi/components/responses/success-add-room-member.yaml deleted file mode 100644 index 885f251d..00000000 --- a/meet-ce/backend/openapi/components/responses/success-add-room-member.yaml +++ /dev/null @@ -1,12 +0,0 @@ -description: Room member added successfully -content: - application/json: - schema: - $ref: '../schemas/meet-room-member.yaml' -headers: - Location: - description: URL of the newly added room member - schema: - type: string - format: uri - example: https://your-api.com/api/v1/rooms/room-123/members/abc123 diff --git a/meet-ce/backend/openapi/components/responses/success-delete-room-member.yaml b/meet-ce/backend/openapi/components/responses/success-delete-room-member.yaml deleted file mode 100644 index bd6319fd..00000000 --- a/meet-ce/backend/openapi/components/responses/success-delete-room-member.yaml +++ /dev/null @@ -1,10 +0,0 @@ -description: Successfull deletion of the room member -content: - application/json: - schema: - type: object - properties: - message: - type: string - example: - message: Member 'abc123' deleted successfully from room 'room-123' diff --git a/meet-ce/backend/openapi/components/responses/success-get-room-member.yaml b/meet-ce/backend/openapi/components/responses/success-get-room-member.yaml deleted file mode 100644 index 293618ef..00000000 --- a/meet-ce/backend/openapi/components/responses/success-get-room-member.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: Success response for retrieving a room member info -content: - application/json: - schema: - $ref: '../schemas/meet-room-member.yaml' diff --git a/meet-ce/backend/openapi/components/responses/success-get-room-members.yaml b/meet-ce/backend/openapi/components/responses/success-get-room-members.yaml deleted file mode 100644 index b6e82d1c..00000000 --- a/meet-ce/backend/openapi/components/responses/success-get-room-members.yaml +++ /dev/null @@ -1,75 +0,0 @@ -description: Successfully retrieved the list of room members -content: - application/json: - schema: - type: object - properties: - members: - type: array - items: - $ref: '../schemas/meet-room-member.yaml' - pagination: - $ref: '../schemas/meet-pagination.yaml' - - examples: - complete_member_details: - summary: Full room member details response with multiple members - value: - members: - - memberId: 'alice_smith' - name: 'Alice Smith' - accessUrl: 'http://localhost:6080/room/room-123' - baseRole: 'moderator' - customPermissions: - canEndMeeting: false - effectivePermissions: - canRecord: true - canRetrieveRecordings: true - canDeleteRecordings: true - canJoinMeeting: true - canShareAccessLinks: true - canMakeModerator: true - canKickParticipants: true - canEndMeeting: false - canPublishVideo: true - canPublishAudio: true - canShareScreen: true - canReadChat: true - canWriteChat: true - canChangeVirtualBackground: true - - memberId: 'ext-abc123' - name: 'Bob' - accessUrl: 'http://localhost:6080/room/room-123?secret=ext-abc123' - baseRole: 'speaker' - customPermissions: - canShareScreen: false - canRecord: true - effectivePermissions: - canRecord: true - canRetrieveRecordings: true - canDeleteRecordings: false - canJoinMeeting: true - canShareAccessLinks: false - canMakeModerator: false - canKickParticipants: false - canEndMeeting: false - canPublishVideo: true - canPublishAudio: true - canShareScreen: false - canReadChat: true - canWriteChat: true - canChangeVirtualBackground: true - pagination: - isTruncated: false - maxItems: 10 - fields=accessUrl,baseRole: - summary: Response with only accessUrl and baseRole for each member - value: - members: - - accessUrl: 'http://localhost:6080/room/room-123' - baseRole: 'moderator' - - accessUrl: 'http://localhost:6080/room/room-123?secret=ext-abc123' - baseRole: 'speaker' - pagination: - isTruncated: false - maxItems: 10 diff --git a/meet-ce/backend/openapi/components/responses/success-get-room.yaml b/meet-ce/backend/openapi/components/responses/success-get-room.yaml index c6350cb6..7c55d12b 100644 --- a/meet-ce/backend/openapi/components/responses/success-get-room.yaml +++ b/meet-ce/backend/openapi/components/responses/success-get-room.yaml @@ -9,70 +9,35 @@ content: value: roomId: 'room-123' roomName: 'room' - owner: 'admin' creationDate: 1620000000000 autoDeletionDate: 1900000000000 autoDeletionPolicy: withMeeting: when_meeting_ends withRecordings: close config: + chat: + enabled: true recording: enabled: false layout: grid encoding: H264_720P_30 allowAccessTo: admin_moderator_speaker - chat: - enabled: true virtualBackground: enabled: true e2ee: enabled: false captions: enabled: true - roles: - moderator: - permissions: - canRecord: true - canRetrieveRecordings: true - canDeleteRecordings: true - canJoinMeeting: true - canShareAccessLinks: true - canMakeModerator: true - canKickParticipants: true - canEndMeeting: true - canPublishVideo: true - canPublishAudio: true - canShareScreen: true - canReadChat: true - canWriteChat: true - canChangeVirtualBackground: true - speaker: - permissions: - canRecord: false - canRetrieveRecordings: true - canDeleteRecordings: false - canJoinMeeting: true - canShareAccessLinks: false - canMakeModerator: false - canKickParticipants: false - canEndMeeting: false - canPublishVideo: true - canPublishAudio: true - canShareScreen: true - canReadChat: true - canWriteChat: true - canChangeVirtualBackground: true - anonymous: - moderator: - enabled: true - accessUrl: 'http://localhost:6080/room/room-123?secret=123456' - speaker: - enabled: true - accessUrl: 'http://localhost:6080/room/room-123?secret=654321' - accessUrl: 'http://localhost:6080/room/room-123' + moderatorUrl: 'http://localhost:6080/room/room-123?secret=123456' + speakerUrl: 'http://localhost:6080/room/room-123?secret=654321' status: open meetingEndAction: none + fields=roomId: + summary: Response with only the roomId + value: + roomId: 'room-123' + fields=roomId,roomName,creationDate,autoDeletionDate,config: summary: Room details with roomId, roomName, creationDate, autoDeletionDate, and config value: @@ -81,6 +46,8 @@ content: creationDate: 1620000000000 autoDeletionDate: 1900000000000 config: + chat: + enabled: true recording: enabled: false layout: grid @@ -94,20 +61,13 @@ content: codec: OPUS bitrate: 128 allowAccessTo: admin_moderator_speaker - chat: - enabled: true virtualBackground: enabled: true e2ee: enabled: false - fields=anonymous: - summary: Response containing only anonymous access configuration + fields=moderatorUrl,speakerUrl: + summary: Response containing only moderator and speaker URLs value: - anonymous: - moderator: - enabled: true - accessUrl: 'http://localhost:6080/room/room-123?secret=123456' - speaker: - enabled: true - accessUrl: 'http://localhost:6080/room/room-123?secret=654321' + moderatorUrl: 'http://localhost:6080/room/room-123?secret=123456' + speakerUrl: 'http://localhost:6080/room/room-123?secret=654321' diff --git a/meet-ce/backend/openapi/components/responses/success-get-rooms.yaml b/meet-ce/backend/openapi/components/responses/success-get-rooms.yaml index 6166494b..6d98d822 100644 --- a/meet-ce/backend/openapi/components/responses/success-get-rooms.yaml +++ b/meet-ce/backend/openapi/components/responses/success-get-rooms.yaml @@ -18,78 +18,39 @@ content: rooms: - roomId: 'room-123' roomName: 'room' - owner: 'admin' creationDate: 1620000000000 autoDeletionDate: 1900000000000 autoDeletionPolicy: withMeeting: when_meeting_ends withRecordings: close config: + chat: + enabled: true recording: enabled: false layout: grid encoding: H264_720P_30 allowAccessTo: admin_moderator_speaker - chat: - enabled: true virtualBackground: enabled: true e2ee: enabled: false captions: enabled: true - roles: - moderator: - permissions: - canRecord: true - canRetrieveRecordings: true - canDeleteRecordings: true - canJoinMeeting: true - canShareAccessLinks: true - canMakeModerator: true - canKickParticipants: true - canEndMeeting: true - canPublishVideo: true - canPublishAudio: true - canShareScreen: true - canReadChat: true - canWriteChat: true - canChangeVirtualBackground: true - speaker: - permissions: - canRecord: false - canRetrieveRecordings: true - canDeleteRecordings: false - canJoinMeeting: true - canShareAccessLinks: false - canMakeModerator: false - canKickParticipants: false - canEndMeeting: false - canPublishVideo: true - canPublishAudio: true - canShareScreen: true - canReadChat: true - canWriteChat: true - canChangeVirtualBackground: true - anonymous: - moderator: - enabled: true - accessUrl: 'http://localhost:6080/room/room-123?secret=123456' - speaker: - enabled: true - accessUrl: 'http://localhost:6080/room/room-123?secret=654321' - accessUrl: 'http://localhost:6080/room/room-123' + moderatorUrl: 'http://localhost:6080/room/room-123?secret=123456' + speakerUrl: 'http://localhost:6080/room/room-123?secret=654321' status: open meetingEndAction: none - roomId: 'room-456' roomName: 'room' - owner: 'alice_smith' creationDate: 1620001000000 autoDeletionDate: 1900000000000 autoDeletionPolicy: withMeeting: when_meeting_ends withRecordings: close config: + chat: + enabled: false recording: enabled: true layout: grid @@ -103,53 +64,12 @@ content: codec: AAC bitrate: 192 allowAccessTo: admin_moderator_speaker - chat: - enabled: false virtualBackground: enabled: false e2ee: enabled: false - roles: - moderator: - permissions: - canRecord: true - canRetrieveRecordings: true - canDeleteRecordings: false - canJoinMeeting: true - canShareAccessLinks: true - canMakeModerator: false - canKickParticipants: true - canEndMeeting: true - canPublishVideo: true - canPublishAudio: true - canShareScreen: true - canReadChat: true - canWriteChat: true - canChangeVirtualBackground: true - speaker: - permissions: - canRecord: true - canRetrieveRecordings: true - canDeleteRecordings: false - canJoinMeeting: true - canShareAccessLinks: false - canMakeModerator: false - canKickParticipants: false - canEndMeeting: false - canPublishVideo: true - canPublishAudio: true - canShareScreen: false - canReadChat: true - canWriteChat: true - canChangeVirtualBackground: true - anonymous: - moderator: - enabled: false - accessUrl: 'http://localhost:6080/room/room-456?secret=789012' - speaker: - enabled: true - accessUrl: 'http://localhost:6080/room/room-456?secret=210987' - accessUrl: 'http://localhost:6080/room/room-456' + moderatorUrl: 'http://localhost:6080/room/room-456?secret=789012' + speakerUrl: 'http://localhost:6080/room/room-456?secret=210987' status: open meetingEndAction: none pagination: @@ -174,10 +94,10 @@ content: creationDate: 1620000000000 autoDeletionDate: 1900000000000 config: - recording: - enabled: false chat: enabled: true + recording: + enabled: false virtualBackground: enabled: true e2ee: @@ -187,10 +107,10 @@ content: creationDate: 1620001000000 autoDeletionDate: 1900000000000 config: - recording: - enabled: true chat: enabled: false + recording: + enabled: true virtualBackground: enabled: false e2ee: @@ -199,3 +119,15 @@ content: isTruncated: true nextPageToken: 'abc123' maxItems: 10 + + fields=moderatorUrl,speakerUrl: + summary: Response containing only moderator and speaker URLs + value: + rooms: + - moderatorUrl: 'http://localhost:6080/room/room-123?secret=123456' + speakerUrl: 'http://localhost:6080/room/room-123?secret=654321' + - moderatorUrl: 'http://localhost:6080/room/room-456?secret=789012' + speakerUrl: 'http://localhost:6080/room/room-456?secret=210987' + pagination: + isTruncated: false + maxItems: 10 diff --git a/meet-ce/backend/openapi/components/responses/success-room-process-deletion.yaml b/meet-ce/backend/openapi/components/responses/success-room-process-deletion.yaml index 6226987f..a1931dcc 100644 --- a/meet-ce/backend/openapi/components/responses/success-room-process-deletion.yaml +++ b/meet-ce/backend/openapi/components/responses/success-room-process-deletion.yaml @@ -39,58 +39,16 @@ content: room: roomId: room-123 roomName: room - owner: 'admin' creationDate: 1620000000000 config: - recording: - enabled: false chat: enabled: true + recording: + enabled: false virtualBackground: enabled: true - e2ee: - enabled: false - roles: - moderator: - permissions: - canRecord: true - canRetrieveRecordings: true - canDeleteRecordings: true - canJoinMeeting: true - canShareAccessLinks: true - canMakeModerator: true - canKickParticipants: true - canEndMeeting: true - canPublishVideo: true - canPublishAudio: true - canShareScreen: true - canReadChat: true - canWriteChat: true - canChangeVirtualBackground: true - speaker: - permissions: - canRecord: false - canRetrieveRecordings: true - canDeleteRecordings: false - canJoinMeeting: true - canShareAccessLinks: false - canMakeModerator: false - canKickParticipants: false - canEndMeeting: false - canPublishVideo: true - canPublishAudio: true - canShareScreen: true - canReadChat: true - canWriteChat: true - canChangeVirtualBackground: true - anonymous: - moderator: - enabled: true - accessUrl: 'http://localhost:6080/room/room-123?secret=123456' - speaker: - enabled: true - accessUrl: 'http://localhost:6080/room/room-123?secret=654321' - accessUrl: 'http://localhost:6080/room/room-123' + moderatorUrl: 'http://localhost:6080/room/room-123?secret=123456' + speakerUrl: 'http://localhost:6080/room/room-123?secret=654321' status: closed meetingEndAction: none room_with_active_meeting_and_recordings_deleted: @@ -104,57 +62,15 @@ content: room: roomId: room-123 roomName: room - owner: 'admin' creationDate: 1620000000000 config: - recording: - enabled: false chat: enabled: true + recording: + enabled: false virtualBackground: enabled: true - e2ee: - enabled: false - roles: - moderator: - permissions: - canRecord: true - canRetrieveRecordings: true - canDeleteRecordings: true - canJoinMeeting: true - canShareAccessLinks: true - canMakeModerator: true - canKickParticipants: true - canEndMeeting: true - canPublishVideo: true - canPublishAudio: true - canShareScreen: true - canReadChat: true - canWriteChat: true - canChangeVirtualBackground: true - speaker: - permissions: - canRecord: false - canRetrieveRecordings: true - canDeleteRecordings: false - canJoinMeeting: true - canShareAccessLinks: false - canMakeModerator: false - canKickParticipants: false - canEndMeeting: false - canPublishVideo: true - canPublishAudio: true - canShareScreen: true - canReadChat: true - canWriteChat: true - canChangeVirtualBackground: true - anonymous: - moderator: - enabled: true - accessUrl: 'http://localhost:6080/room/room-123?secret=123456' - speaker: - enabled: true - accessUrl: 'http://localhost:6080/room/room-123?secret=654321' - accessUrl: 'http://localhost:6080/room/room-123' + moderatorUrl: 'http://localhost:6080/room/room-123?secret=123456' + speakerUrl: 'http://localhost:6080/room/room-123?secret=654321' status: active_meeting meetingEndAction: close diff --git a/meet-ce/backend/openapi/components/responses/success-room-schedule-deletion.yaml b/meet-ce/backend/openapi/components/responses/success-room-schedule-deletion.yaml index 51d109c6..b83feebc 100644 --- a/meet-ce/backend/openapi/components/responses/success-room-schedule-deletion.yaml +++ b/meet-ce/backend/openapi/components/responses/success-room-schedule-deletion.yaml @@ -24,58 +24,16 @@ content: room: roomId: room-123 roomName: room - owner: 'admin' creationDate: 1620000000000 config: - recording: - enabled: false chat: enabled: true + recording: + enabled: false virtualBackground: enabled: true - e2ee: - enabled: false - roles: - moderator: - permissions: - canRecord: true - canRetrieveRecordings: true - canDeleteRecordings: true - canJoinMeeting: true - canShareAccessLinks: true - canMakeModerator: true - canKickParticipants: true - canEndMeeting: true - canPublishVideo: true - canPublishAudio: true - canShareScreen: true - canReadChat: true - canWriteChat: true - canChangeVirtualBackground: true - speaker: - permissions: - canRecord: false - canRetrieveRecordings: true - canDeleteRecordings: false - canJoinMeeting: true - canShareAccessLinks: false - canMakeModerator: false - canKickParticipants: false - canEndMeeting: false - canPublishVideo: true - canPublishAudio: true - canShareScreen: true - canReadChat: true - canWriteChat: true - canChangeVirtualBackground: true - anonymous: - moderator: - enabled: true - accessUrl: 'http://localhost:6080/room/room-123?secret=123456' - speaker: - enabled: true - accessUrl: 'http://localhost:6080/room/room-123?secret=654321' - accessUrl: 'http://localhost:6080/room/room-123' + moderatorUrl: 'http://localhost:6080/room/room-123?secret=123456' + speakerUrl: 'http://localhost:6080/room/room-123?secret=654321' status: active_meeting meetingEndAction: delete room_with_active_meeting_and_recordings_scheduled_to_be_deleted: @@ -85,58 +43,16 @@ content: room: roomId: room-123 roomName: room - owner: 'admin' creationDate: 1620000000000 config: - recording: - enabled: false chat: enabled: true + recording: + enabled: false virtualBackground: enabled: true - e2ee: - enabled: false - roles: - moderator: - permissions: - canRecord: true - canRetrieveRecordings: true - canDeleteRecordings: true - canJoinMeeting: true - canShareAccessLinks: true - canMakeModerator: true - canKickParticipants: true - canEndMeeting: true - canPublishVideo: true - canPublishAudio: true - canShareScreen: true - canReadChat: true - canWriteChat: true - canChangeVirtualBackground: true - speaker: - permissions: - canRecord: false - canRetrieveRecordings: true - canDeleteRecordings: false - canJoinMeeting: true - canShareAccessLinks: false - canMakeModerator: false - canKickParticipants: false - canEndMeeting: false - canPublishVideo: true - canPublishAudio: true - canShareScreen: true - canReadChat: true - canWriteChat: true - canChangeVirtualBackground: true - anonymous: - moderator: - enabled: true - accessUrl: 'http://localhost:6080/room/room-123?secret=123456' - speaker: - enabled: true - accessUrl: 'http://localhost:6080/room/room-123?secret=654321' - accessUrl: 'http://localhost:6080/room/room-123' + moderatorUrl: 'http://localhost:6080/room/room-123?secret=123456' + speakerUrl: 'http://localhost:6080/room/room-123?secret=654321' status: active_meeting meetingEndAction: delete room_with_active_meeting_scheduled_to_be_closed: @@ -146,7 +62,6 @@ content: room: roomId: room-123 roomName: room - owner: 'admin' creationDate: 1620000000000 config: chat: @@ -155,48 +70,7 @@ content: enabled: false virtualBackground: enabled: true - e2ee: - enabled: false - roles: - moderator: - permissions: - canRecord: true - canRetrieveRecordings: true - canDeleteRecordings: true - canJoinMeeting: true - canShareAccessLinks: true - canMakeModerator: true - canKickParticipants: true - canEndMeeting: true - canPublishVideo: true - canPublishAudio: true - canShareScreen: true - canReadChat: true - canWriteChat: true - canChangeVirtualBackground: true - speaker: - permissions: - canRecord: false - canRetrieveRecordings: true - canDeleteRecordings: false - canJoinMeeting: true - canShareAccessLinks: false - canMakeModerator: false - canKickParticipants: false - canEndMeeting: false - canPublishVideo: true - canPublishAudio: true - canShareScreen: true - canReadChat: true - canWriteChat: true - canChangeVirtualBackground: true - anonymous: - moderator: - enabled: true - accessUrl: 'http://localhost:6080/room/room-123?secret=123456' - speaker: - enabled: true - accessUrl: 'http://localhost:6080/room/room-123?secret=654321' - accessUrl: 'http://localhost:6080/room/room-123' + moderatorUrl: 'http://localhost:6080/room/room-123?secret=123456' + speakerUrl: 'http://localhost:6080/room/room-123?secret=654321' status: active_meeting meetingEndAction: close diff --git a/meet-ce/backend/openapi/components/responses/success-update-room-anonymous.yaml b/meet-ce/backend/openapi/components/responses/success-update-room-anonymous.yaml deleted file mode 100644 index d739418f..00000000 --- a/meet-ce/backend/openapi/components/responses/success-update-room-anonymous.yaml +++ /dev/null @@ -1,10 +0,0 @@ -description: Success response for updating room anonymous access configuration -content: - application/json: - schema: - type: object - properties: - message: - type: string - example: - message: Anonymous access config for room 'room-123' updated successfully diff --git a/meet-ce/backend/openapi/components/responses/success-update-room-member.yaml b/meet-ce/backend/openapi/components/responses/success-update-room-member.yaml deleted file mode 100644 index 0c00f0f9..00000000 --- a/meet-ce/backend/openapi/components/responses/success-update-room-member.yaml +++ /dev/null @@ -1,5 +0,0 @@ -description: Room member updated successfully -content: - application/json: - schema: - $ref: '../schemas/meet-room-member.yaml' diff --git a/meet-ce/backend/openapi/components/responses/success-update-room-roles.yaml b/meet-ce/backend/openapi/components/responses/success-update-room-roles.yaml deleted file mode 100644 index 23a41b64..00000000 --- a/meet-ce/backend/openapi/components/responses/success-update-room-roles.yaml +++ /dev/null @@ -1,10 +0,0 @@ -description: Success response for updating room roles configuration -content: - application/json: - schema: - type: object - properties: - message: - type: string - example: - message: Roles permissions for room 'room-123' updated successfully diff --git a/meet-ce/backend/openapi/components/schemas/internal/meet-user.yaml b/meet-ce/backend/openapi/components/schemas/internal/meet-user.yaml index bce0803a..3bdae212 100644 --- a/meet-ce/backend/openapi/components/schemas/internal/meet-user.yaml +++ b/meet-ce/backend/openapi/components/schemas/internal/meet-user.yaml @@ -1,21 +1,13 @@ type: object properties: - userId: + username: type: string - example: 'alice_smith' - description: | - The unique identifier of the user. - name: - type: string - example: 'Alice Smith' - description: | - The display name (profile name) of the user. - role: - type: string - enum: ['admin', 'user', 'room_member'] - example: 'user' - description: | - The role assigned to the user. Available roles: - - admin: Has full control over the entire application (configuration, users, rooms, recordings, etc). - - user: Can create and manage their own created rooms and associated recordings. Can also access rooms they are a member of, but without management permissions. - - room_member: Can only access rooms (and recordings) they are a member of, without ability to create or manage rooms. + example: 'admin' + description: The username of the authenticated user. + roles: + type: array + items: + type: string + enum: ['admin', 'user'] + example: ['admin', 'user'] + description: A list of roles assigned to the authenticated user. diff --git a/meet-ce/backend/openapi/components/schemas/internal/room-member-role-permissions.yaml b/meet-ce/backend/openapi/components/schemas/internal/room-member-role-permissions.yaml new file mode 100644 index 00000000..68032014 --- /dev/null +++ b/meet-ce/backend/openapi/components/schemas/internal/room-member-role-permissions.yaml @@ -0,0 +1,74 @@ +type: object +properties: + role: + type: string + enum: ['moderator', 'speaker'] + description: | + A role that a user can have as a member of a room. + The role determines the permissions of the user in the room. + - `moderator`: Can manage the room resources and meeting participants. + - `speaker`: Can publish media streams to the meeting. + example: 'moderator' + permissions: + type: object + properties: + livekit: + type: object + properties: + roomJoin: + type: boolean + description: > + Indicates whether the participant can join a room. + example: true + room: + type: string + description: > + Unique identifier of the room to which the participant is assigned. + canPublish: + type: boolean + description: > + Indicates whether the participant can publish media streams to the room. + example: true + canSubscribe: + type: boolean + description: > + Indicates whether the participant can subscribe to media streams in the room. + example: true + canPublishData: + type: boolean + description: > + Indicates whether the participant can publish data messages to the room. + example: true + canUpdateOwnMetadata: + type: boolean + description: > + Indicates whether the participant can update their own metadata. + example: true + openvidu: + type: object + properties: + canRecord: + type: boolean + description: > + Indicates whether the user can record a meeting in the room. + example: true + canRetrieveRecordings: + type: boolean + description: > + Indicates whether the user can retrieve and play recordings of meetings in the room. + example: true + canDeleteRecordings: + type: boolean + description: > + Indicates whether the user can delete recordings of meetings in the room. + example: true + canChat: + type: boolean + description: > + Indicates whether the user can send and receive chat messages in the room. + example: true + canChangeVirtualBackground: + type: boolean + description: > + Indicates whether the user can change their own virtual background. + example: true diff --git a/meet-ce/backend/openapi/components/schemas/internal/user-credentials.yaml b/meet-ce/backend/openapi/components/schemas/internal/user-credentials.yaml new file mode 100644 index 00000000..6a12c2b9 --- /dev/null +++ b/meet-ce/backend/openapi/components/schemas/internal/user-credentials.yaml @@ -0,0 +1,13 @@ +type: object +required: + - username + - password +properties: + username: + type: string + description: The username of the user. + example: 'admin' + password: + type: string + description: The password of the user. + example: 'password123' \ No newline at end of file diff --git a/meet-ce/backend/openapi/components/schemas/meet-permissions.yaml b/meet-ce/backend/openapi/components/schemas/meet-permissions.yaml deleted file mode 100644 index 6b614e7c..00000000 --- a/meet-ce/backend/openapi/components/schemas/meet-permissions.yaml +++ /dev/null @@ -1,58 +0,0 @@ -type: object -properties: - canRecord: - type: boolean - example: true - description: Can start/stop recording the meeting. - canRetrieveRecordings: - type: boolean - example: true - description: Can list and play recordings. - canDeleteRecordings: - type: boolean - example: false - description: Can delete recordings. - canJoinMeeting: - type: boolean - example: true - description: Can join the meeting. - canShareAccessLinks: - type: boolean - example: false - description: Can share access links to invite others. - canMakeModerator: - type: boolean - example: false - description: Can promote other participants to moderator role. - canKickParticipants: - type: boolean - example: false - description: Can remove other participants from the meeting. - canEndMeeting: - type: boolean - example: false - description: Can end the meeting for all participants. - canPublishVideo: - type: boolean - example: true - description: Can publish video in the meeting. - canPublishAudio: - type: boolean - example: true - description: Can publish audio in the meeting. - canShareScreen: - type: boolean - example: false - description: Can share screen in the meeting. - canReadChat: - type: boolean - example: true - description: Can read chat messages in the meeting. - canWriteChat: - type: boolean - example: true - description: Can send chat messages in the meeting. - canChangeVirtualBackground: - type: boolean - example: true - description: Can change the virtual background. diff --git a/meet-ce/backend/openapi/components/schemas/meet-room-anonymous-config.yaml b/meet-ce/backend/openapi/components/schemas/meet-room-anonymous-config.yaml deleted file mode 100644 index e824804f..00000000 --- a/meet-ce/backend/openapi/components/schemas/meet-room-anonymous-config.yaml +++ /dev/null @@ -1,24 +0,0 @@ -type: object -properties: - moderator: - type: object - properties: - enabled: - type: boolean - default: true - example: true - description: | - Enables or disables anonymous access for the moderator role. - speaker: - type: object - properties: - enabled: - type: boolean - default: true - example: true - description: | - Enables or disables anonymous access for the speaker role. -description: | - Configuration for anonymous access. - - Both moderator and speaker fields are optional. If not specified, current configuration will be maintained. diff --git a/meet-ce/backend/openapi/components/schemas/meet-room-member.yaml b/meet-ce/backend/openapi/components/schemas/meet-room-member.yaml deleted file mode 100644 index e82a6841..00000000 --- a/meet-ce/backend/openapi/components/schemas/meet-room-member.yaml +++ /dev/null @@ -1,53 +0,0 @@ -type: object -properties: - memberId: - type: string - example: 'alice_smith' - description: | - The unique identifier of the room member. - - - For internal users: This is set to the userId of the linked Meet user account. - - For external users: This is an automatically generated unique identifier starting from 'ext-'. - name: - type: string - example: 'Alice Smith' - description: | - The display name for the participant when joining the meeting with this member access. - - - For OpenVidu Meet users, this is their profile name. - - For external users, this is the assigned name. - accessUrl: - type: string - format: uri - example: 'http://localhost:6080/room/room-123' - description: > - The unique URL for this member to access the room. This URL is different from the moderator and speaker URLs - and provides access with the specific permissions assigned to this member. - baseRole: - type: string - enum: - - moderator - - speaker - example: 'speaker' - description: | - The base role that defines the default permissions for this member. Options are: - - moderator: By default, has full permissions to manage the room and meeting. - - speaker: By default, has permissions to publish audio and video streams. - - Individual permissions can be overridden through the customPermissions object. - customPermissions: - type: object - additionalProperties: - type: boolean - example: - canShareScreen: false - canRecord: true - description: | - Custom permission overrides for this member. This object contains only the permissions that differ from the base role defaults. - - Each property is a permission name with a boolean value indicating whether the permission is granted or denied. - effectivePermissions: - $ref: meet-permissions.yaml - description: > - The complete set of effective permissions for this member. This object is calculated by applying the customPermissions - overrides to the base role defaults, resulting in the final permissions that will be enforced. diff --git a/meet-ce/backend/openapi/components/schemas/meet-room-options.yaml b/meet-ce/backend/openapi/components/schemas/meet-room-options.yaml index 2b6651a5..0c0ac3e3 100644 --- a/meet-ce/backend/openapi/components/schemas/meet-room-options.yaml +++ b/meet-ce/backend/openapi/components/schemas/meet-room-options.yaml @@ -58,22 +58,3 @@ properties: $ref: './meet-room-config.yaml#/MeetRoomConfig' description: > The config for the room. These config will be used to configure the room's settings. - roles: - $ref: meet-room-roles-config.yaml - description: | - Configuration for role permissions. - - By default (if not specified), default permissions will be used for both moderator and speaker roles: - - Moderator: Full permissions to manage the room and meeting. - - Speaker: Permissions to publish audio and video streams. - - You can customize this by providing partial permissions for each role (only specify the permissions you want to override). - anonymous: - $ref: meet-room-anonymous-config.yaml - description: | - Configuration for anonymous access to the room. - - By default (if not specified), anonymous access is enabled for both moderators and speakers. - You can customize this behavior by disabling anonymous access for specific roles (moderator/speaker) with per-role `enabled: false` - - Permissions for anonymous users are determined by the room's role permissions. diff --git a/meet-ce/backend/openapi/components/schemas/meet-room-roles-config.yaml b/meet-ce/backend/openapi/components/schemas/meet-room-roles-config.yaml deleted file mode 100644 index 19ddec05..00000000 --- a/meet-ce/backend/openapi/components/schemas/meet-room-roles-config.yaml +++ /dev/null @@ -1,40 +0,0 @@ -type: object -properties: - moderator: - type: object - properties: - permissions: - type: object - additionalProperties: - type: boolean - example: - canRecord: false - canKickParticipants: false - description: | - Partial permissions object for the moderator role. - Only specify the permissions you want to override from the default or previously configured moderator permissions. - Each property should be a permission name (e.g., 'canRecord', 'canShareScreen') with a boolean value. - - For the complete list of all available permissions, see the full permissions schema: - [MeetPermissions](#/schemas/MeetPermissions) - speaker: - type: object - properties: - permissions: - type: object - additionalProperties: - type: boolean - example: - canShareScreen: false - description: | - Partial permissions object for the speaker role. - Only specify the permissions you want to override from the default or previously configured speaker permissions. - Each property should be a permission name (e.g., 'canRecord', 'canShareScreen') with a boolean value. - - For the complete list of all available permissions, see the full permissions schema: - [MeetPermissions](#/schemas/MeetPermissions) -description: | - Configuration for role permissions. - - Both moderator and speaker fields are optional. If not specified, current permissions will be maintained. - For permissions, only specify the ones you want to change. diff --git a/meet-ce/backend/openapi/components/schemas/meet-room.yaml b/meet-ce/backend/openapi/components/schemas/meet-room.yaml index 4bdf7581..217bf919 100644 --- a/meet-ce/backend/openapi/components/schemas/meet-room.yaml +++ b/meet-ce/backend/openapi/components/schemas/meet-room.yaml @@ -6,18 +6,14 @@ properties: description: > The unique identifier of the room. This ID is generated by combining the room name with a unique identifier. roomName: - type: string + type: [string, 'null'] + maxLength: 50 example: 'room' + default: 'Room' description: | The display name of the room, used to identify it in a user-friendly way. This value does not need to be unique. - owner: - type: string - example: 'alice_smith' - description: | - The userId of the internal Meet user who owns this room. - If the room was created by a registered Meet user, this will be their userId. - If the room was created via the REST API using an API key, this will be the userId of the global admin (root user). + Maximum length: 50 characters. If not provided, the default value "Room" will be used. creationDate: type: number example: 1620000000000 @@ -35,10 +31,10 @@ properties: If not set, the room remains active until manually deleted. autoDeletionPolicy: + type: object description: > Policy for automatic deletion of the room and its contents. This includes settings for how the room should be handled when certain conditions are met. - type: object properties: withMeeting: type: string @@ -71,68 +67,18 @@ properties: # description: > # The maximum number of participants allowed in the room. If the number of participants exceeds # this limit, new participants will not be allowed to join. - roles: - description: > - Roles for the room. Defines the complete permissions for moderator and speaker roles. - type: object - properties: - moderator: - type: object - properties: - permissions: - $ref: meet-permissions.yaml - description: > - The complete set of permissions for the moderator role. These define what moderators can do in the meeting. - speaker: - type: object - properties: - permissions: - $ref: meet-permissions.yaml - description: > - The complete set of permissions for the speaker role. These define what speakers can do in the meeting. - anonymous: - description: > - Configuration for anonymous access to the room. Defines which roles have anonymous access enabled and their access URLs. - type: object - properties: - moderator: - type: object - properties: - enabled: - type: boolean - example: true - description: > - Whether anonymous access with moderator role is enabled. - accessUrl: - type: string - format: uri - example: 'http://localhost:6080/room/room-123?secret=123456' - description: > - The URL for anonymous moderators to access the room. - speaker: - type: object - properties: - enabled: - type: boolean - example: true - description: > - Whether anonymous access with speaker role is enabled. - accessUrl: - type: string - format: uri - example: 'http://localhost:6080/room/room-123?secret=654321' - description: > - The URL for anonymous speakers to access the room. - accessUrl: + moderatorUrl: type: string - format: uri - example: 'http://localhost:6080/room/room-123' - description: | - The general access URL for authenticated users to join the room. - - This URL should be used by: - - The room owner (internal Meet user who created the room) - - Internal Meet users who are members of the room + example: 'http://localhost:6080/room/room-123?secret=123456' + description: > + The URL for moderator room members to access the room. The moderator role has special permissions to manage the + room resources and meeting participants. + speakerUrl: + type: string + example: 'http://localhost:6080/room/room-123?secret=654321' + description: > + The URL for speaker room members to access the room. The speaker role has permissions to publish audio and + video streams to the meeting. status: type: string enum: diff --git a/meet-ce/backend/openapi/openvidu-meet-api.yaml b/meet-ce/backend/openapi/openvidu-meet-api.yaml index 999fd423..6c5b0201 100644 --- a/meet-ce/backend/openapi/openvidu-meet-api.yaml +++ b/meet-ce/backend/openapi/openvidu-meet-api.yaml @@ -15,16 +15,8 @@ paths: $ref: './paths/rooms.yaml#/~1rooms~1{roomId}' /rooms/{roomId}/config: $ref: './paths/rooms.yaml#/~1rooms~1{roomId}~1config' - /rooms/{roomId}/roles: - $ref: './paths/rooms.yaml#/~1rooms~1{roomId}~1roles' - /rooms/{roomId}/anonymous: - $ref: './paths/rooms.yaml#/~1rooms~1{roomId}~1anonymous' /rooms/{roomId}/status: $ref: './paths/rooms.yaml#/~1rooms~1{roomId}~1status' - /rooms/{roomId}/members: - $ref: './paths/rooms.yaml#/~1rooms~1{roomId}~1members' - /rooms/{roomId}/members/{memberId}: - $ref: './paths/rooms.yaml#/~1rooms~1{roomId}~1members~1{memberId}' /recordings: $ref: './paths/recordings.yaml#/~1recordings' /recordings/download: @@ -43,12 +35,10 @@ components: schemas: MeetRoom: $ref: components/schemas/meet-room.yaml + MeetRoomOptions: + $ref: components/schemas/meet-room-options.yaml MeetRoomConfig: $ref: './components/schemas/meet-room-config.yaml#/MeetRoomConfig' - MeetRoomMember: - $ref: components/schemas/meet-room-member.yaml - MeetPermissions: - $ref: components/schemas/meet-permissions.yaml MeetRecording: $ref: components/schemas/meet-recording.yaml MeetWebhookEvent: diff --git a/meet-ce/backend/openapi/openvidu-meet-internal-api.yaml b/meet-ce/backend/openapi/openvidu-meet-internal-api.yaml index 573002a1..28aa84c3 100644 --- a/meet-ce/backend/openapi/openvidu-meet-internal-api.yaml +++ b/meet-ce/backend/openapi/openvidu-meet-internal-api.yaml @@ -16,14 +16,10 @@ paths: $ref: './paths/internal/auth.yaml#/~1auth~1refresh' /api-keys: $ref: './paths/internal/api-keys.yaml#/~1auth~1api-keys' - /users: - $ref: './paths/internal/users.yaml#/~1users' - /users/me: - $ref: './paths/internal/users.yaml#/~1users~1me' + /users/profile: + $ref: './paths/internal/users.yaml#/~1users~1profile' /users/change-password: $ref: './paths/internal/users.yaml#/~1users~1change-password' - /users/{userId}: - $ref: './paths/internal/users.yaml#/~1users~1{userId}' /config/webhooks: $ref: './paths/internal/meet-global-config.yaml#/~1config~1webhooks' /config/webhooks/test: @@ -36,6 +32,10 @@ paths: $ref: './paths/internal/meet-global-config.yaml#/~1config~1captions' /rooms/{roomId}/token: $ref: './paths/internal/rooms.yaml#/~1rooms~1{roomId}~1token' + /rooms/{roomId}/roles: + $ref: './paths/internal/rooms.yaml#/~1rooms~1{roomId}~1roles' + /rooms/{roomId}/roles/{secret}: + $ref: './paths/internal/rooms.yaml#/~1rooms~1{roomId}~1roles~1{secret}' /meetings/{roomId}: $ref: './paths/internal/meetings.yaml#/~1meetings~1{roomId}' /meetings/{roomId}/participants/{participantIdentity}: @@ -61,12 +61,18 @@ components: $ref: components/schemas/internal/webhooks-config.yaml SecurityConfig: $ref: components/schemas/internal/global-security-config.yaml - RoomsAppearanceConfig: - $ref: components/schemas/internal/rooms-appearance-config.yaml MeetRoom: $ref: components/schemas/meet-room.yaml + MeetRoomOptions: + $ref: components/schemas/meet-room-options.yaml + MeetRoomConfig: + $ref: components/schemas/meet-room-config.yaml#/MeetRoomConfig + MeetRoomMemberRoleAndPermissions: + $ref: components/schemas/internal/room-member-role-permissions.yaml MeetAnalytics: $ref: components/schemas/internal/meet-analytics.yaml + MeetRecording: + $ref: components/schemas/meet-recording.yaml AiAssistantCreateRequest: $ref: components/schemas/internal/ai-assistant-create-request.yaml AiAssistantCreateResponse: diff --git a/meet-ce/backend/openapi/paths/internal/rooms.yaml b/meet-ce/backend/openapi/paths/internal/rooms.yaml index 8a353ae7..2959e1d3 100644 --- a/meet-ce/backend/openapi/paths/internal/rooms.yaml +++ b/meet-ce/backend/openapi/paths/internal/rooms.yaml @@ -29,3 +29,47 @@ $ref: '../../components/responses/validation-error.yaml' '500': $ref: '../../components/responses/internal-server-error.yaml' +/rooms/{roomId}/roles: + get: + operationId: getRoomMemberRolesAndPermissions + summary: Get room member roles and permissions + description: > + Retrieves the roles and associated permissions that a user can have as a member of a specified OpenVidu Meet room. + tags: + - Internal API - Rooms + parameters: + - $ref: '../../components/parameters/room-id-path.yaml' + responses: + '200': + $ref: '../../components/responses/internal/success-get-room-member-roles.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}/roles/{secret}: + get: + operationId: getRoomRoleAndPermissions + summary: Get room role and permissions + description: | + Retrieves the role and associated permissions that a user will have as a member of a specified OpenVidu Meet room + when using the URL that contains the given secret value. + + This endpoint is useful for checking the user's role and permissions before accessing the room. + tags: + - Internal API - Rooms + parameters: + - $ref: '../../components/parameters/room-id-path.yaml' + - $ref: '../../components/parameters/internal/secret.yaml' + responses: + '200': + $ref: '../../components/responses/internal/success-get-room-member-role.yaml' + '400': + $ref: '../../components/responses/internal/error-invalid-room-secret.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' diff --git a/meet-ce/backend/openapi/paths/internal/users.yaml b/meet-ce/backend/openapi/paths/internal/users.yaml index e44445b2..d94b7847 100644 --- a/meet-ce/backend/openapi/paths/internal/users.yaml +++ b/meet-ce/backend/openapi/paths/internal/users.yaml @@ -1,67 +1,16 @@ -/users: - post: - operationId: createUser - summary: Create a new user - description: | - Creates a new user account in the system. - - The userId must be unique. If a user with the specified userId already exists, - the request will fail with a conflict error. - tags: - - Internal API - Users - security: - - accessTokenHeader: [] - requestBody: - $ref: '../../components/requestBodies/internal/create-user-request.yaml' - responses: - '201': - $ref: '../../components/responses/internal/success-create-user.yaml' - '401': - $ref: '../../components/responses/unauthorized-error.yaml' - '403': - $ref: '../../components/responses/forbidden-error.yaml' - '409': - $ref: '../../components/responses/internal/error-userId-already-exists.yaml' - '422': - $ref: '../../components/responses/validation-error.yaml' - '500': - $ref: '../../components/responses/internal-server-error.yaml' +/users/profile: get: - operationId: getUsers - summary: Get all users + operationId: getUserProfile + summary: Get user profile description: > - Retrieves a paginated list of all users in the system. - tags: - - Internal API - Users - security: - - accessTokenHeader: [] - parameters: - - $ref: '../../components/parameters/max-items.yaml' - - $ref: '../../components/parameters/next-page-token.yaml' - responses: - '200': - $ref: '../../components/responses/internal/success-get-users.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' -/users/me: - get: - operationId: getMe - summary: Get authenticated user - description: > - Retrieves the details of the authenticated user. + Retrieves the profile information of the authenticated user. tags: - Internal API - Users security: - accessTokenHeader: [] responses: '200': - $ref: '../../components/responses/internal/success-get-me.yaml' + $ref: '../../components/responses/internal/success-get-profile.yaml' '401': $ref: '../../components/responses/unauthorized-error.yaml' /users/change-password: @@ -87,55 +36,3 @@ $ref: '../../components/responses/validation-error.yaml' '500': $ref: '../../components/responses/internal-server-error.yaml' -/users/{userId}: - get: - operationId: getUser - summary: Get a user - description: > - Retrieves the details of a specific user by their userId. - tags: - - Internal API - Users - security: - - accessTokenHeader: [] - parameters: - - $ref: '../../components/parameters/internal/userId-path.yaml' - responses: - '200': - $ref: '../../components/responses/internal/success-get-user.yaml' - '401': - $ref: '../../components/responses/unauthorized-error.yaml' - '403': - $ref: '../../components/responses/forbidden-error.yaml' - '404': - $ref: '../../components/responses/internal/error-user-not-found.yaml' - '422': - $ref: '../../components/responses/validation-error.yaml' - '500': - $ref: '../../components/responses/internal-server-error.yaml' - delete: - operationId: deleteUser - summary: Delete a user - description: | - Deletes a user from the system. - - This operation will remove the user account and may affect rooms and resources - associated with this user. - tags: - - Internal API - Users - security: - - accessTokenHeader: [] - parameters: - - $ref: '../../components/parameters/internal/userId-path.yaml' - responses: - '200': - $ref: '../../components/responses/internal/success-delete-user.yaml' - '401': - $ref: '../../components/responses/unauthorized-error.yaml' - '403': - $ref: '../../components/responses/forbidden-error.yaml' - '404': - $ref: '../../components/responses/internal/error-user-not-found.yaml' - '422': - $ref: '../../components/responses/validation-error.yaml' - '500': - $ref: '../../components/responses/internal-server-error.yaml' diff --git a/meet-ce/backend/openapi/paths/rooms.yaml b/meet-ce/backend/openapi/paths/rooms.yaml index c662f7f2..dc14f829 100644 --- a/meet-ce/backend/openapi/paths/rooms.yaml +++ b/meet-ce/backend/openapi/paths/rooms.yaml @@ -240,209 +240,3 @@ $ref: '../components/responses/validation-error.yaml' '500': $ref: '../components/responses/internal-server-error.yaml' -/rooms/{roomId}/roles: - put: - operationId: updateRoomRoles - summary: Update roles permissions for a room - description: | - Updates the permissions by role for the specified room. - - You can customize permissions for moderator and/or speaker roles. - Only specify the permissions you want to change from the current configuration. - tags: - - OpenVidu Meet - Rooms - security: - - apiKeyHeader: [] - - accessTokenHeader: [] - parameters: - - $ref: '../components/parameters/room-id-path.yaml' - requestBody: - $ref: '../components/requestBodies/update-room-roles-request.yaml' - responses: - '200': - $ref: '../components/responses/success-update-room-roles.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' -/rooms/{roomId}/anonymous: - put: - operationId: updateRoomAnonymous - summary: Update anonymous access config for a room - description: | - Updates the anonymous access configuration for the specified room. - - This allows you to enable or disable anonymous access for specific roles (moderator/speaker). - tags: - - OpenVidu Meet - Rooms - security: - - apiKeyHeader: [] - - accessTokenHeader: [] - parameters: - - $ref: '../components/parameters/room-id-path.yaml' - requestBody: - $ref: '../components/requestBodies/update-room-anonymous-request.yaml' - responses: - '200': - $ref: '../components/responses/success-update-room-anonymous.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' -/rooms/{roomId}/members: - post: - operationId: addRoomMember - summary: Add a member to a room - description: | - Adds a new member to the specified room with custom permissions. - - Each member receives a unique access URL that is different from the moderator and speaker URLs. - The member's permissions are based on a base role (moderator or speaker) with optional overrides. - - This allows fine-grained control over what each specific participant can do in the meeting. - tags: - - OpenVidu Meet - Rooms - security: - - apiKeyHeader: [] - parameters: - - $ref: '../components/parameters/room-id-path.yaml' - requestBody: - $ref: '../components/requestBodies/add-room-member-request.yaml' - responses: - '201': - $ref: '../components/responses/success-add-room-member.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' - get: - operationId: getRoomMembers - summary: Get all members of a room - description: > - Retrieves a paginated list of all members in the specified room. - Each member has custom access URLs and permissions that can differ from the default moderator and speaker roles. - tags: - - OpenVidu Meet - Rooms - security: - - apiKeyHeader: [] - parameters: - - $ref: '../components/parameters/room-id-path.yaml' - - $ref: '../components/parameters/room-member-fields.yaml' - - $ref: '../components/parameters/max-items.yaml' - - $ref: '../components/parameters/next-page-token.yaml' - responses: - '200': - $ref: '../components/responses/success-get-room-members.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' -/rooms/{roomId}/members/{memberId}: - get: - operationId: getRoomMember - summary: Get a room member - description: > - Retrieves the details of a specific room member by their member ID. - tags: - - OpenVidu Meet - Rooms - security: - - apiKeyHeader: [] - - roomMemberTokenHeader: [] - parameters: - - $ref: '../components/parameters/room-id-path.yaml' - - $ref: '../components/parameters/member-id-path.yaml' - responses: - '200': - $ref: '../components/responses/success-get-room-member.yaml' - '401': - $ref: '../components/responses/unauthorized-error.yaml' - '403': - $ref: '../components/responses/forbidden-error.yaml' - '404': - $ref: '../components/responses/error-room-member-not-found.yaml' - '422': - $ref: '../components/responses/validation-error.yaml' - '500': - $ref: '../components/responses/internal-server-error.yaml' - put: - operationId: updateRoomMember - summary: Update a room member - description: | - Updates the permissions and/or base role of a specific room member. - - You can modify the member's base role and custom permission overrides. - The effective permissions will be recalculated based on the new base role and custom permissions. - tags: - - OpenVidu Meet - Rooms - security: - - apiKeyHeader: [] - parameters: - - $ref: '../components/parameters/room-id-path.yaml' - - $ref: '../components/parameters/member-id-path.yaml' - requestBody: - $ref: '../components/requestBodies/update-room-member-request.yaml' - responses: - '200': - $ref: '../components/responses/success-update-room-member.yaml' - '401': - $ref: '../components/responses/unauthorized-error.yaml' - '403': - $ref: '../components/responses/forbidden-error.yaml' - '404': - $ref: '../components/responses/error-room-member-not-found.yaml' - '422': - $ref: '../components/responses/validation-error.yaml' - '500': - $ref: '../components/responses/internal-server-error.yaml' - delete: - operationId: deleteRoomMember - summary: Delete a room member - description: | - Removes a member from the specified room, revoking their access. - - If the member is currently in an active meeting, they will be immediately kicked out. - The member's access URL will no longer be valid after deletion. - tags: - - OpenVidu Meet - Rooms - security: - - apiKeyHeader: [] - parameters: - - $ref: '../components/parameters/room-id-path.yaml' - - $ref: '../components/parameters/member-id-path.yaml' - responses: - '200': - $ref: '../components/responses/success-delete-room-member.yaml' - '401': - $ref: '../components/responses/unauthorized-error.yaml' - '403': - $ref: '../components/responses/forbidden-error.yaml' - '404': - $ref: '../components/responses/error-room-member-not-found.yaml' - '422': - $ref: '../components/responses/validation-error.yaml' - '500': - $ref: '../components/responses/internal-server-error.yaml'