1. Clientes
AgRisk
  • AgRisk
    • Documentação
      • AgRisk
    • API - AgRisk
      • Login
        • Atualizar token
        • Autenticar usuário
      • Consultas
        • Solicitar consulta
        • Listar consultas
        • Listar consultas da empresa
      • Listagem de Produtos
        • Listar produtos
      • Clientes
        • Listar clientes
        • Criar cliente
        • Listar contadores de clientes
        • Deletar cliente
        • Listar contadores de clientes no grupo
      • Dados Cadastrais
        • Buscar dados cadastrais
      • Grupos
        • Listar grupos
        • Criar grupo
        • Listar clientes em grupo
        • Criar cliente em grupo
        • Atualizar nome do grupo
        • Deletar grupo
        • Inserir cliente em grupo
        • Remover cliente de grupo
      • Análise de Matrícula
        • Listar análises de matrículas
        • Criar análise de matrícula
        • Buscar análise de matrícula
        • Deletar análise de matrícula
      • Contatos
        • Listar contatos
      • BNDES
        • Listar BNDES
      • Boa Vista
        • Listar Boa Vista
      • Compliance
        • Listar compliance
      • CPRs
        • Listar CPRs
        • Buscar CPR
      • Grupo econômico
        • familiar
          • Listar grupo econômico
          • Listar grupo familiar
      • Imposto de Renda
        • Criar ativo financeiro
        • Listar ativos financeiros
        • Criar dívida
        • Importar dívidas
        • Listar dívidas
        • Atualizar dívida
        • Deletar dívida
        • Criar ativo móvel
        • Listar ativos móveis
        • Atualizar ativo móvel
        • Deletar ativo móvel
        • Criar imóvel urbano
        • Listar imóveis urbanos
        • Atualizar imóvel urbano
        • Deletar imóvel urbano
      • Judicial
        • Listar processos judiciais
        • Buscar processo judicial
        • Solicitar análise por IA
      • Protestos
        • Listar protestos
      • Imóveis Rurais - Simples
        • Criar imóvel rural
        • Listar imóveis rurais
        • Buscar imóvel rural
      • Endividamento
        • Listar SCR (endividamento)
      • Imóveis Rurais - CAR
        • Listar CAR (Cadastro Ambiental Rural)
        • Buscar CAR
        • Deletar CAR
        • Criar CAR
        • Download certidão CAR
      • QUOD
        • Buscar Quod
      • Restritivo Nacional
        • Buscar Restritivo Nacional
      • Veicular
        • Buscar Patrimônio Veicular
      • Sintegra
        • Listar Sintegras
    • APIs
    • Raiz
    • Esquemas
      • API Requests
        • ClientResponse
  • AgFlow
    • 🇧🇷 Português
      • Aprovação
        • Aprovação — Visão Geral
        • Consultar configuração de aprovação
        • Criar configuração de aprovação
        • Atualizar configuração de aprovação
        • Adicionar regra de aprovação
        • Atualizar regra de aprovação
        • Remover configuração de aprovação
        • Consultar aprovação do card
        • Registrar voto de aprovação
        • Atualizar voto de aprovação
      • Fluxo
        • Fluxo — Visão Geral
        • Verificar disponibilidade
        • Criar fluxo
        • Listar fluxos
        • Obter fluxo
        • Atualizar fluxo
        • Remover fluxo
        • Adicionar usuário ao fluxo
        • Remover usuário do fluxo
        • Listar caminhos de campos dinâmicos
      • Consulta a Bureau
        • Consulta a Bureau — Visão Geral
        • Obter configuração de consulta a bureau
        • Criar configuração de consulta a bureau
        • Atualizar configuração de consulta a bureau
      • Campos
        • Campos — Visão Geral
        • Listar campos da fase
        • Atualizar campos da fase
        • Atualizar regras de campos da fase
      • Conversa
        • Conversa — Visão Geral
        • Obter configuração de conversa
        • Criar configuração de conversa
        • Remover configuração de conversa
      • Motores
        • Motores — Visão Geral
        • Consultar resultado do motor de decisão do card
        • Executar motor de decisão no card
        • Consultar inputs do motor de crédito para o card
        • Consultar resultado do motor de crédito do card
        • Executar motor de crédito no card
        • Consultar configuração do motor de decisão
        • Criar configuração do motor de decisão
        • Atualizar configuração do motor de decisão
        • Remover configuração do motor de decisão
        • Consultar detalhe da configuração do motor de crédito
        • Criar configuração do motor de crédito
        • Listar configurações do motor de crédito do flow
        • Listar políticas de crédito aplicáveis a um card
        • Atualizar configuração do motor de crédito
        • Remover configuração do motor de crédito
      • Parecer
        • Parecer — Visão Geral
        • Consultar configuração do parecer técnico
        • Criar configuração do parecer técnico
        • Atualizar configuração do parecer técnico
        • Consultar parecer registrado no card
        • Registrar parecer no card
        • Atualizar parecer no card
      • Formulário Inicial
        • Formulário Inicial — Visão Geral
        • Criar formulário inicial
        • Definir regras condicionais do formulário
        • Atualizar metadados do formulário
        • Consultar formulário inicial
        • Consultar formulário público
        • Atualizar campos do formulário
        • Remover formulário inicial
      • Filtros
        • Filtros — Visão Geral
        • Listar filtros salvos
        • Criar filtro salvo
        • Atualizar filtro salvo
        • Buscar cards do flow
        • Busca global de cards
      • AgRisk
        • AgRisk — Visão Geral
        • Listar produtos de consulta AgRisk
      • Gatilhos
        • Gatilhos — Visão Geral
        • Listar gatilhos do flow
        • Criar gatilho
        • Atualizar gatilho
        • Remover gatilho
        • Listar gatilhos da fase
      • Autenticação
        • Autenticação — Visão Geral
        • Autenticar usuário
      • Mensageria
        • Mensageria — Visão Geral
        • Configurar telefone
        • Consultar configuração de mensageria
        • Criar configuração de mensageria
        • Atualizar configuração de mensageria
        • Criar regras de mensageria
        • Atualizar regra de mensageria
        • Remover configuração de mensageria
      • Empresas e Papéis
        • Empresas e Papéis — Visão Geral
        • Listar usuários da empresa
        • Listar papéis da empresa
        • Atualizar papel
        • Listar catálogo de permissões
        • Criar papel
        • Gerar URL de upload do logotipo
        • Gerar URL de download do logotipo
        • Atribuir papéis a um usuário
      • Documentos
        • Documentos — Visão Geral
        • Criar configuração de geração automática de documento
        • Remover configuração de geração automática de documento
        • Consultar configuração de geração automática de documento
        • Atualizar configuração de geração automática de documento
        • Consultar campos para geração do documento
        • Gerar documento a partir de template
        • Consultar template por ID
        • Listar templates do card
        • Ativar template
        • Criar template de documento
        • Remover template
        • Listar templates
        • Definir campos do template
        • Configurar regras condicionais do template
        • Atualizar arquivo do template
      • Cards
        • Cards — Visão Geral
        • Listar cards de uma fase
        • Mover card de fase
        • Criar card
        • Listar cards do flow
        • Criar card via link público
        • Buscar cards
        • Obter card
        • Atualizar card
        • Atualizar responsável do card
        • Atualizar campos via link público
        • Atualizar campos de fase do card
        • Remover cards em lote
        • Atualizar Ficha Cadastral do card
        • Obter responsável do card
        • Listar etiquetas do card
        • Listar campos de uma fase do card
        • Listar campos de uma fase do card (link público)
        • Obter histórico do card
        • Listar clientes do card
        • Criar comentário no card
        • Listar comentários do card
        • Remover comentário do card
        • Listar anexos do card
        • Cadastrar anexo no card
        • Remover anexo do card
        • Remover vínculo do anexo com campo de fase
        • Adicionar membros ao grupo do card
        • Remover membro do grupo do card
      • Configuração de Cliente
        • Configuração de Cliente — Visão Geral
        • Obter configuração de cliente por empresa
        • Criar configuração de cliente
        • Atualizar configuração de cliente
        • Obter configuração de cliente
        • Remover configuração de cliente
        • Listar seções
        • Criar seções
        • Obter seção
        • Atualizar seção
        • Atualizar seção parcialmente
        • Remover seção
        • Listar campos
        • Criar campos
        • Obter campo
        • Atualizar campo
        • Atualizar campo parcialmente
        • Remover campo
        • Listar regras
        • Criar regra
        • Obter regra
        • Atualizar regra
        • Atualizar regra parcialmente
        • Remover regra
      • Fase
        • Fase — Visão Geral
        • Criar ação de fase
        • Criar fase
        • Remover ação de fase
        • Remover fase
        • Listar ações da fase
        • Listar fases
        • Atualizar ação de fase
        • Atualizar fase
    • 🇺🇸 English
      • Phase
        • Phase — Overview
        • Create phase action
        • Create phase
        • Delete phase action
        • Delete phase
        • List phase actions
        • List phases
        • Update phase action
        • Update phase
      • Approval
        • Approval — Overview
        • Get approval configuration
        • Create approval configuration
        • Update approval configuration
        • Add approval rule
        • Update approval rule
        • Delete approval configuration
        • Get card approval
        • Register approval vote
        • Update approval vote
      • Flow
        • Flow — Overview
        • Health check
        • Create flow
        • List flows
        • Get flow
        • Update flow
        • Delete flow
        • Add user to flow
        • Remove user from flow
        • List dynamic field paths
      • Bureau Query
        • Bureau Query — Overview
        • Get bureau query configuration
        • Create bureau query configuration
        • Update bureau query configuration
      • Fields
        • Fields — Overview
        • List phase fields
        • Update phase fields
        • Update phase field rules
      • Engines
        • Engines — Overview
        • Get card decision engine result
        • Run card decision engine
        • Get card credit engine inputs
        • Get card credit engine result
        • Run card credit engine
        • Get decision engine configuration
        • Create decision engine configuration
        • Update decision engine configuration
        • Delete decision engine configuration
        • Get credit engine configuration detail
        • Create credit engine configuration
        • List flow credit engine configurations
        • List credit policies applicable to a card
        • Update credit engine configuration
        • Delete credit engine configuration
      • Conversation
        • Conversation — Overview
        • Get conversation configuration
        • Create conversation configuration
        • Delete conversation configuration
      • Opinion
        • Opinion — Overview
        • Get opinion configuration
        • Create opinion configuration
        • Update opinion configuration
        • Get card opinion
        • Create card opinion
        • Update card opinion
      • Start Form
        • Start Form — Overview
        • Create start form
        • Set start form conditional rules
        • Update start form metadata
        • Get start form
        • Get public start form
        • Update start form fields
        • Delete start form
      • Filters
        • Filters — Overview
        • List saved filters
        • Create saved filter
        • Update saved filter
        • Search flow cards
        • Search cards across flows
      • AgRisk
        • AgRisk — Overview
        • List AgRisk query products
      • Triggers
        • Triggers — Overview
        • List flow triggers
        • Create trigger
        • Update trigger
        • Delete trigger
        • List phase triggers
      • Authentication
        • Authentication — Overview
        • Authenticate user
      • Messaging
        • Messaging — Overview
        • Configure phone
        • Get messaging config
        • Create messaging config
        • Update messaging config
        • Create messaging rules
        • Update messaging rule
        • Delete messaging config
      • Companies & Roles
        • Companies & Roles — Overview
        • List company users
        • List company roles
        • Update role
        • List permissions catalog
        • Create role
        • Generate company logo upload URL
        • Generate company logo download URL
        • Assign roles to a user
      • Documents
        • Documents — Overview
        • Create automatic document configuration
        • Delete automatic document configuration
        • Get automatic document configuration
        • Update automatic document configuration
        • Get fields for document generation
        • Generate document from template
        • Get template by ID
        • List card templates
        • Activate template
        • Create document template
        • Delete template
        • List templates
        • Set template fields
        • Configure template conditional rules
        • Update template file
      • Cards
        • Cards — Overview
        • List cards in a phase
        • Move card to another phase
        • Create card
        • List flow cards
        • Create card via public link
        • Search cards
        • Get card
        • Update card
        • Update card assignee
        • Update fields via public link
        • Update card phase fields
        • Delete cards in bulk
        • Update card registration record
        • Get card assignee
        • List card labels
        • List card phase fields
        • List card phase fields (public link)
        • Get card history
        • List card clients
        • Create card comment
        • List card comments
        • Delete card comment
        • List card attachments
        • Register card attachment
        • Delete card attachment
        • Delete attachment's phase-field link
        • Add members to card group
        • Remove card group member
      • Client Configuration
        • Client Configuration — Overview
        • Get client configuration by company
        • Create client configuration
        • Update client configuration
        • Get client configuration
        • Delete client configuration
        • List sections
        • Create sections
        • Get section
        • Update section
        • Partially update section
        • Delete section
        • List fields
        • Create fields
        • Get field
        • Update field
        • Partially update field
        • Delete field
        • List rules
        • Create rule
        • Get rule
        • Update rule
        • Partially update rule
        • Delete rule
    • 💼 Visão de Negócio
      • Fase
      • Fluxo
      • Campos — Visão de Negócio
      • Aprovação
      • Parecer
      • Motores
      • Empresas e Papéis
      • Gatilhos
      • Conversa
      • Documentos
      • Mensageria
      • Filtros
      • Autenticação
      • Configuração de Cliente
      • Cards
      • AgRisk
      • Formulário Inicial
      • Consulta a Bureau
    • 💼 Business Overview
      • Phase
      • Flow
      • Approval
      • Fields — Business Overview
      • Opinion
      • Engines
      • Companies & Roles
      • Documents
      • Triggers
      • Messaging
      • Conversation
      • Filters
      • Authentication
      • Client Configuration
      • Cards
      • AgRisk
      • Start Form
      • Bureau Query
  • Portfolio
    • Documentação
      • Empresa
      • Gestão de portfolio
        • Análise geral
        • Dicionário de campos base (Necessário validar)
        • [Desatualizado]Fluxo de funcionamento
        • Carteiras
          • Gestão da carteira
        • Contratos
          • Contratos
          • Template Contratos
        • Pagamentos
          • Pagamentos
        • Baixas
          • Baixas
        • Clientes
          • Devedores e credores (Participantes)
          • Informações dos clientes
        • Importação de dados
          • Importação de dados
        • Garantia
          • Colaterais
      • Gestão de Cobrança
        • Régua de cobrança
          • Regras da régua por empresa
        • Atividades
          • Regras das Atividades
  1. Clientes

