API Lua

Referência do export.

O contrato v1 recebe uma tabela Lua e retorna imediatamente o resultado da validação e da entrada na fila local.

Assinatura

lua · server
local result = exports.traki:log({
    event = 'admin.player_banned',
    severity = 'warning',
    message = 'Jogador banido',
    author = source,
    target = targetSource,
    metadata = {
        reason = reason,
        duration = duration
    }
})

Campos de entrada

CampoTipoRegra
eventstring · obrigatório3–64 caracteres, iniciando com letra minúscula.
severitystring`debug`, `info`, `warning`, `error` ou `critical`. Padrão: `info`.
messagestringDescrição humana opcional, até 500 caracteres.
authornumberSource do jogador que originou a ação.
targetnumberSource de outro jogador envolvido.
metadatatableContexto JSON específico do evento.

Nomeando eventos

Use um identificador estável no formato categoria.acao. Não coloque IDs, nomes de jogadores ou textos variáveis no nome do evento.

  • economy.purchase
  • inventory.item_transferred
  • admin.player_banned
  • garage.vehicle_stored

Autor e alvo

`author` e `target` são sources de jogadores conectados. O Traki captura nome e identificadores disponíveis naquele instante. Não copie identificadores para `metadata`. Se ambos forem omitidos, o registro representa uma ação do próprio resource.

Retorno

lua
-- Evento aceito na fila local
{ accepted = true, eventId = 'traki-...' }

-- Evento recusado antes de entrar na fila
{ accepted = false, error = 'INVALID_EVENT' }

accepted=true confirma apenas a fila local. A comunicação HTTP ocorre de forma assíncrona e pode usar retentativas.

Limites do contrato

  • Evento completo: até 16 KiB serializados.
  • Metadata: profundidade máxima de 6 níveis e até 100 chaves.
  • Valores: apenas tipos compatíveis com JSON.
  • Resource de origem: detectado automaticamente, até 64 caracteres.
  • Chaves semelhantes a senha, token, secret, cookie ou autorização são ocultadas.

Erros imediatos

CódigoSignificado
INVALID_INPUTA entrada não é uma tabela Lua.
INVALID_EVENTNome ausente ou fora do formato permitido.
INVALID_SEVERITYSeveridade não reconhecida.
INVALID_MESSAGEMensagem inválida ou maior que 500 caracteres.
EVENT_TOO_LARGEEvento serializado excedeu 16 KiB.
QUEUE_PRESSUREA fila cheia preservou eventos de maior prioridade.