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

# Gestiona la lista de IP permitidas por API

> Lee y reemplaza la lista de IP permitidas de tu espacio de trabajo con dos operaciones de la API de Identity, y maneja cada error que las operaciones pueden devolver.

Dos operaciones de la API de Identity gestionan la [lista de IP permitidas](/es/platform/access-manager/features/ip-allowlist/overview): una la lee y otra la reemplaza. Úsalas cuando gestionas los ajustes de seguridad desde tus propias herramientas en lugar de Console.

<Note>
  Las páginas de referencia de estas dos operaciones aún no están en la referencia de API. Su página madre es [APIs de Identity](/es/reference/platform/access-manager/am-identity-apis). Esta página es el contrato hasta que lleguen las páginas de referencia.
</Note>

## Las dos operaciones

***

| Operación                       | Qué hace                                                                   | Permiso            |
| ------------------------------- | -------------------------------------------------------------------------- | ------------------ |
| `GET /v1/security/ip-allowlist` | Devuelve las entradas almacenadas y las superficies donde aplica la lista. | `security` / `get` |
| `PUT /v1/security/ip-allowlist` | Reemplaza toda la lista y, de forma opcional, las superficies.             | `security` / `put` |

Ambas operaciones viven en la URL base de la API de Identity y necesitan un Bearer token. La plataforma resuelve tu espacio de trabajo a partir del token. No hay un identificador de organización en la ruta ni en el cuerpo.

## El cuerpo

***

El cuerpo de la solicitud de `PUT` y el cuerpo de la respuesta de ambas operaciones tienen la misma forma:

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

| Campo     | Obligatorio | Significado                                                                            |
| --------- | ----------- | -------------------------------------------------------------------------------------- |
| `entries` | Sí          | La lista completa de direcciones y rangos CIDR. Lo que envías reemplaza lo almacenado. |
| `scopes`  | No          | Dónde aplica la lista: `console`, `api` o ambos.                                       |

Reglas que aplican a los campos:

* `entries` es un reemplazo completo. Para agregar una dirección, envía la lista actual más la dirección nueva.
* La respuesta devuelve las entradas tal como las almacenó la plataforma. Una dirección suelta vuelve con su prefijo: `198.51.100.7` se convierte en `198.51.100.7/32`.
* `entries: []` desactiva la lista. La operación devuelve `200`.
* Una lista almacenada vacía se serializa como `[]`, nunca como `null`.
* Cuando omites `scopes`, los ámbitos almacenados quedan como están.
* `scopes: []` mantiene las entradas pero detiene el cumplimiento en todas partes.
* Cuando omites `entries`, la operación devuelve `400` con el código `IDE-0001` y nada cambia.

## Ejemplos

***

Reemplaza los marcadores con la URL base de tu API de Identity y un Bearer token que tenga el permiso `security`.

<CodeGroup>
  ```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": [] }'
  ```
</CodeGroup>

Un `PUT` exitoso devuelve `200` con la lista almacenada:

<CodeGroup>
  ```json Response theme={null}
  {
    "entries": ["203.0.113.0/24", "198.51.100.7/32"],
    "scopes": ["console"]
  }
  ```
</CodeGroup>

## Orden recomendado

***

<Steps>
  <Step title="Registra las direcciones solo con el ámbito console">
    Envía la lista completa con `"scopes": ["console"]`. Incluye la dirección desde la que llamas.
  </Step>

  <Step title="Confirma que todavía puedes iniciar sesión">
    Inicia sesión en Console desde una dirección listada. Luego intenta desde una dirección no listada y espera un rechazo.
  </Step>

  <Step title="Lista la dirección saliente de cada integración">
    Reúne la dirección desde la que llama cada ERP, cada emisor de webhooks, cada job programado y cada aplicación. Agrega cada una a `entries`.
  </Step>

  <Step title="Agrega el ámbito api">
    Envía la lista completa de nuevo con `"scopes": ["console", "api"]`. Vigila tus integraciones por si aparecen respuestas `403`.
  </Step>
</Steps>

## Errores

***

Cada error usa el envelope de Access Manager con los campos `code`, `title` y `message`.

| Estado | `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 200 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    | `IDE-0008` | Token Missing              | A valid token must be provided in the request header. Please include a 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.                                                        |

<Warning>
  Inspecciona el campo `code`, no solo el estado. Un `403` con el código `AUT-0021` puede volver de cualquier endpoint protegido, incluidos estos dos, cuando tu propia dirección está fuera de una lista activa. En ese caso la lista no cambió y debes llamar desde una dirección listada.
</Warning>

## Páginas relacionadas

***

<Columns cols={2}>
  <Card title="Lista de IP permitidas" icon="shield-halved" href="/es/platform/access-manager/features/ip-allowlist/overview">
    Qué protege la función, cómo decide y qué no cubre.
  </Card>

  <Card title="Lista de errores de Access Manager" icon="triangle-exclamation" href="/es/reference/platform/access-manager/access-manager-error-list">
    Cada código de error de Auth y de Identity, con título y mensaje.
  </Card>
</Columns>
