Pular para o conteúdo principal
ℹ️ Conteúdo em atualização

Estamos revisando estes procedimentos. Pessoas técnicas podem encontrar ajustes em códigos de erro ou mapeamentos de payload; valide com os logs e o OpenAPI mais recente. Pessoas não técnicas podem continuar usando o passo a passo e acionar o time de suporte caso algo pareça diferente do descrito.

👤 Cadastro - Dados Pessoais

Guia completo para consultar e atualizar informações cadastrais dos clientes.

Introdução

Este serviço permite que você gerencie os dados cadastrais dos clientes de forma completa, incluindo:

  • 👤 Consulta de dados pessoais
  • ✏️ Atualização de dados pessoais
  • 📍 Gerenciamento de endereços
  • 🔍 Busca de endereço por CEP

URLs Base:

  • Produção: https://api.credsystem.com.br/private-label-app/api/v1
  • Homologação: https://apihml.credsystem.com.br/private-label-app/api/v1

Autenticação

Todas as requisições precisam incluir o token de autenticação no header:

Authorization: Bearer <seu_token_jwt>
Atenção

Tokens inválidos ou expirados retornarão erro 401 Unauthorized.

Dados Pessoais

1. Consultar Dados Pessoais

Retorne as informações cadastrais completas do cliente autenticado.

Endpoint: GET /dados-pessoais

Headers:

Authorization: Bearer <seu_token_jwt>
Accept: application/json
Content-Type: application/json

Exemplo de Request:

GET /private-label-app/api/v1/cadastro/dados-pessoais HTTP/1.1
Host: bff-app-privatelabel-hml.credsystem.com.br
Authorization: Bearer <token>
Accept: application/json

Resposta de Sucesso (200):

{
"codigo": 12345,
"cpf": "12345678901",
"nome": "JOÃO DA SILVA",
"email": "joao@example.com",
"nascimento": "1990-01-15",
"sexo": "M",
"estadoCivil": "Casado",
"nomeMae": "MARIA SILVA",
"documento": "123456789",
"tipoDocumento": "RG",
"orgaoEmissor": "SSP/SP",
"dataEmissaoDocumento": "2020-01-10",
"tipoResidencia": "Própria",
"faixaRiscoAtual": "Baixo"
}

Campos da Resposta:

  • codigo: ID único do cliente no sistema
  • cpf: CPF sem formatação (apenas números)
  • nome: Nome completo em maiúsculas
  • email: E-mail cadastrado
  • nascimento: Data de nascimento (formato YYYY-MM-DD)
  • sexo: Sexo ("M" para Masculino, "F" para Feminino)
  • estadoCivil: Estado civil (Solteiro, Casado, Divorciado, Viúvo)
  • nomeMae: Nome completo da mãe
  • documento: Número do documento de identificação
  • tipoDocumento: Tipo do documento (RG, CNH, RNE)
  • orgaoEmissor: Órgão emissor do documento (ex: SSP/SP)
  • dataEmissaoDocumento: Data de emissão do documento
  • tipoResidencia: Tipo de moradia (Própria, Alugada, Familiar)
  • faixaRiscoAtual: Classificação de risco do cliente

Exemplo de cURL:

curl -X 'GET' \
'https://bff-app-privatelabel-hml.credsystem.com.br/private-label-app/api/v1/cadastro/dados-pessoais' \
-H 'accept: application/json' \
-H 'Authorization: Bearer SEU_TOKEN_JWT'
Uso Prático

Use este endpoint para preencher formulários de edição de perfil ou exibir dados do cliente.

2. Atualizar Dados Pessoais

Atualize as informações cadastrais do cliente.

Endpoint: PUT /dados-pessoais

Headers:

Authorization: Bearer <seu_token_jwt>
Accept: application/json
Content-Type: application/json

Body (exemplo):

{
"codigo": 12345,
"cpf": "12345678901",
"nome": "JOÃO DA SILVA",
"email": "joao.novo@example.com",
"nascimento": "1990-01-15",
"sexo": "M",
"estadoCivil": "Casado",
"nomeMae": "MARIA SILVA",
"documento": "123456789",
"tipoDocumento": "RG",
"orgaoEmissor": "SSP/SP",
"dataEmissaoDocumento": "2020-01-10",
"tipoResidencia": "Própria",
"faixaRiscoAtual": "Baixo"
}

