Filtros dinâmicos

Refine os resultados de qualquer consulta GET adicionando filtros diretamente na URL da requisição.


⚠️

Disponibilidade: Os filtros dinâmicos não estão habilitados em todos os endpoints. Você só pode utilizá-los naqueles que indicam explicitamente em sua documentação de referência. Consulte a página de cada endpoint para verificar se ele suporta filtros e quais campos estão disponíveis.

🔷 Como funcionam os filtros?

Todos os filtros aplicados em uma mesma consulta são avaliados sob uma lógica de cumprimento obrigatório (AND). Isso significa que os resultados exibidos serão apenas aqueles que atendam a todas as condições enviadas simultaneamente.

🔷 Estrutura do filtro

Cada filtro é composto por três partes: o nome do campo, o operador de comparação e o valor desejado.

Formato padrão:

campo[operador]=valor

Exemplo: Buscar ordens de trabalho cujo status seja "open" e cujo custo seja maior ou igual a 100:

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

🔷 Operadores disponíveis

A seguir, são detalhados os operadores permitidos de acordo com o tipo de informação que o campo contém (texto, números ou datas).

OperadorDescriçãoTipos de dado suportados
eqIgualdade exatatexto, número, data, booleano
neqDiferente detexto, número, data, booleano
gtMaior quenúmero, data
gteMaior ou igual anúmero, data
ltMenor quenúmero, data
lteMenor ou igual anúmero, data
likeBusca parcial (que contenha o texto)texto
betweenFaixa entre dois valoresnúmero, data
inLista de valores (separados por vírgula)somente números

🔷 Funcionamento dos operadores

Igualdade e Diferença

Busca uma correspondência exata (eq) ou exclui registros específicos (neq).

Exemplos:

  • ?id[eq]=3 (Somente o registro com ID 3)
  • ?id[neq]=1 (Todos os registros exceto o ID 1)
  • ?status[eq]=open (Ordens de trabalho com status "open")

🔷 Aplicação de múltiplos filtros

Combine várias condições em uma única requisição utilizando o símbolo &. O sistema retorna apenas os registros que atendam a todas as condições ao mesmo tempo.

Exemplo: Buscar ordens de trabalho que não sejam a #3, com custo menor que 500 e descrição que contenha "urgente":

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

🔷 Filtragem por datas

As datas são um dos filtros mais utilizados. A API espera datas no formato ISO 8601: YYYY-MM-DDTHH:MM:SS±UTC.

Filtra ordens de trabalho criadas em janeiro de 2024:

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

🔷 Exemplo completo de requisição e resposta

A seguir, é mostrada uma requisição real com filtros aplicados e as possíveis respostas.

Requisição: Obter ordens de trabalho com status "open" e custo maior ou igual a 100:

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

🔷 Erros comuns e solução

ErroCausaSolução
Operador incompatível com o tipo de dadoUsar like em um campo numérico ou in em um campo de textoConsulte a tabela de operadores e verifique os tipos de dado suportados por cada um
Excesso de filtrosEnviar mais de 20 filtros em uma única requisiçãoReduza o número de condições ou divida a consulta em várias requisições
Excesso de valores em inEnviar mais de 100 valores em uma lista inDivida os valores em múltiplas requisições com listas de 100 ou menos
Formato incorreto de dataNão seguir o formato ISO 8601 (YYYY-MM-DDTHH:MM:SS±UTC)Use o formato correto: 2024-01-01T00:00:00-05
Fuso horário com + sem codificarEscrever +02 em vez de %2B02 na URLCodifique o sinal + como %2B
Operador between com valores incorretosEnviar mais ou menos de 2 valores separados por vírgulaCertifique-se de enviar exatamente dois valores: ?campo[between]=min,max

🔷 Campos filtráveis por endpoint

📌

Nem todos os endpoints suportam os mesmos campos de filtragem. Os campos disponíveis dependem do recurso que você está consultando. Consulte a documentação de referência de cada endpoint para conhecer os campos específicos que aceita como filtro.

Por exemplo:

  • Ordens de trabalho (/work_orders): status, cost, date, description, entre outros.
  • Ativos (/items): code, description, status, entre outros.
  • Medidores (/meters): code, serial, entre outros.

🔷 Ordenamento e paginação

Os filtros podem ser combinados com parâmetros de ordenamento e paginação para controlar os resultados de forma precisa.

Parâmetros disponíveis:

ParâmetroDescriçãoExemplo
sortCampo pelo qual ordenar os resultadossort=date
orderDireção do ordenamento: asc (ascendente) ou desc (descendente)order=desc
pageNúmero da página de resultadospage=1
limitQuantidade máxima de registros por páginalimit=50

Exemplo completo: Obter ordens de trabalho com status "open", ordenadas por data descendente, exibindo 20 resultados por página:

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

🔷 Exemplos no contexto Fracttal

Filtrar por status e faixa de datas:

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 descrição e custo mínimo:

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

🔷 Considerações importantes

💡

Regras de validação

  • Limite de condições: É permitido um máximo de 20 filtros por requisição.
  • Limite de lista (IN): O operador in permite um máximo de 100 valores por lista.
  • Compatibilidade: Certifique-se de usar o operador correto para o tipo de dado. Por exemplo, tentar usar like em um campo de preço ou in em um campo de descrição gerará um erro de validação.
  • Caracteres especiais em datas: Ao filtrar por datas que incluam fusos horários com o sinal de mais (+), este deve ser escrito como %2B.
    • Correto: ?date[gt]=2024-01-01T00:00:00%2B02