> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Gerenciar a lista de IPs permitidos pela API

> Leia e substitua a lista de IPs permitidos do seu workspace com duas operações da API do Identity, e trate os erros que as operações podem retornar.

Duas operações da API do Identity gerenciam a [lista de IPs permitidos](https://docs.lerian.studio/pt/platform/access-manager/features/ip-allowlist/overview): uma a lê, outra a substitui. Use-as quando você gerencia as configurações de segurança pelas suas próprias ferramentas em vez do Console.

A referência da API documenta as duas operações: [Obter a IP allowlist da organização](https://docs.lerian.studio/pt/reference/platform/access-manager/get-organization-ip-allowlist.md) e [Definir a IP allowlist da organização](https://docs.lerian.studio/pt/reference/platform/access-manager/set-organization-ip-allowlist.md).

## As duas operações

***

| Operação | O que ela faz | Permissão |
| - | - | - |
| `GET /v1/security/ip-allowlist` | Retorna as entradas guardadas e as superfícies em que a lista se aplica. | `security` / `get` |
| `PUT /v1/security/ip-allowlist` | Substitui a lista inteira e, opcionalmente, as superfícies. | `security` / `put` |

As duas operações ficam na URL base da API do Identity e precisam de um bearer token. A plataforma resolve o seu workspace a partir do token. Não existe identificador de organização no caminho nem no corpo.

## O corpo

***

O corpo de requisição do `PUT` e o corpo de resposta das duas operações têm estes campos:

```json JSON theme={null}
{
  "entries": ["203.0.113.0/24", "198.51.100.7"],
  "scopes": ["console", "api"]
}
```

| Campo | Obrigatório | Significado |
| - | - | - |
| `entries` | Sim | A lista completa de endereços e faixas CIDR. O que você envia substitui o que está guardado. |
| `scopes` | Não | Onde a lista se aplica: `console`, `api` ou os dois. |
| `labeledEntries` | Apenas na resposta | As entradas guardadas na mesma ordem, cada uma com a sua `description`. |

Regras que valem para os campos:

* `entries` é uma substituição completa. Para acrescentar um endereço, envie a lista atual mais o novo endereço.
* Em uma requisição, você pode enviar uma entrada como texto com o endereço ou como um objeto com `cidr` e `description`. Você pode misturar as duas formas.
* A plataforma guarda uma entrada em texto com uma descrição vazia. Para manter uma descrição, envie essa entrada como objeto de novo.
* Uma entrada mais ampla que `/24` para IPv4 ou `/48` para IPv6 é recusada com `400`, e nada muda.
* A resposta devolve as entradas como a plataforma as guardou. Um endereço único volta com o prefixo dele: `198.51.100.7` vira `198.51.100.7/32`.
* `entries: []` desativa a lista. A operação retorna `200`.
* Uma lista guardada vazia é serializada como `[]`, nunca como `null`.
* Quando você omite `scopes`, os escopos guardados ficam como estão.
* `scopes: []` mantém as entradas mas para a aplicação da lista em todo lugar.
* Quando você omite `entries`, a operação retorna `400` com o código `IDE-0001` e nada muda.

## Exemplos

***

Troque os espaços reservados pela URL base da sua API do Identity e por um bearer token que tenha a permissão `security`.

```bash Read the list theme={null}
IDENTITY_BASE_URL="https://identity.<your-domain>"   # your Identity API base URL
IDENTITY_BEARER_TOKEN="paste-your-access-token-here"

curl -sS "${IDENTITY_BASE_URL}/v1/security/ip-allowlist" \
  -H "Authorization: Bearer ${IDENTITY_BEARER_TOKEN}"
```

```bash Activate for Console access theme={null}
IDENTITY_BASE_URL="https://identity.<your-domain>"   # your Identity API base URL
IDENTITY_BEARER_TOKEN="paste-your-access-token-here"

curl -sS -X PUT "${IDENTITY_BASE_URL}/v1/security/ip-allowlist" \
  -H "Authorization: Bearer ${IDENTITY_BEARER_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "entries": ["203.0.113.0/24", "198.51.100.7"],
    "scopes": ["console"]
  }'
```

```bash Add API access theme={null}
IDENTITY_BASE_URL="https://identity.<your-domain>"   # your Identity API base URL
IDENTITY_BEARER_TOKEN="paste-your-access-token-here"

curl -sS -X PUT "${IDENTITY_BASE_URL}/v1/security/ip-allowlist" \
  -H "Authorization: Bearer ${IDENTITY_BEARER_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{
    "entries": ["203.0.113.0/24", "198.51.100.7", "192.0.2.10"],
    "scopes": ["console", "api"]
  }'
```

```bash Deactivate theme={null}
IDENTITY_BASE_URL="https://identity.<your-domain>"   # your Identity API base URL
IDENTITY_BEARER_TOKEN="paste-your-access-token-here"

curl -sS -X PUT "${IDENTITY_BASE_URL}/v1/security/ip-allowlist" \
  -H "Authorization: Bearer ${IDENTITY_BEARER_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{ "entries": [] }'
```

Um `PUT` bem-sucedido retorna `200` com a lista guardada:

```json Response theme={null}
{
  "entries": ["203.0.113.0/24", "198.51.100.7/32"],
  "scopes": ["console"],
  "labeledEntries": [
    { "cidr": "203.0.113.0/24", "description": "" },
    { "cidr": "198.51.100.7/32", "description": "" }
  ]
}
```

## Ordem recomendada

***

**1. Cadastre os endereços apenas com o escopo console**

Envie a lista completa com `"scopes": ["console"]`. Inclua o endereço de onde você chama.

**2. Confirme que você ainda consegue entrar**

Entre no Console a partir de um endereço listado. Depois tente a partir de um endereço não listado e espere uma recusa.

**3. Liste o endereço de saída de cada integração**

Reúna o endereço de onde cada ERP, disparador de webhook, job agendado e application chama. Acrescente cada um a `entries`.

**4. Acrescente o escopo api**

Envie a lista completa de novo com `"scopes": ["console", "api"]`. Acompanhe as suas integrações em busca de respostas `403`.

## Erros

***

Cada erro usa o envelope do Access Manager com os campos `code`, `title` e `message`.

| Status | `code` | `title` | `message` |
| - | - | - | - |
| 400 | `IDE-0001` | Missing Fields in Request | Your request is missing one or more required fields. |
| 400 | `IDE-0035` | IP Allowlist Too Large | The IP allowlist is too large: the combined, comma-separated entries must not exceed `{value}` characters. Please remove some entries and try again. |
| 400 | `IDE-0036` | Invalid IP Allowlist Entry | The IP allowlist entry `{value}` is not a valid IP address or CIDR block. Please correct it and try again. |
| 400 | `IDE-0037` | Invalid IP Allowlist Scope | The IP allowlist enforcement scope `{value}` is not supported. Please use console, api, or both, and try again. |
| 401 | `AUT-0006` | Token Missing | A valid token must be provided in the request header. Please include a token and try again. |
| 401 | `AUT-0007` | Invalid Token | The provided token is expired, invalid or malformed. Please provide a valid token and try again. |
| 401 | `IDE-0009` | Invalid Token | The provided token is expired, invalid or malformed. Please provide a valid token and try again. |
| 403 | `AUT-0021` | IP Not Allowed | Access from your network is not allowed for this workspace. Contact your administrator. |
| 403 | `AUT-1020` | Permission Denied | the credential is not allowed to perform `security:<action>` on this request |

As entradas guardadas, separadas por vírgulas, devem caber em 200 caracteres. As descrições não contam.

> [!WARNING]
>
> Olhe o campo `code`, não apenas o status. Um `403` com o código `AUT-0021` pode voltar de qualquer endpoint protegido, inclusive dessas duas operações, quando o seu próprio endereço está fora de uma lista ativa. Nesse caso a lista não mudou e você deve chamar a partir de um endereço listado.

## Páginas relacionadas

***

> [card] [Lista de IPs permitidos](https://docs.lerian.studio/pt/platform/access-manager/features/ip-allowlist/overview)
>
> O que o recurso protege, como ele decide e o que ele não cobre.

> [card] [Lista de erros do Access Manager](https://docs.lerian.studio/pt/reference/platform/access-manager/access-manager-error-list.md)
>
> Cada código de erro do Auth e do Identity, com título e mensagem.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.