Upnify Documentación API
CRM · /analitica/contactos

Analítica

Contactos en lote

GET/analitica/contactos

Consulta contactos autorizados con estados, fechas y relaciones opcionales. Devuelve [filas, [metadatos]] y el encabezado Row-Count. Los filtros no publicados se rechazan con 409.

Parámetros

NombreTipoValidaciónDescripción
paramsvarchar
paginavarcharRequeridoEntero entre 1 y 2147483647. Página de resultados; no admite descarga ilimitada.
cantidadRegistrosvarcharRequeridoEntero de 1 a 200. Cantidad máxima de filas de la página.
tkContactosvarcharHasta 100 tokens separados por coma, máximo 128 caracteres cada uno y 8192 en total. Los duplicados no multiplican resultados.
tkUsuariovarcharToken del responsable asignado. No amplía los permisos de la sesión.
tkGrupovarcharToken del grupo de un responsable asignado.
tkFasevarcharToken de la fase actual del contacto.
tkOrigenvarcharToken del origen actual del contacto.
tkEtiquetavarcharToken de una etiqueta del contacto.
esClientevarcharRequeridoEstado del contacto: todos, true o false.
asignacionvarcharRequeridotodos, asignados o sinAsignar. La regla vigente requiere una asignación autorizable; sinAsignar devuelve vacío con advertencia de cobertura.
fechaIniciovarcharInicio incluido, ISO 8601 con offset; requiere fechaFin.
fechaFinvarcharFin excluido, ISO 8601 con offset, posterior al inicio; requiere fechaInicio.
fechaBasevarcharRequeridoBase del filtro temporal. Único valor habilitado: creacion.
ordenvarcharRequeridoascendente o descendente por creación, con desempate estable por identidad.
incluirvarcharLista separada por coma: atribucion, empresa, resumen, calificacion y preferencias. preferencias requiere acceso a COM para sus bloqueos; no regenera IA ni ejecuta envíos.
permitirParcialesvarcharRequeridotrue admite preferencias sin bloqueos cuando COM no está habilitado en la cuenta, con advertencia; falta de permiso individual sigue siendo 403.

Respuesta