Campos do Request:

  • Todos os campos são obrigatórios
  • codigo: Deve ser o ID do cliente autenticado
  • cpf: Não pode ser alterado
  • nome: Nome completo (será convertido para maiúsculas)
  • email: E-mail válido
  • nascimento: Formato YYYY-MM-DD
  • sexo: "M" ou "F"
  • Demais campos conforme especificação anterior

Resposta de Sucesso (200):

{
"statusCode": 200,
"reasonPhrase": "OK",
"httpVersion": "1.1",
"content": "Dados pessoais atualizados com sucesso"
}

Exemplo de cURL:

curl -X 'PUT' \
'https://bff-app-privatelabel-hml.credsystem.com.br/private-label-app/api/v1/cadastro/dados-pessoais' \
-H 'accept: application/json' \
-H 'Authorization: Bearer SEU_TOKEN_JWT' \
-H 'Content-Type: application/json' \
-d '{
"codigo": 12345,
"cpf": "12345678901",
"nome": "JOÃO DA SILVA",
"email": "joao.novo@example.com",
"nascimento": "1990-01-15",
"sexo": "M",
"estadoCivil": "Casado",
"nomeMae": "MARIA SILVA",
"documento": "123456789",
"tipoDocumento": "RG",
"orgaoEmissor": "SSP/SP",
"dataEmissaoDocumento": "2020-01-10",
"tipoResidencia": "Própria",
"faixaRiscoAtual": "Baixo"
}'
Importante
  • O CPF não pode ser alterado
  • Alguns campos podem ter validações específicas no backend
  • Sempre envie todos os campos obrigatórios

Gerenciamento de Endereços

3. Listar Endereços

Consulte todos os endereços cadastrados do cliente.

Endpoint: GET /dados-pessoais/endereco

Headers:

Authorization: Bearer <seu_token_jwt>
Accept: application/json

Resposta de Sucesso (200):

[
{
"tipoEndereco": "Residencial",
"endereco": "Rua das Flores",
"numero": 123,
"complemento": "Apto 45",
"bairro": "Jardins",
"cep": "01234567",
"cidade": "São Paulo",
"siglaEstado": "SP",
"localEndereco": 1
},
{
"tipoEndereco": "Comercial",
"endereco": "Av Paulista",
"numero": 1000,
"complemento": "Sala 501",
"bairro": "Bela Vista",
"cep": "01310100",
"cidade": "São Paulo",
"siglaEstado": "SP",
"localEndereco": 2
}
]

Campos da Resposta:

  • tipoEndereco: Tipo (Residencial, Comercial, Outros)
  • endereco: Nome da rua/avenida
  • numero: Número do imóvel
  • complemento: Informações adicionais (opcional)
  • bairro: Nome do bairro
  • cep: CEP sem formatação (8 dígitos)
  • cidade: Nome da cidade
  • siglaEstado: UF (2 letras)
  • localEndereco: Identificador do endereço

Exemplo de cURL:

curl -X 'GET' \
'https://bff-app-privatelabel-hml.credsystem.com.br/private-label-app/api/v1/cadastro/dados-pessoais/endereco' \
-H 'accept: application/json' \
-H 'Authorization: Bearer SEU_TOKEN_JWT'

4. Atualizar Endereços

Atualize os endereços cadastrados do cliente.

Endpoint: PUT /dados-pessoais/endereco

Headers:

Authorization: Bearer <seu_token_jwt>
Accept: application/json
Content-Type: application/json

Body:

{
"codigo": 12345,
"enderecos": [
{
"tipoEndereco": "Residencial",
"endereco": "Rua das Flores",
"numero": 123,
"complemento": "Apto 45",
"bairro": "Jardins",
"cep": "01234567",
"cidade": "São Paulo",
"siglaEstado": "SP",
"localEndereco": 1
}
]
}

Campos do Request:

  • codigo: ID do cliente (obrigatório)
  • enderecos: Array de endereços (obrigatório)

Campos de cada Endereço:

  • tipoEndereco: Tipo do endereço (obrigatório)
  • endereco: Logradouro (obrigatório)
  • numero: Número do imóvel (obrigatório)
  • complemento: Complemento (opcional)
  • bairro: Bairro (obrigatório)
  • cep: CEP com 8 dígitos (obrigatório)
  • cidade: Cidade (obrigatório)
  • siglaEstado: UF (obrigatório)
  • localEndereco: Identificador (opcional)

Resposta de Sucesso (200):

{
"statusCode": 200,
"reasonPhrase": "OK",
"httpVersion": "1.1",
"content": "Endereço atualizado com sucesso"
}

