Skip to content

Analítica de producto ​

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.

Analítica de producto y NPS dentro de la consola, propios y sin terceros (macro-tasks#876): eventos de uso como claves de un catálogo cerrado, y la pregunta de NPS para los administradores de la cuenta. Siempre activa; nunca lleva datos de un consumidor.

Endpoints ​

MétodoRutaResumen
POST/v1/product-analytics/eventsRegistrar los eventos de uso de la consola del usuario que llama
GET/v1/product-analytics/nps¿Toca hacer la pregunta de NPS al usuario que llama?
POST/v1/product-analytics/npsResponder la pregunta de NPS, o descartarla

Registrar los eventos de uso de la consola del usuario que llama ​

http
POST /v1/product-analytics/events

La consola informa de qué pantalla abrió un usuario y qué función usó. Cada evento es una CLAVE de un catálogo cerrado (screen.<route> o feature.<function>): no hay campo de texto libre, así que ningún dato de un consumidor puede viajar en uno. El servidor estampa la hora y el tenant (los del login, nunca de la entrada del cuerpo). Las claves fuera del catálogo se descartan y se cuentan en rejected, de modo que una consola más nueva que el servidor no rompe nada. Como máximo 50 claves por petición. Los eventos se conservan 180 días.

Requiere un login de dashboard: una clave dd_ no tiene persona detrás y recibe 403.

Cuerpo de la petición (JSON, obligatorio)

CampoTipoObligatorioDescripción
eventsarreglo de stringsí

Respuestas

202 ​

Aceptado; cuántas claves se almacenaron y cuántas se descartaron.

CampoTipoObligatorioDescripción
acceptedintegersí
rejectedintegersí

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"
  }
}

403 — Forbidden ​

El tenant está suspendido. Una sesión del dashboard (ddu_) de un tenant cuya política de inicio de sesión (ADR 227) está en modo enforce responde 403 con el código login_policy_denied ante una solicitud desde una dirección o en una hora que la política no permite — el mismo cuerpo en ambos casos; la sesión no se revoca y una solicitud posterior dentro de la política se procesa. Un token de widget (ddw_) de un puesto queda sujeto a la misma política en cada solicitud (core#2406, indicador widget_login_honors_policy). Un tenant sintético (demo) responde 403 con el código synthetic_tenant en toda ruta que llegaría a un tercero — marcación manual, pierna de transferencia externa o de conferencia, envío de SMS (core#2251, adenda del ADR #280). Ningún pago lo cambia.

json
{
  "error": {
    "code": "forbidden",
    "message": "tenant is suspended"
  }
}

¿Toca hacer la pregunta de NPS al usuario que llama? ​

http
GET /v1/product-analytics/nps

due es true solo para un account_admin cuyo último registro de NPS (una respuesta o un descarte) tiene al menos interval_days de antigüedad, o que no tiene ninguno. Cualquier otro usuario recibe due: false. Requiere un login de dashboard.

Respuestas

200 ​

Si hay que preguntar ahora.

CampoTipoObligatorioDescripción
duebooleansí
interval_daysintegersí

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"
  }
}

403 — Forbidden ​

El tenant está suspendido. Una sesión del dashboard (ddu_) de un tenant cuya política de inicio de sesión (ADR 227) está en modo enforce responde 403 con el código login_policy_denied ante una solicitud desde una dirección o en una hora que la política no permite — el mismo cuerpo en ambos casos; la sesión no se revoca y una solicitud posterior dentro de la política se procesa. Un token de widget (ddw_) de un puesto queda sujeto a la misma política en cada solicitud (core#2406, indicador widget_login_honors_policy). Un tenant sintético (demo) responde 403 con el código synthetic_tenant en toda ruta que llegaría a un tercero — marcación manual, pierna de transferencia externa o de conferencia, envío de SMS (core#2251, adenda del ADR #280). Ningún pago lo cambia.

json
{
  "error": {
    "code": "forbidden",
    "message": "tenant is suspended"
  }
}

Responder la pregunta de NPS, o descartarla ​

http
POST /v1/product-analytics/nps

Envía { "score": 0..10, "comment": "..." } (el comentario es opcional, de 500 caracteres como máximo) o { "dismissed": true }. Ambos aplazan la siguiente pregunta interval_days. Solo un account_admin responde (403 en caso contrario); preguntar de nuevo antes de que pase el intervalo es 409. El comentario es texto libre que escribe una persona: la consola le pide que no ponga datos de clientes en él.

Cuerpo de la petición (JSON, obligatorio)

CampoTipoObligatorioDescripción
scoreintegerno
commentstringno
dismissedbooleanno

Respuestas

201 ​

El registro almacenado.

CampoTipoObligatorioDescripción
responseobjectsí
response.outcomeanswered · dismissedsí
response.scoreinteger,nullsí
response.commentstring,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"
  }
}

403 — Forbidden ​

El tenant está suspendido. Una sesión del dashboard (ddu_) de un tenant cuya política de inicio de sesión (ADR 227) está en modo enforce responde 403 con el código login_policy_denied ante una solicitud desde una dirección o en una hora que la política no permite — el mismo cuerpo en ambos casos; la sesión no se revoca y una solicitud posterior dentro de la política se procesa. Un token de widget (ddw_) de un puesto queda sujeto a la misma política en cada solicitud (core#2406, indicador widget_login_honors_policy). Un tenant sintético (demo) responde 403 con el código synthetic_tenant en toda ruta que llegaría a un tercero — marcación manual, pierna de transferencia externa o de conferencia, envío de SMS (core#2251, adenda del ADR #280). Ningún pago lo cambia.

json
{
  "error": {
    "code": "forbidden",
    "message": "tenant is suspended"
  }
}

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"
  }
}

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