> ## Documentation Index
> Fetch the complete documentation index at: https://base39-release-notes-06-mar.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Elegibilidade

Elegibilidade é o processo de avaliação de um cliente para determinar se ele pode ou não contratar um produto. A elegibilidade é determinada por um conjunto de regras que podem ser configuradas para cada produto. Ser elegível ao produto não significa que o empréstimo será aprovado ou que alguma análise de crédito foi feita.

<Tabs>
  <Tab title="Pelo Portal do Cliente">
    Os produtos elegíveis são exibidos na tela inicial no Portal do Cliente.

    <Frame caption="Página do Portal do Cliente que exibe o resultado da elegibilidade">
      <img src="https://mintlify.s3-us-west-1.amazonaws.com/base39-release-notes-06-mar/assets/images/customer-home.png" />
    </Frame>
  </Tab>

  <Tab title="Pela API">
    É possível consultar os produtos elegíveis pelo *endpoint* de [produtos elegíveis](/development/api-reference/endpoint/get-v1-products-elegibles) na API de Produtos.

    ```bash
    curl --request GET \
        --url https://api.base39.io/v1/products/eligibles?document=<document> \
        --header 'authorization: Basic <api-key>' \
        --header 'content-type: application/json'
    ```
  </Tab>
</Tabs>

## Regras de elegibilidade

Existem regras de elegibilidade nativas da plataforma. Além dessas regras, também é possível configurar uma [consulta externa](#consulta-externa) para processar regras mais complexas ou consultar informações em outros bancos de dados.

### Tipos de configuração da elegibilidade

A elegibilidade pode ser personalizada com opções com propósitos distintos para atender às necessidades específicas da sua empresa. Podendo ter os comportamentos:

* `Static`: O cálculo de elegibilidade é realizado pela plataforma, sem interagir com cálculos externos.
* `Dynamic`: O cálculo de elegibilidade é realizado pela plataforma e, em seguida, será feita uma [consulta externa](#consulta-externa) possibilitando um ponto de customização para regras específicas (por exemplo, validação do Serasa e análise de crédito).
* `Mock`: O cálculo de elegibilidade **não** é realizado pela plataforma, a resposta de elegibilidade são campos com valores fixos informados na configuração. Útil para testes.

### Limite de empréstimos simultâneos

É possível determinar o número máximo de empréstimos que um cliente pode ter simultaneamente em cada status. Por exemplo, um cliente pode ter no máximo dois empréstimos em análise e um empréstimo desembolsado.

Para configurar o limite de empréstimos simultâneos, é necessário informar o número máximo de empréstimos em cada status na configuração do produto. Também é possível considerar um grupo de status.

| Status                       | Quantidade | Descrição                                                                                                                                   |
| ---------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| Aberto e Pendente            | 1          | Será permitido apenas um empréstimo em análise ou pendente                                                                                  |
| Desembolsando e Desembolsado | 1          | Será permitido apenas um empréstimo desembolsado ou em processo de desembolso, que pode ser o tempo até que a transferência seja concluída. |

Veja como configurar os parâmetros de limite de empréstimos simultâneos:

<Tabs>
  <Tab title="Pela API">
    A configuração pode ser feita no parâmetro `concurrency` através do *endpoint* [Atualizar produto](/development/api-reference/endpoint/post-v1-products-id) da API de Produtos.

    Por exemplo:

    ```json
    {
      "settings": {
        "loans": {
          "concurrency": [
            {
              "status": ["open"],
              "quantityAllowed": 1
            },
            {
              "status": ["disbursing", "disbursed"],
              "quantityAllowed": 1
            },
          ]
        }
      }
    }
    ```
  </Tab>

  <Tab title="Pelo Console">
    <Snippet file="console-not-available.mdx" />
  </Tab>
</Tabs>

### Consulta externa

<Tabs>
  <Tab title="Pela API">
    A configuração pode ser feita no parâmetro `settings.products.eligibility` através do *endpoint* [Atualizar produto](/development/api-reference/endpoint/post-v1-products-id) da API de Produtos.

    Por exemplo:

    ```json
    {
      "settings": {
        "products": {
          "eligibility": {
            "type": "dynamic",
            "options": {
              "url": "<url-da-api-externa>",
              "headers": {}
            }
          }
        }
      }
    }
    ```

    A consulta externa corresponde à uma API HTTP, ela permite que um aplicativo faça solicitações e receba respostas de servidores WEB.

    O *endpoint* da API HTTP é desenvolvido e fornecido inteiramente pelo Cliente, a Base39 não tem responsabilidade sobre a exatidão do mesmo.

    O cálculo de elegibilidade é executado uma vez para cada Produto cadastrado e, em cada Produto, para cada Vínculo Empregatício válido existente.

    A consulta externa será executada uma vez para cada Vínculo Empregatício processado.

    ## Regras

    Por meio da consulta externa, é possível sobrescrever campos do retorno da Elegibilidade utilizados pelo Portal do Cliente, portanto, o resultado da API HTTP deverá respeitar os campos de entrada do contrato.

    Campos permitidos para sobrescrição:

    | Nome      | Tipo    | Descrição                                       |
    | --------- | ------- | ----------------------------------------------- |
    | available | boolean | Determina se o cliente está elegível ao Produto |

    ### Input

    ```json
    {
      "customerDocument": "123456789",
      "product": "prod_6470ec23a20505b4cd44b786",
      "available": false,
      "maxAmount": 0,
      "minLoanAmount": 825,
      "maxNumberOfInstallments": 24,
      "minNumberOfInstallments": 18,
      "maxInstallmentValue": 0,
      "minInstallmentValue": 0,
      "maxCreditCalculationMemory": {
        "amount": 0,
        "numberOfInstallments": 24,
        "installmentValue": 0,
        "firstDueDate": "2023-11-10T00:00:00.000Z",
        "registerFee": 275,
        "iof": 0,
        "monthlyFee": 0.0371,
        "futureTotalAmount": 0
      },
      "customer": "cust_646e7633ef35138a4398cf6f",
      "employment": "empl_64b1b19aa0e8f44a461ba109"
    }
    ```

    ### Output

    ```json
    {
      "available": false
    }
    ```
  </Tab>

  <Tab title="Pelo Console">
    <Snippet file="console-not-available.mdx" />
  </Tab>
</Tabs>