Devedores e credores (Participantes)

Participantes do Contrato — Regras de Negócio#

1. Conceito#

O Participante (ContractParticipant) representa uma parte envolvida em um contrato — credor, devedor ou garantidor. Um contrato pode ter múltiplos participantes de cada tipo, refletindo a realidade de operações de crédito no agro onde é comum ter múltiplos devedores solidários, avalistas e até credores compartilhados.
Todos os participantes são entidades Client existentes na plataforma. O módulo de Gestão de Portfolio não cria Clients — quando o Client informado não existe, o sistema retorna erro orientando o usuário a cadastrar pelo módulo de Clientes do AgRisk antes de adicionar o participante.

1.1. Empresa como participante#

A própria empresa pode figurar como participante do contrato — em geral no papel de CREDITOR (caso comum) ou em outros papéis quando aplicável. Para isso, a empresa possui um Client espelho associado (isCompany = true), criado automaticamente na ativação do módulo, que a representa em participações de contrato. Esse Client espelho é referenciado normalmente via clientId nos endpoints — não há tratamento polimórfico.

1.2. Papéis e cardinalidade#

PapelCódigoCardinalidadeDescrição
CredorCREDITOR1..NA entidade que concede o crédito. Obrigatório — pode ser a própria empresa (via Client espelho, ver 1.1) ou outro Client. Suporta múltiplos credores em operações de cessão, cofinanciamento ou securitização.
DevedorDEBTOR1..NA entidade que assume a obrigação de pagamento. Obrigatório — ao menos um devedor é necessário para ativar o contrato. Múltiplos devedores são suportados (devedor solidário).
GarantidorGUARANTOR0..NA entidade que oferece garantia pessoal (aval, fiança) à operação. Opcional. Diferente da garantia real, que é registrada como Colateral (ver Colaterais.md).
Testemunha

