# Códigos de error: Retirados

> Códigos que el backend ya no devuelve. Se conservan para reconocerlos si aparecen en un registro o una tabla de antes de su retiro; ningún código nuevo los usa.

**Qué hacer (toda la familia):** Ninguno: si aparece hoy, el registro es anterior a su retiro.

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

## `AUTHZ_EXPLAIN_DISABLED`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** La lectura de roles y permisos estaba apagada en el servidor y respondía 404.
- **retirado (2026-10-05):** Retirado el 05/10/2026: la lectura de roles y permisos ya no se puede apagar; está siempre disponible, con sesión y el permiso de ver roles.

## `CHANNEL_ONBOARDING_PROXY_BLOCKED`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** El camino de alta heredado habría llamado `subscribed_apps` sin cuerpo sobre un número con override de webhook: se bloquea para no romper la recepción de mensajes.
- **retirado (2026-10-14):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `CHANNEL_SEND_DIRECT_EGRESS_DISABLED`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** La salida directa estaba apagada (`CHANNELS_DIRECT_EGRESS_ENABLED`): el envío no salía por Boost.
- **retirado (2026-10-15):** Retirado el 15/10/2026 (Roor: sin interruptores por variable de entorno): la salida directa quedó fija en código; sale toda cuenta con `egress_owner = boost`.

## `CHANNEL_SEND_EMAIL_DISABLED`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** El correo en Boost estaba apagado (`CHANNELS_EMAIL_ENABLED`): el envío de correo se negaba antes de persistir.
- **retirado (2026-10-15):** Retirado el 15/10/2026 (Roor: sin interruptores por variable de entorno): el correo quedó encendido fijo en código.

## `CHANNEL_SWITCHES_DISABLED`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Los interruptores de canal estaban apagados (`CHANNELS_SWITCHES_ENABLED`).
- **retirado (2026-10-15):** Retirado el 15/10/2026 (Roor: sin interruptores por variable de entorno): los interruptores por cuenta se leen y escriben siempre.

## `CHANNELS_SYNC_ACCOUNT_UNKNOWN`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Sincronía del historial: cuenta inválida.
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `CHANNELS_SYNC_AUDIT_UNAVAILABLE`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Sincronía del historial: no se pudo registrar la decisión de autorización.
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `CHANNELS_SYNC_BUSY`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Sincronía del historial: otra instancia tenía el candado.
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `CHANNELS_SYNC_DISABLED`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Sincronía del historial apagada (`CHANNELS_SYNC_ENABLED`).
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `CHANNELS_SYNC_INVALID_REQUEST`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Sincronía del historial: `runbook_step` inválido.
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `CHANNELS_SYNC_NO_CHANGE`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Sincronía del historial: ya estaba encendida.
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `CHANNELS_SYNC_NOT_BACKFILLED`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Sincronía del historial: la cuenta no tenía copia histórica.
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `CHANNELS_SYNC_PLATFORM_ONLY`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Sincronía del historial: solo plataforma.
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `COMMENTS_DISABLED`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Los comentarios en Boost estaban apagados (`CHANNELS_COMMENTS_ENABLED`).
- **retirado (2026-10-15):** Retirado el 15/10/2026 (Roor: sin interruptores por variable de entorno): los comentarios quedaron encendidos fijos en código.

## `COMMS_CIPHERTEXT_INVALID`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Migración de secretos de canal: un valor de origen no tenía el formato cifrado esperado.
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `COMMS_DECRYPT_FAILED`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Migración de secretos de canal: un valor de origen no se pudo descifrar.
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `COMMS_KEY_INVALID`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Migración de secretos: `COMMS_ENCRYPTION_KEY` sin el largo exigido.
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `COMMS_KEY_MISSING`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Migración de secretos: faltaba `COMMS_ENCRYPTION_KEY`.
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `COMMS_KEY_WRONG`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Migración de secretos: la llave no abría ningún valor de este entorno.
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `EMAIL_DISABLED`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** El correo en Boost estaba apagado en este servidor (`CHANNELS_EMAIL_ENABLED`).
- **retirado (2026-10-15):** Retirado el 15/10/2026 (Roor: sin interruptores por variable de entorno): el correo quedó encendido fijo en código.

## `EMAIL_ONBOARDING_DISABLED`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** El alta de correo en Boost estaba apagada (`CHANNELS_EMAIL_ONBOARDING_ENABLED`).
- **retirado (2026-10-15):** Retirado el 15/10/2026 (Roor: sin interruptores por variable de entorno): el alta de correo quedó encendida fija en código; si falta configuración responde `EMAIL_ONBOARDING_INCOMPLETE`.

