# Como usar a API Interna com ou sem uma VPN

Na Digibee Integration Platform, você pode publicar seus pipelines para uso interno ou externo:

* **Uso interno:** A API fica disponível apenas no gateway interno do seu cluster, permitindo o acesso por outros pipelines do seu realm ou por meio de uma VPN.
* **Uso externo:** A API pode ser acessada pela internet, possibilitando a interação com aplicações e serviços externos.

Você pode usar os seguintes triggers para configurar sua API: [**HTTP**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/triggers/web-protocols/http), [**HTTP File**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/triggers/web-protocols/http-file) e [**REST**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/triggers/web-protocols/rest)**.**

Siga os passos abaixo para ativar e usar uma **API Interna**.

{% stepper %}
{% step %}

## **Solicite acesso à API Interna**

Para ativar a API Interna no seu realm, entre em contato com o [Suporte da Digibee](https://docs.digibee.com/documentation/troubleshooting/pt-br/help-and-faq/support).

A equipe configurará:

* **Hostname:** `{{realmname}}.digibee.internal`
* **Portas:**
  * `7070` (Produção)
  * `9090` (Teste)

{% hint style="info" %}
No modelo de **SaaS Dedicado**, as portas podem ter **valores diferentes**.
{% endhint %}
{% endstep %}

{% step %}

## **Configure um pipeline para acesso à API Interna**

Para configurar o pipeline para usar a API Interna:

1. Escolha um trigger compatível: [**HTTP**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/triggers/web-protocols/http), [**HTTP File**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/triggers/web-protocols/http-file) e [**REST**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/triggers/web-protocols/rest)**.**
2. Ative **Internal API** e **API Key** no formulário de configuração do trigger.
3. Associe o pipeline a uma [API Key](https://app.gitbook.com/s/cO0A6g1dOsu8BiHYqO67/platform-administration/settings/api-keys-consumers).
4. [Implante o pipeline](https://app.gitbook.com/s/cO0A6g1dOsu8BiHYqO67/development-cycle/overview/deployment/deployments) na página **Run**.
5. Abra o cartão do pipeline sobre **Detalhes da implantação** e expanda a seção de configuração do trigger para encontrar o endpoint no seguinte formato:

{% code overflow="wrap" %}

```
https://{substitua-pelo-host-interno-Digibee}/pipeline/realm/v1/{{pipeline-name}}
```

{% endcode %}

### **Exemplo de configuração**

#### **Configuração do realm**

* **Realm:** `dgb-support-lab`
* **Host:** `dgb-support-lab.digibee.internal`
* **Porta:**
  * **Teste:** `9090`
  * **Produção:** `7070`

#### **Configuração do pipeline**

* **Nome do pipeline:** `test-api-internal`
* **Trigger utilizado:** [REST Trigger](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/triggers/web-protocols/rest)
* **Método:** `GET`
* **API Interna:** `Ativada`
* **API Key:** `Ativada`

Após a implantação do pipeline no ambiente de **Teste**, o seguinte endpoint estará disponível na página **Run**:

{% code overflow="wrap" %}

```
https://{replace with Digibee internal host}/pipeline/dgb-support-lab/v1/test-api-internal
```

{% endcode %}
{% endstep %}

{% step %}

## **Consuma o endpoint**

Após a implantação do pipeline e a disponibilização do endpoint, você pode consumi-lo de duas formas:

1. **Usando uma** [**VPN**](https://app.gitbook.com/s/cO0A6g1dOsu8BiHYqO67/connectivity-management/vpn)
2. **Localmente, a partir de outros pipelines (sem VPN)**

{% hint style="warning" %}
Por padrão, **não** é possível consumir o endpoint localmente de outros pipelines (sem uma VPN) no modelo de **SaaS Dedicado**.
{% endhint %}

### **Consumindo o endpoint via VPN**

Para consumir um endpoint por meio de uma VPN, certifique-se de que a **Fase 2 da Digibee** está devidamente configurada na sua rede. O serviço que faz a requisição deve estar dentro da faixa de IPs mapeada para a Fase 2 da Digibee.

<figure><img src="https://content.gitbook.com/content/3ANg0NQQeslB7Og5K7Ah/blobs/UFT6RH6KeLcxMFnkWWlY/3.png" alt=""><figcaption></figcaption></figure>

#### **Requisitos de configuração**

Antes de fazer a requisição, verifique se:

* A **Fase 2 da Digibee** está declarada na sua rede.
* A **faixa de IPs do consumidor da API** está mapeada na Fase 2 da Digibee.

#### **Chamando o endpoint**

Após a configuração da Fase 2, use o seguinte formato para chamar o endpoint:

```
http://10.255.0.2:9090/pipeline/dgb-support-lab/v1/test-api-internal
```

{% hint style="danger" %}
Use **HTTP** em vez de HTTPS.
{% endhint %}

#### **Checklist de resolução de problemas**

Se houver problemas ao chamar o endpoint, verifique:

* Se a **API Interna** está disponível no seu realm.
* Se o mapeamento da **Fase 2** na Digibee está configurado corretamente.
* Se a **Fase 2 da Digibee** foi declarada na sua rede.
* Se você está usando **HTTP** em vez de HTTPS.

### **Consumindo o endpoint localmente (sem VPN)**

{% hint style="warning" %}
Por padrão, **não** é possível consumir o endpoint localmente de outros pipelines (sem uma VPN) no modelo de **SaaS Dedicado**.
{% endhint %}

Para consumir este endpoint localmente, substitua esse trecho: `{replace with Digibee internal host}` pelo host e porta internos adequados. Veja este exemplo:

* **Host:** `dgb-support-lab.digibee.internal`
* **Porta (Teste):** `9090`

A URL a ser utilizada para acessar o endpoint é:

{% code overflow="wrap" %}

```
http://dgb-support-lab.digibee.internal:9090/pipeline/dgb-support-lab/v1/test-api-internal
```

{% endcode %}

{% hint style="danger" %}
Use **HTTP** em vez de HTTPS.
{% endhint %}

#### **Usando uma API Interna dentro de um pipeline**

Você pode acionar esse endpoint dentro de um pipeline usando um dos seguintes conectores:

* [**REST**](https://app.gitbook.com/s/EKM2LD3uNAckQgy1OUyZ/connectors/web-protocols/rest-v2)
* [**Pipeline Executor**](https://app.gitbook.com/s/SKBJ6ZiEWBU93x170HH4/connectors/tools/pipeline-executor)

Além disso, uma aplicação externa pode acessá-lo caso tenha uma conexão VPN estabelecida com seu realm.

**Exemplo: Usando o conector REST**

Aqui está um exemplo de configuração do conector **REST** para chamar essa API interna:

**Configuração do conector:**

<figure><img src="https://content.gitbook.com/content/3ANg0NQQeslB7Og5K7Ah/blobs/5iVSEZyeqL5D5zKEMv0Q/REST%20V2%20exemplo.png" alt=""><figcaption></figcaption></figure>

**Saída:**

```json
{
  "status": 200,
  "statusMessage": "OK",
  "body": {
    "success": true
  },
  "headers": {
    "Access-Control-Allow-Origin": "*",
    "Access-Control-Expose-Headers": "Authorization",
    "Connection": "keep-alive",
    "Content-Type": "application/json",
    "X-Digibee-Trace-Id": "d8e14b0b-fade-425d-b1f0-ed1cef66c8df"
  }
}
```

{% endstep %}
{% endstepper %}
