Update a service account
PATCH
/v1/oauth/clients/{id}
const url = 'https://api.adversarial.com/api/v1/oauth/clients/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = { method: 'PATCH', headers: {cookie: 'arm-session=<arm-session>', 'Content-Type': 'application/json'}, body: '{"allowed_ips":["example"],"client_name":"example","expires_at":"2026-04-15T12:00:00Z","revoked":true,"roles":["example"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://api.adversarial.com/api/v1/oauth/clients/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Content-Type: application/json' \ --cookie arm-session=<arm-session> \ --data '{ "allowed_ips": [ "example" ], "client_name": "example", "expires_at": "2026-04-15T12:00:00Z", "revoked": true, "roles": [ "example" ] }'Changes a service account’s name, assigned role, or revoked status. Revoking one stops its tokens from being accepted without deleting it, so it can be restored later.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”id
required
string format: uuid
OAuth client ID
Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
object
allowed_ips
Array<string> | null
client_name
string | null
expires_at
string | null format: date-time
revoked
Toggle the revoked state. Some(true) stamps revoked_at = now();
Some(false) clears it. None leaves the field unchanged.
boolean | null
roles
Replaces the SA user’s role assignments by role name. Requires
ORGANIZATION_MANAGE and roles bounded by the caller’s permissions.
Array<string> | null
Examplegenerated
{ "allowed_ips": [ "example" ], "client_name": "example", "expires_at": "2026-04-15T12:00:00Z", "revoked": true, "roles": [ "example" ]}Responses
Section titled “Responses”OAuth client updated
Media typeapplication/json
object
allowed_ips
Array<string> | null
client_id
required
string
client_name
required
string
client_secret
string | null
created_by
string | null format: uuid
created_date
required
string format: date-time
expires_at
string | null format: date-time
id
required
string format: uuid
last_used
string | null format: date-time
org_id
required
string format: uuid
revoked_at
string | null format: date-time
roles
required
Array<string>
user
required
The service-account user this key authenticates as — one user per key.
object
email
required
string
first_name
required
string
icon
Relative path to the user’s avatar endpoint, e.g.
"users/{id}/avatar?v={hash}". None when the user has no avatar.
string | null
id
required
string format: uuid
last_name
required
string
user_id
required
string format: uuid
Examplegenerated
{ "allowed_ips": [ "example" ], "client_id": "example", "client_name": "example", "client_secret": "example", "created_by": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "created_date": "2026-04-15T12:00:00Z", "expires_at": "2026-04-15T12:00:00Z", "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "last_used": "2026-04-15T12:00:00Z", "org_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "revoked_at": "2026-04-15T12:00:00Z", "roles": [ "example" ], "user": { "email": "example", "first_name": "example", "icon": "example", "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "last_name": "example" }, "user_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"}Invalid request
Unauthorized
Forbidden
Not found