Skip to Content
MuoCeon Docs
v1auth context

Profile

PATCH /v1/auth/profile, PUT /v1/auth/username and GET /v1/auth/username/available — identity fields.

This group edits the identity fields themselves: display name and username. The extended profile (gender, birthdate, bio, metadata) lives in the account context.

PATCH /profile

ParameterTypeRequiredNotes
display_namestring | nullOptional1–64 chars after trimming

Omitted fields stay unchanged; an explicit null clears the value. An empty string is rejected — "clear the name" and "send an empty string" are two different intentions, and only one of them is expressible.

{ "success": true, "display_name": "Alice" }

PUT /username

ParameterTypeRequiredNotes
usernamestring✅3–32 chars, trimmed and lowercased
{ "success": true, "username": "alice" }

Requires max_age=300. A username change is a takeover vector: whoever holds it next can receive mail and invitations meant for the previous owner. Step-up makes sure the change was made by someone who has just proven they are the account holder.

GET /username/available

QueryTypeRequiredNotes
usernamestring✅Candidate, 3–32 chars
{ "success": true, "username": "alice", "available": false, "reason": "taken" }
FieldNotes
availableWhether the name can be taken right now
reasontaken / invalid / reserved; absent when available

Availability is a hint, not a reservation

Someone else can take the name between this check and the PUT. The authoritative answer is the PUT response; treat a conflict there as normal, not as a bug.

Step-up: why max_age but not AAL2

OperationRequirementWhy
Change display nameNoneCosmetic; nothing is lost
Change usernamemax_age=300Redirects traffic and identity; must be recent
Take a usernameNone beyond the above—

Requiring AAL2 here would lock out accounts that only have a password: they would have to enrol a second factor before they could rename themselves. The risk being defended against is "someone else acting as you", and a fresh verification answers that regardless of which method was used.

On this page