> ## 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.

# Hierarquia e exceções

> Os passsos configurados em todos os níveis são somados e exibidos na ordem de prioridade.

Neste guia, vamos explorar como os diferentes níveis de configuração são somados para formar uma esteira de etapas completa. Por exemplo, se a empresa define 3 etapas, o produto tem 2 etapas, e a configuração geral inclui 1 etapa, então a esteira final terá um total de 6 etapas. Além disso, etapas com nomes idênticos serão substituídas com base na prioridade definida.

A esteira pode ser organizada em três níveis hierárquicos:

1. Configuração da Empresa
2. Configuração do Produto
3. Configuração Geral

A configuração da empresa tem a maior prioridade. Se esta estiver ausente, a configuração do produto será aplicada. Na ausência de ambas, a configuração geral será usada.

<Note>As etapas da esteira são vinculadas no momento da criação do empréstimo. Alterações na configuração não afetam empréstimos já existentes.</Note>

## Exemplos

Listamos alguns casos de uso comuns de hieraria e excessões.

### Configurando a esteira para não solicitar a averbação de uma empresa específica

<Tabs>
  <Tab title="Pela API">
    O primeiro passo é definir todas as etapas padrão na configuração geral.

    Atualize a configuração geral da esteira utilizando o *endpoint* [Atualizar Configurações](/development/api-refence/endpoint/post-v1-settings) da API de Configurações.

    ```bash
    curl --request POST \
        --url https://api.base39.io/v1/settings \
        --header 'authorization: Basic <sua-api-key>' \
        --data '
        {
          "steps": {
            "averbacao": {
              "title": "Averbação do RH",
              "type": "signature",
              "methodData": {
                "type": "operator",
                "role": "approver"
              }
            }
            // ... outras etapas ...
          }
        }
        '
    ```

    Para criar uma exceção, atualize a configuração da empresa ou do produto, substituindo a etapa de averbação pelo tipo `pass`. O tipo `pass` indica que a etapa será automaticamente marcada como concluída, sem necessidade de processamento.

    Atualize a configuração da empresa utilizando o *endpoint* [Atualizar empresa](/development/api-refence/endpoint/post-v1-companies).

    ```bash
    curl --request POST \
        --url https://api.base39.io/v1/companies/<id> \
        --header 'authorization: Basic <sua-api-key>' \
        --data '
          {
            "settings": {
              "steps": {
                "averbacao": {
                  "type": "pass"
                }
              }
            }
          }
        '
    ```

    Respeitando a hierarquia, a configuração final nos empréstimos dessa empresa será uma mescla das etapas presentes tanto na configuração global quanto na configuração específica da empresa. Nesse caso, a esteira resultante terá etapas para averbação do RH, validação de documentos frente e verso.

    Note que os parâmetros `title` e `needs` foram herdados da configuração global.

    ```json
    {
      "steps": {
        "averbacao": {
          "title": "Averbação do RH",
          "type": "pass",
          "needs": ["validacaoDocumentoFrente", "validacaoDocumentoVerso"]
        },
        "validacaoDocumentoFrente": {
          "title": "Validação de Documento (Frente)",
          "type": "document_verification",
          "methodData": {
            "purpose": "identity_document_front"
          }
        },
        "validacaoDocumentoVerso": {
          "title": "Validação de Documento (Verso)",
          "type": "document_verification",
          "methodData": {
            "purpose": "identity_document_back"
          }
        }
      }
    }
    ```

    Você pode conferir o resultado final criando um empréstimo e consultando as etapas através do *endpoint* [Listar etapas](/development/api-refence/endpoint/get-v1-loans-id-steps).

    ```bash
    curl --request GET \
        --url https://api.base39.io/v1/steps?loan=<id> \ # ou /v1/loans/<id>/steps
        --header 'authorization: Basic <sua-api-key>'
    ```
  </Tab>

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