Buscando documents por conteúdo
POST https://api.fbits.net/document/values/by-entity-name/{name}/search
Para localizar os documents de uma entidade pelo conteúdo deles, use a rota de busca. Enquanto a listagem por nome da entidade filtra por metadados do document (externalId e data de cadastro), a busca filtra pelas propriedades do document.
Apesar do verbo POST, a operação é de leitura: o verbo existe apenas para transportar as condições no corpo da requisição.
Parâmetros para consulta:
name- nome da entidade, na rota (a busca não diferencia maiúsculas de minúsculas);filters- lista de condições sobre o conteúdo do document. Obrigatória e com ao menos uma condição;after- cursor de avanço: retorna os documents comidmaior que o informado (opcional);limit- quantidade de itens da página, de 1 a 50. Quando não informado, assume 50.
A busca pagina apenas para frente: não existe o parâmetrobefore. Para navegar nos dois sentidos sem filtrar por conteúdo, use a listagem por nome da entidade.
Somente propriedades filterable podem ser critério
filterable podem ser critérioUma propriedade só pode ser usada em field se a entidade a declarar com filterable: true no schema — veja Inserindo uma entidade de document. Qualquer outro nome de propriedade é recusado com 400, com a mensagem nomeando a propriedade recusada.
Como consequência, uma entidade cujo schema não declara nenhuma propriedade filterable recusa toda condição com 400. O conserto, nesse caso, é declarar filterable no schema da entidade.
Gramática das condições
| Operador | Valores exigidos | Tipos de propriedade aceitos |
|---|---|---|
eq | value | string, número, data ou booleano |
in | values (lista) | string |
range | ao menos um de gte, gt, lte, lt | número ou data |
- O operador precisa ser compatível com o
typedeclarado para a propriedade noschema. Combinações incompatíveis — comorangesobre uma propriedadestring— retornam400; - Quando
filterstraz mais de uma condição, todas precisam ser satisfeitas pelo mesmo document (AND); - Cada requisição aceita no máximo 10 condições. Acima disso o retorno é
400.
Request body:
{
"filters": [
{ "field": "cor", "op": "eq", "value": "azul" },
{ "field": "preco", "op": "range", "gte": 100, "lte": 200 }
],
"limit": 20
}Exemplo com o operador in:
{
"filters": [
{ "field": "cor", "op": "in", "values": ["azul", "verde"] }
]
}Response body:
O retorno usa o mesmo envelope paginado da listagem por nome da entidade:
{
"items": [
{
"id": 4501,
"documentEntityId": 12,
"externalId": "ERP-0001",
"value": "{\"sku\":\"ABC-123\",\"cor\":\"azul\",\"preco\":149.9}",
"createdAt": "2026-07-27T16:20:00.000Z",
"updatedAt": "2026-07-27T16:20:00.000Z"
}
],
"pageInfo": {
"hasNextPage": false,
"hasPreviousPage": false,
"startCursor": 4501,
"endCursor": 4501
}
}Para avançar para a próxima página, envie after com o endCursor da página anterior reenviando as mesmas condições enquanto hasNextPage for true.
Busca e listagem têm fontes diferentesA listagem é atendida pelo banco da loja e é imediatamente consistente: um document criado aparece nela na chamada seguinte. A busca é atendida pelo índice, alimentado de forma assíncrona, e é eventualmente consistente: um document recém-criado ou recém-atualizado pode demorar alguns instantes para aparecer nela ou para refletir o novo conteúdo.
As duas rotas não devem ser tratadas como devolvendo o mesmo conjunto no mesmo instante.
Respostas de erro
| Status | Quando ocorre |
|---|---|
400 | filters ausente ou vazia (a mensagem indica a rota de listagem), propriedade não declarada filterable, propriedade inexistente no schema, operador incompatível com o tipo declarado, range sem nenhum limite, ou mais de 10 condições |
401 | Token ausente ou inválido |
403 | A funcionalidade documents não está habilitada para a loja |
404 | Entidade não encontrada na loja |
503 | A busca está temporariamente indisponível. As demais operações de document continuam funcionando normalmente |
Updated 7 days ago

