Upnify Documentación API
CRM · /analitica/ventas

Analítica

Ventas y productos

GET/analitica/ventas

Lista ventas con permiso sobre contacto y ejecutivo de la venta. Mantiene sus fechas propias y pagina los productos de forma independiente.

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) o cierre; no usa la fecha del contacto.
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.
tkVentavarcharToken de venta concreta autorizada; inexistente o sin permiso devuelve 404.

Respuesta

NombreTipoDescripción
tkVentaStringVenta relacionada y autorizada; puede ser null.
tkOportunidadStringOportunidad relacionada y perteneciente al contacto, o null.
tkProspectoStringContacto asociado cuando sólo existe uno en el conjunto consultado; null si hay varios.
fuenteStringventa.
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.
conceptoStringConcepto comercial guardado.
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.
importeCobradoFuenteNumberMonto cobrado guardado en la venta; no se recalcula sumando los enlaces.
saldoFuenteNumberSaldo guardado en la venta.
fechaCreacionStringInstante de creación con zona explícita; puede ser null.
fechaCierreStringFecha comercial guardada de la venta, con zona.
fechaActualizacionVentaStringÚltima modificación propia de la venta, con zona.
fechaActualizacionContactoStringÚltima modificación del contacto relacionado, separada de la venta.
fechaOriginalStringFecha original del evento, incluso cuando no se puede convertir; puede ser null.
baseTemporalStringHecho de la fecha original: creacion, cierre o desconocido.
idEventoConversionStringnull: no se acredita un evento causal de conversión desde la venta.
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

Ventas y productos de un contacto

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

Respuesta

HTTP 200; Row-Count: 1

JSON
[
  [
    {
      "tkVenta": "TK-EJEMPLO-12",
      "tkOportunidad": "TK-EJEMPLO-8",
      "tkProspecto": "TK-EJEMPLO-2",
      "fuente": "venta",
      "idRegistroFuente": "registro:13",
      "tkEmpresa": "TK-EJEMPLO-4",
      "tkUsuario": "TK-EJEMPLO-5",
      "concepto": "Ganada sintetica",
      "importe": 300,
      "subtotal": 300,
      "descuento": 0,
      "impuestos": 0,
      "impuestosRetenidos": 0,
      "moneda": "MXN",
      "tkMoneda": "TK-EJEMPLO-7",
      "tipoCambio": null,
      "importeCobradoFuente": 150,
      "saldoFuente": 150,
      "fechaCreacion": "2026-09-13T18:00:00Z",
      "fechaCierre": "2026-09-12T17:00:00Z",
      "fechaActualizacionVenta": "2026-09-21T18:00:00Z",
      "fechaActualizacionContacto": "2026-09-21T18:00:00Z",
      "fechaOriginal": "2026-09-13T12:00:00",
      "baseTemporal": "creacion",
      "idEventoConversion": null,
      "productos": {
        "datos": [
          {
            "idRelacion": "registro:14",
            "tkRelacion": "TK-EJEMPLO-15",
            "tkProducto": "TK-EJEMPLO-16",
            "descripcion": "Producto sintetico 1",
            "cantidad": 1,
            "precioUnitario": 100,
            "subtotal": 100,
            "descuento": 0,
            "importe": 100,
            "moneda": "MXN",
            "tipoCambio": 1
          },
          {
            "idRelacion": "registro:17",
            "tkRelacion": "TK-EJEMPLO-18",
            "tkProducto": "TK-EJEMPLO-19",
            "descripcion": "Producto sintetico 2",
            "cantidad": 1,
            "precioUnitario": 100,
            "subtotal": 100,
            "descuento": 0,
            "importe": 100,
            "moneda": "MXN",
            "tipoCambio": 1
          }
        ],
        "pagina": 1,
        "cantidadRegistros": 2,
        "totalRegistros": 3,
        "hayMas": true
      }
    }
  ],
  [
    {
      "cobertura": {
        "estado": "parcial",
        "fuentes": [
          "venta"
        ],
        "capacidadesFaltantes": [
          "ventaCausalConversionManual",
          "conversionMonedaHistorica",
          "historialEliminaciones"
        ],
        "integridadHistorica": "desconocida"
      },
      "advertencias": [
        {
          "codigo": "IMPORTES_POR_VENTA",
          "mensaje": "Cada venta conserva su importe; productos se paginan por separado. No se convierte moneda ni se suman oportunidades y ventas como ingresos independientes.",
          "fuente": "venta"
        }
      ],
      "consistencia": "sinInstantanea",
      "fechaGeneracion": "2026-09-21T18:00:00Z"
    }
  ]
]