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

# Eliminación y restauración

> La ventana de recuperación, lo que un secreto eliminado todavía responde, y lo que la restauración devuelve.

<a id="deleting-and-restoring" />

## Eliminación y restauración

Eliminar un secreto no elimina nada inmediatamente. Mueve el secreto a una **ventana de recuperación** y devuelve `deleted_at` y `scheduled_purge_at`. Una vez que `scheduled_purge_at` pasa, el secreto y cada versión se eliminan para siempre.

<Tabs>
  <Tab title="Console">
    Abre el secreto desde **Secrets** y usa **Delete secret**, en la **Danger
    zone** en su pestaña **Settings**. El diálogo toma una **Recovery window
    (days)** y no confirmará hasta que escriba el nombre del secreto de nuevo.
  </Tab>

  <Tab title="API">
    ```bash theme={null}
    DELETE /v1/secrets/{secret_id}
    { "recovery_window_days": 14 }
    ```
  </Tab>

  <Tab title="CLI">
    ```bash theme={null}
    basaltic secrets delete <secret-id> --recovery-window-days 14
    ```
  </Tab>

  <Tab title="Go">
    ```go theme={null}
    sec, err := secrets.New(cfg).DeleteSecret(ctx, secretID, &secrets.DeleteSecretRequest{
        RecoveryWindowDays: basaltic.Int(14),
    })
    ```

    `sec.ScheduledPurgeAt` es la fecha límite para restaurar.
  </Tab>
</Tabs>

<ResponseField name="recovery_window_days" type="integer, 1–30, default 7">
  De 1 a 30 días, por defecto 7. Establezca esta opción en la creación para darle a un secreto su propio valor predeterminado, o pásela en la llamada de eliminación para anularla para esa eliminación.
</ResponseField>

<ResponseField name="deleted_at" type="timestamp">
  Cuando se solicitó la eliminación. Ausente mientras el secreto está activo.
</ResponseField>

<ResponseField name="scheduled_purge_at" type="timestamp">
  Cuando el secreto sea elegible para destrucción permanente.
</ResponseField>

Los secretos permiten un mínimo de 1 día porque la eliminación afecta a ese secreto. KMS mantiene su mínimo de 7 días porque la eliminación de una clave hace que cada texto cifrado y clave de datos envueltos protegidos por ella sean ilegibles.

Mientras un secreto se sienta en la ventana:

* `GET /v1/secrets/{id}` todavía lo describe, así que puedes ver la fecha de purga.
* La lectura o escritura del valor se rechaza con `409 SECRET_DELETED`.
* La actualización de metadatos se rechaza de la misma manera.
* Está oculto de `GET /v1/secrets` a menos que pases `include_deleted=true`.

Restaurar cancela la purga y vuelve a poner el secreto. Restaurar uno que nunca se eliminó es una operación inofensiva. A diferencia de la cancelación de la eliminación de KMS, la restauración de un secreto lo devuelve directamente al servicio; no se necesita ninguna acción de habilitación separada.

<Tabs>
  <Tab title="Console">
    Un secreto en la ventana muestra **Restore** en su encabezado, en lugar de **Put
    New Value**.
  </Tab>

  <Tab title="API">
    ```bash theme={null}
    POST /v1/secrets/{secret_id}/restore
    ```
  </Tab>

  <Tab title="CLI">
    ```bash theme={null}
    basaltic secrets restore <secret-id>
    ```
  </Tab>

  <Tab title="Go">
    ```go theme={null}
    sec, err := secrets.New(cfg).RestoreSecret(ctx, secretID)
    ```
  </Tab>
</Tabs>

<Warning>
  Repetir la eliminación **no extiende la ventana**. Un segundo `DELETE` durante la ventana mantiene el `scheduled_purge_at` original en lugar de expulsarlo, por lo que un bucle de reintento o una re-ejecución de un script de desmantelamiento no puede mantener silenciosamente un secreto vivo para siempre. Si necesitas más tiempo, restaura el secreto y elimínalo de nuevo con un `recovery_window_days` más largo.
</Warning>

<Note>
  Al eliminar, se libera la cuota del secreto de inmediato, por lo que puede crear un reemplazo sin esperar a que se agote la ventana. Restaurar tiene que recuperar esa cuota, lo que significa que una restauración puede fallar con `403 QUOTA_EXCEEDED` si su cuenta ha llenado el espacio. Libere uno antes de restaurar.
</Note>


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