1.3. Modelo#

Contrato CPR-2024-001
├── Credor: Cooperativa AgroVale (CREDITOR, primary)
├── Credor: Banco do Brasil (CREDITOR)
├── Devedor: Fazenda Tijucal (DEBTOR, primary)
├── Devedor: Fazenda Rio Verde (DEBTOR) — devedor solidário
├── Garantidor: João Silva (GUARANTOR) — avalista
└── Garantidor: Maria Silva (GUARANTOR) — avalista

2. Estruturas de Dados#

2.1. ContractParticipant#

CampoTipoObrigatórioDescrição
idUUIDSimIdentificador único do vínculo participante-contrato.
contractIdUUIDSimContrato ao qual o participante está vinculado.
clientIdUUIDSimReferência ao Client na plataforma (existente — não é criado automaticamente).
typeEnumSimPapel no contrato: CREDITOR, DEBTOR, GUARANTOR.
isPrimaryBooleanSimSe este é o participante principal do seu papel. Apenas um participante por type pode ser primary em cada contrato. Default: false.
notesStringNãoObservações sobre a participação (ex: "Devedor solidário", "Avalista até R$ 500.000").
addedByUUIDSimUsuário que adicionou o participante.
addedAtDateTime (ISO 8601 UTC)SimData e hora da adição.
createdAtDateTime (ISO 8601 UTC)SimData de criação do registro.

