Appearance
Segmentos de rebobinado
Generado desde
DialerDigital/corecommit0fc18008b3c8— especificaciónopenapi/dialer-v1.yamlv0.134.0. No se edita a mano; consulta Cómo se construye esta referencia. Descargar la especificación OpenAPI.
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étodo | Ruta | Resumen |
|---|---|---|
GET | /v1/rewind-segments | Los segmentos de rebobinado guardados del tenant |
POST | /v1/rewind-segments | Guardar 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}/retire | Retirar un segmento (terminal) |
Los segmentos de rebobinado guardados del tenant
http
GET /v1/rewind-segmentsLos 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.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
rewind_segments | arreglo de RewindSegment | sí | |
rewind_segments[].id | string (uuid) | sí | |
rewind_segments[].name | string | sí | |
rewind_segments[].filters | object (RewindFilters) | sí | Todos los filtros son opcionales; los amd_verdicts desconocidos responden 422 con cierre seguro (fail-closed). |
rewind_segments[].filters.dispositions | arreglo de string | no | Se compara con la disposición MÁS RECIENTE de cada deuda. |
rewind_segments[].filters.max_attempts | integer | no | Número de intentos originales. |
rewind_segments[].filters.last_attempt_older_than_days | integer | no | |
rewind_segments[].filters.keep_scheduled_callbacks | boolean | no | false cancela las rellamadas pendientes de la campaña para las deudas rebobinadas (solo en el rebobinado). |
rewind_segments[].filters.amd_verdicts | arreglo de unspecified · human · machine · not_sure | no | Se compara con el veredicto AMD del último intento realizado. |
rewind_segments[].created_by | string | sí | Se toma de la credencial, nunca del cuerpo. |
rewind_segments[].created_at | string (date-time) | sí | |
rewind_segments[].updated_at | string (date-time) | sí | |
rewind_segments[].retired_at | string (date-time) | null | sí | |
rewind_segments[].retired_by | string | null | sí |
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-segmentsfilters 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)
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
name | string | sí | |
filters | object (RewindFilters) | sí | Todos los filtros son opcionales; los amd_verdicts desconocidos responden 422 con cierre seguro (fail-closed). |
filters.dispositions | arreglo de string | no | Se compara con la disposición MÁS RECIENTE de cada deuda. |
filters.max_attempts | integer | no | Número de intentos originales. |
filters.last_attempt_older_than_days | integer | no | |
filters.keep_scheduled_callbacks | boolean | no | false cancela las rellamadas pendientes de la campaña para las deudas rebobinadas (solo en el rebobinado). |
filters.amd_verdicts | arreglo de unspecified · human · machine · not_sure | no | Se 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.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
rewind_segment | object (RewindSegment) | sí | |
rewind_segment.id | string (uuid) | sí | |
rewind_segment.name | string | sí | |
rewind_segment.filters | object (RewindFilters) | sí | Todos los filtros son opcionales; los amd_verdicts desconocidos responden 422 con cierre seguro (fail-closed). |
rewind_segment.filters.dispositions | arreglo de string | no | Se compara con la disposición MÁS RECIENTE de cada deuda. |
rewind_segment.filters.max_attempts | integer | no | Número de intentos originales. |
rewind_segment.filters.last_attempt_older_than_days | integer | no | |
rewind_segment.filters.keep_scheduled_callbacks | boolean | no | false cancela las rellamadas pendientes de la campaña para las deudas rebobinadas (solo en el rebobinado). |
rewind_segment.filters.amd_verdicts | arreglo de unspecified · human · machine · not_sure | no | Se compara con el veredicto AMD del último intento realizado. |
rewind_segment.created_by | string | sí | Se toma de la credencial, nunca del cuerpo. |
rewind_segment.created_at | string (date-time) | sí | |
rewind_segment.updated_at | string (date-time) | sí | |
rewind_segment.retired_at | string (date-time) | null | sí | |
rewind_segment.retired_by | string | null | sí |
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
| Nombre | En | Tipo | Obligatorio | Descripción |
|---|---|---|---|---|
id | path | string (uuid) | sí | UUID del recurso. Los ids mal formados o de otro tenant se leen como 404. |
Cuerpo de la petición (JSON, obligatorio)
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
name | string | no | |
filters | object (RewindFilters) | no | Todos los filtros son opcionales; los amd_verdicts desconocidos responden 422 con cierre seguro (fail-closed). |
filters.dispositions | arreglo de string | no | Se compara con la disposición MÁS RECIENTE de cada deuda. |
filters.max_attempts | integer | no | Número de intentos originales. |
filters.last_attempt_older_than_days | integer | no | |
filters.keep_scheduled_callbacks | boolean | no | false cancela las rellamadas pendientes de la campaña para las deudas rebobinadas (solo en el rebobinado). |
filters.amd_verdicts | arreglo de unspecified · human · machine · not_sure | no | Se compara con el veredicto AMD del último intento realizado. |
Respuestas
200
Actualizado.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
rewind_segment | object (RewindSegment) | sí | |
rewind_segment.id | string (uuid) | sí | |
rewind_segment.name | string | sí | |
rewind_segment.filters | object (RewindFilters) | sí | Todos los filtros son opcionales; los amd_verdicts desconocidos responden 422 con cierre seguro (fail-closed). |
rewind_segment.filters.dispositions | arreglo de string | no | Se compara con la disposición MÁS RECIENTE de cada deuda. |
rewind_segment.filters.max_attempts | integer | no | Número de intentos originales. |
rewind_segment.filters.last_attempt_older_than_days | integer | no | |
rewind_segment.filters.keep_scheduled_callbacks | boolean | no | false cancela las rellamadas pendientes de la campaña para las deudas rebobinadas (solo en el rebobinado). |
rewind_segment.filters.amd_verdicts | arreglo de unspecified · human · machine · not_sure | no | Se compara con el veredicto AMD del último intento realizado. |
rewind_segment.created_by | string | sí | Se toma de la credencial, nunca del cuerpo. |
rewind_segment.created_at | string (date-time) | sí | |
rewind_segment.updated_at | string (date-time) | sí | |
rewind_segment.retired_at | string (date-time) | null | sí | |
rewind_segment.retired_by | string | null | sí |
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}/retireRetiro 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
| Nombre | En | Tipo | Obligatorio | Descripción |
|---|---|---|---|---|
id | path | string (uuid) | sí | UUID del recurso. Los ids mal formados o de otro tenant se leen como 404. |
Respuestas
200
Retirado.
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
rewind_segment | object (RewindSegment) | sí | |
rewind_segment.id | string (uuid) | sí | |
rewind_segment.name | string | sí | |
rewind_segment.filters | object (RewindFilters) | sí | Todos los filtros son opcionales; los amd_verdicts desconocidos responden 422 con cierre seguro (fail-closed). |
rewind_segment.filters.dispositions | arreglo de string | no | Se compara con la disposición MÁS RECIENTE de cada deuda. |
rewind_segment.filters.max_attempts | integer | no | Número de intentos originales. |
rewind_segment.filters.last_attempt_older_than_days | integer | no | |
rewind_segment.filters.keep_scheduled_callbacks | boolean | no | false cancela las rellamadas pendientes de la campaña para las deudas rebobinadas (solo en el rebobinado). |
rewind_segment.filters.amd_verdicts | arreglo de unspecified · human · machine · not_sure | no | Se compara con el veredicto AMD del último intento realizado. |
rewind_segment.created_by | string | sí | Se toma de la credencial, nunca del cuerpo. |
rewind_segment.created_at | string (date-time) | sí | |
rewind_segment.updated_at | string (date-time) | sí | |
rewind_segment.retired_at | string (date-time) | null | sí | |
rewind_segment.retired_by | string | null | sí |
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"
}
}