Filtros dinámicos

El sistema de filtrado permite refinar los resultados de una consulta de forma precisa. Todos los filtros que se apliquen en una misma solicitud se suman bajo una lógica de cumplimiento obligatorio (operación tipo "Y"), lo que significa que el resultado final solo mostrará los registros que cumplan con todas las condiciones indicadas.

Refina los resultados de cualquier consulta GET agregando filtros directamente en la URL de la solicitud.

⚠️

Disponibilidad: Los filtros dinámicos no están habilitados en todos los endpoints. Solo puedes utilizarlos en aquellos que lo indiquen explícitamente en su documentación de referencia. Consulta la página de cada endpoint para verificar si soporta filtros y qué campos están disponibles.

🔷 ¿Cómo funcionan los filtros?

Todos los filtros aplicados en una misma consulta se evalúan bajo una lógica de cumplimiento obligatorio (AND). Esto significa que los resultados mostrados serán solo aquellos que cumplan con todas las condiciones enviadas simultáneamente.

🔷 Estructura del filtro

Cada filtro se compone de tres partes: el nombre del campo, el operador de comparación y el valor deseado.

Formato estándar:

campo[operador]=valor

Ejemplo: Buscar órdenes de trabajo cuyo estado sea "open" y cuyo costo sea mayor o igual a 100:

GET https://app.fracttal.com/api/work_orders?status[eq]=open&cost[gte]=100

🔷 Operadores disponibles

A continuación, se detallan los operadores permitidos según el tipo de información que contenga el campo (texto, números o fechas).

OperadorDescripciónTipos de dato soportados
eqIgualdad exactatexto, número, fecha, booleano
neqDiferente detexto, número, fecha, booleano
gtMayor quenúmero, fecha
gteMayor o igual quenúmero, fecha
ltMenor quenúmero, fecha
lteMenor o igual quenúmero, fecha
likeBúsqueda parcial (que contenga el texto)texto
betweenRango entre dos valoresnúmero, fecha
inLista de valores (separados por coma)solo números

🔷 Funcionamiento de operadores

Igualdad y Diferencia

Busca una coincidencia exacta (eq) o excluye registros específicos (neq).

Ejemplos:

  • ?id[eq]=3 (Solo el registro con ID 3)
  • ?id[neq]=1 (Todos los registros excepto el ID 1)
  • ?status[eq]=open (Órdenes de trabajo con estado "open")

🔷 Aplicación de múltiples filtros

Combina varias condiciones en una sola solicitud utilizando el símbolo &. El sistema devuelve solo los registros que cumplan todas las condiciones a la vez.

Ejemplo: Buscar órdenes de trabajo que no sean la #3, con costo menor a 500 y descripción que contenga "urgente":

GET https://app.fracttal.com/api/work_orders?id[neq]=3&cost[lt]=500&description[like]=urgente

🔷 Filtrado por fechas

Las fechas son uno de los filtros más usados. La API espera fechas en formato ISO 8601: YYYY-MM-DDTHH:MM:SS±UTC.

Filtra órdenes de trabajo creadas en enero de 2024:

GET https://app.fracttal.com/api/work_orders?date[between]=2024-01-01T00:00:00-05,2024-01-31T23:59:59-05

🔷 Ejemplo completo de solicitud y respuesta

A continuación se muestra una solicitud real con filtros aplicados y las posibles respuestas.

Solicitud: Obtener órdenes de trabajo con estado "open" y costo mayor o igual a 100:

curl -X GET "https://app.fracttal.com/api/work_orders?status[eq]=open&cost[gte]=100" \
  -H "Authorization: Bearer TU_TOKEN"
{
  "success": true,
  "message": "OK",
  "data": [
    {
      "wo_folio": "OT-001234",
      "description": "Mantenimiento preventivo bomba hidráulica",
      "status": "open",
      "cost": 250.00,
      "date": "2024-03-15T10:30:00-05"
    },
    {
      "wo_folio": "OT-001289",
      "description": "Revisión sistema eléctrico planta norte",
      "status": "open",
      "cost": 180.50,
      "date": "2024-03-20T08:00:00-05"
    }
  ],
  "total": 2
}

🔷 Errores comunes y solución

ErrorCausaSolución
Operador incompatible con el tipo de datoUsar like en un campo numérico o in en un campo de textoConsulta la tabla de operadores y verifica los tipos de dato soportados por cada uno
Exceso de filtrosEnviar más de 20 filtros en una sola solicitudReduce el número de condiciones o divide la consulta en varias solicitudes
Exceso de valores en inEnviar más de 100 valores en una lista inDivide los valores en múltiples solicitudes con listas de 100 o menos
Formato incorrecto de fechaNo seguir el formato ISO 8601 (YYYY-MM-DDTHH:MM:SS±UTC)Usa el formato correcto: 2024-01-01T00:00:00-05
Zona horaria con + sin codificarEscribir +02 en vez de %2B02 en la URLCodifica el signo + como %2B
Operador between con valores incorrectosEnviar más o menos de 2 valores separados por comaAsegúrate de enviar exactamente dos valores: ?campo[between]=min,max

🔷 Campos filtrables por endpoint

📌

No todos los endpoints soportan los mismos campos de filtrado. Los campos disponibles dependen del recurso que estés consultando. Consulta la documentación de referencia de cada endpoint para conocer los campos específicos que acepta como filtro.

Por ejemplo:

  • Órdenes de trabajo (/work_orders): status, cost, date, description, entre otros.
  • Activos (/items): code, description, status, entre otros.
  • Medidores (/meters): code, serial, entre otros.

🔷 Ordenamiento y paginación

Los filtros se pueden combinar con parámetros de ordenamiento y paginación para controlar los resultados de forma precisa.

Parámetros disponibles:

ParámetroDescripciónEjemplo
sortCampo por el cual ordenar los resultadossort=date
orderDirección del ordenamiento: asc (ascendente) o desc (descendente)order=desc
pageNúmero de página de resultadospage=1
limitCantidad máxima de registros por páginalimit=50

Ejemplo completo: Obtener órdenes de trabajo con estado "open", ordenadas por fecha descendente, mostrando 20 resultados por página:

GET https://app.fracttal.com/api/work_orders?status[eq]=open&sort=date&order=desc&page=1&limit=20

🔷 Ejemplos en contexto Fracttal

Filtrar por estado y rango de fechas:

GET https://app.fracttal.com/api/work_orders?status[eq]=open&date[gte]=2024-01-01T00:00:00-05&date[lte]=2024-03-31T23:59:59-05

Buscar por descripción y costo mínimo:

GET https://app.fracttal.com/api/work_orders?description[like]=preventivo&cost[gte]=500

🔷 Consideraciones importantes

💡

Reglas de validación

  • Límite de condiciones: Se permite un máximo de 20 filtros por solicitud.
  • Límite de lista (IN): El operador in permite un máximo de 100 valores por lista.
  • Compatibilidad: Asegúrate de usar el operador correcto para el tipo de dato. Por ejemplo, intentar usar like en un campo de precio o in en un campo de descripción generará un error de validación.
  • Caracteres especiales en fechas: Al filtrar por fechas que incluyan zonas horarias con el signo más (+), este debe escribirse como %2B.
    • Correcto: ?date[gt]=2024-01-01T00:00:00%2B02