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

# Puertas de envío: BAA, horas de silencio, DNC, RND, RMD y parada de emergencia

> Puertas de cumplimiento que Orbit aplica antes de enviar, incluida la puerta del Acuerdo de Colaborador Comercial (BAA) de HIPAA, las horas de silencio, la lista de no llamar (Do-Not-Call), la base de datos de números reasignados de la FCC, la mitigación de robollamadas y las verificaciones de preferencias.

# Puertas de envío

Además del consentimiento y la supresión, se ejecutan varias verificaciones regulatorias **en el momento del envío**. Orbit las agrupa como *puertas de envío*: cada una puede retener o descartar un mensaje o una llamada antes de que se despache. Esta página cubre las puertas que usted configura o consulta directamente.

Todos los endpoints que aparecen a continuación tienen su raíz en
`https://api.orbit.devotel.io/api/v1/compliance`.

<Warning>
  DNC y RND cotejan con los registros nacionales — los registros
  federal y estatales de no llamar (Do-Not-Call) de la FTC y el Universal
  Opt-Out de TCR para DNC, y la base de datos de números reasignados de la
  FCC para RND. No son fuentes que usted configura o integra por tenant:
  cuando hay una instantánea de registro en vigor, la plataforma la
  mantiene de forma centralizada en lugar de leer de su propia integración.
  Sin embargo, el cotejo está **desactivado por defecto** — cada puerta
  reporta `federal_feeds_synced` / `feed_synced` como `false` hasta que se
  sincroniza realmente una instantánea para ella, y permanece detrás de un
  conmutador de activación por organización. Mientras ambas condiciones no
  sean verdaderas, estos endpoints devuelven una respuesta de desactivado
  y un número que solo figura en un registro federal se lee como de
  contacto desbloqueado (consulte el comportamiento exacto de cada puerta
  más abajo). Esta página no constituye asesoramiento legal — confirme sus
  obligaciones TCPA/FCC con su asesor legal.
</Warning>

***

## BAA — la puerta de envío HIPAA

Cuando su organización se acoge al **modo HIPAA** (usted maneja PHI),
todo envío saliente — tanto mensajes individuales como difusiones de
campañas — queda bloqueado hasta que conste un **Acuerdo de Colaborador
Comercial (BAA)** ejecutado y vigente. Ejecutar el BAA es el primer paso
de la secuencia HIPAA; la puerta de envío es el respaldo de ejecución que
no se puede eludir.

Un envío bloqueado devuelve
`422 HIPAA_BAA_REQUIRED` con un `reason` de `pending`, `expired` o
`not_signed`, y el `docs_url` en la carga del error apunta al flujo de
ejecución del BAA. Un `500 HIPAA_BAA_GATE_DB_FAIL` significa que la puerta
no pudo verificar el estado del BAA — falla en modo **cerrado** (los envíos
siguen bloqueados) en lugar de arriesgar una transmisión de PHI que no
puede comprobar. Reintente en breve; si el problema persiste, póngase en
contacto con soporte.

<Note>
  La puerta comprueba también la pista de auditoría: cuando no se puede
  validar la lectura del estado del BAA, el envío se bloquea y el fallo se
  registra en la auditoría de PHI en lugar de dejarse pasar silenciosamente.
</Note>

Un BAA ejecutado tiene una **vigencia de un año**; la caducidad se
re-deriva de la marca de tiempo de ejecución en el momento del envío, por
lo que un BAA que venció vuelve a bloquear aunque el cron diario de
verificación de caducidad aún no se haya ejecutado.

Si su organización no atesta el modo HIPAA, esta puerta es una no
operación (no-op) — solo inspecciona organizaciones que declararon que el
PHI está en su alcance. Siga la secuencia completa en
[Incorporación HIPAA: del BAA a auditoría lista](/guides/hipaa-onboarding).

***

## Horas de silencio

