# Códigos de error: Bóveda de credenciales de canal

> Tokens de Meta y otros secretos de canal, cifrados en `channel_secrets` (`src/authz/channel-secrets/`). Cada error tiene un código `VAULT_*` con mensaje fijo: nunca lleva el secreto ni el error original.

**Cómo se detecta (toda la familia):** Lo lanza quien pidió el secreto (envío, media, alta de canales): aparece como `reason=VAULT_*` o `code=VAULT_*` en su línea de log o como causa de un `*_TOKEN_UNAVAILABLE`.

**Qué hacer (toda la familia):** `VAULT_SECRET_NOT_FOUND` / `VAULT_SECRET_EXPIRED`: reconectar la cuenta del canal. `VAULT_KEY_*` / `VAULT_DISABLED`: configuración del servidor (plataforma). El resto son bugs de quien llama.

Lo que un código no dice lo hereda de la familia.

## `VAULT_AUTHOR_INVALID`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** El autor debe ser exactamente una persona o exactamente un servicio

## `VAULT_BINDING_INVALID`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** La entidad, el dueño o el tipo que atan el secreto a su fila no son válidos

## `VAULT_CIPHERTEXT_INVALID`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** El secreto guardado no tiene el formato esperado

## `VAULT_CONCURRENT_WRITE`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** Otra escritura sobre el mismo dueño y tipo ganó; reintente

## `VAULT_CONSTRAINT_VIOLATED`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** La base rechazó el secreto por una de sus reglas

## `VAULT_CROSS_ENTITY`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** El principal no pertenece a la entidad del secreto

## `VAULT_DECRYPT_FAILED`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** No se pudo descifrar el secreto

## `VAULT_DISABLED`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** La bóveda de credenciales de canal está apagada

## `VAULT_ENCRYPT_FAILED`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** No se pudo cifrar el secreto

## `VAULT_ENTITY_INVALID`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** La entidad no es un entero positivo válido

## `VAULT_EXPIRES_AT_INVALID`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** El vencimiento debe ser una fecha válida, futura y anterior a 2038

## `VAULT_INPUT_INVALID`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** La petición a la bóveda no tiene la forma esperada

## `VAULT_KEY_INVALID`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** La llave maestra de la bóveda falta o no tiene el formato exigido

## `VAULT_KEY_NOT_AVAILABLE`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** La llave con la que se cifró este secreto ya no está configurada

## `VAULT_OWNER_INVALID`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** El dueño del secreto no es válido

## `VAULT_OWNER_NOT_IN_ENTITY`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** La cuenta de canal no existe o no pertenece a esa entidad

## `VAULT_PLAINTEXT_INVALID`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** El valor a guardar está vacío, excede el tamaño permitido o no es un texto válido

## `VAULT_PRINCIPAL_INVALID`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** Solo un principal de servicio puede leer un secreto

## `VAULT_REFERENCE_INVALID`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** La entidad o el autor del secreto no existen en la base

## `VAULT_REVEAL_NOT_ALLOWED`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** La política de este servicio no permite leer ese tipo de secreto

## `VAULT_SECRET_EXPIRED`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** El secreto está vencido

## `VAULT_SECRET_ID_INVALID`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** El id del secreto no es un entero positivo válido

## `VAULT_SECRET_KIND_INVALID`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** El tipo de secreto no está en la lista permitida

## `VAULT_SECRET_NOT_FOUND`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** No hay un secreto vivo (token) para esa cuenta de canal y tipo.
- **Causa típica:** La cuenta nunca guardó su token en la bóveda (alta incompleta o migración pendiente) o se revocó.
- **Qué hacer:** Reconectar la cuenta del canal para que guarde un token nuevo.

## `VAULT_STORAGE_FAILED`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** La bóveda no pudo leer o escribir en la base

## `VAULT_TOKEN_TYPE_INVALID`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** El tipo de token no está en la lista permitida

## `VAULT_TX_REQUIRED`

- **Tipo:** interno · **HTTP:** — · **Estado:** vigente
- **Qué significa:** El manager recibido no tiene una transacción activa: no se puede escribir "en la misma transacción"
