Zoom Apps config response return unsupported Apis response for cohost

I’m working on small zoom app for inMeeting context.
Everything is working well when user has host role.
For co-host some api methods are unsupported, configResponse.unsupportedApis returns eg:
removeParticipantSpotlights
addParticipantSpotlight
removeAllFeedbackReaction
Api documentation says for all these methods are supported for coHost role. But for some reasons this doesnt’ work for me.

And question about getMeetingParticipants. Doc says that is supported for owner. I see this method works for host (even after switch host to another participant) and works for cohost too. So what does it mean that this method is supported for owner?

Above methods are added to “Features” in ZoomApp config. My scope is: zoomapp:inmeeting.

Thanks for any help with this.

Thank you for writing us @mapiech! To begin, can you tell us more about what you are aiming to achieve? This information will allow us to provide more specific and tailored guidance or alternative options. Specifically, out of the APIs that are not supported by the co-host, which APIs are looking to leverage in your implementation? Also, when you are calling configResponse.unsupportedApis, can you also share what getUserContext and getRunningContext return as well?

getUserContext

getRunningContext

Hey, thanks for your response! :slight_smile:
My app is not published. It’s under development.

getUserContext →

{participantId: '16780288', participantUUID: '4F1B0FB0-03BA-9723-491E-8FD2C98F08A6', role: 'coHost', screenName: 'Grupa 1', status: 'authorized'}

getRunningContext →

{context: 'inMeeting'}

What do I want to achieve?
I want to create app which helps to switch spotlights very quick and with hotkeys. Everything works when user who run app has assigned host role. For coHost - methods I mentioned before don’t work.

Documentation says that cohost can use these methods:
removeParticipantSpotlights
addParticipantSpotlight
removeAllFeedbackReaction
But I see following error in my console:

Uncaught (in promise) Error: No Permission for this API. [code:80012, reason:require_meeting_role]

My question is: do I code something wrong? or is bug in API?

Thanks!

Thanks for sharing these details & great question, @mapiech ! Can you also share the snippet of code handling making the calls? This will help diagnose what may be happening.

I think I use it in standard way:

config:

 async configureApp() {
        const configResponse = await zoomSdk.config({
            version: "0.16",
            popoutSize: { width: 480, height: 360 },
            capabilities: [
                "getMeetingParticipants",
                "onParticipantChange",
                "onFeedbackReaction",
                "onRemoveFeedbackReaction",
                "removeParticipantSpotlights",
                "addParticipantSpotlight",
                "removeAllFeedbackReaction",
                "onMyUserContextChange",
                "getMeetingContext",
                "getUserContext"
            ]
        })

        zoomSdk.onMyUserContextChange((event) => SpotlightApp.onMyUserContextChange(event))
        const participantContext = await zoomSdk.getUserContext()

        if(participantContext.role == "host" || participantContext.role == "coHost") {
            zoomSdk.onParticipantChange((event) => SpotlightApp.onParticipantChange(event))
            zoomSdk.onFeedbackReaction((event) => SpotlightApp.onFeedbackReaction(event))
            zoomSdk.onRemoveFeedbackReaction((event) => SpotlightApp.onRemoveFeedbackReaction(event))
        }
    }

and then I use methods from API, eg:

let spotlighted = await zoomSdk.getParticipantSpotlights()
const response = await zoomSdk.addParticipantSpotlight({ participantUUID: this.participantUUID })

Please notice that it works great when participantContext.role == “host”. I don’t understand why it doesn’t work when participantContext.role == “coHost”.

@mapiech,

Thank you for providing the code snippet, it’s much appreciated. Your implementation appears to be on point. After taking a closer look at the information shared along with the code, this may be an issue that needs to be addressed. I have already started working with our engineers to determine whether this is expected behavior. I will let you know if I receive any new information. If you have any questions or concerns, please don’t hesitate to let us know.

We are here to support you.