Skip to content

Update a client

PUT
/api/tenant/{tenantId}/Clients/{id}
curl --request PUT \
--url https://api.nimles.com/identity/api/tenant/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/Clients/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "fields": { "additionalProperty": { "value": "example", "valueType": "example" } }, "accessibility": "example", "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "relations": [ { "fields": { "additionalProperty": { "value": "example", "valueType": "example" } }, "accessibility": "example", "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "name": "example", "entityId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "entityType": "example", "relationType": "example" } ], "tenantId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "resourceGroupId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "creatorId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "createdDate": "2026-04-15T12:00:00Z", "version": 1, "lastModified": "2026-04-15T12:00:00Z", "name": "example", "description": "example", "secrets": [ { "fields": { "additionalProperty": { "value": "example", "valueType": "example" } }, "accessibility": "example", "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "value": "example", "description": "example", "expiration": "2026-04-15T12:00:00Z" } ], "replyUrls": [ { "fields": { "additionalProperty": { "value": "example", "valueType": "example" } }, "accessibility": "example", "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "value": "https://example.com", "description": "example" } ], "loginProviders": [ { "fields": { "additionalProperty": { "value": "example", "valueType": "example" } }, "accessibility": "example", "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "name": "example", "clientId": "example", "clientSecret": "example", "token": "example", "hasClientSecret": true, "hasToken": true } ], "allowedGrantTypes": [ "example" ], "allowedScopes": [ "example" ], "allowOfflineAccess": true, "allowAccessTokensViaBrowser": true, "requireConsent": true, "requirePkce": true, "enabled": true, "postLogoutRedirectUris": [ "https://example.com" ], "allowedCorsOrigins": [ "example" ], "frontChannelLogoutUri": "https://example.com", "backChannelLogoutUri": "https://example.com", "clientUri": "https://example.com", "logoUri": "https://example.com", "iconUri": "https://example.com", "accentColor": "example", "accessTokenLifetime": 1, "identityTokenLifetime": 1, "absoluteRefreshTokenLifetime": 1, "uniqueName": "example" }'

Updates an existing client. Responses never carry a secret’s value: a secret sent without one keeps the client’s secret with its id (its description and expiration are the request’s when given, else kept), and one whose id the client does not have needs a value (422). A value that is one of the stored hashes is kept; any other BCrypt hash ($2…) is refused (422), so the hash of a revoked secret never becomes a secret; other values are new plaintext secrets and are hashed. Secrets, reply URLs and login providers keep their accessibility, and a client or item without fields keeps its fields. Responses never carry a login provider’s clientSecret or token; one sent back empty keeps the stored value, and a login provider that changes its name or clientId must send its clientSecret again (422 otherwise).

Only a platform administrator can save a client with the nimles.owner scope (422 otherwise). The model does not carry the custom sign-in domain, so the client keeps its own: only the platform seeds set one (SaveClient.MaySetCustomDomain), and never one that a client of another tenant holds.

id
required
string format: uuid

A unique identifier for the client.

tenantId
required
string format: uuid

Your tenant id.

The client data.

Media typeapplication/json
object
fields
object
key
additional properties
object
value
required
nullable
valueType
string
nullable
accessibility
string
nullable
id
string format: uuid
relations
Array<object>
nullable
object
fields
object
key
additional properties
object
value
required
nullable
valueType
string
nullable
accessibility
string
nullable
id
string format: uuid
name
string
nullable
entityId
required
string format: uuid
entityType
required
string
>= 1 characters
relationType
required
string
>= 1 characters
tenantId
string format: uuid
nullable
resourceGroupId
string format: uuid
nullable
creatorId
string format: uuid
nullable
createdDate
string format: date-time
nullable
version
integer format: int32
nullable
lastModified
string format: date-time
nullable
name
required
string
>= 1 characters
description
string
nullable
secrets
Array<object>
nullable
object
fields
object
key
additional properties
object
value
required
nullable
valueType
string
nullable
accessibility
string
nullable
id
string format: uuid
value
string
nullable
description
string
nullable
expiration
string format: date-time
nullable
replyUrls
Array<object>
nullable
object
fields
object
key
additional properties
object
value
required
nullable
valueType
string
nullable
accessibility
string
nullable
id
string format: uuid
value
required
string format: uri
nullable
description
string
nullable
loginProviders
Array<object>
nullable
object
fields
object
key
additional properties
object
value
required
nullable
valueType
string
nullable
accessibility
string
nullable
id
string format: uuid
name
required
string
nullable
clientId
required
string
nullable
clientSecret
required
string
nullable
token
required
string
nullable
hasClientSecret
boolean
hasToken
boolean
allowedGrantTypes
Array<string>
nullable
allowedScopes
Array<string>
nullable
allowOfflineAccess
boolean
allowAccessTokensViaBrowser
boolean
requireConsent
boolean
requirePkce
boolean
enabled
boolean
postLogoutRedirectUris
Array<string>
nullable
allowedCorsOrigins
Array<string>
nullable
frontChannelLogoutUri
string format: uri
nullable
backChannelLogoutUri
string format: uri
nullable
clientUri
string format: uri
nullable
logoUri
string format: uri
nullable
iconUri
string format: uri
nullable
accentColor
string
nullable
accessTokenLifetime
integer format: int32
nullable
identityTokenLifetime
integer format: int32
nullable
absoluteRefreshTokenLifetime
integer format: int32
nullable
uniqueName
string
nullable

