Skip to content

Segmentos de rebobinado ​

Generado desde DialerDigital/core commit 0fc18008b3c8 — especificación openapi/dialer-v1.yaml v0.134.0. No se edita a mano; consulta Cómo se construye esta referencia. Descargar la especificación OpenAPI.

English version

Traducción en curso

Esta referencia se genera desde la especificación OpenAPI. Las cadenas que todavía no tienen traducción aparecen en inglés.

Conjuntos con nombre de filtros de rebobinado que un supervisor guarda por tenant y reutiliza (los filtros, nunca una lista de cuentas).

Endpoints ​

MétodoRutaResumen
GET/v1/rewind-segmentsLos segmentos de rebobinado guardados del tenant
POST/v1/rewind-segmentsGuardar un conjunto con nombre de filtros de rebobinado
PATCH/v1/rewind-segments/{id}Renombrar un segmento o reemplazar sus filtros
POST/v1/rewind-segments/{id}/retireRetirar un segmento (terminal)

Los segmentos de rebobinado guardados del tenant ​

http
GET /v1/rewind-segments

Los segmentos vigentes del tenant, por nombre. Los retirados no se listan. Un segmento es un CONJUNTO DE FILTROS CON NOMBRE, no una lista de cuentas: usarlo (segment_id en el rebobinado) lo reevalúa contra los datos de ese momento, de modo que no existe una segunda copia de PII.

Respuestas

200 ​

Los segmentos vigentes.

CampoTipoObligatorioDescripción
rewind_segmentsarreglo de RewindSegmentsí
rewind_segments[].idstring (uuid)sí
rewind_segments[].namestringsí
rewind_segments[].filtersobject (RewindFilters)síTodos los filtros son opcionales; los amd_verdicts desconocidos responden 422 con cierre seguro (fail-closed).
rewind_segments[].filters.dispositionsarreglo de stringnoSe compara con la disposición MÁS RECIENTE de cada deuda.
rewind_segments[].filters.max_attemptsintegernoNúmero de intentos originales.
rewind_segments[].filters.last_attempt_older_than_daysintegerno
rewind_segments[].filters.keep_scheduled_callbacksbooleannofalse cancela las rellamadas pendientes de la campaña para las deudas rebobinadas (solo en el rebobinado).
rewind_segments[].filters.amd_verdictsarreglo de unspecified · human · machine · not_surenoSe compara con el veredicto AMD del último intento realizado.
rewind_segments[].created_bystringsíSe toma de la credencial, nunca del cuerpo.
rewind_segments[].created_atstring (date-time)sí
rewind_segments[].updated_atstring (date-time)sí
rewind_segments[].retired_atstring (date-time) | nullsí
rewind_segments[].retired_bystring | nullsí

401 — Unauthorized ​

