Queries e filtros
O parâmetro query seleciona a tabela. Os demais parâmetros da query string
são filtros opcionais, validados contra uma whitelist de colunas. Qualquer
parâmetro fora da whitelist (e diferente de inicio/fim) devolve 400.
Regras de filtro
| Tipo de coluna | Como filtra |
|---|---|
| Inteiro | Igualdade exata: coluna = valor. Valor não-inteiro → 400. |
| String | Busca parcial case-insensitive: LOWER(coluna) LIKE '%valor%'. |
inicio / fim | Intervalo de created_at. Veja Filtro de datas. |
Toda query retorna SELECT * com ORDER BY created_at DESC, id DESC e até
1000 linhas por página (max_rows). Havendo mais, a resposta traz
next_cursor — veja Paginação. Os valores voltam como string.
:::info inicio/fim são opcionais
Diferente do que versões antigas do README diziam, nenhuma data é obrigatória
— o único parâmetro obrigatório é query. Mas sem intervalo a query escaneia a
tabela inteira (custo alto). Sempre que possível, informe inicio e fim.
:::
csps
| Coluna | Tipo | Filtro |
|---|---|---|
id | inteiro | igualdade |
data | string | LIKE |
GET /?query=csps&id=34788013
GET /?query=csps&data=font-src&inicio=2026-05-14
GET /?query=csps&inicio=2026-05-01&fim=2026-05-15
audits
Trilha de auditoria (audited gem).
| Coluna | Tipo | Filtro |
|---|---|---|
id | inteiro | igualdade |
auditable_id | inteiro | igualdade |
user_id | inteiro | igualdade |
version | inteiro | igualdade |
associated_id | inteiro | igualdade |
auditable_type | string | LIKE |
user_type | string | LIKE |
username | string | LIKE |
action | string | LIKE |
audited_changes | string | LIKE |
comment | string | LIKE |
remote_address | string | LIKE |
associated_type | string | LIKE |
GET /?query=audits&auditable_type=User&inicio=2026-05-14
GET /?query=audits&user_id=42&inicio=2026-05-01&fim=2026-05-15
GET /?query=audits&action=update&inicio=2026-05-14 08:00:00&fim=2026-05-14 09:00:00
access_logs
Logs de acesso/requisições.
| Coluna | Tipo | Filtro |
|---|---|---|
id | inteiro | igualdade |
user_id | inteiro | igualdade |
customer_id | inteiro | igualdade |
school_id | inteiro | igualdade |
school_year_id | inteiro | igualdade |
status | inteiro | igualdade |
path | string | LIKE |
method | string | LIKE |
controller | string | LIKE |
action | string | LIKE |
ip | string | LIKE |
GET /?query=access_logs&status=200&method=GET&inicio=2026-05-14
GET /?query=access_logs&path=sign_in&inicio=2026-05-14
GET /?query=access_logs&inicio=2026-05-01&fim=2026-05-15
:::note Segurança contra injection
Strings livres (username, action, path…) vão como bind parameters (? /
ExecutionParameters do Athena) — nunca interpoladas no SQL. Inteiros e datas são
validados (int() / date.fromisoformat()) e inlinados como literais. Nomes de
coluna são whitelisted no código.
:::