scope parameter on the refresh request is ignored, and the response carries the original set.
To use a new scope, the user must re-authorize your app. Until they do, their existing connection keeps working with the scopes it already has.
Check what a connection has
The token response lists the granted scopes:scope with the tokens and compare it to what a feature needs before calling the API.
The error when a scope is missing
Calling an endpoint without its required scope returns403:
detail names the missing scope. The request is not retryable: the same token fails until the user re-authorizes.
Re-authorize
Run the authorization flow again from Step 1 of the OAuth guide, requesting the full scope list: the scopes already granted plus the new one. The user is asked to approve the added scope. Replace the stored tokens with the ones from the new token exchange.Request only scopes FMG has enabled for your app. Requesting any other scope redirects back to your
redirect_uri with error=invalid_scope.Prompting the user
Use one or more of these, depending on how your app is built. Notify ahead of time. When you release a feature that needs a new scope, tell affected users by email or in-app message: what the feature does, what the new permission allows, and a link that starts re-authorization. Offer a reconnect option. While a connection is missing a scope your app uses, show an “Update permissions” or “Reconnect” action on your integration settings page, with one line explaining what it enables. Ask at the moment of use. When a user opens a feature whose scope is missing, or a call returns403 naming the scope, explain that the feature needs an additional permission, start re-authorization, and return the user to the action when it completes.