Produto BaaS (parceiro). Requer Bearer JWT e assinatura HMAC obrigatoria. Scope: baas.onboarding-proposals.write. PATCH obrigatorio apos o POST. Todos os campos do schema de atualizacao sao obrigatorios para criar o titular, confirmar OTP e liberar PF/PJ. Sem PATCH completo, PF/PJ retornam 404 Customer not found. Guia: documentacao tecnica.
stringAssinatura HMAC-SHA256 da requisição (hex).
stringTimestamp Unix (segundos, UTC) usado na assinatura.
stringNonce único por requisição (anti-replay).
stringstringRequer Bearer token e assinatura HMAC obrigatórios.
Scope: baas.onboarding-proposals.write.
| 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 |
Todos os campos abaixo são obrigatórios para criar o titular, validar OTP e liberar PF/PJ. Faça GET antes, faça merge local e reenvie o pacote completo.
| Campo | Obrigatório | Descrição |
|---|---|---|
full_name | Sim | Nome completo, máx. 255 |
social_name | Sim | Nome social, máx. 255 |
email | Sim | E-mail válido |
phone | Sim | 8 a 11 dígitos, sem +55 |
birth_date | Sim | Y-m-d |
password | Sim | Senha de acesso (não retorna no GET) |
password_confirmation | Sim | Idêntica a password |
accepted_terms_at | Sim | Y-m-d H:i:s |
device.os_version_name | Sim | SO do dispositivo |
email_verification_code | Sim | OTP do e-mail (do GET imediato) |
phone_verification_code | Sim | OTP do celular (do GET imediato) |
document | Não | Só para troca de CPF/CNPJ |
notifications_enabled | Não | Default false |
Sem este pacote completo, PF/PJ retornam 404 Customer not found. Documentos KYC não entram aqui.
| Código | Corpo | Causa |
|---|---|---|
422 | {campo} | Campo obrigatório ausente ou password_confirmation divergente |
403 | User already registered | Documento já cadastrado no parceiro |
404 | Customer not found | PF/PJ chamados antes do PATCH completo |
curl --request PATCH \
--url 'https://api-h.nuvende.com.br/api/v2/baas/onboardings/proposals/352' \
--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 '{"birth_date":"1990-05-20","phone":"11987654321","full_name":"Maria Pagadora Exemplo","social_name":"Maria Exemplo","email":"[email protected]","accepted_terms_at":"2025-01-15 10:30:00","password":"SenhaExemplo123","password_confirmation":"SenhaExemplo123","notifications_enabled":false,"email_verification_code":"123456","phone_verification_code":"654321","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}}'
const axios = require("axios");
const data = {
birth_date: "1990-05-20",
phone: "11987654321",
full_name: "Maria Pagadora Exemplo",
social_name: "Maria Exemplo",
email: "[email protected]",
accepted_terms_at: "2025-01-15 10:30:00",
password: "SenhaExemplo123",
password_confirmation: "SenhaExemplo123",
notifications_enabled: false,
email_verification_code: "123456",
phone_verification_code: "654321",
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,
},
};
axios({
method: "patch",
url: "https://api-h.nuvende.com.br/api/v2/baas/onboardings/proposals/352",
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/352"
payload = {
"birth_date": "1990-05-20",
"phone": "11987654321",
"full_name": "Maria Pagadora Exemplo",
"social_name": "Maria Exemplo",
"email": "[email protected]",
"accepted_terms_at": "2025-01-15 10:30:00",
"password": "SenhaExemplo123",
"password_confirmation": "SenhaExemplo123",
"notifications_enabled": False,
"email_verification_code": "123456",
"phone_verification_code": "654321",
"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,
},
}
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "Bearer {{access_token}}",
"X-Timestamp": "{{timestamp}}",
"X-Nonce": "{{nonce}}",
"X-Signature": "{{signature}}",
}
response = requests.patch(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/352',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_POSTFIELDS => '{"birth_date":"1990-05-20","phone":"11987654321","full_name":"Maria Pagadora Exemplo","social_name":"Maria Exemplo","email":"[email protected]","accepted_terms_at":"2025-01-15 10:30:00","password":"SenhaExemplo123","password_confirmation":"SenhaExemplo123","notifications_enabled":false,"email_verification_code":"123456","phone_verification_code":"654321","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}}',
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;
{
"id": 352,
"document": "11144477735",
"full_name": "Maria Pagadora Exemplo",
"social_name": "Maria Exemplo",
"email": "[email protected]",
"phone": "11987654321",
"birth_date": "1990-05-20",
"email_verification_code": null,
"phone_verification_code": null,
"created_at": "2025-01-15 10:00:00",
"updated_at": "2025-01-15 12:00:00",
"journey": {
"id": 5062,
"person_type": "natural_person",
"last_step": "proposal",
"step": "natural_person",
"created_at": "2025-01-15T10:00:00.000000Z",
"updated_at": "2025-01-15T12:00:00.000000Z"
},
"natural_person_journey": null,
"legal_person_journey": null,
"onboardingNaturalPersons": [
{
"id": 268,
"full_name": "Maria Pagadora Exemplo",
"document": "11144477735",
"status": "pending",
"onboarding_proposal_id": 352,
"journey": {
"id": 5100,
"step": "documents",
"person_type": "natural_person",
"created_at": "2025-01-15T12:00:00.000000Z"
}
}
],
"onboardingLegalPersons": []
}
Alternativa em dois PATCH (cadastral e OTP separados). Faça GET entre as etapas para obter os códigos OTP.
curl --request PATCH \
--url 'https://api-h.nuvende.com.br/api/v2/baas/onboardings/proposals/352' \
--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 '{"birth_date":"1990-05-20","phone":"11987654321","full_name":"Maria Pagadora Exemplo","social_name":"Maria Exemplo","email":"[email protected]","accepted_terms_at":"2025-01-15 10:30:00","password":"SenhaExemplo123","password_confirmation":"SenhaExemplo123","notifications_enabled":false,"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}}'
curl --request PATCH \
--url 'https://api-h.nuvende.com.br/api/v2/baas/onboardings/proposals/352' \
--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 '{"email_verification_code":"123456","phone_verification_code":"654321"}'
{
"id": 352,
"document": "11144477735",
"full_name": "Maria Pagadora Exemplo",
"social_name": "Maria Exemplo",
"email": "[email protected]",
"phone": "11987654321",
"birth_date": "1990-05-20",
"email_verification_code": null,
"phone_verification_code": null,
"created_at": "2025-01-15 10:00:00",
"updated_at": "2025-01-15 12:30:00",
"journey": {
"id": 5062,
"person_type": "natural_person",
"last_step": "proposal",
"step": "natural_person",
"created_at": "2025-01-15T10:00:00.000000Z",
"updated_at": "2025-01-15T12:30:00.000000Z"
},
"onboardingNaturalPersons": [
{
"id": 268,
"full_name": "Maria Pagadora Exemplo",
"document": "11144477735",
"status": "pending",
"onboarding_proposal_id": 352
}
],
"onboardingLegalPersons": []
}