Example generated

{
"fields": {
"additionalProperty": {
"value": "example",
"valueType": "example"
}
},
"accessibility": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"relations": [
{
"fields": {
"additionalProperty": {
"value": "example",
"valueType": "example"
}
},
"accessibility": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"name": "example",
"entityId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"entityType": "example",
"relationType": "example"
}
],
"tenantId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"resourceGroupId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"creatorId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"createdDate": "2026-04-15T12:00:00Z",
"version": 1,
"lastModified": "2026-04-15T12:00:00Z",
"name": "example",
"description": "example",
"secrets": [
{
"fields": {
"additionalProperty": {
"value": "example",
"valueType": "example"
}
},
"accessibility": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"value": "example",
"description": "example",
"expiration": "2026-04-15T12:00:00Z"
}
],
"replyUrls": [
{
"fields": {
"additionalProperty": {
"value": "example",
"valueType": "example"
}
},
"accessibility": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"value": "https://example.com",
"description": "example"
}
],
"loginProviders": [
{
"fields": {
"additionalProperty": {
"value": "example",
"valueType": "example"
}
},
"accessibility": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"name": "example",
"clientId": "example",
"clientSecret": "example",
"token": "example",
"hasClientSecret": true,
"hasToken": true
}
],
"allowedGrantTypes": [
"example"
],
"allowedScopes": [
"example"
],
"allowOfflineAccess": true,
"allowAccessTokensViaBrowser": true,
"requireConsent": true,
"requirePkce": true,
"enabled": true,
"postLogoutRedirectUris": [
"https://example.com"
],
"allowedCorsOrigins": [
"example"
],
"frontChannelLogoutUri": "https://example.com",
"backChannelLogoutUri": "https://example.com",
"clientUri": "https://example.com",
"logoUri": "https://example.com",
"iconUri": "https://example.com",
"accentColor": "example",
"accessTokenLifetime": 1,
"identityTokenLifetime": 1,
"absoluteRefreshTokenLifetime": 1,
"uniqueName": "example"
}

OK

Media typeapplication/json
object
fields
object
key
additional properties
string
data
object
fields
object
key
additional properties
object
value
required
nullable
valueType
string
nullable
accessibility
string
nullable
id
string format: uuid
relations
Array<object>
nullable
object
fields
object
key
additional properties
object
value
required
nullable
valueType
string
nullable
accessibility
string
nullable
id
string format: uuid
name
string
nullable
entityId
required
string format: uuid
entityType
required
string
>= 1 characters
relationType
required
string
>= 1 characters
tenantId
string format: uuid
nullable
resourceGroupId
string format: uuid
nullable
creatorId
string format: uuid
nullable
createdDate
string format: date-time
nullable
version
integer format: int32
nullable
lastModified
string format: date-time
nullable
name
required
string
>= 1 characters
description
string
nullable
secrets
Array<object>
nullable
object
fields
object
key
additional properties
object
value
required
nullable
valueType
string
nullable
accessibility
string
nullable
id
string format: uuid
value
string
nullable
description
string
nullable
expiration
string format: date-time
nullable
replyUrls
Array<object>
nullable
object
fields
object
key
additional properties
object
value
required
nullable
valueType
string
nullable
accessibility
string
nullable
id
string format: uuid
value
required
string format: uri
nullable
description
string
nullable
loginProviders
Array<object>
nullable
object
fields
object
key
additional properties
object
value
required
nullable
valueType
string
nullable
accessibility
string
nullable
id
string format: uuid
name
required
string
nullable
clientId
required
string
nullable
clientSecret
required
string
nullable
token
required
string
nullable
hasClientSecret
boolean
hasToken
boolean
allowedGrantTypes
Array<string>
nullable
allowedScopes
Array<string>
nullable
allowOfflineAccess
boolean
allowAccessTokensViaBrowser
boolean
requireConsent
boolean
requirePkce
boolean
enabled
boolean
postLogoutRedirectUris
Array<string>
nullable
allowedCorsOrigins
Array<string>
nullable
frontChannelLogoutUri
string format: uri
nullable
backChannelLogoutUri
string format: uri
nullable
clientUri
string format: uri
nullable
logoUri
string format: uri
nullable
iconUri
string format: uri
nullable
accentColor
string
nullable
accessTokenLifetime
integer format: int32
nullable
identityTokenLifetime
integer format: int32
nullable
absoluteRefreshTokenLifetime
integer format: int32
nullable
uniqueName
string
nullable

