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

# DELETE/Token

> Guía de API de eliminación segura de tokens en modo privado con cifrado

Elimine de forma segura los tokens registrados. Puede eliminar hasta 5,000 tokens en lote, con soporte de procesamiento parcial.

<Warning>
  La eliminación de tokens es una operación irreversible. Por favor revise cuidadosamente antes de eliminar.
</Warning>

## Información Básica

<ParamField path="method" type="string" required>
  **DELETE**
</ParamField>

<ParamField path="url" type="string" required>
  [https://rest-api.argosidentity.com/v3/submission/tokens](https://rest-api.argosidentity.com/v3/submission/tokens)
</ParamField>

## Configuración de Seguridad

### Transmisión Cifrada

<Check>
  Cuando la opción **Secure Data Transmission** está habilitada, las solicitudes y respuestas se cifran con AES-256.
</Check>

* Método de cifrado: **AES-256**
* Cobertura: Datos de solicitud y respuesta
* Compatibilidad: Mismo método de cifrado/descifrado que POST/submission, PATCH/submission, GET/submission
* [Opciones de Transferencia Segura de Datos](/es/idcheck/getting-started/encrypt-and-decrypt-data/overview#4-secure-data-transfer-options)

### Seguridad de Datos

<Info>
  Los datos de tokens eliminados se remueven completamente y no pueden ser recuperados. En la transmisión segura de datos, el proceso de eliminación también procede con cifrado.
</Info>

### Autenticación

<ParamField header="x-api-key" type="string" required>
  Establezca su clave API del proyecto.
</ParamField>

<ParamField header="Content-Type" type="string">
  Establezca el tipo MIME del cuerpo de la solicitud.
</ParamField>

<Warning>
  Cuando use `Content-Type: application/json` para solicitudes DELETE, si ocurre un error, use `text/plain` en su lugar.
</Warning>

```bash theme={null}
x-api-key: {{YOUR_API_KEY}}
Content-Type: text/plain
```

## Tipos de Eliminación de Tokens

1. Eliminación por tokenId especificado

* Eliminar tokenId específico (máximo 500 por solicitud)

2. Eliminación de N basada en tiempo

* Eliminar N tokens basado en orden de envío y conteo (máximo 5,000 por solicitud)

## Parámetros de Solicitud

### Cuerpo de la Solicitud

<Tabs>
  <Tab title="Eliminación por tokenId especificado">
    <ParamField body="tokenId" type="Array<String>" required>
      Array de IDs de tokens a eliminar (máximo 500)

      **Formato del ID de token:**

      * **Longitud**: 8 Byte \~ 64 Byte
      * **Caracteres permitidos**: Letras (a-z, A-Z), números (0-9), guiones (-), guiones bajos (\_), puntos (.)
      * **Restricciones**: Sin espacios, tabulaciones ni caracteres de nueva línea
      * **Inicio/Fin**: Debe comenzar y terminar solo con letras o números
    </ParamField>
  </Tab>

  <Tab title="Eliminación de N tokens basada en tiempo">
    <ParamField body="count" type="Number" required>
      Número de tokens a eliminar (máximo 5000)
    </ParamField>

    <ParamField body="order" type="string" required>
      * `asc`: Orden ascendente
      * `desc`: Orden descendente
    </ParamField>
  </Tab>
</Tabs>

<RequestExample>
  ```bash tokenId specified deletion cURL example theme={null}
  curl -X DELETE 'https://rest-api.argosidentity.com/v3/submission/tokens' \
    -H 'x-api-key: YOUR_API_KEY' \
    -H 'Content-Type: text/plain' \
    -d '{
    "tokenId": [
      "user001a",
      "api.key.01",
      "token-123-abc", 
      "session_data_01"
    ]
  }'
  ```

  ```bash Time-based N token deletion cURL example theme={null}
  curl -X DELETE 'https://rest-api.argosidentity.com/v3/submission/tokens' \
    -H 'x-api-key: YOUR_API_KEY' \
    -H 'Content-Type: text/plain' \
    -d '{
    "count": 5000,
    "order": "desc"
  }'
  ```
</RequestExample>

## Respuesta

### Respuesta Exitosa (200)

<Tabs>
  <Tab title="Eliminación por tokenId especificado">
    <ResponseField name="success" type="Boolean" required>
      Estado de éxito de la operación
    </ResponseField>

    <ResponseField name="message" type="String" required>
      Mensaje de resultado de la operación
    </ResponseField>

    <ResponseField name="summary" type="Object" required>
      Información de resumen

      <Expandable title="summary properties">
        <ResponseField name="totalSubmitted" type="Number">
          Número total de tokens enviados
        </ResponseField>

        <ResponseField name="deleted" type="Number">
          Número de tokens eliminados exitosamente
        </ResponseField>

        <ResponseField name="notFound" type="Number">
          Número de tokens inexistentes
        </ResponseField>

        <ResponseField name="failed" type="Number">
          Número de tokens que fallaron al eliminar
        </ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="details" type="Object">
      Información detallada (incluida solo cuando hay fallos o tokens inexistentes)

      <Expandable title="details properties">
        <ResponseField name="notFound" type="Array<String>">
          Lista de tokens inexistentes
        </ResponseField>

        <ResponseField name="failed" type="Array<Object>">
          Lista de tokens que fallaron al eliminar

          <Expandable title="failed array properties">
            <ResponseField name="tokenId" type="String">
              ID del token que falló al eliminar
            </ResponseField>

            <ResponseField name="error" type="String">
              Código de fallo de eliminación
            </ResponseField>

            <ResponseField name="message" type="String">
              Mensaje de fallo de eliminación
            </ResponseField>
          </Expandable>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Tab>

  <Tab title="Eliminación de N tokens basada en tiempo">
    <ResponseField name="success" type="Boolean" required>
      Estado de éxito de la operación
    </ResponseField>

    <ResponseField name="message" type="String" required>
      Mensaje de resultado de la operación
    </ResponseField>

    <ResponseField name="summary" type="Object" required>
      Información de resumen

      <Expandable title="summary properties">
        <ResponseField name="deleted" type="Number">
          Número de tokens eliminados exitosamente
        </ResponseField>

        <ResponseField name="failed" type="Number">
          Número de tokens que fallaron al eliminar
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Tab>
</Tabs>

<ResponseExample>
  ```json tokenId specified deletion complete success theme={null}
  {
    "success": true,
    "message": "Successfully deleted 3 tokens",
    "summary": {
      "totalSubmitted": 3,
      "deleted": 3,
      "notFound": 0,
      "failed": 0
    }
  }
  ```

  ```json tokenId specified deletion partial success theme={null}
  {
    "success": false,
    "message": "Successfully deleted 1 tokens",
    "summary": {
      "totalSubmitted": 3,
      "deleted": 1,
      "notFound": 1,
      "failed": 1
    },
    "details": {
      "notFound": ["nonexistent1"],
      "failed": [
        {
          "tokenId": "problematic-token",
          "error": "Delete_failed",
          "message": "Delete operation failed"
        }
      ]
    }
  }
  ```

  ```json Time-based token deletion theme={null}
  {
      "success": true,
      "message": "Successfully deleted 10 tokens",
      "summary": {
          "deleted": 10,
          "failed": 0
      }
  }
  ```
</ResponseExample>

### Respuesta de Error (400/500)

<ResponseField name="errorCode" type="String" required>
  Código de error
</ResponseField>

<ResponseField name="errorMessage" type="String" required>
  Mensaje de error
</ResponseField>

<ResponseExample>
  ```json Token not found theme={null}
  {
    "errorCode": "token_not_found",
    "errorMessage": "Token not found."
  }
  ```
</ResponseExample>

## Política de Tokens

### Limitaciones

<Warning>
  **Límite de solicitud**: Máximo 5,000 IDs de tokens por solicitud
  **Límite del pool**: Máximo 100,000 tokens gestionados por PID
</Warning>

### Manejo Parcial

<Info>
  Las solicitudes DELETE se procesan parcialmente para los IDs de tokens.
  Los IDs de tokens que no existen en el pool se indican en el campo 'notFound' de la respuesta, y solo se eliminan los IDs de tokens existentes.
</Info>

**Ejemplo:**

* IDs de tokens existentes en el pool: `tokenA`, `tokenB`, `tokenC`
* Solicitud DELETE: `tokenA`, `tokenC`, `tokenD`
* Pool después de completar la solicitud: `tokenB`
* Respuesta details.notFound: \[`tokenD`]

## Consideraciones de Seguridad

### Eliminación Completa de Datos

<Check>
  Los tokens eliminados en modo privado se remueven completamente en estado cifrado y no pueden ser recuperados.
</Check>

* **Eliminación segura**: Remoción completa de la base de datos
* **Procesamiento de cifrado**: Cifrado AES-256/GCM-256 aplicado al proceso de eliminación también
* **Registros de auditoría**: Registros de operaciones de eliminación mantenidos (excluyendo contenido de tokens)

### Control de Acceso

<Warning>
  Los permisos de eliminación se controlan a través de claves API. Se requiere especial cuidado en la gestión de claves API.
</Warning>

## Códigos de Error

### Errores Comunes

| Error Code                 | HTTP Status | Descripción                                           |
| -------------------------- | ----------- | ----------------------------------------------------- |
| invalid\_payload           | 400         | Payload de solicitud faltante o error de formato      |
| invalid\_path              | 400         | Método HTTP no soportado                              |
| invalid\_project           | 400         | ID de proyecto faltante o clave API inválida          |
| invalid\_query\_parameters | 400         | Parámetros de consulta faltantes o error de formato   |
| invalid\_order             | 400         | Error de formato en el parámetro de orden de consulta |
| internal\_server\_error    | 500         | Error interno del servidor                            |

### Errores Relacionados con Tokens

| Error Code                      | HTTP Status | Descripción                                                                |
| ------------------------------- | ----------- | -------------------------------------------------------------------------- |
| invalid\_token\_id              | 400         | ID de token faltante, valor vacío o no es un array                         |
| invalid\_token\_id\_format      | 400         | Violación de regla de formato de ID de token                               |
| invalid\_token\_id\_type        | 400         | El ID de token no es una cadena                                            |
| invalid\_token\_id\_length      | 400         | Longitud del ID de token fuera del rango de 8-64 caracteres                |
| invalid\_token\_id\_whitespace  | 400         | El ID de token contiene caracteres de espacio en blanco                    |
| invalid\_token\_id\_characters  | 400         | El ID de token contiene caracteres no permitidos                           |
| invalid\_token\_id\_start       | 400         | El ID de token no comienza con letra/número                                |
| invalid\_token\_id\_end         | 400         | El ID de token no termina con letra/número                                 |
| request\_token\_limit\_exceeded | 400         | Límite de conteo de tokens por solicitud excedido (500)                    |
| token\_limit\_exceeded          | 400         | Limite total de tokens del proyecto excedido (100,000)                     |
| token\_id\_not\_found           | 400         | El token solicitado no existe en el pool                                   |
| token\_id\_details\_not\_found  | 400         | Fallo en la recuperación de detalles del token                             |
| delete\_token\_limit\_exceeded  | 400         | Conteo de solicitud de eliminación masiva basada en tiempo excedido (5000) |

## Ejemplos de Uso

<Steps>
  <Step title="Verificar tokens a eliminar">
    Verifique si los tokens existen antes de eliminarlos.

    ```bash theme={null}
    curl -X GET 'https://rest-api.argosidentity.com/v3/submission/tokens?tokenId=user001a' \
      -H 'x-api-key: YOUR_API_KEY'
    ```

    <Check>
      Si el token existe, se devolverá información detallada.
    </Check>
  </Step>

  <Step title="Ejecutar eliminación de tokens">
    Elimine los tokens verificados.
    Tipos: eliminación por token especificado, eliminación de tokens basada en tiempo

    <Expandable title="Eliminación por token especificado">
      ```bash theme={null}
      curl -X DELETE 'https://rest-api.argosidentity.com/v3/submission/tokens' \
        -H 'x-api-key: YOUR_API_KEY' \
        -H 'Content-Type: text/plain' \
        -d '{"tokenId": ["user001a", "api.key.01"]}' 
      ```
    </Expandable>

    <Expandable title="Eliminación de tokens basada en tiempo">
      ```bash theme={null}
      curl -X DELETE 'https://rest-api.argosidentity.com/v3/submission/tokens' \
        -H 'x-api-key: YOUR_API_KEY' \
        -H 'Content-Type: text/plain' \
        -d '{"count": 5000, "order": "asc"}' 
      ```
    </Expandable>

    <Warning>
      La eliminación se ejecuta inmediatamente y no se puede deshacer.
    </Warning>
  </Step>

  <Step title="Verificar resultados de eliminación">
    Verifique los resultados de la eliminación en la respuesta.

    <Check>
      Puede verificar el número de tokens eliminados exitosamente en el campo `summary.deleted`.
    </Check>
  </Step>
</Steps>

<Tip>
  Durante la eliminación masiva, incluso si se incluyen tokens inexistentes, solo se eliminan selectivamente los tokens existentes. Puede verificar la lista de tokens inexistentes en `details.notFound`.
</Tip>

<Note>
  **Aviso de Content-Type**: Para solicitudes DELETE, cuando usar `Content-Type: application/json` causa un error, establezca el encabezado a `text/plain` en su lugar.
</Note>