2.2. Campos enriquecidos na resposta#

Nos endpoints de listagem e detalhe, cada participante retorna dados do Client num objeto aninhado para contexto:
CampoTipoDescrição
client.idUUIDMesmo valor de clientId (espelhado dentro do objeto para conveniência da UI).
client.nameStringNome/Razão social do Client.
client.taxIdStringCPF (11 dígitos) ou CNPJ (14 dígitos) — apenas dígitos, sem máscara.
client.emailStringE-mail. null se não cadastrado.
client.phoneStringTelefone — apenas dígitos, sem máscara. null se não cadastrado.
client.isCompanyBooleantrue quando o Client é o espelho da própria empresa (ver seção 1.1). false para Clients regulares.

2.3. Mensagem de erro para Client não encontrado#

Quando o clientId informado não existe na plataforma, o sistema retorna erro orientando o usuário:
{
  "error": "CLIENT_NOT_FOUND",
  "message": "O cliente informado não foi encontrado na plataforma. Cadastre o cliente pelo módulo de Clientes do AgRisk antes de adicioná-lo como participante do contrato.",
  "details": {
    "clientId": "client-999"
  }
}

3. Regras de Negócio#

Obrigatoriedade#

RN-PART-001: Ao menos um devedor
Todo contrato deve ter ao menos um participante com type = DEBTOR. Não é possível ativar um contrato (DRAFT → ACTIVE) sem devedor. Erro: CONTRACT_HAS_NO_DEBTOR.
RN-PART-002: Devedor principal obrigatório
Quando há múltiplos devedores, exatamente um deve ter isPrimary = true. Se existe apenas um devedor, ele é automaticamente o principal. Erro: PRIMARY_DEBTOR_REQUIRED.
RN-PART-003: Ao menos um credor obrigatório
Todo contrato deve ter ao menos um participante com type = CREDITOR. O credor pode ser a própria empresa (via Client espelho com isCompany = true) ou outro Client (banco, cooperativa, fundo, securitizadora, etc.). A UI deve pré-selecionar o Client espelho da empresa como credor padrão no formulário de criação do contrato, permitindo ao usuário trocar ou adicionar outros credores. Erro na ativação: CONTRACT_HAS_NO_CREDITOR.

