POST. Esta página mostra a estrutura dos filtros e das ordenações, os operadores aceitos, como descobrir os campos disponíveis e como tratar os erros.
A busca avançada está disponível em três endpoints:
POST /api/management/projects/searchPOST /api/management/customers/searchPOST /api/management/contacts/search
filter[status]=active, veja Filtros básicos.
Primeira busca
Esta requisição completa, com autenticação, busca os projetos com orçamento maior que 10.000:projects e os dados de paginação em meta, como descrito em Paginação.
Estrutura da requisição
O corpo da requisição é um objeto JSON com quatro campos, todos opcionais:array
Lista de filtros. Cada filtro define o campo, o operador, o valor e como ele se combina com o filtro anterior.
array
Lista de ordenações, na ordem de prioridade. Cada ordenação define o campo e a direção.
Estrutura de um filtro
Cada item defilters tem estes campos:
string
required
Nome do campo a filtrar. Os campos aceitos variam por endpoint: veja Descobrindo campos disponíveis.
string
required
Operador de comparação. Os valores aceitos estão em Operadores de comparação.
string | number | boolean | array | null
Valor a comparar. O tipo depende do campo e do operador.
string
default:"and"
Como o filtro se combina com o anterior:
and ou or.array
Argumentos extras que alguns campos exigem, como o campo do formulário em um filtro por resposta de formulário. Veja Argumentos adicionais.
Operadores de comparação
O campooperator aceita os valores da tabela. Nem todo campo aceita todos os operadores: a lista de cada campo está em Descobrindo campos disponíveis.
Combinar filtros com and e or
O campological_operator define como cada filtro se combina com o anterior:
and(padrão): o item precisa atender aos dois filtros.or: o item precisa atender a pelo menos um dos dois filtros.
logical_operator vale a partir do segundo filtro. No primeiro filtro, a API ignora o valor.
Estrutura de uma ordenação
Cada item desorting tem estes campos:
string
required
Nome do campo usado na ordenação. Os campos aceitos variam por endpoint: veja Descobrindo campos disponíveis.
string
required
Direção da ordenação:
asc (crescente) ou desc (decrescente).array
Argumentos extras que algumas ordenações exigem.
Argumentos adicionais
Alguns campos só funcionam com um contexto a mais. Por exemplo, para filtrar projetos pela resposta de um formulário (campoanswer_pool), você precisa dizer qual campo do formulário comparar. Esse contexto vai em arguments.
Os argumentos de cada campo aparecem na resposta do endpoint de metadados, descrita em Descobrindo campos disponíveis.
arguments é uma lista de objetos, e cada objeto tem três chaves obrigatórias:
A API lê os argumentos pela posição na lista: o primeiro objeto é o primeiro argumento do campo, e assim por diante. Este filtro busca os projetos cuja resposta ao campo 30 do formulário é “Indicação”:
Exemplos
Os exemplos usam a busca de projetos. Na busca de clientes e de contatos, a estrutura é a mesma e só mudam os campos.- Dois filtros com and
- Dois filtros com or
- Filtros, ordenação e paginação
Busca os projetos em andamento (
status igual a 1) cujo nome contém “Implantação”:Filtrar por data de criação
O campocreated_at filtra pela data de criação nas três buscas: projetos, clientes e contatos. Ele aceita os operadores equals, not_equals, greater_than, greater_than_or_equals, less_than e less_than_or_equals.
Envie só a data, no formato AAAA-MM-DD, como 2026-09-30. A API lê a data no fuso de Brasília (America/Sao_Paulo) e a trata como o dia inteiro:
Para buscar um mês inteiro, combine
greater_than_or_equals com o primeiro dia e less_than_or_equals com o último. Esta busca traz os projetos criados em setembro de 2026:
2026-09-30T14:00:00-03:00. A API converte para o fuso de Brasília. Se o resultado cair à meia-noite em ponto, vale a regra do dia inteiro. Em qualquer outro horário, a comparação é exata com aquele momento.
Descobrindo campos disponíveis
Cada endpoint aceita um conjunto próprio de campos, operadores e argumentos. Para consultar esse conjunto, use o endpoint de metadados:{model_name} pelo objeto da busca: project, customer ou contact. A resposta abaixo, da busca de projetos, mostra três dos filtros e parte das ordenações:
params.filters descreve um campo que você pode usar em filters[].field:
Os itens de
params.sorting trazem o name a usar em sorting[].field.
Tratamento de erros
Quando um filtro não é válido, a API responde com HTTP 422,message: "validation_errors" e o detalhe em validation, como em qualquer erro de validação. Consulte o endpoint de metadados para ver o que o campo aceita.
Campo inválido
A API recusa o filtro quandofield não está na lista de campos do endpoint. A mensagem cita o nome enviado e lista os campos disponíveis. No exemplo, a lista de campos está encurtada:
field um dos valores de name em params.filters.
Operador inválido
A API recusa o filtro quandooperator não é um dos operadores de comparação. A chave em validation começa pela posição do filtro na lista filters, contando a partir de 0. No exemplo, o erro está no primeiro filtro:
operators do campo.
Argumento obrigatório ausente
A API recusa o filtro quando o campo tem um argumento comrequired: true e o filtro não traz arguments. No exemplo, o filtro por resposta de formulário (answer_pool) chegou sem o campo do formulário:
arguments os argumentos obrigatórios listados para o campo no endpoint de metadados.
Data inválida
A API recusa um filtro decreated_at quando o valor não é uma data válida, como 2026-02-30 ou 30/09/2026. O detalhe fica na chave filters de validation:
AAAA-MM-DD, por exemplo 2026-09-30.
Páginas relacionadas
Estas páginas complementam a busca avançada:- Filtros básicos: filtros simples com
filter[campo]na URL. - Paginação: os parâmetros
pageeperPagee o objetometa. - Formulários dinâmicos e o pivot: o que são os campos e as respostas de formulário.