Exemplo de cURL:

curl -X 'PUT' \
'https://bff-app-privatelabel-hml.credsystem.com.br/private-label-app/api/v1/cadastro/dados-pessoais/endereco' \
-H 'accept: application/json' \
-H 'Authorization: Bearer SEU_TOKEN_JWT' \
-H 'Content-Type: application/json' \
-d '{
"codigo": 12345,
"enderecos": [
{
"tipoEndereco": "Residencial",
"endereco": "Rua das Flores",
"numero": 123,
"complemento": "Apto 45",
"bairro": "Jardins",
"cep": "01234567",
"cidade": "São Paulo",
"siglaEstado": "SP",
"localEndereco": 1
}
]
}'
Múltiplos Endereços

Você pode enviar múltiplos endereços no array enderecos para cadastrar/atualizar vários de uma vez.

Consulta de CEP

5. Buscar Endereço por CEP

Facilite o preenchimento de formulários buscando dados pelo CEP.

Endpoint: GET /cep/{cep}

Parâmetros:

  • cep (path, obrigatório): CEP com 8 dígitos sem formatação

Headers:

Authorization: Bearer <seu_token_jwt>
Accept: application/json

Exemplo:

GET /private-label-app/api/v1/cadastro/cep/01234567 HTTP/1.1
Host: bff-app-privatelabel-hml.credsystem.com.br
Authorization: Bearer <token>
Accept: application/json

Resposta de Sucesso (200):

{
"cep": "01234567",
"endereco": "Rua das Flores",
"bairro": "Jardins",
"cidade": "São Paulo",
"siglaEstado": "SP"
}

Campos da Resposta:

  • cep: CEP consultado
  • endereco: Logradouro encontrado
  • bairro: Bairro do CEP
  • cidade: Cidade do CEP
  • siglaEstado: UF do estado

Exemplo de cURL:

curl -X 'GET' \
'https://bff-app-privatelabel-hml.credsystem.com.br/private-label-app/api/v1/cadastro/cep/01234567' \
-H 'accept: application/json' \
-H 'Authorization: Bearer SEU_TOKEN_JWT'
Uso Prático

Use este endpoint para autocompletar formulários de endereço quando o usuário digitar o CEP.

Erro - CEP Não Encontrado (404):

{
"error": {
"message": "CEP não encontrado",
"code": 404
}
}

Códigos de Resposta

CódigoStatusDescrição
200✅ SucessoOperação realizada com sucesso
204∅ Sem conteúdoSem dados para retornar
400⚠️ Bad RequestParâmetros inválidos ou dados incompletos
401⛔ UnauthorizedToken inválido ou expirado
404🔍 Not FoundRecurso não encontrado (ex: CEP inválido)
500💥 Internal ErrorErro interno do servidor

Tratamento de Erros

Erro de Validação (400)

{
"error": {
"message": "Parâmetros inválidos ou dados incompletos",
"code": 400
}
}

Erro de Autenticação (401)

{
"error": {
"message": "Token Inválido ou Token Expirado",
"code": 401
}
}

CEP Não Encontrado (404)

{
"error": {
"message": "CEP não encontrado",
"code": 404
}
}

Fluxo de Edição de Perfil

1. Cliente acessa "Meu Perfil"

2. Carregar Dados Pessoais (GET /dados-pessoais)

3. Exibir formulário preenchido

4. Cliente edita informações (ex: e-mail)

5. Validar dados no frontend

6. Enviar atualização (PUT /dados-pessoais)

7. Exibir mensagem de sucesso

Fluxo de Atualização de Endereço

1. Cliente acessa "Endereços"

2. Listar Endereços (GET /dados-pessoais/endereco)

3. Cliente clica em "Adicionar/Editar Endereço"

4. Cliente digita o CEP

5. Buscar endereço (GET /cep/{cep})

6. Preencher campos automaticamente

7. Cliente completa número e complemento

8. Salvar endereço (PUT /dados-pessoais/endereco)

9. Atualizar lista de endereços

Exemplos de Implementação

Exemplo 1: Formulário de Edição de Perfil

