EndpointsUsers

Update current user profile

Updates profile fields (display name, locale, preferences) on the authenticated user.

PATCH
/users/me

Authorization

headerAuthorizationBearer <token>

Request Body

application/json
  1. body
name?string
handle?string

New Handle for the user's Profile. Lowercase alphanumeric plus hyphen, 3-30 chars. Old profile URLs 404 after a change; the freed handle returns to the pool.

avatar?string

Avatar image URL. Must be https: clients render it, so no other schemes are accepted.

preferences?

Response Body

application/json
  1. response
id*number
email*string
name*string
handle*string

Public address of the user's Profile (see CONTEXT.md 'Handle').

avatar?string
isEmailVerified*boolean
role*string
Value in"user""admin"
preferences?|null
idHash*string

Pseudonymous user identifier for client-side ProductEvent tracking. See ADR-0020.

deletionStatus*string

Deletion lifecycle. 'pending_hard_delete' means the user has requested self-deletion and is in the 30-day grace window before permanent erasure. The web app should redirect such users to a cancel screen.

Value in"active""pending_hard_delete"
deletionRequestedAt?|

When self-deletion was requested. Hard-delete fires 30 days after this timestamp.

hasPassword*boolean

Whether the user has an active email/password credential. Drives password-change UI affordances.

statistics*
curl -X PATCH 'https://api.routess.com/users/me' \  -H 'Content-Type: application/json' \  -d '{}'
{  "id": 1,  "email": "[email protected]",  "name": "Jane Doe",  "handle": "jane-doe",  "avatar": "https://example.com/avatar.jpg",  "isEmailVerified": true,  "role": "user",  "preferences": {    "units": "km",    "showPois": true,    "terrain3d": false,    "autoSnap": true,    "defaultActivity": "Cycling",    "selectedSports": [      "cycle",      "run"    ],    "sportSpeeds": {      "run": 10,      "cycle": 25,      "walk": 5    },    "mapStyle": "outdoors",    "overlays": {      "heatmap": true,      "contour": false,      "bike": true,      "surface": false,      "wind": false,      "hikingNodes": false,      "cyclingNodes": false    },    "defaultRouteVisibility": "private",    "routingDefaults": {      "cycle": {        "surfacePreference": "mixed",        "avoidFerries": true,        "avoidHighways": true      },      "run": {        "surfacePreference": "mixed",        "avoidFerries": true,        "avoidHighways": true      },      "walk": {        "surfacePreference": "mixed",        "avoidFerries": true,        "avoidHighways": true      }    }  },  "idHash": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",  "deletionStatus": "active",  "deletionRequestedAt": "2026-05-09T08:00:00.000Z",  "hasPassword": true,  "statistics": {    "totalRoutes": 12,    "totalDistance": 42350  }}