--- title: 7.1. Vincular Cedente a Operações url: https://docs.vehub.com.br/API/Cadastro%20de%20Cedente/7.%20V%C3%ADnculo%20com%20Opera%C3%A7%C3%B5es/7.1.%20Vincular%20Cedente%20a%20Opera%C3%A7%C3%B5es/ --- Gerenciamento do vínculo entre o cedente e as operações do fundo. O vínculo do cedente a uma operação é **pré-requisito** para a importação de títulos: a importação de títulos avulsos (`POST /public/api/v1/recebiveis/lotes/{idOperacao}/titulos/avulsos`) rejeita o cedente que não estiver previamente vinculado à operação, com a mensagem _"Cedente não vinculado à operação."_. Fluxo de auto-serviço recomendado: 1. Localize o `idEmpresa` do cedente (via [Criar Cedente](../2.%20Empresa%20Cedente/2.1.%20Criar%2C%20Consultar%20e%20Atualizar%20Cedente.md#criar-cedente) ou [Consultar Cedente por CNPJ](../2.%20Empresa%20Cedente/2.1.%20Criar%2C%20Consultar%20e%20Atualizar%20Cedente.md#consultar-cedente-por-cnpj)). 2. Garanta uma [conta corrente](../4.%20Dados%20Banc%C3%A1rios%20e%20Contatos/4.1.%20Contas%20Correntes.md) cadastrada e escolha o `idContaCorrente` em [Listar Contas Correntes](../4.%20Dados%20Banc%C3%A1rios%20e%20Contatos/4.1.%20Contas%20Correntes.md#listar-contas-correntes). 3. Descubra a operação no [catálogo do grupo econômico](#listar-operacoes-do-grupo-economico) ou em [Listar Operações Disponíveis](#listar-operacoes-disponiveis) (específica do cedente). 4. [Vincule o cedente](#vincular-cedente-a-operacao) à operação. 5. **Operações Risco Sacado:** cadastre e vincule cada [sacado](7.3.%20Risco%20Sacado%20-%20Sacados.md#vinculo-de-sacados) ao cedente. 6. Importe os títulos. !!! tip "Acompanhar o limite de crédito" Após cadastrar o `limiteCredito` no vínculo, acompanhe o consumo (total / tomado / disponível) e os títulos que o compõem em [Consultar Limite de Crédito](7.4.%20Consultar%20Limite%20de%20Cr%C3%A9dito.md). --- ## Listar Operações Disponíveis | Método | URL | | --------------------------------------------- | -------------------------------------------------------------------- | | ![GET](https://img.shields.io/badge/GET-blue) | `https://BASE_URL/public/api/v1/cedentes/{idEmpresa}/operacoes-disponiveis` | Lista as operações **ativas** às quais o cedente ainda pode ser vinculado. ```json title="Response Body — 200 OK" [ { "idOperacao": 7, "nome": "Desconto Próprio", "idModalidadeOperacao": 1 }, { "idOperacao": 9, "nome": "Risco Sacado Varejo", "idModalidadeOperacao": 2 } ] ``` | Campo | Tipo | Descrição | | ---------------------- | ------ | -------------------------------------------------------------------------------------- | | `idOperacao` | Número | Identificador da operação (usar no vínculo). | | `nome` | Texto | Nome da operação. | | `idModalidadeOperacao` | Número | Modalidade da operação. Quando `2` (Risco Sacado), vincule também os sacados. | --- ## Listar Operações do Grupo Econômico | Método | URL | | --------------------------------------------- | ------------------------------------------ | | ![GET](https://img.shields.io/badge/GET-blue) | `https://BASE_URL/public/api/v1/operacoes` | Lista **todas as operações ativas** do grupo econômico, de forma achatada (flat) e **sem paginação**, independentemente de estarem vinculadas a algum cedente. Útil para **descobrir as operações antes mesmo de cadastrar ou escolher um cedente**. !!! note "Diferença para *Operações Disponíveis*" [Listar Operações Disponíveis](#listar-operacoes-disponiveis) é **específica de um cedente** e retorna apenas as operações às quais ele ainda **pode** ser vinculado. Já este endpoint retorna o **catálogo completo** de operações ativas do grupo, sem depender de um cedente. ```json title="Response Body — 200 OK" [ { "idOperacao": 99, "nome": "Desconto de Duplicatas", "idModalidadeOperacao": 1 }, { "idOperacao": 87, "nome": "Risco Sacado", "idModalidadeOperacao": 2 } ] ``` | Campo | Tipo | Descrição | | ---------------------- | ------ | -------------------------------------------------------------------------- | | `idOperacao` | Número | Identificador da operação. | | `nome` | Texto | Nome da operação. | | `idModalidadeOperacao` | Número | Modalidade da operação (`1` = Desconto de Duplicatas, `2` = Risco Sacado). | --- ## Consultar Operação por Id | Método | URL | | --------------------------------------------- | ----------------------------------------------- | | ![GET](https://img.shields.io/badge/GET-blue) | `https://BASE_URL/public/api/v1/operacoes/{id}` | Consulta uma operação ativa do grupo econômico pelo identificador. ### Path Params | Campo | Tipo | Descrição | | ----- | ------ | -------------------------- | | `id` | Número | Identificador da operação. | ```json title="Response Body — 200 OK" { "idOperacao": 87, "nome": "Risco Sacado", "idModalidadeOperacao": 2 } ``` ```json title="Response Body — 404 Not Found" { "status": "erro", "mensagem": "Operação com ID 999999 não encontrada." } ``` --- ## Vincular Cedente a Operação | Método | URL | | ------------------------------------------------ | ------------------------------------------------------------------ | | ![POST](https://img.shields.io/badge/POST-green) | `https://BASE_URL/public/api/v1/cedentes/{idEmpresa}/operacoes/{idOperacao}` | Vincula o cedente à operação. Em operações **Risco Sacado**, este vínculo é a **linha base** do cedente (sem sacado); os sacados são cadastrados e vinculados em [Risco Sacado — Sacados](7.3.%20Risco%20Sacado%20-%20Sacados.md#vinculo-de-sacados). A operação é **idempotente**: repetir a chamada para um vínculo já existente devolve `200 OK` com `jaExistia = true`, sem criar novo registro. !!! warning "Deságio por Fonte Externa" Quando a operação calcula o deságio por **Fonte Externa** (ex.: Q'Prof), **não** envie `percentualDesagio` — a requisição é rejeitada com `400`. Envie apenas a conta (opcional) e o limite de crédito; o deságio é recalculado pelo backend. ### Path Params | Campo | Tipo | Descrição | | ------------ | ------ | --------------------------------- | | `idEmpresa` | Número | Identificador da empresa cedente. | | `idOperacao` | Número | Identificador da operação. | ```json title="Request Body" { "idContaCorrente": 10, "coobrigacao": false, "percentualDesagio": 1.5, "limiteCredito": 100000.00, "numeroContrato": 55012, "dataContrato": "2025-01-15" } ``` ```json title="Response Body — 200 OK" { "jaExistia": false, "mensagem": "Vínculo criado com sucesso.", "vinculo": { "idVinculo": 42, "idOperacao": 7, "nomeOperacao": "Desconto Próprio", "idEmpresa": 123, "idSacado": null, "idModalidadeOperacao": 1, "status": "Em avaliação", "coobrigacao": false, "limiteCredito": 100000.00, "percentualDesagio": 1.5, "idContaCorrente": 10, "prazoTac": null, "prazoLimiteNegociacao": null, "taxaTac": null, "taxaJurosDia": null, "numeroContrato": 55012, "dataContrato": "2025-01-15" } } ``` ```json title="Response Body — 400 Bad Request" { "status": "erro", "mensagem": "Conta corrente informada não pertence ao cedente." } ``` --- ## Consultar Vínculos do Cedente | Método | URL | | --------------------------------------------- | --------------------------------------------------------- | | ![GET](https://img.shields.io/badge/GET-blue) | `https://BASE_URL/public/api/v1/cedentes/{idEmpresa}/operacoes` | Lista os vínculos base do cedente (linha do cedente por operação). Os pares cedente×sacado de Risco Sacado são consultados em [Listar Sacados Vinculados](7.3.%20Risco%20Sacado%20-%20Sacados.md#listar-sacados-vinculados). ```json title="Response Body — 200 OK" [ { "idVinculo": 42, "idOperacao": 7, "nomeOperacao": "Desconto Próprio", "idEmpresa": 123, "idSacado": null, "idModalidadeOperacao": 1, "status": "Em avaliação", "coobrigacao": false, "limiteCredito": 100000.00, "percentualDesagio": 1.5, "idContaCorrente": 10, "prazoTac": null, "prazoLimiteNegociacao": null, "taxaTac": null, "taxaJurosDia": null, "numeroContrato": 55012, "dataContrato": "2025-01-15" } ] ``` O modelo de cada item é o [Vínculo](#retorno-vinculo). --- ## Atualizar Vínculo do Cedente | Método | URL | | ----------------------------------------------- | ---------------------------------------------------------------------------- | | ![PUT](https://img.shields.io/badge/PUT-orange) | `https://BASE_URL/public/api/v1/cedentes/{idEmpresa}/operacoes/{idOperacao}/{idVinculo}` | Atualiza os parâmetros do vínculo base do cedente. Os campos não informados (`null`) **preservam o valor atual**. A regra de Fonte Externa (não enviar `percentualDesagio`) também se aplica aqui. !!! note "Atualização parcial (merge)" Apenas os campos enviados são alterados; os omitidos/`null` mantêm o valor atual. Por consequência, **não é possível "limpar" um valor para nulo** por esta atualização (ex.: voltar o limite de crédito para "sem limite") — envie o novo valor desejado. A mesma regra vale para a atualização de sacado. ```json title="Request Body" { "limiteCredito": 150000.00, "coobrigacao": true } ``` ```json title="Response Body — 200 OK" { "idVinculo": 42, "idOperacao": 7, "nomeOperacao": "Desconto Próprio", "idEmpresa": 123, "idSacado": null, "idModalidadeOperacao": 1, "status": "Em avaliação", "coobrigacao": true, "limiteCredito": 150000.00, "percentualDesagio": 1.5, "idContaCorrente": 10, "prazoTac": null, "prazoLimiteNegociacao": null, "taxaTac": null, "taxaJurosDia": null, "numeroContrato": 55012, "dataContrato": "2025-01-15" } ``` Retorna o [Vínculo](#retorno-vinculo) completo após a atualização. --- ## Desvincular Cedente da Operação | Método | URL | | -------------------------------------------------- | ---------------------------------------------------------------------------- | | ![DELETE](https://img.shields.io/badge/DELETE-red) | `https://BASE_URL/public/api/v1/cedentes/{idEmpresa}/operacoes/{idOperacao}/{idVinculo}` | Remove o vínculo do cedente com a operação. ```json title="Response Body — 200 OK" { "status": "sucesso", "mensagem": "Vínculo removido com sucesso." } ``` !!! tip "Vínculo de sacados (Risco Sacado)" O cadastro e o vínculo de **sacados** (par cedente×sacado) ficam em [Risco Sacado — Sacados](7.3.%20Risco%20Sacado%20-%20Sacados.md). O modelo de dados abaixo é compartilhado entre o vínculo do cedente e o do sacado. --- # Modelo de Dados ## Requisição — Vínculo (Cedente e Sacado) Aplica-se ao corpo de vincular/atualizar (cedente e sacado). Na atualização todos os campos são opcionais e os omitidos preservam o valor atual. | Campo | Tipo | Obrigatório | Descrição | | ----------------------- | -------- | :---------: | ----------------------------------------------------------------------------------------------- | | `idContaCorrente` | Número | Opcional | Conta corrente do cedente. Deve **pertencer ao próprio cedente** (validado; senão `400`). | | `coobrigacao` | Booleano | Opcional | Indica coobrigação. | | `percentualDesagio` | Decimal | Opcional | Percentual de deságio. Não-negativo; máximo `9.999.999,99999999`. **Não enviar** em operações com cálculo por Fonte Externa (rejeita `400`). | | `limiteCredito` | Decimal | Opcional | Limite de crédito. Não-negativo; máximo `99.999.999.999,9999`. Ausente/`null` = sem limite (na criação). **Não enviar** em operações que validam limite por **Base CNPJ** (rejeita `400`): nesse modo o limite é definido no vínculo da empresa **matriz**, não por filial. | | `prazoTac` | Número | Opcional | Prazo (em dias) em que a TAC é aplicada. Não-negativo. | | `prazoLimiteNegociacao` | Número | Opcional | Máximo de dias para negociação do título. Não-negativo. | | `taxaTac` | Decimal | Opcional | Percentual fixo aplicado sobre o valor antecipado. Não-negativo. | | `taxaJurosDia` | Decimal | Opcional | Taxa diária aplicada sobre dias excedentes. Não-negativo. | | `numeroContrato` | Número | Opcional | Número do contrato. | | `dataContrato` | Data | Opcional | Data do contrato (`YYYY-MM-DD`). | | `tokenAcesso` | Texto | Opcional | Token de acesso para integrações. | > O cedente é identificado pela rota (`idEmpresa`); o sacado, pela rota (`idSacado`) no sub-recurso de sacados. Não há campo de tipo/sacado no corpo. ## Retorno — Vínculo | Campo | Tipo | Descrição | | ---------------------- | -------- | -------------------------------------------------------------------- | | `idVinculo` | Número | Identificador do vínculo (usar em atualizar/desvincular do cedente). | | `idOperacao` | Número | Identificador da operação. | | `nomeOperacao` | Texto | Nome da operação. | | `idEmpresa` | Número | Identificador do cedente. | | `idSacado` | Número | Identificador do sacado (preenchido apenas em pares Risco Sacado). | | `idModalidadeOperacao` | Número | Modalidade da operação. | | `status` | Texto | Situação do vínculo (`Em avaliação`, `Vínculo aprovado`, etc.). | | `coobrigacao` | Booleano | Coobrigação. | | `limiteCredito` | Decimal | Limite de crédito (nulo = sem limite). | | `percentualDesagio` | Decimal | Percentual de deságio (nulo em Fonte Externa). | | `idContaCorrente` | Número | Conta corrente vinculada. | | `prazoTac` | Número | Prazo da TAC. | | `prazoLimiteNegociacao`| Número | Máximo de dias para negociação. | | `taxaTac` | Decimal | Percentual fixo da TAC. | | `taxaJurosDia` | Decimal | Taxa diária. | | `numeroContrato` | Número | Número do contrato. | | `dataContrato` | Data | Data do contrato. | ## Retorno — Vincular (envelope) O `POST` de vínculo (cedente e sacado) devolve: | Campo | Tipo | Descrição | | ----------- | -------- | ---------------------------------------------------------------------------- | | `jaExistia` | Booleano | `true` quando o vínculo já existia (chamada idempotente, sem novo registro). | | `mensagem` | Texto | Mensagem amigável de resultado. | | `vinculo` | [Vínculo](#retorno-vinculo) | O vínculo criado ou já existente, com todos os dados do cadastro. |