Criação de Client#

RN-PART-004: Client deve existir na plataforma
Todos os participantes devem referenciar um Client já cadastrado na plataforma via clientId. Não é possível criar Clients automaticamente pelo módulo de Gestão de Portfolio. Quando o Client não é encontrado, o sistema retorna erro CLIENT_NOT_FOUND com mensagem orientando o usuário a realizar o cadastro pelo módulo de Clientes do AgRisk antes de adicionar o participante.
RN-PART-005: Client espelho da empresa
Quando o Client espelho da empresa (isCompany = true) é usado como participante (geralmente como CREDITOR), aplicam-se as mesmas regras dos demais Clients — não há tratamento especial. O Client espelho é criado uma única vez na ativação do módulo para a empresa.

Unicidade e consistência#

RN-PART-006: Mesmo Client, papéis diferentes
Um Client pode ter múltiplos papéis no mesmo contrato — por exemplo, ser devedor E garantidor. Porém, o par (contractId, clientId, type) deve ser único. Erro: PARTICIPANT_ALREADY_EXISTS.
RN-PART-007: Mesma empresa
O contrato deve pertencer à mesma empresa do Client. Erro: PARTICIPANT_COMPANY_MISMATCH.
RN-PART-008: Um primary por type por contrato
Apenas um participante pode ter isPrimary = true para cada type em cada contrato. Ao marcar um novo participante como primary, o anterior é automaticamente desmarcado.

