POST/api/v2/baas/onboardings/proposals

Criar

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.

Parâmetros

AcceptObrigatório
header
Tipo:string
X-SignatureObrigatório
header

Assinatura HMAC-SHA256 da requisição (hex).

Tipo:string
X-TimestampObrigatório
header

Timestamp Unix (segundos, UTC) usado na assinatura.

Tipo:string
X-NonceObrigatório
header

Nonce único por requisição (anti-replay).

Tipo:string

Autenticação e headers

Requer 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.

HeaderObrigatórioDescrição
AuthorizationSimBearer {{access_token}}
AcceptSimapplication/json
X-SignatureSimAssinatura HMAC
X-TimestampSimTimestamp da assinatura
X-NonceSimNonce único por requisição

Corpo (POST)

Abre a proposta. Não cria o titular nem libera PF/PJ. O PATCH em Atualizar proposta é obrigatório em seguida.

CampoObrigatórioDescrição
documentSimCPF ou CNPJ do titular, 11 a 14 dígitos sem máscara
device.os_version_nameSimSO do dispositivo, máx. 255 caracteres
birth_dateNãoData Y-m-d
phoneNão8 a 11 dígitos, sem +55
full_nameNãoNome completo, máx. 255
social_nameNãoNome social, máx. 255
emailNãoE-mail, máx. 255
addressNãoEndereço parcial (CEP, logradouro, número)

Demais subcampos de device e campos adicionais aceitos pelo produto são repassados quando enviados.

Resposta (200)

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.

Erros comuns

CódigoCorpoCausa
400documentCampo ausente ou formato inválido
400device.os_version_nameCampo ausente
403User already registeredCPF/CNPJ já cadastrado no parceiro
403Customer not found for this sellerDocumento pertence a outro parceiro

Códigos

CódigoDescrição
200Proposta criada
400Parâmetros inválidos
401Token ou HMAC inválido
403Documento já cadastrado ou parceiro sem acesso
422Validação ou regra de negócio
500Erro interno

Notas

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."]
  }
}