Las reglas de horas de silencio bloquean mensajes y llamadas que llegarían
fuera de las horas locales permitidas del destinatario (p. ej. la ventana
TCPA de 8 a. m. a 9 p. m.). Orbit resuelve la hora local del destinatario a
partir de la región de su número de teléfono.

`GET /quiet-hours/preview` le indica si un envío está permitido ahora
mismo y cuándo es la siguiente hora permitida — utilícelo para programar
alrededor de la ventana.

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/compliance/quiet-hours/preview?phone=%2B14155550101&channel=sms" \
  -H "Authorization: Bearer $ORBIT_API_KEY"
```

```json theme={null}
{
  "allowed_now": false,
  "local_hour": 22,
  "local_timezone": "America/Los_Angeles",
  "window_start_local": "08:00",
  "window_end_local": "21:00",
  "next_allowed_at": "2026-06-09T15:00:00.000Z",
  "reason": "outside_window",
  "channel": "sms"
}
```

| Parámetro de consulta | Notas                                                                        |
| --------------------- | ---------------------------------------------------------------------------- |
| `phone`               | E.164 (obligatorio).                                                         |
| `channel`             | `sms`, `mms`, `whatsapp`, `rcs`, `viber`, `telegram`, `voice`, `email`, etc. |
| `timezone_override`   | Zona horaria IANA opcional si ya la conoce.                                  |

El control de horas de silencio se **activa por canal y por organización**
— cada canal se entrega con el conmutador desactivado, por lo que los
envíos de SMS, WhatsApp y otros de un nuevo tenant no quedan retenidos por
las horas de silencio hasta que usted active la puerta para ese canal.
Active por canal desde la configuración de horas de silencio de su
organización en el panel de Orbit; las ventanas listadas se aplican
entonces automáticamente.

Una vez activado, las ventanas son 08:00–21:00 (hora local del
destinatario) para SMS/voz y 09:00–21:00 para los canales de WhatsApp/Meta
a menos que usted establezca sus propios `start_hour`/`end_hour`. El
correo electrónico, el fax y el push no están controlados por las horas de
silencio.

<Note>
  **Ventana TCPA de voz de EE. UU.: aviso para marcados ad hoc, bloqueo
  estricto para campañas.** Para llamadas de voz salientes a destinatarios
  de EE. UU. (+1), Orbit evalúa la ventana federal TCPA de marcación de
  8 a. m. a 9 p. m. (hora local del destinatario) en cada llamada — pero
  cómo aplica el resultado depende de la ruta de la llamada:

  * **El marcado ad hoc 1:1 desde el panel es de aviso por defecto.** Una
    llamada fuera de la ventana registra un registro estructurado de aviso
    pero aun así se despacha. Para retener estas llamadas en su lugar,
    active el conmutador de horas de silencio de voz de su organización; al
    activarlo se aplica la ventana 8 a. m.–9 p. m. como retención
    estricta.
  * **El tráfico de voz de campañas y marcadores se bloquea siempre de
    forma estricta fuera de la ventana, independientemente de la
    configuración de su tenant.** Una llamada de campaña o de marcador
    realizada fuera del rango 8 a. m.–9 p. m. (hora local del destinatario)
    se rechaza con `422 TCPA_FEDERAL_DIALING_WINDOW_BLOCKED` — no hay una
    exclusión por organización para voz automatizada o masiva, y el
    conmutador de horas de silencio de voz no lo relaja. Si no se puede
    resolver la zona horaria del destinatario, la llamada falla en modo
    cerrado y también se bloquea.

  Programe las llamadas de campaña y marcador dentro de la ventana 8 a. m.–9
  p. m. (hora local del destinatario) — use `GET /quiet-hours/preview` para
  encontrar la siguiente hora permitida.
</Note>

***

## DNC — No llamar (Do Not Call)

`GET /dnc/check` informa si un número figura en una lista de no llamar
antes de que usted lo marque o le envíe un texto. Para la postura de
extremo a extremo — fuentes, frescura y la advertencia de fallo abierto —
consulte
[Cotejo DNC](/compliance/dnc-scrub).

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/compliance/dnc/check?phone=%2B14155550101" \
  -H "Authorization: Bearer $ORBIT_API_KEY"
```

