📋 Documentação da API - Detalhamento de Proposta por Número
Endpoint
GET /api/gestor/v1/propostas/numero/:proposeNumber
Descrição
Retorna o detalhamento completo de uma proposta específica através do seu número identificador. Esta rota consolida informações do plano contratado, beneficiários (titular e dependentes), anexos, arquivos gerados, pendências, contraprestação pecuniária, serviços adicionais, desistências/reaberturas e dados de consolidação. É uma rota essencial para visualização e gerenciamento completo de propostas.
🔐 Autenticação
Esta rota requer autenticação via token JWT e api-key.
Headers obrigatórios:
api-key: <sua-api-key>
Authorization: Bearer <seu-token-jwt>
🌐 Hostnames
DEV:
- VPN:
100.113.139.94:3002 - PUBLIC:
136.116.58.209:3002
URL Completa de Exemplo (DEV):
http://136.116.58.209:3002/api/gestor/v1/propostas/numero/2026010001
📥 Parâmetros
Path Parameters
| Parâmetro | Tipo | Obrigatório | Descrição | Exemplo |
|---|---|---|---|---|
proposeNumber | number | Sim | Número identificador único da proposta | 1315412 |
Query Parameters
| Parâmetro | Tipo | Obrigatório | Descrição | Exemplo |
|---|---|---|---|---|
userId | number | Não | ID do usuário solicitante (usado para validar permissões de visualização de arquivos sensíveis como DS e Auditoria) | 19 |
onlyFiles | number | Não | Se 1, retorna apenas os arquivos gerados. Se 0 ou omitido, retorna dados completos | 0 ou 1 |
📤 Resposta de Sucesso
Status Code: 200 OK
Estrutura da Resposta
{
"timestamp": "02/02/2026 22:35:53",
"dadosSincronizados": false,
"dadosCustumer": {
"cliente": "LUCAS PARREIRA MENDES",
"email": "[email protected]",
"telefone": "(34) 99689-2252",
"tipoClinte": "Pessoa Jurídica"
},
"informacoesPlano": {
"nome": "PLENO ON EMPRESARIAL ENFERMARIA",
"endereco": {
"cep": "38405-194",
"estado": "MG",
"cidade": "Uberlândia",
"bairro": "Custódio Pereira",
"logradouro": "Rua Ângelo Zoccolli",
"numero": "580",
"complemento": "",
"anexos": [
{
"nome": "Comprovante de Endereço",
"anexo": ""
}
]
},
"anexosNovo": {
"contratante": [
{
"nomeArquivo": "cpf",
"url": "https://somosuni.s3.sa-east-1.amazonaws.com/..."
},
{
"nomeArquivo": "comprovante-endereco",
"url": "https://somosuni.s3.sa-east-1.amazonaws.com/..."
}
],
"empresa": [
{
"nomeArquivo": "contrato-social",
"url": "https://somosuni.s3.sa-east-1.amazonaws.com/..."
},
{
"nomeArquivo": "rg-adm",
"url": "https://somosuni.s3.sa-east-1.amazonaws.com/..."
}
],
"dependentes": [
{
"nomeDependente": "LUCAS PARREIRA MENDES",
"cpf": "931.827.166-20",
"nomeArquivo": "cpf",
"url": "https://somosuni.s3.sa-east-1.amazonaws.com/..."
},
{
"nomeDependente": "CARLA VIEIRA MOTA PARREIRA",
"cpf": "618.015.851-72",
"nomeArquivo": "certidao-casamento",
"url": "https://somosuni.s3.sa-east-1.amazonaws.com/..."
}
]
},
"servicosAdicionaisCompleto": [],
"ans": "497676232",
"tabelaVariacao": 2,
"tabelaVariacaoNome": "Tabela Pessoa Jurídica",
"margemVenda": 0,
"valorBase": 169.51,
"servicosAdicionais": [],
"desconto": 0,
"valorTotal": 669.11,
"valorComDesconto": 1506.35,
"valorComAdicionais": 720.71,
"descontosServicosAdicionaisFull": [],
"descontosProgressivosGlobaisAplicados": [],
"descontosProgressivosPlanoAplicados": [],
"valorAdicionais": 51.6,
"responsaveisLegaisAdicionais": [],
"grupoEconomico": "",
"followUpInfo": {
"type": "pj",
"leadId": "cf9fab22-1a15-4f22-a9c6-50c47798a6ac",
"shortLongId": "CF9FAB",
"sourceLead": "custom-funil",
"etapa_kanban": 3
},
"numeroPropostasFilhas": [],
"tipoContratacao": "Pessoa Jurídica",
"acomodacao": "Enfermaria",
"abrangenciaGeografica": "Municipal",
"areaCobertura": [
"Ambulatorial + Hospitalar com obstetrícia"
]
},
"beneficiarios": [
{
"nome": "LUCAS PARREIRA MENDES",
"cpf": "931.827.166-20",
"parentesco": "Titular",
"prc": "PRC 10",
"cns": "706305721904179",
"rg": "53.685.731-3",
"tipoVenda": {
"id": 1,
"titulo": "PLENO ON ENFERMARIA CA",
"status": 1,
"arquivos": [...],
"gestor_user_Id": 1,
"tipo_pessoa": "PJ",
"id_plano_especifico": 10,
"com_adicionais": 1
},
"dataNascimento": "04/06/1973",
"sexo": "masculino",
"servicosAdicionais": [3, 4],
"servicosAdicionaisCompleto": [
{
"id": 3,
"label": "UTI MÓVEL TERRESTRE",
"descricao": "AMBULÂNCIA",
"valor": 9,
"status": 1,
"gestor_user_Id": 24,
"criado_em": "2025-12-30T23:06:05.000Z",
"tipo": 0,
"url_modelo": "",
"pre_setado": 1,
"ordem": 1,
"descontosAplicados": []
}
],
"orgaoEmissor": "SSP",
"estadoEmissor": "SP",
"cidadeNascimento": "Uberlândia",
"estadoNascimento": "MG",
"naturalidade": "Uberlândia-undefined",
"nomeMae": "MARIA HELENA PARREIRA",
"estadoCivil": "casado",
"escolaridade": "3 Grau",
"profissao": "SOCIO",
"tipoVinculo": "colaborador",
"vinculoColaborador": null,
"anexos": [
{
"nome": "RG",
"hash": ""
},
{
"nome": "CPF",
"hash": ""
},
{
"nome": "Anamnese",
"anexo": ""
}
]
}
],
"endereco": {
"endereco": "Rua Ângelo Zoccolli, 580, Custódio Pereira, Uberlândia, MG"
},
"generatedFiles": [
{
"id": 1724,
"id_arquivo_tipo_venda": 10,
"cpf": "931.827.166-20",
"updateAt": "2026-01-07T19:28:25.000Z",
"url_arquivo_gerado": "https://somosuni.s3.sa-east-1.amazonaws.com/...",
"numero_proposta": 268279,
"modelOriginalFileTitle": "MANUAL DE ORIENTAÇÃO",
"order": 1
},
{
"cpf": "618.015.851-72",
"modelOriginalFileTitle": "Decl. anexada 618.015.851-72",
"url_arquivo_gerado": "https://somosuni.s3.sa-east-1.amazonaws.com/...",
"extension": "pdf"
}
],
"pendenciesFull": [],
"contraprestacaoPecuniaria": [
{
"nome": "LUCAS PARREIRA MENDES",
"valorCotado": 565.91,
"dataNascimento": "04/06/1973",
"desconto": 0,
"valorComDesconto": 565.91,
"faixaEtaria": "49 a 53 anos"
}
],
"anexosNew": {
"contratante": [...],
"empresa": [...],
"dependentes": [...]
},
"anexos": [
{
"nome": "Anexo Proposta",
"link": ""
},
{
"nome": "Anexo Anamnese",
"link": ""
}
],
"status": 1,
"desistenciasReaberturasProposta": [],
"propostaConsolidada": 0,
"nomeUserPropostaConsolidada": null,
"permissionToShowDsAndAuditFile": 1,
"signedFileUrl": null,
"userIdUploadedSignedFile": null,
"dsFrontUrl": "https://ds-dev.somosuni.com.br/?tenant=384577",
"empresa": {
"cnpj": "10.368.691/0001-34",
"emailEmpresa": "[email protected]",
"dataAbertura": "19/09/2008",
"naturezaJuridica": "associação privada",
"telefoneComercial": "(34) 99689-2252",
"razaoSocial": "IGREJA PRESBITERIANA SETOR LESTE",
"nomeFantasia": "",
"atividadePrincipal": "Atividades de organizações religiosas ou filosóficas",
"cnae": "9491000",
"porteEmpresa": "Micro Empresa",
"inscricaoMunicipal": "",
"inscricaoEstadual": "",
"endereco": {
"cep": "38405-194",
"estado": "MG",
"cidade": "Uberlândia",
"bairro": "Custódio Pereira",
"logradouro": "Rua Ângelo Zoccolli",
"numero": "580",
"complemento": ""
},
"comprovantes": {
"contrato-social": [
"https://somosuni.s3.sa-east-1.amazonaws.com/..."
],
"rg-adm": [
"https://somosuni.s3.sa-east-1.amazonaws.com/..."
]
}
}
}
📊 Campos Detalhados da Resposta
Campos Principais
| Campo | Tipo | Descrição |
|---|---|---|
timestamp | string | Data e hora de criação da proposta (formato DD/MM/YYYY HH:mm:ss) |
status | number | Status da proposta (0 = inativa, 1 = ativa) |
propostaConsolidada | number | Indica se a proposta foi consolidada (0 = não, 1 = sim) |
nomeUserPropostaConsolidada | string | null | Nome do usuário que consolidou a proposta |
signedFileUrl | string | null | URL do arquivo de proposta assinada (se houver) |
userIdUploadedSignedFile | number | null | ID do usuário que fez upload da proposta assinada |
dadosCustumer (Objeto)
Informações básicas do cliente/contratante.
| Campo | Tipo | Descrição |
|---|---|---|
cliente | string | Nome completo do cliente |
email | string | E-mail do cliente |
telefone | string | Telefone de contato |
tipoClinte | string | Tipo de cliente ("Pessoa Física" ou "Pessoa Jurídica") |
informacoesPlano (Objeto)
Informações detalhadas do plano contratado.
| Campo | Tipo | Descrição |
|---|---|---|
nome | string | Nome comercial do plano |
ans | string | Registro ANS do plano |
tabelaVariacao | string | ID da tabela de variação de preços |
tabelaVariacaoNome | string | Nome da tabela de variação |
margemVenda | number | Margem de venda aplicada (%) |
valorBase | number | Valor base do plano |
servicosAdicionais | array | IDs dos serviços adicionais contratados |
servicosAdicionaisCompleto | array | Detalhes completos dos serviços adicionais (objetos com id, nome, valor) |
desconto | number | Percentual de desconto aplicado |
valorTotal | number | Valor total sem desconto |
valorComDesconto | number | Valor total com desconto aplicado |
valorComAdicionais | number | Valor incluindo serviços adicionais |
valorAdicionais | number | Valor total apenas dos adicionais |
descontosServicosAdicionaisFull | array | Lista de descontos aplicados aos serviços adicionais |
descontosProgressivosGlobaisAplicados | array | Descontos progressivos globais aplicados |
descontosProgressivosPlanoAplicados | array | Descontos progressivos do plano aplicados |
responsaveisLegaisAdicionais | array | Responsáveis legais adicionais (para dependentes menores) |
grupoEconomico | string | Nome do grupo econômico/empresa |
tipoContratacao | string | Tipo de contratação ("Individual", "Coletivo Empresarial", "Coletivo por Adesão") |
acomodacao | string | Tipo de acomodação ("Enfermaria", "Apartamento") |
abrangenciaGeografica | string | Abrangência geográfica do plano |
areaCobertura | array | Array com descrições das áreas de cobertura |
followUpInfo | object | Informações do lead vinculado à proposta |
numeroPropostasFilhas | array | Propostas multiplanos associadas |
endereco | object | Endereço completo do contratante |
anexosNovo | object | Anexos organizados por categoria (empresa, contratante, dependentes) |
dsFrontUrl | string | URL do frontend de Declaração de Saúde |
anexosNovo (Sub-objeto)
Anexos da proposta organizados por categoria. Cada categoria contém um array de objetos com os seguintes campos:
Para contratante e empresa:
| Campo | Tipo | Descrição |
|---|---|---|
nomeArquivo | string | Nome/slug do tipo de arquivo (ex: "cpf", "rg", "contrato-social") |
url | string | URL assinada do arquivo (temporária) |
Para dependentes:
| Campo | Tipo | Descrição |
|---|---|---|
nomeDependente | string | Nome completo do dependente |
cpf | string | CPF do dependente (formatado) |
nomeArquivo | string | Nome/slug do tipo de arquivo |
url | string | URL assinada do arquivo (temporária) |
followUpInfo (Sub-objeto)
| Campo | Tipo | Descrição |
|---|---|---|
type | string | Tipo da proposta ("pf" ou "pj") |
leadId | string | Long ID do lead vinculado (UUID) |
shortLongId | string | Versão curta do long_id (6 primeiros caracteres) |
sourceLead | string | Origem do lead |
etapa_kanban | number | Etapa atual do lead no kanban |
beneficiarios (Array)
Lista de todos os beneficiários (dependentes) da proposta. O titular não está incluído neste array.
| Campo | Tipo | Descrição |
|---|---|---|
nome | string | Nome completo do beneficiário |
cpf | string | CPF do beneficiário |
rg | string | RG do beneficiário |
dataNascimento | string | Data de nascimento (formato DD/MM/YYYY) |
sexo | string | Sexo ("masculino" ou "feminino") |
parentesco | string | Parentesco com o titular |
prc | string | null | Número do PRC (Prontuário) |
cns | string | null | Número do Cartão Nacional de Saúde |
tipoVenda | object | Objeto com detalhes do tipo de venda (id, titulo, status, arquivos, gestor_user_Id, tipo_pessoa, id_plano_especifico, com_adicionais) |
servicosAdicionais | array | IDs dos serviços adicionais do beneficiário |
servicosAdicionaisCompleto | array | Detalhes completos dos serviços (com descontos aplicados) |
orgaoEmissor | string | Órgão emissor do RG |
estadoEmissor | string | UF de emissão do RG |
cidadeNascimento | string | Cidade de nascimento |
estadoNascimento | string | Estado de nascimento |
naturalidade | string | Naturalidade completa (Cidade-UF) |
nomeMae | string | Nome completo da mãe |
estadoCivil | string | Estado civil |
habitos | object | null | Dados de anamnese/hábitos |
escolaridade | string | Nível de escolaridade |
profissao | string | Profissão |
tipoVinculo | string | Tipo de vínculo ("colaborador" ou "dependente") |
vinculoColaborador | object | null | Dados do vínculo empregatício |
anexos | array | Array de anexos (RG, CPF, Anamnese) |
generatedFiles (Array)
Lista de arquivos gerados automaticamente para a proposta (fichas, declarações, etc.).
| Campo | Tipo | Descrição |
|---|---|---|
id | number | ID do arquivo gerado (pode não existir para arquivos anexados manualmente) |
cpf | string | CPF do beneficiário relacionado ao arquivo |
numero_proposta | number | Número da proposta |
id_arquivo_tipo_venda | number | ID do modelo de arquivo base |
url_arquivo_gerado | string | URL assinada do arquivo (válida temporariamente) |
updateAt | string | Data/hora de atualização do arquivo (ISO 8601) |
modelOriginalFileTitle | string | Nome/título do modelo original |
order | number | Ordem de exibição do arquivo |
extension | string | Extensão do arquivo ("pdf", "docx", etc.) |
Tipos especiais de arquivos incluídos:
- Declarações anexadas externamente: Com título "Decl. anexada [CPF]"
- Auditorias anexadas: Com título "Auditoria anexada [CPF]"
- CPT Externas: Com título "CPT Ext. [CPF]"
- Auditorias geradas: Com título "Auditoria. gerada [CPF]"
- Declarações geradas internamente: Com título "Decl. gerada [CPF]"
pendenciesFull (Array)
Lista completa de pendências da proposta (resolvidas e não resolvidas).
| Campo | Tipo | Descrição |
|---|---|---|
id | number | ID da pendência |
numero_proposta | number | Número da proposta |
tipo_beneficiario | string | Tipo ("titular", "dependente", "empresa") |
cpf_beneficiario | string | CPF do beneficiário |
cnpj_empresa | string | null | CNPJ da empresa (se aplicável) |
descricao | string | Descrição da pendência |
status | number | Status (0 = criada, 1 = em análise, 2 = resolvida) |
annexes | array | Anexos enviados para resolver a pendência |
criado_em | string | Data/hora de criação (ISO 8601) |
contraprestacaoPecuniaria (Array)
Lista de valores de contraprestação pecuniária por beneficiário.
| Campo | Tipo | Descrição |
|---|---|---|
nome | string | Nome do beneficiário |
valorCotado | number | Valor cotado sem desconto |
dataNascimento | string | Data de nascimento |
desconto | number | Percentual de desconto aplicado |
valorComDesconto | number | Valor final com desconto |
faixaEtaria | string | Faixa etária aplicada (ex: "30 a 33 anos") |
desistenciasReaberturasProposta (Array)
Lista de motivos de cancelamento ou reabertura da proposta (não do lead).
| Campo | Tipo | Descrição |
|---|---|---|
id | number | ID do motivo |
id_longo_lead | string | Long ID do lead vinculado |
id_tipo_motivo | number | ID do tipo de motivo |
titulo | string | Título/descrição do motivo |
gestor_user_Id | number | ID do usuário responsável |
numero_proposta | number | Número da proposta |
criado_em | string | Data/hora de registro (ISO 8601) |
typeMotive | string | Tipo do motivo ("lead" ou "propose") |
empresa (Objeto) - Opcional
Dados da empresa contratante (apenas para propostas PJ).
| Campo | Tipo | Descrição |
|---|---|---|
cnpj | string | CNPJ formatado |
emailEmpresa | string | E-mail corporativo da empresa |
dataAbertura | string | Data de abertura da empresa (formato DD/MM/YYYY) |
naturezaJuridica | string | Natureza jurídica da empresa |
telefoneComercial | string | Telefone comercial |
razaoSocial | string | Razão social da empresa |
nomeFantasia | string | Nome fantasia da empresa |
atividadePrincipal | string | Descrição da atividade principal |
cnae | string | Código CNAE |
porteEmpresa | string | Porte da empresa ("Micro Empresa", "Pequena Empresa", etc.) |
inscricaoMunicipal | string | Inscrição municipal |
inscricaoEstadual | string | Inscrição estadual |
endereco | object | Endereço da empresa (cep, estado, cidade, bairro, logradouro, numero, complemento) |
comprovantes | object | Comprovantes organizados por tipo de documento |
comprovantes (Sub-objeto)
Comprovantes/anexos da empresa organizados por categoria:
| Campo | Tipo | Descrição |
|---|---|---|
contrato-social | array | URLs dos contratos sociais (podem ser múltiplos) |
rg-adm | array | URLs dos RGs dos administradores |
insc-mun-alvara | array | URLs de inscrições municipais e alvarás |
dctf | array | URLs de DCTFs |
outros | array | URLs de outros documentos |
❌ Respostas de Erro
400 - Bad Request (Número da Proposta Obrigatório)
{
"status": "error",
"message": "Número da proposta é obrigatório"
}
400 - Bad Request (userId Inválido)
Retornado quando o userId informado é inválido ou não existe.
{
"status": "error",
"message": "userId inválido"
}
OU
{
"status": "error",
"message": "Usuário não encontrado"
}
400 - Bad Request (Proposta Não Encontrada)
{
"status": "error",
"message": "Proposta não encontrada"
}
400 - Bad Request (Tabela de Variação Não Encontrada)
{
"status": "error",
"message": "Tabela de variação não encontrada, para o plano escolhido"
}
400 - Bad Request (Erro ao Consultar Auditorias)
{
"message": "Erro ao consultar auditorias (audit app)",
"error": "Descrição do erro"
}
500 - Internal Server Error
Retornado em caso de erro interno não tratado.
{
"error": "Internal server error",
"message": "Descrição do erro"
}
📊 Exemplos de Uso
Exemplo 1: Buscar detalhes completos de uma proposta
Request:
curl -X GET "http://136.116.58.209:3002/api/gestor/v1/propostas/numero/2026010001" \
-H "Authorization: Bearer seu-token-jwt" \
-H "api-key: sua-api-key"
Response:
{
"timestamp": "05/02/2026 14:30:45",
"dadosSincronizados": false,
"dadosCustumer": {
"cliente": "Maria Silva Santos",
"email": "[email protected]",
"telefone": "11999887766",
"tipoClinte": "Pessoa Física"
},
"informacoesPlano": {
"nome": "Plano Especial 450 E",
"ans": "384577",
"valorComDesconto": 1665.00
},
"beneficiarios": [...],
"status": 1
}
Exemplo 2: Buscar proposta com validação de permissões do usuário
Request:
curl -X GET "http://136.116.58.209:3002/api/gestor/v1/propostas/numero/2026010001?userId=19" \
-H "Authorization: Bearer seu-token-jwt" \
-H "api-key: sua-api-key"
Response:
Retorna dados completos com permissionToShowDsAndAuditFile indicando se o usuário pode visualizar arquivos sensíveis.
Exemplo 3: Buscar apenas arquivos gerados da proposta
Request:
curl -X GET "http://136.116.58.209:3002/api/gestor/v1/propostas/numero/2026010001?onlyFiles=1" \
-H "Authorization: Bearer seu-token-jwt" \
-H "api-key: sua-api-key"
Response:
[
{
"id": 1234,
"cpf": "12345678900",
"numero_proposta": 2026010001,
"url_arquivo_gerado": "https://...",
"modelOriginalFileTitle": "Ficha de Inscrição",
"order": 1,
"extension": "pdf"
}
]
🔄 Fluxo de Processamento
- Validação de Parâmetros: Verifica se
proposeNumberfoi fornecido - Validação de Usuário (se
userIdfornecido):- Verifica se o usuário existe
- Valida permissões individuais do usuário
- Verifica permissões de departamento
- Define se pode visualizar arquivos de DS e Auditoria
- Busca da Proposta: Consulta proposta pelo número
- Parsing de Dados: Extrai e formata dados do JSON da proposta
- Busca de Tipo de Venda: Obtém configuração de arquivos do tipo de venda
- Enriquecimento de Dados:
- Busca tabela de variação de preços
- Verifica se proposta foi consolidada
- Busca serviços adicionais de proposta e beneficiários
- Busca follow-up vinculado ao lead
- Busca leads unificados para etapa do kanban
- Processamento de Anexos:
- Reassina URLs de anexos antigos (S3/Azure)
- Reassina URLs de anexos novos
- Substitui anexos por versões de pendências resolvidas
- Arquivos Gerados:
- Busca arquivos gerados automaticamente por tipo de venda
- Reassina URLs dos arquivos
- Adiciona arquivos de DS anexados externamente (se permissão)
- Adiciona arquivos de auditoria (se permissão)
- Adiciona arquivos de DS gerados internamente (se permissão)
- Ordena arquivos por ordem de exibição
- Pendências: Busca todas as pendências da proposta
- Cálculo de Contraprestação:
- Calcula valores com desconto
- Determina faixa etária de cada beneficiário
- Desistências/Reaberturas: Busca motivos de cancelamento/reabertura
- Consolidação: Monta objeto final com todas as informações
- Resposta: Retorna dados completos ou apenas arquivos (se
onlyFiles=1)
🔐 Segurança
- ✅ Autenticação JWT obrigatória via middleware
verificaToken - ✅ Validação de entrada de dados
- ✅ Controle de permissões para arquivos sensíveis (DS e Auditoria):
- Baseado em permissões individuais do usuário
- Baseado em permissões de departamento
- Apenas usuários com cargos de "diretoria", "supervisor" ou "profissional" têm acesso
- Ou usuários em departamentos com permissão especial "verArquivosDsAuditoria"
⚡ Performance
Otimizações Implementadas
- URLs de arquivos reassinadas com validação temporária (SAS/Pre-signed URLs)
- Cache de dados de usuários para reduzir chamadas à API
- Busca paralela de dados relacionados quando possível
- Filtros em memória para evitar múltiplas queries
Pontos de Atenção
- Reassinatura de URLs de arquivos pode adicionar latência (múltiplas chamadas S3/Azure)
- Grande quantidade de beneficiários e arquivos aumenta tempo de resposta
- Consultas a serviços externos (audit app) podem falhar ou ser lentas
Tempo Médio de Resposta
- Proposta simples (PF, poucos anexos): 500-800ms
- Proposta média (PJ, múltiplos beneficiários): 1-2s
- Proposta complexa (muitos arquivos e beneficiários): 2-4s
🔧 Middlewares Aplicados
- verificaToken: Validação de token JWT para autenticação e identificação de tenant
📝 Notas Importantes
- URLs Assinadas: Todas as URLs de arquivos são reassinadas com tokens temporários de acesso (AWS S3 ou Azure Blob Storage)
- Permissões de Arquivos Sensíveis: Arquivos de DS e Auditoria só são retornados se:
- O parâmetro
userIdfor fornecido - O usuário tiver as permissões adequadas
- O parâmetro
- Substituição de Anexos: Se uma pendência foi resolvida com envio de novo anexo, o anexo original é substituído pela versão mais recente
- Arquivos Gerados: A lista inclui apenas a versão mais recente de cada tipo de arquivo por CPF
- Follow-up: Informações do lead vinculado são buscadas automaticamente
- Consolidação: Se a proposta foi consolidada, retorna o nome do usuário responsável
- Faixa Etária: Calculada automaticamente com base na data de nascimento e tabela de variação
- Serviços Adicionais: Descontos progressivos são calculados e aplicados automaticamente
- Responsividade: Para propostas com muitos arquivos, considere usar
onlyFiles=1para otimizar a consulta
📌 Versão da API
Versão: 1.0
Última Atualização: Fevereiro de 2026
Mantido por: Equipe de Desenvolvimento UNI API
Arquivo Controller: propostas.controller.js
Função: getDetalhesPropostaNumber