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.