Cuando está activado devuelve:

```json theme={null}
{
  "on_dnc": true,
  "source": "suppression_list",
  "jurisdictions": ["US"],
  "federal_feeds_synced": false
}
```

El `source` indica qué capa marcó el número (su marca DNC de contacto, la
lista DNC, la lista de supresión o una cancelación de consentimiento).

<Note>
  La puerta aplica **solo mientras no haya sincronizada ninguna fuente de
  no llamar**. En ese estado el endpoint queda retenido detrás del ajuste
  de la organización `dnc_sync_enabled` (desactivado por defecto) y
  devuelve `403 DNC_SYNC_NOT_ENABLED` hasta que usted se dé de alta —
  reconociendo que Orbit aún no está cotejando con un registro federal
  por usted, por lo que un número que solo figura en la lista de la FTC se
  lee como `on_dnc: false`.

  Una vez que Orbit tiene sincronizada una instantánea federal, estatal o
  de TCR, la puerta `dnc_sync_enabled` se omite: el endpoint sirve
  directamente y `federal_feeds_synced` devuelve `true`. Lea ese campo en
  cada respuesta para confirmar si un cotejo federal realmente respalda el
  resultado.
</Note>

### Pre-flight por lotes

`POST /dnc/scrub` ejecuta la misma cadena contra toda una lista en una
llamada — hasta 500 números E.164 por solicitud, con un filtro de
jurisdicción `country` opcional. Devuelve veredictos por número más
conteos resumen de `on_dnc` / `clear`, está limitado a 10 solicitudes por
minuto por organización y está detrás de la misma puerta descrita arriba.

```bash theme={null}
curl -X POST "https://api.orbit.devotel.io/api/v1/compliance/dnc/scrub" \
  -H "Authorization: Bearer $ORBIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "phones": ["+14155550101", "+442071838750"] }'
```

Para el flujo de trabajo de campañas — el control, la fragmentación, el
enrutamiento de números marcados a supresión y la cadencia de recotejo —
consulte
[Cotejo por lotes de pre-flight DNC](/guides/dnc-preflight-scrub).

### Resolución de problemas de una llamada controlada

Cuando cualquiera de los endpoints DNC se retiene en `403 DNC_SYNC_NOT_ENABLED`:

1. **Confirme el estado de la puerta sin ejecutar una verificación** —
   llame a `GET /dnc/availability`. Reporta la puerta exacta que ambos
   endpoints aplican: `available`, su `org_opt_in` y
   `federal_feeds_synced`.
2. **Active el reconocimiento de la organización** — encienda
   `dnc_sync_enabled` en la configuración de cumplimiento de su panel. El
   indicador es por organización y falla en modo cerrado: un indicador
   nunca establecido, un valor almacenado como cadena o número en lugar de
   booleano `true`, o una búsqueda de ajustes que falla resuelven a
   DESACTIVADO — una organización que nunca ha visitado la configuración
   de cumplimiento siempre recibe el 403.
3. **O espere a la instantánea** — una vez que la plataforma sincroniza una
   fuente federal, estatal o de TCR, la puerta se retira por sí misma y
   `federal_feeds_synced` cambia a `true`; el reconocimiento ya no se
   consulta.
4. **Separe las semejanzas** — `401` es autenticación, `422` es un
   teléfono mal formado, y `429` en `/dnc/scrub` es su límite de 10
   solicitudes por minuto, no la puerta.

La guía completa está en
[Resolución de problemas: pre-flight DNC 403](/troubleshooting/dnc-check-gated).

***

## RND — Base de datos de números reasignados