// Carregar dados do cliente
async function carregarDadosPerfil() {
try {
const response = await fetch(
'https://bff-app-privatelabel-hml.credsystem.com.br/private-label-app/api/v1/cadastro/dados-pessoais',
{
headers: {
'Authorization': `Bearer ${token}`,
'Accept': 'application/json'
}
}
);

if (!response.ok) {
throw new Error('Erro ao carregar dados');
}

const dados = await response.json();

// Preencher formulário
document.getElementById('nome').value = dados.nome;
document.getElementById('email').value = dados.email;
document.getElementById('cpf').value = formatarCPF(dados.cpf);
document.getElementById('nascimento').value = dados.nascimento;
document.getElementById('sexo').value = dados.sexo;
document.getElementById('estadoCivil').value = dados.estadoCivil;
document.getElementById('nomeMae').value = dados.nomeMae;

return dados;
} catch (error) {
console.error('Erro ao carregar perfil:', error);
alert('Não foi possível carregar seus dados');
}
}

// Atualizar dados do cliente
async function atualizarDadosPerfil(dados) {
try {
const response = await fetch(
'https://bff-app-privatelabel-hml.credsystem.com.br/private-label-app/api/v1/cadastro/dados-pessoais',
{
method: 'PUT',
headers: {
'Authorization': `Bearer ${token}`,
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify(dados)
}
);

if (!response.ok) {
throw new Error('Erro ao atualizar dados');
}

const resultado = await response.json();
alert(resultado.content);
} catch (error) {
console.error('Erro ao atualizar perfil:', error);
alert('Não foi possível atualizar seus dados');
}
}

Exemplo 2: Busca de CEP com Autopreenchimento

// Buscar endereço por CEP
async function buscarCEP(cep) {
// Remover formatação do CEP
const cepLimpo = cep.replace(/\D/g, '');

if (cepLimpo.length !== 8) {
alert('CEP inválido');
return;
}

try {
const response = await fetch(
`https://bff-app-privatelabel-hml.credsystem.com.br/private-label-app/api/v1/cadastro/cep/${cepLimpo}`,
{
headers: {
'Authorization': `Bearer ${token}`,
'Accept': 'application/json'
}
}
);

if (response.status === 404) {
alert('CEP não encontrado');
return;
}

if (!response.ok) {
throw new Error('Erro ao buscar CEP');
}

const endereco = await response.json();

// Preencher campos
document.getElementById('endereco').value = endereco.endereco;
document.getElementById('bairro').value = endereco.bairro;
document.getElementById('cidade').value = endereco.cidade;
document.getElementById('estado').value = endereco.siglaEstado;

// Focar no campo número
document.getElementById('numero').focus();

return endereco;
} catch (error) {
console.error('Erro ao buscar CEP:', error);
alert('Erro ao consultar CEP');
}
}

// Event listener para campo CEP
document.getElementById('cep').addEventListener('blur', function(e) {
const cep = e.target.value;
if (cep) {
buscarCEP(cep);
}
});

Exemplo 3: Gerenciar Múltiplos Endereços

// Listar endereços do cliente
async function listarEnderecos() {
try {
const response = await fetch(
'https://bff-app-privatelabel-hml.credsystem.com.br/private-label-app/api/v1/cadastro/dados-pessoais/endereco',
{
headers: {
'Authorization': `Bearer ${token}`,
'Accept': 'application/json'
}
}
);

if (!response.ok) {
throw new Error('Erro ao carregar endereços');
}

const enderecos = await response.json();

// Renderizar lista
const lista = document.getElementById('lista-enderecos');
lista.innerHTML = '';

enderecos.forEach(endereco => {
const card = criarCardEndereco(endereco);
lista.appendChild(card);
});

return enderecos;
} catch (error) {
console.error('Erro ao listar endereços:', error);
alert('Não foi possível carregar os endereços');
}
}

// Salvar endereços
async function salvarEnderecos(codigoCliente, enderecos) {
try {
const response = await fetch(
'https://bff-app-privatelabel-hml.credsystem.com.br/private-label-app/api/v1/cadastro/dados-pessoais/endereco',
{
method: 'PUT',
headers: {
'Authorization': `Bearer ${token}`,
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
codigo: codigoCliente,
enderecos: enderecos
})
}
);

if (!response.ok) {
throw new Error('Erro ao salvar endereços');
}

const resultado = await response.json();
alert(resultado.content);

// Recarregar lista
await listarEnderecos();
} catch (error) {
console.error('Erro ao salvar endereços:', error);
alert('Não foi possível salvar os endereços');
}
}

