Perfil
Lê e altera o perfil do cliente logado e envia a foto de perfil.
O perfil é o registro do cliente logado: nome, contato, documentos, preferências de idioma e consentimentos. Use a leitura para preencher a tela "Minha conta" e a alteração para salvá-la. A foto de perfil tem rota própria.
/api/v1/storefront/profileClienteLê o perfil do cliente logado
Exemplo de requisição
Resposta
Campos da resposta
iduuiduser_id repete o valor.emailstringuser_typestringcustomer.statusstringAPA ativa, P aguardando aprovação da loja (conta nova em lojas que aprovam cadastros).first_namestringlast_name é o sobrenome e display_name o nome para exibir. Os aliases firstname e lastname são apelidos dos mesmos campos.phonestring+5511987654321).cpfstringtax_id é um alias que mostra o documento principal da conta.cnpjstringperson_typestringFJF (física, CPF) ou J (jurídica, CNPJ). person_type_declared diz se o cliente já escolheu. account_type é o rótulo equivalente (individual...).languagestringpt-BR, en). currency e timezone completam as preferências.email_verifiedbooleantrue quando o e-mail já foi confirmado.whatsapp_opt_inbooleansms_opt_in, push_opt_in e notify_on_orders são os demais consentimentos e avisos.terms_accepted_atstringprivacy_accepted_at é o aceite da política de privacidade.avatar_urlstringlast_login_atstringlogin_count conta os logins. Os campos timestamp, updated_timestamp e last_login são cópias em Unix timestamp.| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token, ou token inválido ou expirado | {"error":"missing authorization header"} / {"error":"invalid or expired token"} |
| 404 | Usuário não encontrado ou removido | {"error":"user not found"} |
/api/v1/storefront/profileClienteAltera o perfil do cliente logado
Altera só os campos enviados (um campo ausente fica como está). Devolve o perfil atualizado. Valores em branco ("") apagam o campo quando a regra da loja permite (por exemplo, o telefone).
Corpo da requisição
first_namestringlast_name é o sobrenome.phonestring+55...). Em lojas que exigem telefone, não pode ficar vazio (400 required_field_missing).whatsapp_phonestringwhatsapp_opt_in) é dado por outra rota de marketing.languagestringpt-BR, en).currencystringtimezonestringAmerica/Sao_Paulo.cpfstring403 document_locked).cnpjstring400 invalid CNPJ.person_typestringFPFJPJF/PF ou J/PJ. Troca o tipo de pessoa da conta, quando a loja aceita o tipo.legal_namestringtrade_name é o nome fantasia e state_reg a inscrição estadual.current_passwordstring403 current_password_required); senha errada responde 403 current_password_invalid.emailstringA resposta 200 é o perfil atualizado, no mesmo formato da leitura.
| Status | Quando | Corpo |
|---|---|---|
| 400 | Corpo que não é JSON, e-mail ou documento inválidos, telefone ausente onde é obrigatório | {"error":"validation_failed","fields":{"email":"invalid"}} / {"error":"invalid CNPJ"} / {"error":"required_field_missing","detail":"phone"} |
| 401 | Sem token, ou token inválido ou expirado | {"error":"missing authorization header"} / {"error":"invalid or expired token"} |
| 403 | Documento já existente que não pode mudar; senha de confirmação ausente ou errada; tipo de pessoa que a loja não aceita; e-mail/senha em sessão de suporte | {"error":"document_locked","detail":"Para alterar o documento, fale com a loja"} / {"error":"current_password_required"} / {"error":"person_type_not_accepted"} |
| 404 | Usuário não encontrado | {"error":"user not found"} |
| 409 | CPF ou e-mail já usados por outra conta | {"error":"cpf_already_registered","fields":{"cpf":"already_registered"}} / {"error":"email_already_registered"} |
| 500 | Falha ao gravar | {"error":"failed to update profile","detail":"..."} |
/api/v1/storefront/profile/avatarClienteEnvia a foto de perfil
Envia a imagem como multipart/form-data, no campo file. A plataforma decodifica a imagem, a converte para PNG e guarda com um nome que ela mesma escolhe: o arquivo e o nome do cliente nunca são armazenados como vieram. Devolve o perfil com o novo avatar_url. Também funciona numa sessão de suporte, porque a foto é um dado cosmético.
Cabeçalhos
Content-Typestringobrigatóriomultipart/form-data com boundary (o cliente HTTP define sozinho).Corpo da requisição
filefileobrigatórioA resposta 200 é o perfil completo (formato da leitura) com avatar_url preenchido.
| Status | Quando | Corpo |
|---|---|---|
| 400 | Não é multipart/form-data, sem o campo file, ou arquivo que não é uma imagem aceita | {"error":"failed to parse multipart form"} / {"error":"file is required"} / {"error":"unsupported file type","detail":"Only PNG, JPEG, GIF or WebP images are allowed"} |
| 401 | Sem token, ou token inválido ou expirado | {"error":"missing authorization header"} / {"error":"invalid or expired token"} |
| 404 | Usuário não encontrado | {"error":"user not found"} |
| 500 | Falha ao guardar a imagem | {"error":"failed to store avatar","detail":"..."} |
| 503 | Armazenamento de mídia indisponível na loja | {"error":"media storage unavailable"} |