Consultar registros
Lista, filtra e exporta os registros de atividade, e devolve os valores disponíveis para montar os filtros.
O registro de atividades responde "quem fez o quê e quando" na loja: logins, alterações de pedido, edição de produto, mudanças de configuração. Esta página tem as três rotas de leitura: a lista paginada, a exportação em CSV e o dicionário de valores para os filtros. Todas exigem o privilégio view_logs.
Listar registros
/api/v1/admin/logsAdminLista paginada dos registros de atividade
Parâmetros de consulta
pageintegerpadrão: 1Página, a partir de 1.
per_pageintegerpadrão: 50Itens por página, de 1 a 100. Acima de 100 não limita: volta para 20.
typestringFamília do evento (igualdade exata).
actionstringAção (igualdade exata).
user_iduuidQuem agiu.
entity_typestringTipo do registro afetado.
entity_idstringId do registro afetado, por exemplo o UUID de um pedido para ver o histórico dele.
event_levelstringNWEGravidade.
date_fromstringInício, RFC 3339 (
2026-10-01T00:00:00Z). Um valor fora desse formato é ignorado sem erro.date_tostringFim, RFC 3339. Mesmo comportamento de
date_from.searchstringTexto livre, sem diferenciar maiúsculas: procura dentro dos detalhes (
content), no tipo e no id do registro.Exemplo de requisição
Resposta
200Registros
Campos da resposta
logsarrayOs registros da página.
null (não []) quando nada casa com os filtros.total / page / per_page / total_pagesintegerPaginação: total de registros que casam, página atual, tamanho e total de páginas.
logs[].iduuidId do registro.
logs[].user_idstringQuem agiu (UUID). Vazio para ações do sistema, como rotinas automáticas.
logs[].user_emailstringE-mail de quem agiu, no momento da ação.
logs[].typestringFamília do evento (
auth, orders, products, settings...). Use Valores dos filtros para ver os existentes.logs[].actionstringO que foi feito (
login, create, delete, bulk_update_status...).logs[].event_levelstringNWEGravidade:
N normal, W aviso, E erro.logs[].entity_type / entity_idstringO tipo e o id do registro afetado (por exemplo
order e o UUID do pedido).logs[].contentobjectDetalhes livres da ação. O formato varia por
type e action.logs[].ip_address / user_agentstringOrigem da requisição.
logs[].created_atstringQuando ocorreu (RFC 3339, UTC).
logs[].payload_before / payload_afterobjectEstado do registro antes e depois da ação, quando a ação registra isso. Ausentes nas demais.
logs[].entity_label / entity_hrefstringRótulo legível do registro afetado e o caminho no painel (
/admin/orders/...) quando existe. Calculados na leitura.logs[].summarystringFrase curta em inglês descrevendo o registro.
logs[].summary_key / summary_paramsstring / objectA mesma frase em forma traduzível (chave de mensagem e variáveis), presente só em alguns tipos de registro.
logs[].actor_user_type / actor_display_namestringcustomer, vendor ou admin, e o nome de quem agiu.logs[].ip_address_label / user_agent_labelstringRótulos legíveis (por exemplo
System para ações internas).Erros
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário administrador. | {"error":"admin access required"} |
| 403 | O usuário é administrador, mas não tem o privilégio exigido. | {"error":"insufficient privileges","privilege_required_any":["view_logs"]} |
| 500 | Falha ao consultar. | {"error":"failed to list logs","detail":"..."} |
Exportar em CSV
/api/v1/admin/logs/exportAdminExporta registros em CSV
Parâmetros de consulta
typestringFamília do evento (igualdade exata).
actionstringAção (igualdade exata).
user_iduuidQuem agiu.
entity_typestringTipo do registro afetado.
entity_idstringId do registro afetado, por exemplo o UUID de um pedido para ver o histórico dele.
event_levelstringNWEGravidade.
date_fromstringInício, RFC 3339 (
2026-10-01T00:00:00Z). Um valor fora desse formato é ignorado sem erro.date_tostringFim, RFC 3339. Mesmo comportamento de
date_from.searchstringTexto livre, sem diferenciar maiúsculas: procura dentro dos detalhes (
content), no tipo e no id do registro.Exemplo de requisição
Resposta
200Arquivo CSV
Campos da resposta
X-Export-TotalheaderQuantos registros casam com o filtro.
X-Export-ReturnedheaderQuantos entraram no arquivo (no máximo 10.000, os mais novos).
X-Export-Truncatedheadertrue quando X-Export-Total é maior que X-Export-Returned.O CSV usa vírgula como separador e cabeçalhos fixos em inglês (diferente dos relatórios, que usam ;). Details é o content serializado como JSON. Não inclui payload_before e payload_after.
Erros
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário administrador. | {"error":"admin access required"} |
| 403 | O usuário é administrador, mas não tem o privilégio exigido. | {"error":"insufficient privileges","privilege_required_any":["view_logs"]} |
| 500 | Falha ao consultar. | {"error":"failed to export logs","detail":"..."} |
Valores dos filtros
/api/v1/admin/logs/filtersAdminValores distintos para montar filtros
Exemplo de requisição
Resposta
200Valores
Campos da resposta
types / actions / entity_types / user_emailsarrayValores distintos que aparecem nos registros recentes, para preencher listas de seleção.
window_daysintegerJanela usada: 90. Valores que só existem em registros mais antigos não aparecem.
Erros
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário administrador. | {"error":"admin access required"} |
| 403 | O usuário é administrador, mas não tem o privilégio exigido. | {"error":"insufficient privileges","privilege_required_any":["view_logs"]} |
| 500 | Falha ao consultar. | {"error":"failed to get filter values","detail":"..."} |