// Criar card visual de endereço
function criarCardEndereco(endereco) {
const card = document.createElement('div');
card.className = 'endereco-card';
card.innerHTML = `
<div class="tipo">${endereco.tipoEndereco}</div>
<div class="logradouro">
${endereco.endereco}, ${endereco.numero}
${endereco.complemento ? ' - ' + endereco.complemento : ''}
</div>
<div class="localidade">
${endereco.bairro} - ${endereco.cidade}/${endereco.siglaEstado}
</div>
<div class="cep">CEP: ${formatarCEP(endereco.cep)}</div>
<button onclick="editarEndereco(${endereco.localEndereco})">Editar</button>
`;
return card;
}

Funções Auxiliares

Formatação de CPF

function formatarCPF(cpf) {
return cpf.replace(/(\d{3})(\d{3})(\d{3})(\d{2})/, '$1.$2.$3-$4');
}

function limparCPF(cpf) {
return cpf.replace(/\D/g, '');
}

Formatação de CEP

function formatarCEP(cep) {
return cep.replace(/(\d{5})(\d{3})/, '$1-$2');
}

function limparCEP(cep) {
return cep.replace(/\D/g, '');
}

Validação de E-mail

function validarEmail(email) {
const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
return regex.test(email);
}

Validação de Data

function validarDataNascimento(data) {
const nascimento = new Date(data);
const hoje = new Date();
const idade = hoje.getFullYear() - nascimento.getFullYear();

// Deve ter pelo menos 18 anos
return idade >= 18;
}

Boas Práticas

1. Validação no Frontend

function validarFormularioPerfil(dados) {
const erros = [];

if (!dados.nome || dados.nome.length < 3) {
erros.push('Nome deve ter pelo menos 3 caracteres');
}

if (!validarEmail(dados.email)) {
erros.push('E-mail inválido');
}

if (!validarDataNascimento(dados.nascimento)) {
erros.push('Cliente deve ter pelo menos 18 anos');
}

if (erros.length > 0) {
alert(erros.join('\n'));
return false;
}

return true;
}

2. Cache de Dados

// Cache dos dados pessoais
const CACHE_TIME = 300000; // 5 minutos

async function getDadosPessoaisComCache() {
const cache = sessionStorage.getItem('dadosPessoais');
const cacheTime = sessionStorage.getItem('dadosPessoaisTime');

if (cache && cacheTime && (Date.now() - cacheTime < CACHE_TIME)) {
return JSON.parse(cache);
}

const dados = await carregarDadosPerfil();
sessionStorage.setItem('dadosPessoais', JSON.stringify(dados));
sessionStorage.setItem('dadosPessoaisTime', Date.now());

return dados;
}

3. Feedback Visual

async function atualizarPerfilComFeedback(dados) {
// Mostrar loading
const botao = document.getElementById('btn-salvar');
botao.disabled = true;
botao.textContent = 'Salvando...';

try {
await atualizarDadosPerfil(dados);

// Mostrar sucesso
mostrarNotificacao('Dados atualizados com sucesso!', 'success');

// Limpar cache
sessionStorage.removeItem('dadosPessoais');
} catch (error) {
mostrarNotificacao('Erro ao atualizar dados', 'error');
} finally {
botao.disabled = false;
botao.textContent = 'Salvar';
}
}

4. Debounce para Busca de CEP

let timeoutCEP;

function buscarCEPComDebounce(cep) {
clearTimeout(timeoutCEP);

timeoutCEP = setTimeout(() => {
buscarCEP(cep);
}, 500); // Aguarda 500ms após parar de digitar
}

Glossário

TermoSignificado
CPFCadastro de Pessoas Físicas
CEPCódigo de Endereçamento Postal
UFUnidade Federativa (sigla do estado)
LogradouroNome da rua, avenida, travessa, etc.
Órgão EmissorInstituição que emitiu o documento (ex: SSP/SP)
Faixa de RiscoClassificação de risco do cliente (Baixo, Médio, Alto)

Perguntas Frequentes

1. Posso alterar o CPF do cliente? Não, o CPF é um dado imutável e não pode ser alterado.

2. Quantos endereços um cliente pode ter? Não há limite definido. Você pode cadastrar endereços residencial, comercial e outros.

3. O que fazer se o CEP não for encontrado? Se receber erro 404, solicite que o cliente preencha manualmente ou verifique se o CEP está correto.

4. Preciso enviar todos os campos ao atualizar? Sim, todos os campos obrigatórios devem ser enviados na atualização.

5. Como sei qual é o codigo do cliente? O código é retornado no GET /dados-pessoais e deve ser o mesmo usado nas atualizações.

Suporte

Para dúvidas ou problemas com a integração, entre em contato com a equipe de suporte técnico.