NombreTipoDescripción
tkProspectoStringIdentificador estable del contacto, también después de convertirse en cliente.
fuenteStringFuente del registro; crm para contactos.
idRegistroFuenteStringIdentidad opaca del registro, estable dentro de la cuenta.
nombreStringNombre del contacto.
apellidosStringApellidos del contacto.
esClienteBooleanIndica el estado actual de cliente.
esOportunidadBooleanIndicador actual de oportunidad del contacto.
descartadoBooleanIndica que el contacto está descartado.
tkUsuarioStringToken del responsable principal almacenado; puede ser null.
tkFaseStringToken de fase actual; puede ser null.
tkOrigenStringToken de origen; puede ser null.
fechaCreacionStringInstante de creación con zona explícita; puede ser null.
fechaOriginalStringFecha de creación original sin zona; puede ser null.
baseTemporalStringProcedencia de fechaOriginal: creacion.
fechaActualizacionStringModificación del contacto con zona explícita; puede ser null.
fechaActualizacionOriginalStringFecha de modificación original sin zona; puede ser null.
responsablesArray<Object>Asignaciones actuales con tkUsuario, nombre, apellidos, principal y activo.
atribucionObjectObjeto solicitado con incluir=atribucion; de otro modo null. Los campos sin evidencia son null.
empresaObjectEmpresa comercial solicitada con incluir=empresa; de otro modo null. Sus campos pueden ser null si no hay relación.
coberturaObjectEstado, fuentes consultadas, capacidadesFaltantes e integridadHistorica.
advertenciasArray<Object>Lista de objetos con codigo, mensaje y fuente que explican límites de cobertura.
consistenciaStringSiempre sinInstantanea; los cambios concurrentes pueden alterar la navegación.
fechaGeneracionStringInstante de generación de la respuesta, con zona explícita.
Row-CountIntegerTotal del conjunto autorizado y filtrado, antes de paginar.
atribucion.alcanceAtribucionStringcontactoGuardado: evidencia del contacto, no de cada captación.
atribucion.utmFuenteStringValor de utmFuente guardado en la atribución; null si no está registrado.
atribucion.utmMedioStringValor de utmMedio guardado en la atribución; null si no está registrado.
atribucion.utmCampaniaStringValor de utmCampania guardado en la atribución; null si no está registrado.
atribucion.utmTerminoStringValor de utmTermino guardado en la atribución; null si no está registrado.
atribucion.utmContenidoStringValor de utmContenido guardado en la atribución; null si no está registrado.
atribucion.utmGclidStringValor de utmGclid guardado en la atribución; null si no está registrado.
atribucion.utmGbraidStringValor de utmGbraid guardado en la atribución; null si no está registrado.
atribucion.utmWbraidStringValor de utmWbraid guardado en la atribución; null si no está registrado.
atribucion.utmFbclidStringValor de utmFbclid guardado en la atribución; null si no está registrado.
atribucion.utmReferenteStringValor de utmReferente guardado en la atribución; null si no está registrado.
atribucion.utmCampoPersonalizado1StringValor de utmCampoPersonalizado1 guardado en la atribución; null si no está registrado.
atribucion.utmCampoPersonalizado2StringValor de utmCampoPersonalizado2 guardado en la atribución; null si no está registrado.
atribucion.utmCampoPersonalizado3StringValor de utmCampoPersonalizado3 guardado en la atribución; null si no está registrado.
atribucion.utmCampoPersonalizado4StringValor de utmCampoPersonalizado4 guardado en la atribución; null si no está registrado.
atribucion.utmCampoPersonalizado5StringValor de utmCampoPersonalizado5 guardado en la atribución; null si no está registrado.
atribucion.utmFechaStringInstante del registro de atribución con zona explícita; puede ser null.
atribucion.utmFechaOriginalStringFecha original del registro de atribución sin zona; puede ser null.
atribucion.baseTemporalStringregistroAtribucion: fecha del registro de atribución.
empresa.tkEmpresaStringToken de la empresa comercial.
empresa.nombreStringNombre del contacto.
empresa.esClienteBooleanIndica el estado actual de cliente.
resumenObjectResumen persistido o null. Incluye tkResumen, fuente, fechaCreacion, fechaActualizacion, fechaActualizacionOriginal, baseTemporal, idUltimoEventoResumido=null, formatoFuente, textoOriginal y contenido. contenido proyecta contextoGeneral, resumenUltimaConversacion, estadoActual, intencionDetectada, nivelInteres, sentimiento, temasPrincipales, objeciones, compromisosPendientes, siguientePasoRecomendado, canalPreferido, estiloComunicacion, hechosParaUsar y hechosNoInventar; los datos ausentes permanecen null o lista vacía. No adjunta configuración ni metadatos privados.
calificacionObjectObjeto o null si no se solicita. puntuacion y origen/manual.puntuacion conservan valores guardados. bant incluye puntuacion y puntosPresupuesto, puntosAutoridad, puntosNecesidad, puntosPlazo (contribuciones del formulario BANT). tkActor, fechaCalificacion, versionReglas, validezComercial, esPrueba, esCorreoNoDeseado y esDuplicado permanecen null sin evidencia. estadoCorreoFuente y correoVerificado describen correo, no validez comercial. etiquetas incluye tkEtiqueta, nombre y fechaEtiquetado. personalizados contiene definiciones de contacto accesibles con tkCampo, clave, nombre, descripcion, tipoCampoFuente, valorOriginal, tipoValor y opciones (tkOpcion, nombre, estadoFuente, seleccionada). Los valores originales de listas/objetos permanecen como texto JSON; no son puntuaciones.
preferenciasObjectObjeto o null si no se solicita. recibirCorreos es la preferencia del contacto, con recibirCorreosFuente original. fechaPreferencia, idioma, horario, consentimientoVerificable, propositoConsentimiento y fechaConsentimiento quedan null sin evidencia. coberturaBloqueos es parcial o noDisponible. bloqueos contiene tkBloqueo, canal y bloqueado=true sólo para identidades coincidentes de conversaciones autorizadas; una lista vacía no acredita ausencia global de bloqueos. Sin COM consultable bloqueos=null.

Solicitud

Consultar contactos y relaciones