Remoção#

RN-PART-009: Não pode remover último devedor de contrato ativo
Se o contrato está em ACTIVE ou OVERDUE, não é permitido remover o último participante com type = DEBTOR. Erro: CANNOT_REMOVE_LAST_DEBTOR.
RN-PART-010: Não pode remover último credor de contrato ativo
Se o contrato está em ACTIVE ou OVERDUE, não é permitido remover o último participante com type = CREDITOR. Erro: CANNOT_REMOVE_LAST_CREDITOR.
RN-PART-011: Remoção não afeta o Client
Remover um participante não exclui nem altera o Client. O Client permanece na plataforma.
RN-PART-012: Remoção de primary promove o próximo
Ao remover um participante isPrimary = true, se houver outro participante do mesmo type, o sistema promove automaticamente o mais antigo (addedAt mais antigo) como primary.

Histórico#

RN-PART-013: Histórico de alterações de participantes
Adições, remoções e alterações de percentual de participação são registradas como eventos no ContractHistory (ver Contratos.md, seção 2.3):
PARTICIPANT_ADDED — quando um participante é adicionado.
PARTICIPANT_REMOVED — quando um participante é removido.
Cada evento registra participantId, type, clientId, valores antes/depois quando aplicável, usuário responsável (changedBy) e timestamp (changedAt).

Impacto nos indicadores#

RN-PART-014: Devedor principal define os indicadores do cliente
Nos módulos de Clientes na Carteira e no PortfolioSummary, os indicadores de inadimplência e valores em aberto são atribuídos ao devedor principal (type = DEBTOR, isPrimary = true). Devedores secundários aparecem nos mesmos relatórios, mas a consolidação primária é pelo devedor principal.

4. Padrão de Erros#

