Upnify Documentación API
CRM · /analitica/oportunidades

Analítica

Oportunidades por fecha del hecho

GET/analitica/oportunidades

Lista oportunidades autorizadas abiertas, ganadas y perdidas. fechaBase selecciona creación, ganancia o pérdida; la inclusión de productos mantiene una sola fila e importe por oportunidad.

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.
tkUsuariovarcharIdentificador del responsable; no amplía permisos.
fechaIniciovarcharInicio incluido, ISO 8601 con offset; requiere fechaFin. Se requiere un intervalo de hasta 366 días o tkContactos.
fechaFinvarcharFin excluido, ISO 8601 con offset, posterior al inicio y hasta 366 días después. Requiere fechaInicio.
fechaBasevarcharRequeridocreacion (default), ganada o perdida; aplica el intervalo a ese hecho.
ordenvarcharRequeridoascendente o descendente por creación, con desempate estable por identidad.
incluirvarcharproductos o vacío. La colección se pagina por separado y no multiplica las filas del padre.
tkOportunidadvarcharToken de oportunidad concreta autorizada; inexistente o sin permiso devuelve 404.
paginaRelacionvarcharRequeridoPágina de productos desde 1, default 1. Una página posterior exige tkVenta o tkOportunidad de un único padre y el include productos.
cantidadRegistrosRelacionvarcharRequeridoEntre 1 y 100, default 20. Requiere incluir=productos.
estadovarcharRequeridotodos, abierta, ganada o perdida. Se conservan flags contradictorios como desconocido al consultar todos.
tkFasevarcharToken de la fase actual del contacto.

Respuesta

NombreTipoDescripción
tkOportunidadStringOportunidad relacionada y perteneciente al contacto, o null.
tkProspectoStringContacto asociado cuando sólo existe uno en el conjunto consultado; null si hay varios.
fuenteStringoportunidad.
idRegistroFuenteStringIdentidad opaca del registro fuente.
tkEmpresaStringToken de la empresa comercial; null si falta o no existe permiso sobre ella.
tkUsuarioStringToken del responsable principal almacenado; puede ser null.
tkFaseStringToken de fase actual; puede ser null.
faseStringNombre de la fase guardada; puede ser null.
conceptoStringConcepto comercial guardado.
estadoStringabierta, ganada, perdida o desconocido si los flags originales son contradictorios.
estadoFuenteObjectIndicadores originales permitidos de la fuente; no se reinterpretan como un estado distinto.
importeNumberMonto propio del padre, una sola vez por fila. No se suma por producto o enlace financiero.
subtotalNumberSubtotal propio guardado, sin reconstrucción.
descuentoNumberDescuento guardado en la entidad.
impuestosNumberImpuestos trasladados guardados.
impuestosRetenidosNumberImpuestos retenidos guardados; null si no existen.
monedaStringCódigo de moneda de la entidad; null si no se puede resolver dentro de la cuenta.
tkMonedaStringToken público de la moneda de la cuenta.
tipoCambioNumberTipo de cambio persistido; no equivale a una conversión histórica reconstruida.
motivoPerdidaStringMotivo guardado de pérdida; null si no existe.
fechaCreacionStringInstante de creación con zona explícita; puede ser null.
fechaCierrePrevistoStringFecha prevista guardada, con zona; no demuestra un cierre real.
fechaGanadaStringFecha guardada de ganancia con zona.
fechaPerdidaStringFecha guardada de pérdida con zona.
fechaActualizacionStringFecha de modificación de esta fuente cuando existe; de otro modo null.
fechaOriginalStringFecha original del evento, incluso cuando no se puede convertir; puede ser null.
baseTemporalStringHecho de la fecha original: creacion, ganada, perdida o desconocido.
productosObjectnull salvo incluir=productos. Contiene datos, pagina, cantidadRegistros, totalRegistros y hayMas. datos incluye idRelacion, tkRelacion, tkProducto, descripcion, cantidad, precioUnitario, subtotal, descuento, importe, moneda y tipoCambio; son valores de las líneas guardadas. La continuación requiere un único padre. Un catálogo eliminado conserva la línea y puede dejar tkProducto=null.
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.

Solicitud

Oportunidades por fecha del hecho de un contacto

curl --request GET --url 'https://api.upnify.com/v4/analitica/oportunidades?tkContactos=P-EJEMPLO&cantidadRegistros=3' --header 'token: 00000000-0000-4000-8000-000000000001'

Respuesta

HTTP 200; Row-Count: 3

