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

# Desactivar y eliminar una clave

> Desactivación, la ventana de eliminación que hace que una clave sea recuperable, y lo que la cancelación no devuelve.

<a id="turning-a-key-off" />

## Desactivar una tecla

```mermaid theme={null}
stateDiagram-v2
    [*] --> enabled: create
    enabled --> disabled: disable
    disabled --> enabled: enable
    enabled --> pending_deletion: schedule-deletion
    disabled --> pending_deletion: schedule-deletion
    pending_deletion --> disabled: cancel-deletion
    pending_deletion --> [*]: window elapses
```

<Columns cols={2}>
  <Card title="Desactivado" icon="pause">
    `POST /v1/keys/{key_id}/disable` rechaza todas las operaciones de cifrado con `409 KMS_KEY_DISABLED` mientras deja el material intacto. Este es el movimiento reversible: detenga una clave sospechosa de estar comprometida ahora, mantenga la capacidad de leer el texto cifrado histórico después de volver a habilitarla.
  </Card>

  <Card title="Eliminación de programación" icon="clock">
    `POST /v1/keys/{key_id}/schedule-deletion` inicia una cuenta atrás. `recovery_window_days` es **7 a 30, por defecto es 7**. La clave rechaza las operaciones de cifrado para toda la ventana, luego el material y el registro se destruyen.
  </Card>
</Columns>

<Tabs>
  <Tab title="Console">
    Abra la clave desde **KMS**. **Disable** y **Enable** están en el encabezado. **Schedule key deletion** se encuentra en la **Danger zone** en la pestaña **Settings**: se necesita una **Recovery window (days)** y se te hace escribir el nombre de la clave antes de que se acepte **Schedule Deletion**.
  </Tab>

  <Tab title="API">
    ```bash theme={null}
    POST /v1/keys/{key_id}/schedule-deletion
    { "recovery_window_days": 30 }
    ```

    `recovery_window_days` es opcional — omítalo y obtendrás el mínimo de 7 días, que es la ventana más corta, no la más segura.
  </Tab>

  <Tab title="CLI">
    ```bash theme={null}
    basaltic kms key schedule-deletion <key-id> --recovery-window-days 30
    ```
  </Tab>

  <Tab title="Go">
    ```go theme={null}
    key, err := kms.New(cfg).ScheduleKeyDeletion(ctx, keyID, &kms.ScheduleKeyDeletionRequest{
        PendingWindowInDays: basaltic.Int(30),
    })
    ```
  </Tab>
</Tabs>

<Warning>
  La eliminación destruye el material clave. Cada texto cifrado que se haya producido bajo la clave, incluidas todas las claves de datos que hayas envuelto con ella, se vuelve permanentemente ilegible. La ventana existe porque no se puede deshacer después, así que úsala: programa la eliminación, observa qué se rompe y solo deja que transcurra cuando nada lo haga.
</Warning>

<ResponseField name="deleted_at" type="timestamp | null">
  Cuando se solicitó la eliminación. Nulo para las claves activas y las claves cuya eliminación se programó antes de que se registraran los tiempos de solicitud.
</ResponseField>

<ResponseField name="scheduled_purge_at" type="timestamp">
  El plazo para cancelar la eliminación. Se conservan los plazos existentes.
</ResponseField>

<ResponseField name="recovery_window_days" type="integer, 7–30 | null">
  La ventana elegida, por defecto 7 en la programación. Nulo para las claves activas y las eliminaciones pendientes históricas cuya ventana elegida es desconocida.
</ResponseField>

KMS refleja el mínimo de 7 días de AWS KMS porque su eliminación afecta a todos los textos cifrados protegidos por la clave. Los secretos permiten 1 día porque su eliminación está limitada a ese secreto. Ambos máximos son de 30 días.

<a id="cancelling" />

### Cancelación

<Tabs>
  <Tab title="Console">
    Una tecla dentro de la ventana muestra **Cancel Deletion** en su encabezado, donde **Disable** o **Enable** de otra manera estaría.
  </Tab>

  <Tab title="API">
    ```bash theme={null}
    POST /v1/keys/{key_id}/cancel-deletion
    ```
  </Tab>

  <Tab title="CLI">
    ```bash theme={null}
    basaltic kms key cancel-deletion <key-id>
    ```
  </Tab>

  <Tab title="Go">
    ```go theme={null}
    key, err := kms.New(cfg).CancelKeyDeletion(ctx, keyID)
    ```
  </Tab>
</Tabs>

Cancelar sale de la ventana en cualquier punto antes de `scheduled_purge_at`.

<Note>
  Una clave cancelada devuelve **`disabled`, no `enabled`**. Nada vuelve a funcionar hasta que llamas explícitamente a `enable`. La ventana fue ingresada porque alguien quería que la clave desapareciera; recuperarla no debería restaurar silenciosamente el tráfico a ella. Esto coincide deliberadamente con AWS KMS; en comparación, la restauración de un secreto lo vuelve a poner en servicio. Cancelar borra los tres campos de eliminación.
</Note>

Vale la pena conocer dos consecuencias de cómo se cuenta la cuota antes de confiar en la cancelación:

* La programación de una eliminación **libera la cuota de la clave inmediatamente**, por lo que puede crear un reemplazo dentro del mismo límite sin esperar a que finalice la ventana.
* Por lo tanto, cancelar tiene que recuperar esa cuota, y **falla con `403 QUOTA_EXCEEDED` si su cuenta está ahora en su límite**. Si has creado una clave de reemplazo, libera una ranura antes de cancelar.

<Warning>
  Una clave en `pending_deletion` ya no reserva su **nombre**, por lo que una nueva clave puede ser creada con el mismo nombre de inmediato. Como un CRN de KMS se crea a partir del nombre (`crn:kms:<region>:<account>:key/<name>`), la clave antigua y la nueva comparten un CRN, y una directiva de IAM que le asigna un nombre coincide con ambos. Dale al reemplazo un nombre diferente si esa distinción es importante para tus pólizas.
</Warning>


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