Autenticação do integrador na plataforma BaaS: abrir contas, cadastrar webhooks da plataforma e listar contratos. Token obtido aqui não movimenta saldo, Pix nem boletos da conta.
Operações da conta após onboarding: Autenticação da conta BaaS. Scopes e variáveis: Sobre o BaaS.
expires_in, em geral 3600s), execute Login de novo.scope com todos os recursos necessários (onboarding, seller-webhooks, …). Scope em falta → 403 no endpoint mesmo com token válido.access_token no ambiente.hmac_secret em geral não vem no JSON do login, preencha {{hmac_secret}} no ambiente com o valor do onboarding Nuvende.O pedido Login não usa HMAC, só Basic Auth + corpo OAuth.
Demais /api/v2/baas/* exigem Bearer e HMAC, exceto GET /api/v2/baas/status (só Bearer).
| Camada | Headers |
|---|---|
| OAuth | Authorization: Bearer {{access_token}} |
| Integridade | X-Timestamp, X-Nonce, X-Signature |
Sem HMAC válido: erro Invalid request signature, mesmo com token ok.
| Variável | Origem |
|---|---|
access_token | Resposta do Login (após o Login) |
hmac_secret | Onboarding Nuvende (ambiente) |
timestamp | Gerado antes do pedido (epoch UTC, segundos) |
nonce | Gerado antes do pedido (UUID único) |
signature | HMAC → header X-Signature |
Conta titular: mesmo algoritmo; use Autenticação da conta BaaS.
Authorization: Bearer {{access_token}}, X-Timestamp: {{timestamp}}, X-Nonce: {{nonce}}, X-Signature: {{signature}}, e Content-Type: application/json quando houver JSON.
\n)METHOD
PATH
QUERY
BODY
TIMESTAMP
NONCE
METHOD, GET, POST, PATCH, DELETE em maiúsculas.
PATH, caminho completo com /api/v2, ex. /api/v2/baas/balances. Sem host. Sem / final. IDs reais na URL, não placeholders.
QUERY, string após ?, ou vazio. Mesma ordem da URL.
BODY, bytes exatos do corpo. GET/DELETE assinados (regra usual): literal []. POST/PATCH: JSON idêntico ao enviado. Reenvio OTP: []. JSON: sem null omitido pelo gateway; sem pretty-print diferente do raw.
TIMESTAMP / NONCE, iguais aos headers X-*.
Assinatura: HMAC-SHA256(mensagem, hmac_secret) → hex em X-Signature (confirmar formato com Nuvende).
access_token; não enviar X-Timestamp, X-Nonce nem X-Signature.timestamp, nonce e signature.GET /api/v2/baas/status usa só Bearer (não calcular HMAC).hmac_secret da configuração; abortar se vazio.method = verbo HTTP em maiúsculas.path = caminho completo com /api/v2 (sem host). Se for /api/v2/baas/status, não assinar.query = string após ? na URL, ou vazio.body = corpo bruto do pedido; em GET/DELETE assinados (regra usual), usar o literal [] quando não houver corpo.timestamp = epoch UTC em segundos (string).nonce = identificador único por pedido (ex.: UUID).message = concatenar com \n: method, path, query, body, timestamp, nonce.signature = HMAC-SHA256(message, hmac_secret) em hexadecimal → header X-Signature.hmac_secret do ambiente correto; PATH com /api/v2; QUERY igual à URL; BODY byte-a-byte ([] em GET se for a regra); timestamp/nonce iguais na mensagem e nos headers; token não expirado.
Login → hmac_secret → Status (só Bearer) → GET assinado na plataforma (ex.: listar propostas). Ordem completa: Sobre o BaaS.
Contrato completo: Referência API, Login.
| Método | POST |
| Path | /api/v2/auth/login |
| URL | {{base_url}}/api/v2/auth/login |
{{client_id}} / {{client_secret}}Authorization: Bearer neste pedido.X-Timestamp, X-Nonce nem X-Signature.application/x-www-form-urlencoded)| Campo | Valor |
|---|---|
grant_type | client_credentials |
scope | {{scopes}} (espaços entre scopes) |
| Campo | Uso |
|---|---|
access_token | Gravar em {{access_token}} (após o Login) |
expires_in | Validade em segundos |
token_type | Bearer |
hmac_secret costuma não vir no JSON, use o valor do ambiente.
client_credentials (M2M).403 nos endpoints, mesmo com login 200./api/v2/baas/* (exceto Status) precisam de Bearer + HMAC.curl --request POST \
--url "{{base_url}}/api/v2/auth/login" \
--user "{{client_id}}:{{client_secret}}" \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'scope=baas.onboarding-proposals.read baas.onboarding-proposals.write baas.onboarding-natural-persons.read baas.onboarding-natural-persons.write baas.onboarding-legal-persons.read baas.onboarding-legal-persons.write baas.contracts.read baas.seller-webhooks.read baas.seller-webhooks.write'
application/x-www-form-urlencoded)| Campo | Valor |
|---|---|
grant_type | client_credentials |
scope | {{scopes}} |
{
"token_type": "Bearer",
"expires_in": 3600,
"access_token": "{{access_token}}"
}