StatusCódigoDescrição
404 Not FoundPARTICIPANT_NOT_FOUNDParticipante não encontrado no contrato.
404 Not FoundCLIENT_NOT_FOUNDClient informado não existe na plataforma. Cadastre pelo módulo de Clientes.
409 ConflictPARTICIPANT_ALREADY_EXISTSClient já é participante com este papel noTcontrato.
422 Unprocessable EntityCONTRACT_HAS_NO_DEBTORContrato sem devedor na ativação.
422 Unprocessable EntityCONTRACT_HAS_NO_CREDITORContrato sem credor na ativação.
422 Unprocessable EntityPRIMARY_DEBTOR_REQUIREDMúltiplos devedores sem um primary definido.
422 Unprocessable EntityCANNOT_REMOVE_LAST_DEBTORRemoção do último devedor em contrato ativo/em atraso.
422 Unprocessable EntityCANNOT_REMOVE_LAST_CREDITORRemoção do último credor em contrato ativo/em atraso.
422 Unprocessable EntityPARTICIPANT_COMPANY_MISMATCHClient não pertence à mesma empresa.
422 Unprocessable EntityINVALID_PARTICIPANT_TYPEType informado não é válido.

5. Endpoints#

Base path: /v2/companies/:companyId/portfolios/:portfolioId/contracts/:contractId/participants

POST .../participants#

Adiciona um participante ao contrato. O Client deve existir na plataforma.
Permissão: contract:update
Request body — devedor principal:
{
  "clientId": "client-001",
  "type": "DEBTOR",
  "isPrimary": true,
  "notes": "Devedor principal — tomador do crédito."
}
Response 201 Created:
{
  "id": "part-001",
  "contractId": "contract-001",
  "clientId": "client-001",
  "type": "DEBTOR",
  "isPrimary": true,
  "participationPercentage": null,
  "notes": "Devedor principal — tomador do crédito.",
  "createdBy": "user-001",
  "createdAt": "2025-03-17T09:00:00.000+00:00",
  "createdAt": "2025-03-17T09:00:00.000+00:00",
  "client": {
    "id": "client-001",
    "name": "Fazenda Tijucal",
    "taxId": "12345678000190",
    "email": "contato@fazendatijucal.com.br",
    "phone": "11999999999",
    "isCompany": false
  }
}
Erros: CLIENT_NOT_FOUND, PARTICIPANT_ALREADY_EXISTS, PARTICIPANT_COMPANY_MISMATCH, INVALID_PARTICIPANT_TYPE, PARTICIPATION_PERCENTAGE_EXCEEDS_100.

GET .../participants#

Lista participantes do contrato, agrupados por papel.
Permissão: contract:read
Query params:
ParâmetroTipoObrigatórioDescrição
typeEnumNãoFiltrar por CREDITOR, DEBTOR, GUARANTOR.
Response 200 OK:
{
  "items": [
    {
      "id": "part-001",
      "contractId": "contract-001",
      "clientId": "client-001",
      "type": "CREDITOR",
      "isPrimary": true,
      "participationPercentage": 100.0,
      "notes": null,
      "createdBy": "user-001",
      "createdAt": "2025-03-17T09:00:00.000+00:00",
      "client": {
        "id": "client-001",
        "name": "Cooperativa AgroVale",
        "taxId": "01234567000100",
        "email": "financeiro@agrovale.com.br",
        "phone": "6733334444",
        "isCompany": false
      }
    },
    {
      "id": "part-002",
      "contractId": "contract-001",
      "clientId": "client-002",
      "type": "DEBTOR",
      "isPrimary": true,
      "participationPercentage": null,
      "notes": "Devedor principal.",
      "createdBy": "user-001",
      "createdAt": "2025-03-17T09:00:00.000+00:00",
      "client": {
        "id": "client-002",
        "name": "Fazenda Tijucal",
        "taxId": "12345678000190",
        "email": "contato@fazendatijucal.com.br",
        "phone": "11999999999",
        "isCompany": false
      }
    },
    {
      "id": "part-003",
      "contractId": "contract-001",
      "clientId": "client-003",
      "type": "DEBTOR",
      "isPrimary": false,
      "participationPercentage": null,
      "notes": "Devedor solidário.",
      "createdBy": "user-001",
      "createdAt": "2025-03-17T09:02:00.000+00:00",
      "client": {
        "id": "client-003",
        "name": "Fazenda Rio Verde",
        "taxId": "98765432000110",
        "email": null,
        "phone": "67988887777",
        "isCompany": false
      }
    },
    {
      "id": "part-004",
      "contractId": "contract-001",
      "clientId": "client-004",
      "type": "GUARANTOR",
      "isPrimary": true,
      "participationPercentage": null,
      "notes": "Avalista — sócio majoritário.",
      "createdBy": "user-001",
      "createdAt": "2025-03-17T09:05:00.000+00:00",
      "client": {
        "id": "client-004",
        "name": "João Silva",
        "taxId": "12345678900",
        "email": "joao@email.com",
        "phone": "11999990000",
        "isCompany": false
      }
    }
  ],
  "summary": {
    "creditors": 1,
    "debtors": 2,
    "guarantors": 1,
    "total": 4
  }
}
O summary é retornado junto com a lista para os cards de contagem na interface. Não paginado — o número de participantes por contrato é pequeno o suficiente para retornar todos de uma vez (sem offset/limit/nextPage).

