Query parameters
Aplicáveis principalmente a GET /items/:collection e a listagens de domínio.
Parâmetros
Seção intitulada “Parâmetros”| Param | Tipo | Default | Descrição |
|---|---|---|---|
filter |
object (query) | — | Filtros da API Kunk |
sort |
string / array | -id ou id |
Ordenação |
limit |
int | 25 |
Máx. por página (cap server-side) |
offset |
int | 0 |
Paginação offset |
page |
int | — | Alternativa a offset (page 1-based) |
fields |
string | * seguro |
Colunas a retornar |
search |
string | — | Busca full-text / icontains em campos indexados |
meta |
string | — | Metadados: filter_count, total_count, * |
Filter (da API Kunk)
Seção intitulada “Filter (da API Kunk)”Exemplos
Seção intitulada “Exemplos”GET /items/orders?filter[status][_eq]=Pagamento%20concluídoGET /items/orders?filter[prescriber_code][_eq]=uuid-aquiGET /items/users?filter[associate_name][_icontains]=silvaGET /items/orders?filter[_and][0][status][_eq]=x&filter[_and][1][date_created][_gte]=2026-01-01JSON em query (alternativa, se o client preferir):
GET /items/orders?filter={"status":{"_eq":"Produção Finalizada"}}O servidor aceita um formato canônico (recomendado: estilo de query aninhada); o outro pode existir como opcional.
GET /items/orders?sort=-date_createdGET /items/orders?sort=status,-id- Prefixo
-= descendente - Múltiplos campos separados por vírgula
GET /items/users?fields=id,associate_name,user_code,status- Sem
fields→ conjunto default (sem campos sensíveis) fields=*→ todos os campos não sensíveis
Include (relações)
Seção intitulada “Include (relações)”Expande objetos relacionados em rotas de domínio (e listagens que suportam o param).
GET /services?include=professional,associateGET /users?include=responsibleGET /users/by-code/:user_code?include=responsible| Collection | Chaves include |
Join |
|---|---|---|
services |
professional |
professional_id → professionals.professional_code |
services |
associate |
associate_user_code → users.user_code |
users |
responsible |
responsible_code → users.user_code |
Chave desconhecida → 400 VALIDATION_ERROR.
Patients (users)
Seção intitulada “Patients (users)”GET /users?patientsGET /users/by-code/:user_code?patientsEmbute array patients nos associados (WHERE responsible_code = user.user_code). Pacientes retornam patients: [].
A presença do param liga o embed (?patients ou ?patients=). Use patients=false para desligar explicitamente.
GET /items/orders?meta=filter_count,total_countGET /items/orders?meta=*| Meta | Significado |
|---|---|
filter_count |
total após filter (sem limit) |
total_count |
total da collection (sem filter) |
Paginação
Seção intitulada “Paginação”GET /items/orders?limit=50&offset=100GET /items/orders?limit=50&page=3Se page e offset forem enviados juntos: page vence, ou retornar 400.
GET /items/users?search=mariaAplica _icontains em um conjunto fixo de colunas por collection (ex.: users → associate_name, fullname, email_account, associate_cpf).
Limites e erros
Seção intitulada “Limites e erros”| Situação | Resposta |
|---|---|
limit > max |
clamp ou 400 VALIDATION_ERROR |
| Campo de filter inválido | 400 |
| Operador não suportado | 400 |
| Sort em coluna inexistente | 400 |
include inválido |
400 |
Implementação
Seção intitulada “Implementação”- Traduzir filter → SQL parametrizado (
WHERE+ binds) - Nunca concatenar valores crus
- Índices no Postgres para colunas filtradas com frequência (
user_code,status,prescriber_code, …) include/patients: batch load (sem N+1)
