Skip to Content
Urlizo API Docs
Errors

Errors

Envelope real aplicado pelo GlobalExceptionFilter — confirmado no código em packages/common/src/filters.ts e exceptions.ts. Nenhum código foi criado ou granularizado aqui.

{ "success": false, "error": { "code": "RESOURCE_NOT_FOUND", "message": "Link \"abc123\" not found", "details": { "resource": "Link", "identifier": "abc123" } }, "requestId": "req-01J0000000000000000000000" }

details só aparece quando a exceção carrega detalhes. Toda resposta de erro inclui o header X-Request-Id (e X-Correlation-Id quando houver correlação).

Códigos reais

VALIDATION_ERROR · HTTP 400

Payload inválido (Zod). Sempre 400 — nunca 422.

RESOURCE_NOT_FOUND · HTTP 404

Recurso inexistente. NotFoundException(resource, id?) inclui details { resource, identifier }. Também quando o recurso é de outro workspace.

UNAUTHORIZED · HTTP 401

Não autenticado. Token/chave ausente, inválido ou expirado.

FORBIDDEN · HTTP 403

Sem permissão. API Key sem o scope exigido (RequirePermissionGuard).

CONFLICT · HTTP 409

Conflito. Slug duplicado, domínio em uso, subdomínio reservado/em uso, URL de webhook não-HTTPS.

RATE_LIMIT_EXCEEDED · HTTP 429

Rate limit excedido. Guards de rate limit (ex.: subdomain no Dashboard, 60/60). Details trazem retryAfter.

QUOTA_EXCEEDED · HTTP 409

Limite do plano excedido. QuotaService.enforceQuota. Também 409 — distinguir pelo code. Details: { scopeType, limit, current }.

BAD_REQUEST · HTTP 400

Requisição inválida genérica. Ex.: webhook Stripe sem raw body ou sem header stripe-signature.

NOT_FOUND · HTTP 404

Não encontrado genérico. Exceções HTTP sem código de domínio.

INTERNAL_SERVER_ERROR · HTTP 500

Erro interno. Exceções não mapeadas — inclui Zod .parse() manual do Analytics (params inválidos).