Update an OAuth-client link
/portal/v1/accounts/{accountSlug}/sso/connections/{id}/oauth-clients/{oauthClientId}Updates the placement config of an existing OAuth-client link; only fields present in the body are changed, and placement nodes/role are re-validated against the client's Environment (400 on mismatch). Switching is_default to true clears any other default for the same client in the same transaction. Emits an sso.connection.oauth_client.updated audit row; responds 404 when the link does not exist.
Authentication
AuthorizationJWT access token. Never send alongside X-API-Key: a request carrying both is refused.
sso.manageSecurityManage SSO connections, domains, and directory sync. Granted through an administrator role in the Admin Workspace; a valid token without it is refused with 403.
Path Parameters
idstring Required oauthClientIdstring Required Request body
application/json
is_defaultboolean Optional Send users of this client straight to the IdP (at most one default per client).
default_hierarchy_node_idstring Optional Node a JIT'd identity lands at when no claim rule matches.
claim_node_mappingClaimNodeRuleDto[] Optional default_role_idstring Optional Role assigned to a JIT'd identity at the resolved node.
Responses
application/json
data *OAuthClientLinkResponseDto
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}/sso/connections/value/oauth-clients/value" \ -H "Authorization: Bearer $CANOPY_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "is_default": false, "default_hierarchy_node_id": "string", "claim_node_mapping": [ { "claim": "string", "value": "string", "node_id": "string", "is_array_match": false } ], "default_role_id": "string" }'
{ "data": { "oauth_client_id": "string", "sso_connection_id": "string", "is_default": false, "default_hierarchy_node_id": "string", "claim_node_mapping": [ { "claim": "string", "value": "string", "node_id": "string", "is_array_match": false } ], "default_role_id": "string", "created_at": "2026-04-20T12:00:00.000Z" } }
Tell us how we can improve this guide.