Através deste módulo você pode:
As rotas deste módulo usam o prefixo /api/v2/baas e os middlewares identification-seller, auth-baas (JWT no guard da API com account_uuid no payload) e hmac-signature.
Authorization: token JWT BaaS (Bearer {token}). O payload deve incluir account_uuid e, quando o HMAC estiver ativo, o segredo utilizado na assinatura.HMAC_ENABLED=true no .env, envie X-Signature, X-Timestamp e X-Nonce em cada requisição. A assinatura usa método HTTP, path (por exemplo /api/v2/baas/key-managements/...), query string, corpo bruto (string) e o secret do JWT. Veja Assinatura HMAC. Com HMAC_ENABLED=false, em ambientes locais costuma bastar Authorization.POST /api/v2/baas/key-managements
Cria uma nova chave Pix para a conta autenticada.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Authorization | string | Sim | Token JWT BaaS (Bearer {token}) |
X-Signature | string | Sim* | Assinatura HMAC da requisição |
X-Timestamp | string | Sim* | Timestamp Unix (segundos), quando HMAC está ativo |
X-Nonce | string | Sim* | Nonce único, quando HMAC está ativo |
Content-Type | string | Sim | application/json |
Accept | string | Sim | application/json |
key_type (integer, obrigatório)Tipo da chave Pix a ser criada.
0: CPF1: CNPJ2: Email3: Telefone4: Chave aleatória (EVP){
"key_type": 2
}
Representa chave do tipo email
key (string, condicional)Valor da chave Pix.
{
"key": "[email protected]"
}
{
"key": "11987654321"
}
{
"key": "12345678901"
}
"key": "12345678901""key": "12345678000190""key": "[email protected]""key": "11987654321"key, o sistema gera automaticamentekey{
"key_type": 2,
"key": "[email protected]"
}
{
"key_type": 3,
"key": "11987654321"
}
{
"key_type": 4
}
{
"id": 123,
"key": "[email protected]",
"key_type": 2,
"status": 1,
"created_at": "2025-01-15 14:30:00"
}
{
"need_confirmation": true,
"message": "A confirmation code has been sent to your email/phone"
}
| Campo | Tipo | Descrição |
|---|---|---|
id | integer | ID da chave criada |
key | string | Valor da chave Pix |
key_type | integer | Tipo da chave (0-4) |
status | integer | Código do status: 0 = Em Análise, 1 = Ativo, 2 = Inativo, 3 = Verificado |
need_confirmation | boolean | Indica se a chave requer confirmação |
created_at | string | Data e hora de criação |
POST /api/v2/baas/key-managements/verification-code
Confirma o código enviado para uma chave pendente (e-mail ou telefone). Após sucesso, a resposta reflete o recurso da chave com need_confirmation: false.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Authorization | string | Sim | Token JWT BaaS (Bearer {token}) |
X-Signature | string | Sim* | Assinatura HMAC da requisição |
X-Timestamp | string | Sim* | Timestamp Unix (segundos), quando HMAC está ativo |
X-Nonce | string | Sim* | Nonce único, quando HMAC está ativo |
Content-Type | string | Sim | application/json |
Accept | string | Sim | application/json |
| Campo | Obrigatório | Descrição |
|---|---|---|
key | Sim | Valor da chave Pix (ex.: e-mail ou +5511999999999) |
code | Sim | Código de verificação recebido |
{
"key": "+5511999999999",
"code": "123456"
}
curl -X POST https://api-h.nuvende.com.br/api/v2/baas/key-managements/verification-code \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "X-Signature: {signature}" \
-H "X-Timestamp: {timestamp}" \
-H "X-Nonce: {nonce}" \
-d '{"key":"+5511999999999","code":"123456"}'
Código confirmado. O corpo segue o formato do recurso da chave (ex.: id, key, key_type, reason, status, created_at) e inclui need_confirmation: false.
{
"id": 123,
"key": "+5511999999999",
"key_type": 3,
"reason": null,
"status": 3,
"created_at": "2025-01-15 14:30:00",
"need_confirmation": false
}
| HTTP | Descrição |
|---|---|
400 | Chave inválida ou código incorreto, ex.: {"message":"Invalid key!"} (ou tradução em pt_BR) |
422 | Validação dos campos key / code |
401 | Token, HMAC ou seller inválidos (middleware) |
POST /api/v2/baas/key-managements/{id}/store-after-verification
Finaliza o cadastro para uma chave já verificada ({id} = ID do registro em keys). Não há corpo JSON obrigatório.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | integer | Sim | ID da chave (registro em keys) |
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Authorization | string | Sim | Token JWT BaaS (Bearer {token}) |
X-Signature | string | Sim* | Assinatura HMAC da requisição |
X-Timestamp | string | Sim* | Timestamp Unix (segundos), quando HMAC está ativo |
X-Nonce | string | Sim* | Nonce único, quando HMAC está ativo |
Content-Type | string | Sim | application/json |
Accept | string | Sim | application/json |
curl -X POST https://api-h.nuvende.com.br/api/v2/baas/key-managements/42/store-after-verification \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "X-Signature: {signature}" \
-H "X-Timestamp: {timestamp}" \
-H "X-Nonce: {nonce}"
Objeto da chave (mesmo formato geral do recurso: id, key, key_type, status, etc.).
| HTTP | Descrição |
|---|---|
400 | Chave inválida para a conta, ex.: {"message":"Invalid key!"} |
400 | Conflito ou retorno (ex.: need_confirmation, claim_type, message, conforme generateOrClaimKey) |
401 | Middleware de autenticação |
500 | Possível resposta do handler global para exceções ou do repositório (conforme configuração) |
POST /api/v2/baas/key-managements/resend-code
Reenvia o código de confirmação para uma chave pendente. O controller aceita o campo key via JSON ou form ($request->get('key')).
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Authorization | string | Sim | Token JWT BaaS (Bearer {token}) |
X-Signature | string | Sim* | Assinatura HMAC da requisição |
X-Timestamp | string | Sim* | Timestamp Unix (segundos), quando HMAC está ativo |
X-Nonce | string | Sim* | Nonce único, quando HMAC está ativo |
Content-Type | string | Sim | application/json |
Accept | string | Sim | application/json |
| Campo | Obrigatório | Descrição |
|---|---|---|
key | Sim | Valor da chave Pix pendente |
{
"key": "+5511999999999"
}
curl -X POST https://api-h.nuvende.com.br/api/v2/baas/key-managements/resend-code \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "X-Signature: {signature}" \
-H "X-Timestamp: {timestamp}" \
-H "X-Nonce: {nonce}" \
-d '{"key":"+5511999999999"}'
{
"need_confirmation": true
}
| HTTP | Descrição |
|---|---|
400 | key ausente ou inválida, ex.: {"message":"Invalid key!"}; ou mensagem da exceção no catch |
401 | Middleware de autenticação |
POST /api/v2/baas/key-managements/consult
Consulta dados de uma chave. Limite: 20 requisições por minuto por cliente (throttle:20,1). A conta precisa ter pelo menos uma chave cadastrada; caso contrário, retorna 422.
Para detalhes adicionais do mesmo endpoint, veja também Consultar uma chave Pix de uma conta.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
Authorization | string | Sim | Token JWT BaaS (Bearer {token}) |
X-Signature | string | Sim* | Assinatura HMAC da requisição |
X-Timestamp | string | Sim* | Timestamp Unix (segundos), quando HMAC está ativo |
X-Nonce | string | Sim* | Nonce único, quando HMAC está ativo |
Content-Type | string | Sim | application/json |
Accept | string | Sim | application/json |
| Campo | Obrigatório | Descrição |
|---|---|---|
key | Sim | Chave Pix a consultar |
{
"key": "[email protected]"
}
curl -X POST https://api-h.nuvende.com.br/api/v2/baas/key-managements/consult \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "X-Signature: {signature}" \
-H "X-Timestamp: {timestamp}" \
-H "X-Nonce: {nonce}" \
-d '{"key":"[email protected]"}'
{
"key": "[email protected]",
"key_type": 2,
"ispb": "12345678",
"agency": "0001",
"account": "12345-6",
"account_type": 1,
"person_type": 1,
"document": "123***8901",
"name": "João da Silva Santos",
"favorite": false,
"bank_name": "Banco Exemplo"
}
| Campo | Tipo | Descrição |
|---|---|---|
key | string | Valor da chave Pix consultada |
key_type | integer | Tipo da chave (0-4) |
ispb | string | Código ISPB do banco |
agency | string | Agência |
account | string | Número da conta |
account_type | integer | Tipo de conta (1 = corrente, 2 = poupança) |
person_type | integer | Tipo de pessoa (1 = física, 2 = jurídica) |
document | string | Documento mascarado |
name | string | Nome do beneficiário |
favorite | boolean | Indica se é favorito |
bank_name | string | Nome do banco |
| HTTP | Descrição |
|---|---|
400 | retornou 404 (mapeado pelo controller) |
422 | Validação (key ausente) ou {"message":"You don't have any key to be consult"} se a conta não tiver chave |
429 | Limite do throttle excedido |
401 | Middleware de autenticação |
| outros | Eco do código retornado quando diferente de 404 |
Os cenários abaixo referem-se ao endpoint Criar Chave Pix (POST /api/v2/baas/key-managements). Confirmação, reenvio, finalização e consulta possuem tabelas de erros nas próprias seções.
{
"message": "Pix Key already exist."
}
{
"message": {
"key_type": [
"O campo key_type é obrigatório.",
"O campo key_type deve ser um número entre 0 e 4."
],
"key": [
"O campo key é obrigatório quando key_type não é 4.",
"O campo key deve ser um email válido."
]
}
}
{
"message": {
"key": [
"A chave informada não é válida para o tipo selecionado."
]
}
}
{
"message": "Unauthorized"
}
{
"message": "Forbidden"
}
{
"message": "Too Many Requests"
}
need_confirmation pode vir true e um código é enviado.POST /api/v2/baas/key-managements/resend-code com o campo key.POST /api/v2/baas/key-managements/verification-code com key e code.status = Verificado, código 3), chame POST /api/v2/baas/key-managements/{id}/store-after-verification com o id retornado no cadastro.POST /api/v2/baas/key-managements/consult para obter dados da chave no diretório (com throttle e exigência de pelo menos uma chave na conta).key para este tipoApós criar uma chave Pix, você pode: