Update OAuth client
/portal/v1/accounts/{accountSlug}/applications/{appSlug}/environments/{envSlug}/oauth-clients/{id}Updates an OAuth client's mutable fields (name, redirect_uris, scopes, is_active, invite_redirect_url), scoped to the current Environment. Returns the updated client, or 404 when the client is not found in this Environment. The secret is not rotated here.
Authentication
AuthorizationJWT access token. Never send alongside X-API-Key: a request carrying both is refused.
oauth_clients.manageDeveloper ConsoleCreate, edit, rotate, and delete OAuth clients. Granted through an administrator role in the Admin Workspace; a valid token without it is refused with 403.
Path Parameters
idstring Required Request body
application/json
namestring Optional redirect_urisstring[] Optional post_logout_redirect_urisstring[] Optional Where this client may send someone after RP-initiated logout. Matched exactly. An empty array removes every destination, which leaves logout working with nowhere to return to.
scopesstring[] Optional is_activeboolean Optional backchannel_logout_uristring Optional Where Canopy delivers a signed logout token when a session this client issued tokens for ends. `null` stops the notifications.
invite_redirect_urlstring Optional Responses
application/json
data *OAuthClientResponseDto
application/json
error *ApiErrorBodyDto
application/json
error *ApiErrorBodyDto
application/json
error *ApiErrorBodyDto
Errors
When the request can't be completed, the response body includes a stable error code you can branch on.
account.capability_requiredForbiddenThe signed-in user's administrator roles do not grant the capability this endpoint requires.
Ask an account administrator to grant a role carrying the capability named in the Authentication section, then retry.
Returned object
curl -X PATCH "https://auth.canopy-io.com/portal/v1/accounts/{accountSlug}/applications/{appSlug}/environments/{envSlug}/oauth-clients/value" \ -H "Authorization: Bearer $CANOPY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "string", "redirect_uris": [ "string" ], "post_logout_redirect_uris": [ "string" ], "scopes": [ "string" ], "is_active": false, "backchannel_logout_uri": "string", "invite_redirect_url": "string" }'
{ "data": { "id": "string", "client_id": "string", "name": "string", "redirect_uris": [ "string" ], "post_logout_redirect_uris": [ "string" ], "grant_types": [ "string" ], "scopes": [ "string" ], "backchannel_logout_uri": "string", "invite_redirect_url": "string", "is_active": false, "created_at": "2026-04-20T12:00:00.000Z" } }
Tell us how we can improve this guide.