HTTP 403 Forbidden
Error: insufficient_scope [quality:evaluations:read]
at GenesysCloudSDK.WfmQualityClient.fetchEvaluation(forConversationId:) line 142
Trying to pull historical WFM quality scores into the iOS app so agents can review past web messaging transcripts offline. The OAuth token carries both conversations:read and wfm:quality:read scopes. Console logs show the request hits /api/v2/wfm/quality/evaluations?conversationId=mc-uuid. Switching to a voice conversation ID returns a 200 OK instantly. Web messaging IDs trip the authorization middleware every single time. Background session handling is doing jack all when the network drops, which is expected, but the scope rejection happens way before any timeout logic kicks in. Testing runs on EU-WEST with SDK v2.4.3. The routing configuration for the quality manager flow evaluates all messaging transcripts, yet the mobile client gets blocked. Push notification registration works fine, deep linking pulls the right chat history, but attaching the quality metadata breaks the whole flow. The sandbox environment throws the exact same 403. Checked the org settings, quality evaluations are definitely enabled for digital channels. The request payload looks clean.
{
"conversationId": "mc-8a9b7c6d-1234-5678-90ab-cdef12345678",
"channelType": "webchat",
"evaluationStatus": "pending"
}
WFM shift data pulls correctly using the same auth flow, so the token isn’t stale. The mobile background fetcher just hangs on this specific endpoint. iOS 17.4 handles the silent push fine, but the URLSession delegate never fires didReceiveChallenge. Genesys Cloud’s digital channel evaluation pipeline seems to enforce a different scope matrix than standard voice or email. The conversation object returns the correct mc- prefix, but the quality API rejects it. Logs from the EU-WEST gateway show the request never reaches the evaluation service. It gets dropped at the auth proxy. Running tests against BRT shift windows doesn’t change the response. We’ve been spinning up fresh test tenants to isolate the SDK version, but v2.4.3 and v2.5.0 behave identically. The quality manager dashboard shows the scores populated correctly. The gap is strictly on the mobile fetch call.
2024-05-12 14:32:01.882 [GenesysCloudSDK] ERROR: OAuthScopeMismatch detected for endpoint /api/v2/wfm/quality/evaluations
Expected: quality:evaluations:read
Provided: wfm:quality:read, conversations:read