Sem credencial, ou com uma que não vale mais. Mande o cookie de sessão ou o cabeçalho Authorization: Bearer.
409
Outra conta já usa esse e-mail.
422
O corpo não passou pelo schema. O campo details traz fieldErrors e formErrors do zod, campo a campo.
Sem role e sem tenants: ninguém se promove nem se convida. Isso é PATCH /api/users/[id], que só um administrador alcança.
PATCH/api/profile/password
Papel: Leitor
Troca a própria senha, exigindo a atual.
A senha atual é exigida mesmo com a sessão já autenticada.
Corpo da requisição
Campo
Tipo
Descrição
currentPasswordobrigatório
string
newPasswordobrigatório
string
Requisição
curl-s-X PATCH http://localhost:3000/api/profile/password \-H"Authorization: Bearer $TOKEN"\-H"Content-Type: application/json"\-d'{
"currentPassword": "a senha de agora",
"newPassword": "uma senha nova e longa"
}'
Resposta200
{"ok":true}
Respostas de erro
Código
Quando acontece
401
A senha atual informada não confere.
422
O corpo não passou pelo schema. O campo details traz fieldErrors e formErrors do zod, campo a campo.
Trocar a senha derruba as OUTRAS sessões; a desta aba continua valendo.
POST/api/profile/avatar
Papel: Leitormultipart/form-data
Envia a foto do perfil.
Só imagem, identificada pelos magic bytes do arquivo. O veto do container (uploadMode: NONE) continua valendo por cima da escolha da tela.
Corpo da requisição
Campo
Tipo
Descrição
fileobrigatório
arquivo
Requisição
curl-s-X POST http://localhost:3000/api/profile/avatar \-H"Authorization: Bearer $TOKEN"\-F"[email protected]"
Sem credencial, ou com uma que não vale mais. Mande o cookie de sessão ou o cabeçalho Authorization: Bearer.
Perdeu, gera outro: não há como recuperar o valor. O que fica na linha, além do sha256, são os quatro últimos caracteres, para a tela poder dizer qual token o script carrega.