service-accounts

Update a service account

Changes the three editable fields, display_name, redirect_uris and scopes. An absent field is left as it is.

display_name. null clears it. Every change is made under the identity's row lock, so a rename while another change runs is 409. On an identity without redirect URIs a rename is the gateway's own record: nothing is sent to the identity provider, whose client name is a fixed operator label. On one with redirect URIs the name is also the label its consent screen shows, so a rename is sent to the provider under the same rules as a redirect change (runs as the calling operator). A cleared name labels the consent screen with the service account's opaque id.

redirect_uris replaces the list whole, validated as on create. null or [] clears it, and the client loses authorization_code, refresh_token, openid and profile with it; a first URI earns them. A list equal to the stored one is not sent to the provider. A change is converged at the identity provider first — the URIs, the grants and scopes they imply, and the client's registration metadata — and recorded here only once the provider accepts it, so a refusal changes nothing. The scopes sent never widen the client: they are the service account's scopes that the client still holds at the provider, unless the same request sets scopes. A non-empty list needs a live secret credential (409 otherwise: mint one first). One change to an identity runs at a time; a second while one is in flight, or while its secret is being revoked, is 409 — retry. Runs as the calling operator when the list changes — the caller's bearer is forwarded.

scopes replaces the set whole, validated as on create; null is 400. It may narrow or widen: the scopes are a ceiling over the identity's seats, so widening never grants beyond them. A changed set is converged at the identity provider first, as a redirect change is, and recorded here once the provider accepts it; an unchanged set makes no provider call. It takes effect on the next token a credential is exchanged for: a token already issued keeps its scopes until it expires. oauth-clients:manage cannot sit beside redirect_uris: 400 when the body sets both, 409 when the stored list is non-empty. Runs as the calling operator when the set changes.

client_id, principal_type and credentials are what the identity is, and any other field is 400. A revoked service account is 404.

Who may update. The member who provisioned the identity, or an account admin (organization#clients_manage) over anyone's. Audited as updated.

patch/registry/v1/service-accounts/{principal_id}

Request

  • Base URL: https://api.atlan.com (the document declares no server; this is the origin it was published from)
  • URL: https://api.atlan.com/registry/v1/service-accounts/{principal_id}
  • Auth: HTTP bearer

Path parameters

principal_idstring required

The durable principal id

Headers

Content-Encoding'base64' | 'gzip, base64'

Codings applied to the request body, outermost last. Send base64, or gzip, base64 to compress first; the body is decoded before it is read and Content-Type still names the inner media type. Omit for an unencoded body.

Request body

display_namestring nullable

Absent leaves it unchanged; null clears it; a string is trimmed and must be 1 to 128 characters with no control characters.

redirect_urisstring[] nullable

Absent leaves the list unchanged; null or [] clears it (the client loses authorization_code, refresh_token, openid and profile); a list replaces it whole and is validated as on create. A non-empty list needs a live secret credential.

scopesstring[] nullable

Absent leaves the scopes unchanged; a list replaces them whole and is validated as on create. null is 400: a service account always holds at least one scope. oauth-clients:manage on a service account that has, or is given, redirect_uris is 400 when both are in the body and 409 when the redirect URIs are already stored.

Response

The updated identity.

client_idstring required

Stable identifier of the related client resource.

created_atstring required

Value of the created_at field.

created_bystring nullable

Value of the created_by field.

display_namestring nullable

Human-readable name.

idstring required

Stable identifier of this resource.

principal_typestring required

Always service_account: this surface lists and serves no other identity.

redirect_urisstring[] required

The client's OAuth redirect URIs; empty for a machine-only client. Non-empty means the client may run the authorization-code flow (authorization_code and refresh_token beside client_credentials). Changed with PATCH.

revoked_atstring nullable

Value of the revoked_at field.

scopesstring[] required

The client's scopes: the ceiling over what its seats allow. A subset of contextplane:read, contextplane:write, contextplane:manage and oauth-clients:manage. Changed with PATCH. A client with redirect_uris additionally holds openid and profile at the identity provider; they are derived, not stored here.

statusstring required

Current lifecycle state.

updated_atstring nullable

RFC 3339, when the identity was last renamed or its redirect URIs or scopes changed. Absent if none of that has happened.

Changes

No recorded changes to this operation across all 1 revision of this API.