JSON
[
  [
    {
      "tkOportunidad": "TK-EJEMPLO-1",
      "tkProspecto": "TK-EJEMPLO-2",
      "fuente": "oportunidad",
      "idRegistroFuente": "registro:3",
      "tkEmpresa": "TK-EJEMPLO-4",
      "tkUsuario": "TK-EJEMPLO-5",
      "tkFase": "TK-EJEMPLO-6",
      "fase": "Fase de ejemplo",
      "concepto": "Abierta sintetica",
      "estado": "abierta",
      "estadoFuente": {
        "ganada": 0,
        "perdida": 0
      },
      "importe": 300,
      "subtotal": 300,
      "descuento": 0,
      "impuestos": 0,
      "impuestosRetenidos": null,
      "moneda": "MXN",
      "tkMoneda": "TK-EJEMPLO-7",
      "tipoCambio": 1,
      "motivoPerdida": null,
      "fechaCreacion": "2026-01-01T06:00:00Z",
      "fechaCierrePrevisto": null,
      "fechaGanada": null,
      "fechaPerdida": null,
      "fechaActualizacion": "2026-09-21T18:00:00Z",
      "fechaOriginal": "2026-01-01T00:00:00",
      "baseTemporal": "creacion",
      "productos": null
    },
    {
      "tkOportunidad": "TK-EJEMPLO-8",
      "tkProspecto": "TK-EJEMPLO-2",
      "fuente": "oportunidad",
      "idRegistroFuente": "registro:9",
      "tkEmpresa": "TK-EJEMPLO-4",
      "tkUsuario": "TK-EJEMPLO-5",
      "tkFase": "TK-EJEMPLO-6",
      "fase": "Fase de ejemplo",
      "concepto": "Ganada sintetica",
      "estado": "ganada",
      "estadoFuente": {
        "ganada": 1,
        "perdida": 0
      },
      "importe": 300,
      "subtotal": 300,
      "descuento": 0,
      "impuestos": 0,
      "impuestosRetenidos": null,
      "moneda": "MXN",
      "tkMoneda": "TK-EJEMPLO-7",
      "tipoCambio": 1,
      "motivoPerdida": null,
      "fechaCreacion": "2026-01-01T06:00:00Z",
      "fechaCierrePrevisto": null,
      "fechaGanada": "2026-09-12T06:00:00Z",
      "fechaPerdida": null,
      "fechaActualizacion": "2026-09-21T18:00:00Z",
      "fechaOriginal": "2026-01-01T00:00:00",
      "baseTemporal": "creacion",
      "productos": null
    },
    {
      "tkOportunidad": "TK-EJEMPLO-10",
      "tkProspecto": "TK-EJEMPLO-2",
      "fuente": "oportunidad",
      "idRegistroFuente": "registro:11",
      "tkEmpresa": "TK-EJEMPLO-4",
      "tkUsuario": "TK-EJEMPLO-5",
      "tkFase": "TK-EJEMPLO-6",
      "fase": "Fase de ejemplo",
      "concepto": "Perdida sintetica",
      "estado": "perdida",
      "estadoFuente": {
        "ganada": 0,
        "perdida": 1
      },
      "importe": 300,
      "subtotal": 300,
      "descuento": 0,
      "impuestos": 0,
      "impuestosRetenidos": null,
      "moneda": "MXN",
      "tkMoneda": "TK-EJEMPLO-7",
      "tipoCambio": 1,
      "motivoPerdida": null,
      "fechaCreacion": "2026-01-01T06:00:00Z",
      "fechaCierrePrevisto": null,
      "fechaGanada": null,
      "fechaPerdida": "2026-09-12T06:00:00Z",
      "fechaActualizacion": "2026-09-21T18:00:00Z",
      "fechaOriginal": "2026-01-01T00:00:00",
      "baseTemporal": "creacion",
      "productos": null
    }
  ],
  [
    {
      "cobertura": {
        "estado": "parcial",
        "fuentes": [
          "oportunidad"
        ],
        "capacidadesFaltantes": [
          "historialCompletoEstados",
          "conversionMonedaHistorica"
        ],
        "integridadHistorica": "desconocida"
      },
      "advertencias": [
        {
          "codigo": "IMPORTES_POR_OPORTUNIDAD",
          "mensaje": "Cada oportunidad conserva su importe; productos se paginan por separado. No se convierte moneda ni se suman oportunidades y ventas como ingresos independientes.",
          "fuente": "oportunidad"
        }
      ],
      "consistencia": "sinInstantanea",
      "fechaGeneracion": "2026-09-21T18:00:00Z"
    }
  ]
]