Los números de teléfono de EE. UU. se reasignan a personas nuevas. La
**Base de datos de números reasignados** de la FCC le permite comprobar si
un número se desconectó *después* de la fecha en que obtuvo el
consentimiento — un «refugio seguro» («safe harbor») contra enviar texto
o llamar a la persona equivocada.

`GET /rnd/check` toma el `phone` y la `consent_date`
(`YYYY-MM-DD`):

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/compliance/rnd/check?phone=%2B14155550101&consent_date=2025-01-15" \
  -H "Authorization: Bearer $ORBIT_API_KEY"
```

```json theme={null}
{
  "status": "no_data",
  "safe_harbor": false,
  "last_disconnect_date": null,
  "consent_date": "2025-01-15",
  "feed_synced": false,
  "reason": "FCC Reassigned Numbers Database has no permanent-disconnect record for this number; no safe harbor — contact at your own risk."
}
```

Mientras `feed_synced` sea `false`, esta es la única respuesta que el
endpoint devuelve, cualquiera que sea el `phone` y el `consent_date` — aún
no hay fechas de desconexión registradas, por lo que todo veredicto degrada
a `no_data`.

`status` es uno de `yes`, `no` o `no_data` — el veredicto de la base de
datos de la FCC para el par `(phone, consent_date)`:

| `status`  | `safe_harbor` | Significado                                                                                                                                                              |
| --------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `yes`     | `false`       | El número se desconectó permanentemente **después** de `consent_date` y puede haber sido reasignado. Sin refugio seguro — no contacte.                                   |
| `no`      | `true`        | Sin desconexión permanente después de `consent_date`. Aplica el refugio seguro de números reasignados de la FCC — seguro contactar.                                      |
| `no_data` | `false`       | La base de datos no tiene registro de desconexión permanente para este número, o la fuente aún no está sincronizada. Sin refugio seguro — proceda bajo su propio riesgo. |

`safe_harbor` es `true` solo cuando `status` es `no`.
`last_disconnect_date` es la fecha de desconexión permanente más reciente
registrada (`null` cuando no hay) y `feed_synced` es `false` hasta que la
ingesta de la fuente RND esté configurada — mientras sea `false`, todo
veredicto es `no_data`.

Controlado detrás de `rnd_scrub_enabled` (desactivado por defecto);
devuelve `403 RND_SCRUB_NOT_ENABLED` mientras esté desactivado.

### Activación y desactivación del cotejo RND

Use `PUT /api/v1/compliance/rnd/settings` para controlar el indicador
`rnd_scrub_enabled`:

```bash theme={null}
curl -X PUT "https://api.orbit.devotel.io/api/v1/compliance/rnd/settings" \
  -H "Authorization: Bearer $ORBIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"enabled": true}'
```

**La activación se bloquea con HTTP 409 `RND_FEED_NOT_CONFIGURED`** hasta
que la fuente de la Base de datos de números reasignados de la FCC (la
fuente reassigned.us de SomosGov) esté conectada a su despliegue. Encender
la función antes de que la fuente esté ingerida crearía un control de
cumplimiento que no realiza ninguna detección real de números reasignados
— usted encendería el indicador, pero cada búsqueda de `/rnd/check`
seguiría devolviendo `no_data`. El bloqueo 409 evita esta falsa sensación
de protección.

La desactivación (`enabled: false`) siempre está permitida, incluso si
aún no hay fuente conectada.

***

## RMD — Base de datos de mitigación de robollamadas

Los originadores de voz de EE. UU. deben presentar un registro en la
**Base de datos de mitigación de robollamadas** (Robocall Mitigation Database)
que describa su estado STIR/SHAKEN y su plan de mitigación. Orbit almacena
y realiza seguimiento de su presentación.

* `GET /rmd` — lea su registro más un bloque `recertification` con
  `renewal_deadline` y `action_required`.
* `POST /rmd` — cree o actualice la presentación.
* `POST /rmd/submit` → estado `submitted`.
* `POST /rmd/certify` → estado `active`.
* `POST /rmd/remediation` (con un `reason`) → estado
  `remediation_required`.
* `POST /rmd/resolve` → vuelve a `active`.
* `POST /rmd/withdraw` → estado `withdrawn`.

```bash theme={null}
curl -X POST https://api.orbit.devotel.io/api/v1/compliance/rmd \
  -H "Authorization: Bearer $ORBIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "company_name": "Acme Communications Inc",
    "business_address": "1 Market St, San Francisco, CA",
    "stir_shaken_status": "partial",
    "mitigation_plan": "Known-customer vetting + traceback cooperation…",
    "contact_name": "Jordan Lee",
    "contact_email": "compliance@acme.example"
  }'
