Skip to main content

PUT /api/v1/internal/projects/:projectUuid/apps/:appUuid/users/:userUuid

Modifies an existing users resource.

This endpoint documentation is generated from the current Fastify route implementation and should be treated as the implementation-level contract for this version of the API.

Source route file: src/api/routes/internal/private/bearer/projects/apps/users/put.ts

Request Method

PUT

Base URL

https://api.userdocks.local:5000

Endpoint

/api/v1/internal/projects/:projectUuid/apps/:appUuid/users/:userUuid

Path Variables

VariableTypeRequiredDescription
projectUuidstringtruePath variable from route pattern.
appUuidstringtruePath variable from route pattern.
userUuidstringtruePath variable from route pattern.

Query Parameters

VariableTypeRequiredDescription
languagestringtrueQuery parameter parsed by route handler.

HTTP Headers

VariableTypeRequiredDescription
AuthorizationstringtrueBearer token in the form Bearer <jwt>.
Content-TypestringtrueUse application/json for JSON request bodies.

Request Body

Schema reference: updateUserSchema

{
"givenName": "Jane",
"familyName": "Doe",
"emailVerified": true,
"preferredLanguageUuid": "11111111-1111-1111-1111-111111111111",
"phoneNumber": "+491234567890",
"addresses": [
{
"typeUuid": "11111111-1111-1111-1111-111111111111",
"name": "billing",
"addressLineOne": "Main Street 1",
"locality": "Berlin",
"region": "Berlin",
"countryUuid": "11111111-1111-1111-1111-111111111111",
"postalCode": "10115"
}
],
"tags": ["11111111-1111-1111-1111-111111111111"]
}

Successful Response

Success status code(s): 200.

{
"kind": "appUsers",
"totalItems": 1,
"itemsLength": 1,
"items": [
{
"uuid": "user_11111111-1111-1111-1111-111111111111",
"email": "user@example.com",
"sub": "auth0|user_11111111",
"name": "Jane Doe",
"givenName": "Jane",
"familyName": "Doe",
"middleName": null,
"nickname": "jane",
"preferredUsername": "jane.doe",
"profile": "https://example.com/users/jane",
"picture": "https://example.com/assets/jane.png",
"website": "https://example.com",
"emailVerified": true,
"gender": "female",
"birthdate": "1990-01-01",
"zoneinfo": "Europe/Berlin",
"locale": "en",
"phoneNumber": "+491234567890",
"phoneNumberVerified": true,
"referrer": "campaign-abc",
"referralCode": "ref_11111111",
"preferredLanguageUuid": "lang_11111111-1111-1111-1111-111111111111",
"isDisabled": false,
"appUuid": "app_11111111-1111-1111-1111-111111111111",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z",
"userTags": [
{
"tag": {
"uuid": "tag_11111111-1111-1111-1111-111111111111",
"appUuid": "app_11111111-1111-1111-1111-111111111111",
"name": "beta-user",
"description": "User belongs to beta segment",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z"
}
}
],
"addresses": [
{
"uuid": "addr_11111111-1111-1111-1111-111111111111",
"name": "billing",
"addressLineOne": "Main Street 1",
"addressLineTwo": "Floor 3",
"postalCode": "10115",
"locality": "Berlin",
"region": "Berlin",
"country": "DE",
"type": "business",
"updatedAt": "2026-01-01T00:00:00.000Z"
}
],
"tenantsAsAdmin": [
{
"tenant": {
"uuid": "tenant_11111111-1111-1111-1111-111111111111",
"name": "Acme Tenant",
"isDisabled": false,
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z"
}
}
],
"tenantsAsUser": [
{
"tenant": {
"uuid": "tenant_11111111-1111-1111-1111-111111111111",
"name": "Acme Tenant",
"isDisabled": false,
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z"
}
}
]
}
]
}

Error Responses

HTTP StatusExample Error
401{"errors":[{"validation":"error","code":"[E4010]","message":"Unauthorized Token"}]}
403{"errors":[{"validation":"error","code":"[E4030]","message":"App Is Disabled"}]}
400{"errors":[{"validation":"error","code":"[E4000]","message":"Bad Request / validation error"}]}
500{"errors":[{"validation":"error","code":"[E0000]","message":"Internal Server Error"}]}

Example

const query = new URLSearchParams({
language: 'en',
});
const url = `https://api.userdocks.local:5000/api/v1/internal/projects/projectUuid-value/apps/appUuid-value/users/userUuid-value?${query.toString()}`;

const response = await fetch(url, {
method: 'PUT',
headers: {
Authorization: 'Bearer <jwt>',
'Content-Type': 'application/json',
},
body: '{"givenName":"Jane","familyName":"Doe","emailVerified":true,"preferredLanguageUuid":"11111111-1111-1111-1111-111111111111","phoneNumber":"+491234567890","addresses":[{"typeUuid":"11111111-1111-1111-1111-111111111111","name":"billing","addressLineOne":"Main Street 1","locality":"Berlin","region":"Berlin","countryUuid":"11111111-1111-1111-1111-111111111111","postalCode":"10115"}],"tags":["11111111-1111-1111-1111-111111111111"]}',
});
const data = await response.json();
console.log(response.status, data);