Clave de API ausente, desconocida o revocada (o, en /v1/admin/*, un token de administración incorrecto o sin definir; en webhooks, una firma incorrecta o ausente). Una sesión del dashboard (ddu_) que un inicio de sesión más reciente de la misma persona haya cerrado responde en cambio con el código session_superseded (indicador de tenant single_session_enforced), para que la pantalla pueda explicar por qué se cerró la sesión; un cierre de sesión, un token vencido o uno desconocido siguen siendo unauthorized.

json
{
  "error": {
    "code": "unauthorized",
    "message": "invalid or revoked API key"
  }
}

429 — ApiKeyRateLimited ​

Esta clave de API ha superado su cuota de peticiones, o las claves del tenant en conjunto han superado el techo del tenant (core#2503) (code rate_limited). La petición no se procesó. Espera Retry-After segundos y reintenta; un rechazo no cuenta contra el presupuesto, así que esa espera siempre basta. Acotado por clave de API y, por encima de las claves, por tenant (api_tenant_requests_per_minute): una clave hermana no se ve afectada hasta que las claves del tenant en conjunto alcanzan ese techo. La cuota se aplica a toda operación alcanzable con una clave dd_, así que las operaciones que nombran un 429 más específico (control de llamadas, disposiciones, SMS, …) PUEDEN responder TAMBIÉN este, con sus cabeceras X-RateLimit-*.

json
{
  "error": {
    "code": "rate_limited",
    "message": "API key request quota exceeded; retry after the interval in Retry-After"
  }
}

Guardar un conjunto con nombre de filtros de rebobinado ​

http
POST /v1/rewind-segments

filters pasa por el MISMO validador que el propio rebobinado (Dialer.Campaigns.RewindFilters): un conjunto de filtros que el rebobinado rechazaría es 422 aquí, y una clave no reconocida es 422 que la nombra. name se recorta, tiene de 1 a 80 caracteres y es único entre los segmentos VIGENTES del tenant sin distinguir mayúsculas de minúsculas (409 conflict en caso contrario; un nombre retirado se puede reutilizar). Quién lo guardó se toma de la credencial. Cada escritura deja un hecho de auditoría solo anexo (created / edited / retired).

Cuerpo de la petición (JSON, obligatorio)

CampoTipoObligatorioDescripción
namestringsí
filtersobject (RewindFilters)síTodos los filtros son opcionales; los amd_verdicts desconocidos responden 422 con cierre seguro (fail-closed).
filters.dispositionsarreglo de stringnoSe compara con la disposición MÁS RECIENTE de cada deuda.
filters.max_attemptsintegernoNúmero de intentos originales.
filters.last_attempt_older_than_daysintegerno
filters.keep_scheduled_callbacksbooleannofalse cancela las rellamadas pendientes de la campaña para las deudas rebobinadas (solo en el rebobinado).
filters.amd_verdictsarreglo de unspecified · human · machine · not_surenoSe compara con el veredicto AMD del último intento realizado.
json
{
  "name": "Voicemail, 3+ attempts, last week",
  "filters": {
    "dispositions": [
      "no_answer",
      "voicemail"
    ],
    "max_attempts": 3,
    "last_attempt_older_than_days": 7
  }
}

Respuestas

201 ​

Guardado.

CampoTipoObligatorioDescripción
rewind_segmentobject (RewindSegment)sí
rewind_segment.idstring (uuid)sí
rewind_segment.namestringsí
rewind_segment.filtersobject (RewindFilters)síTodos los filtros son opcionales; los amd_verdicts desconocidos responden 422 con cierre seguro (fail-closed).
rewind_segment.filters.dispositionsarreglo de stringnoSe compara con la disposición MÁS RECIENTE de cada deuda.
rewind_segment.filters.max_attemptsintegernoNúmero de intentos originales.
rewind_segment.filters.last_attempt_older_than_daysintegerno
rewind_segment.filters.keep_scheduled_callbacksbooleannofalse cancela las rellamadas pendientes de la campaña para las deudas rebobinadas (solo en el rebobinado).
rewind_segment.filters.amd_verdictsarreglo de unspecified · human · machine · not_surenoSe compara con el veredicto AMD del último intento realizado.
rewind_segment.created_bystringsíSe toma de la credencial, nunca del cuerpo.
rewind_segment.created_atstring (date-time)sí
rewind_segment.updated_atstring (date-time)sí
rewind_segment.retired_atstring (date-time) | nullsí
rewind_segment.retired_bystring | nullsí

400 — BadRequest ​

Petición mal formada (errores de forma/tipo, filtros no válidos, marcas de tiempo erróneas).

json
{
  "error": {
    "code": "bad_request",
    "message": "from must be RFC-3339"
  }
}

401 — Unauthorized ​

Clave de API ausente, desconocida o revocada (o, en /v1/admin/*, un token de administración incorrecto o sin definir; en webhooks, una firma incorrecta o ausente). Una sesión del dashboard (ddu_) que un inicio de sesión más reciente de la misma persona haya cerrado responde en cambio con el código session_superseded (indicador de tenant single_session_enforced), para que la pantalla pueda explicar por qué se cerró la sesión; un cierre de sesión, un token vencido o uno desconocido siguen siendo unauthorized.

json
{
  "error": {
    "code": "unauthorized",
    "message": "invalid or revoked API key"
  }
}

409 — Conflict ​

Transición de estado no válida, conflicto de unicidad, o un asiento que está ocupado/reservado.

json
{
  "error": {
    "code": "conflict",
    "message": "invalid state transition"
  }
}

422 — Unprocessable ​

La forma es correcta, la semántica no (regla de dominio incumplida).

json
{
  "error": {
    "code": "unprocessable",
    "message": "scheduled_at is closer than the minimum notice for a callback (10 minutes unless the tenant's callback_min_notice_seconds says otherwise)"
  }
}

429 — ApiKeyRateLimited ​

Esta clave de API ha superado su cuota de peticiones, o las claves del tenant en conjunto han superado el techo del tenant (core#2503) (code rate_limited). La petición no se procesó. Espera Retry-After segundos y reintenta; un rechazo no cuenta contra el presupuesto, así que esa espera siempre basta. Acotado por clave de API y, por encima de las claves, por tenant (api_tenant_requests_per_minute): una clave hermana no se ve afectada hasta que las claves del tenant en conjunto alcanzan ese techo. La cuota se aplica a toda operación alcanzable con una clave dd_, así que las operaciones que nombran un 429 más específico (control de llamadas, disposiciones, SMS, …) PUEDEN responder TAMBIÉN este, con sus cabeceras X-RateLimit-*.

json
{
  "error": {
    "code": "rate_limited",
    "message": "API key request quota exceeded; retry after the interval in Retry-After"
  }
}

Renombrar un segmento o reemplazar sus filtros ​

http
PATCH /v1/rewind-segments/{id}

filters, cuando se envía, REEMPLAZA el conjunto almacenado (no lo combina). Enviar ni name ni filters es 400; una edición que no cambia nada es 200 y no escribe ningún hecho de auditoría. Un segmento retirado, inexistente o de otro tenant es 404. Misma validación y mismos códigos de estado que el POST.

Parámetros

NombreEnTipoObligatorioDescripción
idpathstring (uuid)síUUID del recurso. Los ids mal formados o de otro tenant se leen como 404.

Cuerpo de la petición (JSON, obligatorio)

CampoTipoObligatorioDescripción
namestringno
filtersobject (RewindFilters)noTodos los filtros son opcionales; los amd_verdicts desconocidos responden 422 con cierre seguro (fail-closed).
filters.dispositionsarreglo de stringnoSe compara con la disposición MÁS RECIENTE de cada deuda.
filters.max_attemptsintegernoNúmero de intentos originales.
filters.last_attempt_older_than_daysintegerno
filters.keep_scheduled_callbacksbooleannofalse cancela las rellamadas pendientes de la campaña para las deudas rebobinadas (solo en el rebobinado).
filters.amd_verdictsarreglo de unspecified · human · machine · not_surenoSe compara con el veredicto AMD del último intento realizado.

Respuestas

200 ​

Actualizado.

CampoTipoObligatorioDescripción
rewind_segmentobject (RewindSegment)sí
rewind_segment.idstring (uuid)sí
rewind_segment.namestringsí
rewind_segment.filtersobject (RewindFilters)síTodos los filtros son opcionales; los amd_verdicts desconocidos responden 422 con cierre seguro (fail-closed).
rewind_segment.filters.dispositionsarreglo de stringnoSe compara con la disposición MÁS RECIENTE de cada deuda.
rewind_segment.filters.max_attemptsintegernoNúmero de intentos originales.
rewind_segment.filters.last_attempt_older_than_daysintegerno
rewind_segment.filters.keep_scheduled_callbacksbooleannofalse cancela las rellamadas pendientes de la campaña para las deudas rebobinadas (solo en el rebobinado).
rewind_segment.filters.amd_verdictsarreglo de unspecified · human · machine · not_surenoSe compara con el veredicto AMD del último intento realizado.
rewind_segment.created_bystringsíSe toma de la credencial, nunca del cuerpo.
rewind_segment.created_atstring (date-time)sí
rewind_segment.updated_atstring (date-time)sí
rewind_segment.retired_atstring (date-time) | nullsí
rewind_segment.retired_bystring | nullsí

400 — BadRequest ​

Petición mal formada (errores de forma/tipo, filtros no válidos, marcas de tiempo erróneas).

json
{
  "error": {
    "code": "bad_request",
    "message": "from must be RFC-3339"
  }
}

401 — Unauthorized ​

Clave de API ausente, desconocida o revocada (o, en /v1/admin/*, un token de administración incorrecto o sin definir; en webhooks, una firma incorrecta o ausente). Una sesión del dashboard (ddu_) que un inicio de sesión más reciente de la misma persona haya cerrado responde en cambio con el código session_superseded (indicador de tenant single_session_enforced), para que la pantalla pueda explicar por qué se cerró la sesión; un cierre de sesión, un token vencido o uno desconocido siguen siendo unauthorized.

json
{
  "error": {
    "code": "unauthorized",
    "message": "invalid or revoked API key"
  }
}

404 — NotFound ​

Id desconocido, mal formado (no UUID) O id de otro tenant: RLS devuelve cero filas, así que los tres son indistinguibles por diseño (sin fuga de existencia, nunca un 403 para ids ajenos).

json
{
  "error": {
    "code": "not_found",
    "message": "resource not found for this tenant"
  }
}

409 — Conflict ​

Transición de estado no válida, conflicto de unicidad, o un asiento que está ocupado/reservado.

json
{
  "error": {
    "code": "conflict",
    "message": "invalid state transition"
  }
}

422 — Unprocessable ​

La forma es correcta, la semántica no (regla de dominio incumplida).

json
{
  "error": {
    "code": "unprocessable",
    "message": "scheduled_at is closer than the minimum notice for a callback (10 minutes unless the tenant's callback_min_notice_seconds says otherwise)"
  }
}

429 — ApiKeyRateLimited ​

Esta clave de API ha superado su cuota de peticiones, o las claves del tenant en conjunto han superado el techo del tenant (core#2503) (code rate_limited). La petición no se procesó. Espera Retry-After segundos y reintenta; un rechazo no cuenta contra el presupuesto, así que esa espera siempre basta. Acotado por clave de API y, por encima de las claves, por tenant (api_tenant_requests_per_minute): una clave hermana no se ve afectada hasta que las claves del tenant en conjunto alcanzan ese techo. La cuota se aplica a toda operación alcanzable con una clave dd_, así que las operaciones que nombran un 429 más específico (control de llamadas, disposiciones, SMS, …) PUEDEN responder TAMBIÉN este, con sus cabeceras X-RateLimit-*.

json
{
  "error": {
    "code": "rate_limited",
    "message": "API key request quota exceeded; retry after the interval in Retry-After"
  }
}

Retirar un segmento (terminal) ​

http
POST /v1/rewind-segments/{id}/retire

Retiro lógico: la fila permanece (y con ella su rastro de auditoría), sale de la lista y ya no se puede usar ni editar. Nunca se borra nada. Retirar de nuevo es 404.

Parámetros

NombreEnTipoObligatorioDescripción
idpathstring (uuid)síUUID del recurso. Los ids mal formados o de otro tenant se leen como 404.

Respuestas

200 ​

Retirado.

CampoTipoObligatorioDescripción
rewind_segmentobject (RewindSegment)sí
rewind_segment.idstring (uuid)sí
rewind_segment.namestringsí
rewind_segment.filtersobject (RewindFilters)síTodos los filtros son opcionales; los amd_verdicts desconocidos responden 422 con cierre seguro (fail-closed).
rewind_segment.filters.dispositionsarreglo de stringnoSe compara con la disposición MÁS RECIENTE de cada deuda.
rewind_segment.filters.max_attemptsintegernoNúmero de intentos originales.
rewind_segment.filters.last_attempt_older_than_daysintegerno
rewind_segment.filters.keep_scheduled_callbacksbooleannofalse cancela las rellamadas pendientes de la campaña para las deudas rebobinadas (solo en el rebobinado).
rewind_segment.filters.amd_verdictsarreglo de unspecified · human · machine · not_surenoSe compara con el veredicto AMD del último intento realizado.
rewind_segment.created_bystringsíSe toma de la credencial, nunca del cuerpo.
rewind_segment.created_atstring (date-time)sí
rewind_segment.updated_atstring (date-time)sí
rewind_segment.retired_atstring (date-time) | nullsí
rewind_segment.retired_bystring | nullsí

400 — BadRequest ​

Petición mal formada (errores de forma/tipo, filtros no válidos, marcas de tiempo erróneas).

json
{
  "error": {
    "code": "bad_request",
    "message": "from must be RFC-3339"
  }
}

401 — Unauthorized ​

Clave de API ausente, desconocida o revocada (o, en /v1/admin/*, un token de administración incorrecto o sin definir; en webhooks, una firma incorrecta o ausente). Una sesión del dashboard (ddu_) que un inicio de sesión más reciente de la misma persona haya cerrado responde en cambio con el código session_superseded (indicador de tenant single_session_enforced), para que la pantalla pueda explicar por qué se cerró la sesión; un cierre de sesión, un token vencido o uno desconocido siguen siendo unauthorized.

json
{
  "error": {
    "code": "unauthorized",
    "message": "invalid or revoked API key"
  }
}

404 — NotFound ​

Id desconocido, mal formado (no UUID) O id de otro tenant: RLS devuelve cero filas, así que los tres son indistinguibles por diseño (sin fuga de existencia, nunca un 403 para ids ajenos).

json
{
  "error": {
    "code": "not_found",
    "message": "resource not found for this tenant"
  }
}

429 — ApiKeyRateLimited ​

Esta clave de API ha superado su cuota de peticiones, o las claves del tenant en conjunto han superado el techo del tenant (core#2503) (code rate_limited). La petición no se procesó. Espera Retry-After segundos y reintenta; un rechazo no cuenta contra el presupuesto, así que esa espera siempre basta. Acotado por clave de API y, por encima de las claves, por tenant (api_tenant_requests_per_minute): una clave hermana no se ve afectada hasta que las claves del tenant en conjunto alcanzan ese techo. La cuota se aplica a toda operación alcanzable con una clave dd_, así que las operaciones que nombran un 429 más específico (control de llamadas, disposiciones, SMS, …) PUEDEN responder TAMBIÉN este, con sus cabeceras X-RateLimit-*.

json
{
  "error": {
    "code": "rate_limited",
    "message": "API key request quota exceeded; retry after the interval in Retry-After"
  }
}

Nothing in these docs is legal advice — always confirm compliance posture with your own counsel.