Recuperação de senha B2B
Recupera o acesso de uma conta empresarial por CNPJ, e-mail ou telefone, com código de 6 dígitos em vez de link.
Em lojas B2B, quem compra costuma ser um funcionário que só conhece o CNPJ da empresa. A recuperação B2B deixa o cliente se identificar por CNPJ, e-mail ou telefone e receber um código de 6 dígitos por e-mail ou SMS. Quando o código confere, a plataforma entrega um reset_token, que você troca pela nova senha em POST /api/v1/auth/reset-password (a mesma rota do "esqueci minha senha" comum, descrita em Autenticação).
As lojas escolhem se usam o fluxo: cada canal (e-mail, SMS) vem desligado de fábrica. Use GET /api/v1/auth/b2b-recovery/status para saber quais canais a loja ligou e só mostre o fluxo B2B quando algum estiver ligado; senão use o "esqueci minha senha" comum.
- Descobrir os canaisChame
GET /auth/b2b-recovery/status. - IdentificarChame
lookupcom o identificador. A resposta só informa quais canais estão disponíveis. - Enviar o códigoChame
sendcom o identificador e o canal escolhido. - ValidarChame
validatecom o código. Guarde oreset_token. - Definir a nova senhaEnvie o
reset_tokene a nova senha paraPOST /api/v1/auth/reset-password.
/api/v1/auth/b2b-recovery/statusPúblicaCanais de recuperação habilitados
Sonda pública e somente leitura. Não exige reCAPTCHA.
curl "$BASE_URL/api/v1/auth/b2b-recovery/status"{
"email": true,
"sms": false
}Campos da resposta
emailbooleantrue se a loja envia o código por e-mail.smsbooleantrue se a loja envia o código por SMS./api/v1/auth/b2b-recovery/lookupPúblicaIdentificar a conta e listar canais
Corpo da requisição
identifierstringobrigatórioCabeçalhos
X-Recaptcha-Tokenstringcurl -X POST "$BASE_URL/api/v1/auth/b2b-recovery/lookup" \
-H "Content-Type: application/json" \
-d '{
"identifier": "12.345.678/0001-95"
}'{
"found": true,
"email_enabled": true,
"sms_enabled": false
}Campos da resposta
foundbooleantrue, para qualquer identificador (proteção contra enumeração de contas).email_enabledbooleansms_enabledboolean/api/v1/auth/b2b-recovery/sendPúblicaEnviar o código de recuperação
O código vai para o contato que já está no cadastro; você não informa o destino. Se o identificador não tem conta, a resposta é igual e nada é enviado.
Corpo da requisição
identifierstringobrigatóriolookup.channelstringobrigatórioemailsmscurl -X POST "$BASE_URL/api/v1/auth/b2b-recovery/send" \
-H "Content-Type: application/json" \
-d '{
"identifier": "12.345.678/0001-95",
"channel": "email"
}'{
"sent": true
}Campos da resposta
sentbooleantrue quando o pedido foi aceito. O envio roda em segundo plano./api/v1/auth/b2b-recovery/validatePúblicaValidar o código e obter o reset_token
Corpo da requisição
identifierstringobrigatóriootpstringobrigatóriocurl -X POST "$BASE_URL/api/v1/auth/b2b-recovery/validate" \
-H "Content-Type: application/json" \
-d '{
"identifier": "12.345.678/0001-95",
"otp": "482915"
}'{
"reset_token": "5b1f0c...e93a"
}Campos da resposta
reset_tokenstringPOST /api/v1/auth/reset-password. Trate como segredo e não registre em log.Erros
As falhas deste fluxo trazem apenas o código em error.
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 400 | Corpo sem os campos obrigatórios. | {"error":"identifier and channel are required"} |
| 403 | A loja não ligou a recuperação B2B. | {"error":"recovery_disabled"} |
| 403 | O canal pedido está desligado. | {"error":"channel_disabled"} |
| 403 | reCAPTCHA exigido e ausente ou reprovado. | {"error":"captcha_required"} |
| 422 | Código errado ou expirado (validate). | {"error":"invalid_otp"} |
| 429 | Reenvio antes do fim da espera (send). wait_minutes diz quanto falta. | {"error":"cooldown","wait_minutes":12} |
| 429 | Tentativas de código esgotadas (validate). | {"error":"too_many_attempts"} |
| 429 | Limite de requisições da API (família /auth/). | {"error":"rate limit exceeded","detail":"too many requests, please try again later"} |
| 500 | Falha interna ao gerar ou conferir. | {"error":"recovery_failed"} |