Skip to main content
A API do Tracer retorna os erros como um objeto de detalhes de problema conforme a RFC 9457, servido com o tipo de conteúdo application/problem+json:
Definições dos campos
  • type: Um URI que identifica o tipo de erro, construído como https://errors.lerian.studio/v1/ seguido do código de erro.
  • title: Um resumo breve do problema.
  • status: O código de status HTTP da resposta.
  • detail: Orientação detalhada para resolver o erro. As tabelas abaixo mostram esse conteúdo na coluna message.
  • code: Um identificador único e estável do erro. Geralmente é uma cadeia numérica de quatro dígitos extraída do registro de erros compartilhado da plataforma (por exemplo, 0347); as falhas de autenticação são a exceção e usam a cadeia literal Unauthenticated (consulte a nota abaixo).
  • entityType: A entidade à qual o erro se refere (por exemplo, Rule). Presente apenas quando aplicável.
  • message: A razão legível por humanos, exposta textualmente como campo de nível superior. Presente apenas nas respostas 413 Payload Too Large e 504 Gateway Timeout; os demais erros o omitem.
Nos erros do lado do servidor (HTTP 5xx), title e detail são sanitizados com valores genéricos para que causas internas nunca vazem. Use code e type para identificar o erro. Nos timeouts 504, o campo de nível superior message ainda carrega a razão específica.
Validação em nível de campo As falhas de validação de campos em nível de estrutura retornam o código 0009 com o título Validation Error e um detail que nomeia o campo e a restrição específicos; por exemplo, transactionType must be one of [CARD WIRE PIX CRYPTO]. Exemplos:
Duas famílias de respostas mantêm uma forma plana legada {"code", "title", "message"} em vez do objeto de detalhes de problema, porque são emitidas por um middleware que roda antes da camada da API. Falhas de autenticação: uma API key ausente ou inválida retorna HTTP 401 com "code": "Unauthenticated", "title": "Unauthorized" e "message": "API Key missing or invalid" — compare com a cadeia literal Unauthenticated; um token Bearer que é analisado mas não tem o claim sub obrigatório retorna HTTP 401 com "code": "0474". Capacidade de tenants: o código 0466 retorna HTTP 503 com a mesma forma plana.

Erros gerais


Estes erros podem ser retornados por qualquer endpoint da API do Tracer. O código 0009 também aparece com o título Validation Error quando a validação em nível de campo rejeita uma requisição — veja a nota acima. O código 0143 é retornado com HTTP 413 quando o corpo de uma requisição excede o limite de 100KB nos endpoints de validação e de reservas; a razão também aparece no campo de nível superior message. O código 0497 é retornado com HTTP 431 quando os cabeçalhos da requisição são grandes demais. O código 0484 é retornado com HTTP 404 para uma rota que o serviço não serve, e o código 0485 com HTTP 405 para um método que a rota não aceita.

Erros de data e hora


Erros de paginação


Erros de metadata


Estes erros são gerados pelo mapa metadata de uma requisição de validação (POST /v1/validations) e de uma requisição de reserva (POST /v1/reservations). Uma chave de metadata com mais de 64 caracteres, ou mais de 50 entradas de metadata em uma mesma requisição, é rejeitada com HTTP 400.

Erros de expressão CEL


As regras são escritas como expressões CEL (Common Expression Language). Estes erros são gerados quando uma expressão de regra é criada, atualizada ou avaliada.

Erros de regras


Erros de limites


| 0371 | Limit Name Invalid Chars | Limit name contains invalid characters. | | 0372 | Limit Description Invalid Chars | Limit description contains invalid characters. | | 0373 | Limit Invalid ID | Limit ID is invalid or nil. | | 0378 | Limit Check Failed | Limit check failed. | | 0379 | Limit Nil Input | Limit input cannot be nil. | | 0380 | Limit Immutable Field | Cannot modify immutable field (limitType, asset). | | 0438 | Limit Time Window Mismatch | ActiveTimeStart and activeTimeEnd must both be set or both be nil. | | 0442 | Limit Name Already Exists | Limit name already exists. | | 0447 | Limit Invalid Custom Start Format | Invalid customStartDate format, expected RFC3339. | | 0448 | Limit Invalid Custom End Format | Invalid customEndDate format, expected RFC3339. | | 0449 | Limit Custom Dates Required | CustomStartDate and customEndDate required for CUSTOM limitType. |

Erros de eventos de auditoria


Erros de solicitação de validação


Estes erros são retornados pelos endpoints de validação de transações (POST /v1/validations e as consultas de validação). Os códigos 0422 e 0433 são retornados com HTTP 504 Gateway Timeout0422 quando uma avaliação de validação excede seu prazo, 0433 quando uma consulta de listagem de validações excede o dela. Como em todas as respostas 5xx, detail é sanitizado; a razão específica viaja no campo de nível superior message.

Erros de reserva


Estes erros são retornados pelos endpoints de reserva de uso (/reservations), a superfície de duas fases de reservar / confirmar / liberar. As solicitações de reserva também podem retornar os erros gerais e de solicitação de validação listados acima. | 0487 | Reservation Tenant Required | Reservation: tenant id is required on the multi-tenant reservation surface. |

Erros de multi-tenant e autenticação


A instância retorna HTTP 503 com um cabeçalho Retry-After quando atinge o teto de workers por tenant e por pod; os clientes devem aguardar e tentar novamente. Um token Bearer que é analisado mas não tem o claim sub obrigatório é rejeitado com HTTP 401.

Erros de inicialização de multi-tenant


Estes códigos aparecem apenas na inicialização do serviço, quando MULTI_TENANT_ENABLED=true e uma configuração obrigatória está ausente ou é incompatível. Aparecem nos logs de inicialização e impedem que o serviço inicie; nunca chegam aos consumidores da API /v1/*.

Erros de sonda de prontidão


Estes códigos são expostos pelo endpoint operacional /readyz e pelo ciclo de vida do supervisor de workers. Aparecem no campo error da resposta JSON de /readyz — que carrega apenas o código — e não nas respostas da API /v1/*. O title e a message abaixo descrevem cada código como referência para o operador. O ciclo de /readyz sonda cinco dependências: postgres e rule_cache sempre; redis e tenant_manager apenas em modo multi-tenant (puladas caso contrário); streaming é consultiva — aparece nas verificações e métricas, mas nunca força um 503.