Produto BaaS (parceiro). Requer Bearer JWT e assinatura HMAC obrigatória. Scope: baas.onboarding-proposals.write. Abre a proposta; campos minimos: document (CPF ou CNPJ) e device.os_version_name. Contato e endereco podem ser enviados no POST; senha, termos e OTP vao no PATCH. CPF/CNPJ ja cadastrado no seller retorna 403 (User already registered). Guia: documentação técnica.
stringAssinatura HMAC-SHA256 da requisição (hex).
stringTimestamp Unix (segundos, UTC) usado na assinatura.
stringNonce único por requisição (anti-replay).
stringRequer Bearer token e assinatura HMAC obrigatórios.
Scope: baas.onboarding-proposals.write.
Envie X-Signature, X-Timestamp e X-Nonce em todo pedido assinado. Veja Autenticação do parceiro.
| Header | Obrigatório | Descrição |
|---|---|---|
Authorization | Sim | Bearer {{access_token}} |
Accept | Sim | application/json |
X-Signature | Sim | Assinatura HMAC |
X-Timestamp | Sim | Timestamp da assinatura |
X-Nonce | Sim | Nonce único por requisição |
Abre a proposta. Não cria o titular nem libera PF/PJ. O PATCH em Atualizar proposta é obrigatório em seguida.
| Campo | Obrigatório | Descrição |
|---|---|---|
document | Sim | CPF ou CNPJ do titular, 11 a 14 dígitos sem máscara |
device.os_version_name | Sim | SO do dispositivo, máx. 255 caracteres |
birth_date | Não | Data Y-m-d |
phone | Não | 8 a 11 dígitos, sem +55 |
full_name | Não | Nome completo, máx. 255 |
social_name | Não | Nome social, máx. 255 |
email | Não | E-mail, máx. 255 |
address | Não | Endereço parcial (CEP, logradouro, número) |
Demais subcampos de device e campos adicionais aceitos pelo produto são repassados quando enviados.
Retorna a proposta criada com id (proposalId), contato informado, objeto journey (etapa atual em journey.step) e arrays onboardingNaturalPersons / onboardingLegalPersons quando já existirem. Pode incluir phone_verification_code e email_verification_code quando gerados. Não inclui password.
| Código | Corpo | Causa |
|---|---|---|
400 | document | Campo ausente ou formato inválido |
400 | device.os_version_name | Campo ausente |
403 | User already registered | CPF/CNPJ já cadastrado no parceiro |
403 | Customer not found for this seller | Documento pertence a outro parceiro |
| Código | Descrição |
|---|---|
| 200 | Proposta criada |
| 400 | Parâmetros inválidos |
| 401 | Token ou HMAC inválido |
| 403 | Documento já cadastrado ou parceiro sem acesso |
| 422 | Validação ou regra de negócio |
| 500 | Erro interno |
curl --request POST \
--url 'https://api-h.nuvende.com.br/api/v2/baas/onboardings/proposals' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {{access_token}}' \
--header 'X-Timestamp: {{timestamp}}' \
--header 'X-Nonce: {{nonce}}' \
--header 'X-Signature: {{signature}}' \
--data '{"document":"11144477735","device":{"os_version_name":"Android 14"}}'
const axios = require("axios");
const data = {
document: "11144477735",
device: {
os_version_name: "Android 14",
},
};
axios({
method: "post",
url: "https://api-h.nuvende.com.br/api/v2/baas/onboardings/proposals",
headers: {
"Content-Type": "application/json",
Accept: "application/json",
Authorization: "Bearer {{access_token}}",
"X-Timestamp": "{{timestamp}}",
"X-Nonce": "{{nonce}}",
"X-Signature": "{{signature}}",
},
data,
})
.then((response) => console.log(JSON.stringify(response.data)))
.catch((error) => console.log(error.response?.data || error.message));
import json
import requests
url = "https://api-h.nuvende.com.br/api/v2/baas/onboardings/proposals"
payload = {
"document": "11144477735",
"device": {
"os_version_name": "Android 14"
}
}
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "Bearer {{access_token}}",
"X-Timestamp": "{{timestamp}}",
"X-Nonce": "{{nonce}}",
"X-Signature": "{{signature}}",
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
print(response.text)
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => 'https://api-h.nuvende.com.br/api/v2/baas/onboardings/proposals',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => '{"document":"11144477735","device":{"os_version_name":"Android 14"}}',
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Accept: application/json',
'Authorization: Bearer {{access_token}}',
'X-Timestamp: {{timestamp}}',
'X-Nonce: {{nonce}}',
'X-Signature: {{signature}}',
],
]);
$response = curl_exec($curl);
curl_close($curl);
echo $response;
Opcional: envie contato já na abertura (campos não obrigatórios no POST).
curl --request POST \
--url 'https://api-h.nuvende.com.br/api/v2/baas/onboardings/proposals' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer {{access_token}}' \
--header 'X-Timestamp: {{timestamp}}' \
--header 'X-Nonce: {{nonce}}' \
--header 'X-Signature: {{signature}}' \
--data '{"document":"11144477735","birth_date":"1990-05-20","phone":"11987654321","full_name":"Maria Pagadora Exemplo","social_name":"Maria Exemplo","email":"[email protected]","device":{"os_version_name":"Android 14","os_name":"Android","os_version":"14.0.0","ip_address":"203.0.113.10","ip_address_local":"192.168.1.5","engine_name":"Exemplo Smartphone","engine_version":"exemplo-device-id-001","platform_model":"SM-S911B","platform_vendor":"Samsung","firebase_token":"exemplo-firebase-token","latitude":-23.5505,"longitude":-46.6333}}'
{
"id": 352,
"full_name": "Maria Pagadora Exemplo",
"social_name": "Maria Exemplo",
"email": null,
"phone": null,
"document": "11144477735",
"phone_verification_code": null,
"email_verification_code": null,
"birth_date": "1990-05-20",
"created_at": "2025-01-15 10:00:00",
"updated_at": "2025-01-15 10:00:00",
"journey": {
"id": 5062,
"person_type": null,
"last_step": null,
"step": "Baas",
"created_at": "2025-01-15T10:00:00.000000Z",
"updated_at": "2025-01-15T10:00:00.000000Z",
"deleted_at": null,
"onboarding_proposal_id": 352
},
"natural_person_journey": null,
"legal_person_journey": null
}
{
"message": "Customer not found for this seller"
}
{
"message": "User already registered"
}
{
"message": "The document field is required.",
"errors": {
"document": ["The document field is required."],
"device.os_version_name": ["The device.os version name field is required."]
}
}