Example generated

{
"data": {
"fields": {
"additionalProperty": {
"value": "example",
"valueType": "example"
}
},
"accessibility": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"relations": [
{
"fields": {
"additionalProperty": {
"value": "example",
"valueType": "example"
}
},
"accessibility": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"name": "example",
"entityId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"entityType": "example",
"relationType": "example"
}
],
"tenantId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"resourceGroupId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"creatorId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"createdDate": "2026-04-15T12:00:00Z",
"version": 1,
"lastModified": "2026-04-15T12:00:00Z",
"name": "example",
"description": "example",
"secrets": [
{
"fields": {
"additionalProperty": {
"value": "example",
"valueType": "example"
}
},
"accessibility": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"value": "example",
"description": "example",
"expiration": "2026-04-15T12:00:00Z"
}
],
"replyUrls": [
{
"fields": {
"additionalProperty": {
"value": "example",
"valueType": "example"
}
},
"accessibility": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"value": "https://example.com",
"description": "example"
}
],
"loginProviders": [
{
"fields": {
"additionalProperty": {
"value": "example",
"valueType": "example"
}
},
"accessibility": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"name": "example",
"clientId": "example",
"clientSecret": "example",
"token": "example",
"hasClientSecret": true,
"hasToken": true
}
],
"allowedGrantTypes": [
"example"
],
"allowedScopes": [
"example"
],
"allowOfflineAccess": true,
"allowAccessTokensViaBrowser": true,
"requireConsent": true,
"requirePkce": true,
"enabled": true,
"postLogoutRedirectUris": [
"https://example.com"
],
"allowedCorsOrigins": [
"example"
],
"frontChannelLogoutUri": "https://example.com",
"backChannelLogoutUri": "https://example.com",
"clientUri": "https://example.com",
"logoUri": "https://example.com",
"iconUri": "https://example.com",
"accentColor": "example",
"accessTokenLifetime": 1,
"identityTokenLifetime": 1,
"absoluteRefreshTokenLifetime": 1,
"uniqueName": "example"
}
}

No Content: done, with no item to return.

Unauthorized: no bearer token, or one that is expired or not for this API.

Forbidden: the caller holds no role that allows this action at this scope. The body is empty, or a problem whose detail names the action.

Media typeapplication/json

An RFC 9457 problem.

object
detail
string
nullable
instance
string
nullable
status
integer format: int32
nullable
title
string
nullable
type
string
nullable
key
additional properties

Example generated

{
"detail": "example",
"instance": "example",
"status": 1,
"title": "example",
"type": "example"
}

Not found: no such item in the tenant.

Media typeapplication/problem+json

An RFC 9457 problem.

object
detail
string
nullable
instance
string
nullable
status
integer format: int32
nullable
title
string
nullable
type
string
nullable
key
additional properties

Example generated

{
"detail": "example",
"instance": "example",
"status": 1,
"title": "example",
"type": "example"
}

Conflict: the item kept changing under concurrent writes; read it again and retry.

Media typeapplication/problem+json

An RFC 9457 problem.

object
detail
string
nullable
instance
string
nullable
status
integer format: int32
nullable
title
string
nullable
type
string
nullable
key
additional properties

Example generated

{
"detail": "example",
"instance": "example",
"status": 1,
"title": "example",
"type": "example"
}

Unprocessable: the body or the change is invalid. The errors are keyed by member.

Media typeapplication/problem+json

A validation problem: the messages by member (or by JSON Pointer for a patch).

object
errors
object
key
additional properties
Array<string>
status
integer format: int32
nullable
title
string
nullable
type
string
nullable
key
additional properties

Example generated

{
"errors": {
"additionalProperty": [
"example"
]
},
"status": 1,
"title": "example",
"type": "example"
}