## `INTERACTIONS_CHANNEL_ACCOUNT_WITHOUT_COMMUNICATIONS`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** El número no sale por Boost (la salida directa está apagada para él) y no tiene otro camino. Hay que pasarlo a Boost (`egress_owner = boost`).
- **retirado (2026-10-14):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `INTERACTIONS_COMMUNICATIONS_RETIRED`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Todas las cuentas de esta entidad salen por Boost (410): quien llamó usó el camino heredado, que ya no tiene a dónde ir.
- **retirado (2026-10-14):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `INTERACTIONS_DIRECT_EGRESS_OUT_OF_SCOPE`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** El número sale por Boost y este envío no pasa por la salida directa (no sale de una conversación), así que no tiene otro camino.
- **retirado (2026-10-14):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `INTERACTIONS_INITIATE_NO_CONVERSATION_ID`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** No se obtuvo `conversation_id` al iniciar la conversación (500): el número no salió por Boost y cayó en el camino heredado, que ya no tiene a dónde ir. Hay que pasar el número a Boost.
- **retirado (2026-10-14):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `META_BODY_INVALID`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Migración de secretos: Meta respondió un cuerpo que no era JSON al inspeccionar un token.
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `META_VERIFIER_MISSING`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Migración de secretos: faltaba `META_APP_SECRET` para validar con Meta.
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `NOTIFICATIONS_BELL_DISABLED`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** La campana estaba apagada en este servidor: sus rutas respondían 404.
- **retirado (2026-10-14):** Retirado el 14/10/2026: se borraron los interruptores `NOTIFICATIONS_BELL_ENABLED`, `NOTIFICATIONS_AUDIENCE_RULES_ENABLED` y `NOTIFICATIONS_BUS_CONSUMER_ENABLED`; la campana existe siempre.

## `PLATFORM_PROFILE_DISABLED`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** La gestión de accesos de plataforma estaba apagada en el servidor y respondía 404.
- **retirado (2026-10-05):** Retirado el 05/10/2026: la gestión de accesos de plataforma ya no se puede apagar; está siempre disponible, solo para plataforma.

## `QUARANTINE_WRITE_FAILED`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Migración de secretos: no se pudo escribir en `channel_quarantine`.
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `QUARANTINE_WRITE_UNCONFIRMED`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Migración de secretos: `channel_quarantine` no confirmó la escritura.
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `SESSIONS_OFF`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** `AUTH_SESSIONS_MODE` estaba en `off`: no se revisaba la sesión. No era un error.
- **retirado (2026-10-05):** 2026-10-05: la variable `AUTH_SESSIONS_MODE` y sus modos `off` y `shadow` se borraron; las sesiones quedaron siempre encendidas.

## `SOURCE_ROW_INVALID`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Migración de secretos de canal: una fila de origen sin la forma esperada.
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `TEE_DEAD`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Copia de recibos a un servicio externo: recibos que no llegaron en 24 h.
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `TEE_DISABLED_WITH_PENDING`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** `COMMS_TEE_ENABLED` apagado con recibos pendientes.
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `TEE_FAILING`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Copia de recibos a un servicio externo: el destino no los recibía hace más de 10 min.
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `TEE_PENDING_STALE`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Copia de recibos a un servicio externo: recibos sin reenviar hace más de 10 min.
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `TEE_TOO_LARGE`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** Copia de recibos a un servicio externo: el destino respondió 413 (demasiado grande).
- **retirado (2026-09-30):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `template_initiate_contact_channel_missing`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** `comms.send_template` quiso iniciar la conversación (el contacto no tenía chat) y el contacto no tiene un número de WhatsApp registrado.
- **retirado (2026-10-15):** Retirado el 15/10/2026 (Roor: sin interruptores; se borró el inicio de conversación por plantilla de `comms.send_template`, que nunca se encendió): un contacto sin conversación se resuelve antes con `crm.find_contact`, que la crea.

## `template_initiate_contact_not_found`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** `comms.send_template` quiso iniciar la conversación y el contacto no existe en esa entidad (404).
- **retirado (2026-10-15):** Retirado el 15/10/2026 (Roor: sin interruptores; se borró el inicio de conversación por plantilla de `comms.send_template`, que nunca se encendió): un contacto sin conversación se resuelve antes con `crm.find_contact`, que la crea.

## `template_initiate_no_conversation_id`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** La plantilla que inicia la conversación salió, pero la salida no devolvió la conversación creada, así que el workflow no puede seguir en ese chat.
- **retirado (2026-10-14):** El backend ya no lo devuelve. Se conserva para reconocerlo en registros viejos.

## `template_initiate_no_sender`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** `comms.send_template` quiso iniciar la conversación y la acción no resolvió un número emisor. Iniciar exige el número exacto, sin respaldo.
- **retirado (2026-10-15):** Retirado el 15/10/2026 (Roor: sin interruptores; se borró el inicio de conversación por plantilla de `comms.send_template`, que nunca se encendió): un contacto sin conversación se resuelve antes con `crm.find_contact`, que la crea.

## `template_initiate_not_whatsapp`

- **Tipo:** — · **HTTP:** — · **Estado:** retirado
- **Qué significa:** `comms.send_template` quiso iniciar la conversación por un canal que no es WhatsApp. Las plantillas HSM son de una WABA: solo WhatsApp puede iniciar.
- **retirado (2026-10-15):** Retirado el 15/10/2026 (Roor: sin interruptores; se borró el inicio de conversación por plantilla de `comms.send_template`, que nunca se encendió): un contacto sin conversación se resuelve antes con `crm.find_contact`, que la crea.