```

`stir_shaken_status` es `complete`, `partial` o `none`. Un
`mitigation_plan` es **obligatorio** a menos que el estado sea `complete`.
El ciclo de vida es `draft → submitted → active → remediation_required →
active | withdrawn`.

***

## Parada de emergencia

La parada de emergencia es un **interruptor de corte de toda la
organización** que detiene inmediatamente todo el tráfico saliente de
SMS, MMS, voz y marcador — úselo durante un incidente (una campaña mal
configurada, una clave comprometida, un error de contenido). Para la guía
completa del operador, consulte la
[guía de parada de emergencia](/guides/compliance-emergency-stop).

```bash theme={null}
# Activate
curl -X POST https://api.orbit.devotel.io/api/v1/compliance/emergency-stop/activate \
  -H "Authorization: Bearer $ORBIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "reason": "Suspected list contamination — pausing all sends" }'

# Check
curl https://api.orbit.devotel.io/api/v1/compliance/emergency-stop \
  -H "Authorization: Bearer $ORBIT_API_KEY"

# Deactivate
curl -X POST https://api.orbit.devotel.io/api/v1/compliance/emergency-stop/deactivate \
  -H "Authorization: Bearer $ORBIT_API_KEY"
```

`GET /emergency-stop` devuelve el indicador `active` actual más
`activated_at`, `activated_by` y `reason`. La activación y la
desactivación requieren una clave de administrador/propietario.

<Warning>
  Mientras la parada de emergencia está activa, todo el tráfico saliente
  de SMS, MMS, voz y campañas de marcador de la organización está
  bloqueado. Los envíos transaccionales **Verify/OTP** y el correo
  electrónico **no** están controlados por la parada de emergencia —
  funcionan en rutas de entrega separadas, por lo que un contacto aún puede
  recibir un código de inicio de sesión mientras el interruptor está
  activo. Si también necesita pausar esos, desactive el perfil Verify
  relevante o el remitente de correo electrónico. Desactive la parada tan
  pronto como se resuelva el incidente.
</Warning>

***

## Centro de preferencias

El **centro de preferencias** es una página pública, firmada con token,
donde un contacto gestiona sus propias suscripciones de canal, frecuencia
de mensajes y (si está activada) solicita la eliminación de datos — sin
iniciar sesión. Las actualizaciones fluyen directamente al consentimiento,
la supresión y el vallado STOP.

Configúrelo una vez y luego genere un enlace por contacto. La guía
completa — cada campo de configuración, la colocación del enlace y las
superficies del flujo de actualización — está en la
[guía del centro de preferencias](/guides/preference-center-opt-out-page):

* `POST /preference-center` (administrador/propietario) — establezca la
  marca, los `channels` ofrecidos, las opciones de frecuencia y el
  conmutador de eliminación GDPR.
* `GET /preference-center` — lea la configuración actual.
* `POST /preference-center/link` con `{ "contactId": "cnt_…" }` —
  acuñe un enlace firmado (HMAC-SHA256, TTL de 30 días) para enviar por
  correo electrónico o texto al contacto.

El contacto luego usa el enlace público
(`GET`/`PUT /compliance/preferences/{token}`) para ver y actualizar sus
preferencias. La cancelación aquí registra una revocación de
consentimiento, agrega una entrada de supresión y establece el vallado
STOP; la resuscripción lo revierte.

<Warning>
  Solicitar la eliminación desde el centro de preferencias registra solo
  una solicitud de eliminación GDPR heredada — marca el contacto para
  eliminación pero **no** inicia la pipeline DSAR rastreada. No tiene
  reloj SLA, exportación de datos descifrada ni certificado de borrado del
  artículo 17. Para presentar una solicitud de derecho de borrado que se
  rastrea con SLA, exporta los datos del contacto y produce un certificado
  de borrado, use el endpoint DSAR (`POST /compliance/dsar`, solo
  propietario/administrador) — consulte
  [Solicitudes de Acceso de Sujetos de Datos](/compliance/dsar).
</Warning>

***

## Reglas por país

`GET /country-rules` es la referencia regulatoria de solo lectura detrás
de estas puertas — por país y canal reporta los tipos de remitente
permitidos, si el registro de Sender-ID es `none` / `recommended` /
`required`, los requisitos de palabras clave STOP, el soporte de dos
vías, el soporte de DLR y el rendimiento por defecto.

```bash theme={null}
curl "https://api.orbit.devotel.io/api/v1/compliance/country-rules?channel=sms&region=EU" \
  -H "Authorization: Bearer $ORBIT_API_KEY"