curl --request GET --url 'https://api.upnify.com/v4/analitica/contactos?tkContactos=P-EJEMPLO&incluir=atribucion%2Cempresa' --header 'token: 00000000-0000-4000-8000-000000000001'

Respuesta

HTTP 200; Row-Count: 1

JSON
[
  [
    {
      "tkProspecto": "P-EJEMPLO",
      "fuente": "crm",
      "idRegistroFuente": "contacto:1",
      "nombre": "Contacto",
      "apellidos": "Sintetico",
      "esCliente": false,
      "esOportunidad": false,
      "descartado": false,
      "tkUsuario": "U-EJEMPLO",
      "tkFase": "PFAS-EJEMPLO",
      "tkOrigen": "ORIG-EJEMPLO",
      "fechaCreacion": "2026-09-01T16:00:00Z",
      "fechaOriginal": "2026-09-01T10:00:00",
      "baseTemporal": "creacion",
      "fechaActualizacion": "2026-09-01T16:00:00Z",
      "fechaActualizacionOriginal": "2026-09-01T10:00:00",
      "responsables": [
        {
          "tkUsuario": "U-EJEMPLO",
          "nombre": "Prueba",
          "apellidos": "Analitica",
          "principal": false,
          "activo": true
        }
      ],
      "atribucion": {
        "alcanceAtribucion": "contactoGuardado",
        "utmFuente": "fuente-sintetica",
        "utmMedio": null,
        "utmCampania": null,
        "utmTermino": null,
        "utmContenido": null,
        "utmGclid": null,
        "utmGbraid": "GBRAID-EJEMPLO",
        "utmWbraid": "WBRAID-EJEMPLO",
        "utmFbclid": null,
        "utmReferente": null,
        "utmCampoPersonalizado1": null,
        "utmCampoPersonalizado2": null,
        "utmCampoPersonalizado3": null,
        "utmCampoPersonalizado4": null,
        "utmCampoPersonalizado5": null,
        "utmFecha": "2026-09-01T16:00:00Z",
        "utmFechaOriginal": "2026-09-01T10:00:00",
        "baseTemporal": "registroAtribucion"
      },
      "empresa": {
        "tkEmpresa": "COM-EJEMPLO",
        "nombre": "Empresa comercial sintetica",
        "esCliente": false
      },
      "resumen": null,
      "calificacion": null,
      "preferencias": null
    }
  ],
  [
    {
      "cobertura": {
        "estado": "parcial",
        "fuentes": [
          "crm"
        ],
        "capacidadesFaltantes": [
          "historialCompletoAsignaciones",
          "contactosSinAsignacionAutorizable"
        ],
        "integridadHistorica": "desconocida"
      },
      "advertencias": [
        {
          "codigo": "ASIGNACION_REQUERIDA_PARA_ACCESO",
          "mensaje": "Los contactos sin asignaciones no tienen un alcance autorizable mediante la regla vigente; su ausencia no acredita que no existan.",
          "fuente": "crm"
        }
      ],
      "consistencia": "sinInstantanea",
      "fechaGeneracion": "2026-09-21T18:00:00Z"
    }
  ]
]

HTTP 200 sin coincidencias; Row-Count: 0

JSON
[
  [],
  [
    {
      "cobertura": {
        "estado": "parcial",
        "fuentes": [
          "crm"
        ],
        "capacidadesFaltantes": [
          "historialCompletoAsignaciones",
          "contactosSinAsignacionAutorizable"
        ],
        "integridadHistorica": "desconocida"
      },
      "advertencias": [
        {
          "codigo": "ASIGNACION_REQUERIDA_PARA_ACCESO",
          "mensaje": "Los contactos sin asignaciones no tienen un alcance autorizable mediante la regla vigente; su ausencia no acredita que no existan.",
          "fuente": "crm"
        }
      ],
      "consistencia": "sinInstantanea",
      "fechaGeneracion": "2026-09-21T18:00:00Z"
    }
  ]
]

HTTP 409: filtro inválido

JSON
[
  {
    "code": 2,
    "msg": "Existen errores de validación.",
    "details": {
      "codigo": "FILTRO_INVALIDO",
      "parametro": "pagina"
    }
  }
]