PATCH .../participants/:participantId#

Atualiza isPrimary ou notes de um participante. O type e clientId são imutáveis — para mudar, remover e adicionar novo.
Permissão: contract:update
Request body — promoção a primary:
{
  "isPrimary": true,
  "notes": "Promovido a devedor principal após renegociação."
}
Response 200 OK: Participante atualizado com dados do Client.

DELETE .../participants/:participantId#

Remove o participante do contrato. Não afeta o Client.
Permissão: contract:update
Response 204 No Content
Erros: PARTICIPANT_NOT_FOUND, CANNOT_REMOVE_LAST_DEBTOR.

6. Impacto nos Demais Módulos#

6.1. Contratos#

O contrato não possui campo clientId direto — todos os envolvidos vêm do modelo de participantes. O detalhe e a listagem de contratos (ver Contratos.md) trazem o devedor principal e contadores resumidos:
{
  "primaryDebtor": {
    "client": {
      "id": "client-002",
      "name": "Fazenda Tijucal",
      "taxId": "12345678000190"
    }
  },
  "summary": {
    "creditors": 1,
    "debtors": 2,
    "guarantors": 1
  }
}
O filtro clientId na listagem de contratos (GET /portfolios/:portfolioId/contracts?clientId=...) busca contratos onde o Client informado é participante em qualquer type.

6.2. Clientes na Carteira#

O módulo de Clientes na Carteira (quando implementado) passará a considerar todos os types: um Client que aparece como devedor em 3 contratos e garantidor em 2 terá ambas as visões consolidadas no seu perfil.

6.3. Importação#

O payload de importação inclui participantes:
Na API: array participants no objeto do contrato (clientId + type + isPrimary + opcional participationPercentage + opcional notes).

6.4. Templates de contrato#

O template não define participantes — participantes são adicionados por contrato, independente do template. O schema do template não inclui campos de participante.

7. Permissões RBAC#

A gestão de participantes utiliza o resource contract — não possui resource próprio. As permissões contract:update cobrem adição e remoção de participantes, e contract:read cobre a listagem.

8. Roadmap#

8.1. Tipo detalhado de garantidor#

Subtipos de garantidor: AVALISTA, FIADOR, INTERVENIENTE_ANUENTE, CODEVEDORA. Na v1, todos são GUARANTOR com distinção via notes.

8.2. Granularidade de permissões sobre participantes#

Resource RBAC próprio para participantes (em vez de usar contract:update), permitindo separar permissões de "editar dados do contrato" de "adicionar/remover participantes". Avaliar quando demanda operacional surgir.
Modificado em 2026-06-02 15:01:21
Página anterior
Baixas
Próxima página
Informações dos clientes
Built with