```

Úselo para entender, antes de lanzarse en un mercado, lo que cada destino
requiere — consulte
[Requisitos de cumplimiento por país](/compliance/country-requirements) para una
guía campo a campo de cómo leer esta referencia.

***

## Referencias relacionadas

* [Preguntas frecuentes sobre postura de cumplimiento](/compliance/posture-faq) —
  «Activé el conmutador — ¿por qué aún no se bloquea nada?» y el resumen
  de fallo abierto frente a fallo cerrado para cada puerta de esta página.

* [Puerta de litigante conocido TCPA](/compliance/tcpa-known-litigator) —
  la verificación de procedencia del destinatario contra la lista de
  demandantes profesionales TCPA de la plataforma, con su conmutador de
  tenant, la pista de auditoría de omisión consentida y el modo de fallo
  abierto.

* [Configure la postura de su tenant antes del primer envío](/compliance/tenant-posture-first-run) —
  el manual que recorre estas puertas en orden de configuración, con el
  valor por defecto y la consecuencia de cada una.

* [Ventanas de llamada por estado de EE. UU.](/compliance/state-calling-windows) —
  superposiciones mini-TCPA por estado sobre la ventana federal de
  marcación y cómo un bloqueo se remonta a un estatuto.

* [Requisitos de cumplimiento por país](/compliance/country-requirements) —
  tipos de remitente, registro y documentación por país.

* [Industrias restringidas y prohibidas](/compliance/restricted-industries) —
  qué industrias y contenidos están restringidos o prohibidos.

* [Bloqueos automáticos de destino de voz](/compliance/voice-destination-auto-blocks) —
  los bloqueos automáticos de voz por destino aplicados en un pico de
  bombeo de tráfico o Wangiri, y dónde leerlos antes de que se rechace una
  llamada legítima a ese número.

* [Exclusión y listas de supresión](/compliance/opt-out-suppression) —
  la capa de supresión a la que se alimenta DNC y el centro de
  preferencias.

* [Gestión de consentimientos](/compliance/consent-management) — los
  registros de consentimiento actualizados por el centro de preferencias.

* [Registro de Sender-ID](/compliance/sender-id-registration) — el
  registro que `country-rules` reporta como obligatorio.

* [Referencia de API → Cumplimiento](/api-reference/endpoints/compliance) —
  esquemas completos de solicitud/respuesta (regenerados de la API en
  vivo).
