uloggdDesarrolladores
Portal de desarrolladoresuloggd
EmpezarRecursosArcade
Portal de desarrolladoresuloggdVisión generalAutenticaciónPermisosLímites de usoErroresPaginaciónVersionado

Errores

Una sola forma, siempre, incluso en el 500.

code es estable y existe para compararse. message es para quien lee un log y no es contrato: puede reescribirse en cualquier momento.

{
  "error": {
    "code": "insufficient_scope",
    "message": "This key does not hold library.write.",
    "scope": "library.write"
  }
}
CódigoEstadoSignifica
unauthorized401La petición no trajo identidad alguna: ni llave, ni sesión de este origen.
forbidden403La identidad es correcta y una regla lo rechazó igual: un bloqueo, una cuenta privada, un espacio de comentarios cerrado. Cuando el rechazo es uno de esos, el mensaje dice cuál.
invalid_key401Desconocida, revocada o expirada. Las tres no se distinguen.
insufficient_scope403La llave no tiene el permiso, que viene nombrado en el cuerpo.
not_found404No existe, o no es algo que el dueño pueda ver.
invalid_request400Falta un campo o no se acepta. El mensaje dice cuál.
conflict409Eso ya existe.
rate_limited429Trae retry_after en segundos.
internal500Algo falló aquí. No se dice nada sobre el esquema.
unavailable503Hoy solo en GET /api/v1/arcade/jwks, con reason identity_unavailable: el servidor todavía no tiene las llaves que firman la identidad de Arcade. Inténtalo de nuevo más tarde.

Otros miembros

Junto a code y message, un rechazo puede traer:

  • reason: una palabra para actuar, más precisa que el code, en los rechazos de Arcade y en algunos de la cuenta, como reauthentication_required y mfa_required. Un cliente que encuentra uno que no conoce actúa según el code.
  • field: el campo rechazado, con invalid_request.
  • detail: una causa más fina, como too_large en un media_invalid.
  • retry_after: cuántos segundos esperar, con rate_limited.
  • scope: el permiso que faltó, con insufficient_scope.
  • check: el resultado de la verificación de URL, cuando se rechaza enviar un lanzamiento de Arcade o ponerlo en vivo.
  • second_factor: con reauthentication_required, en las rutas que aceptan un código en lugar de iniciar sesión de nuevo, si sirve un código de la verificación en dos pasos.

Los rechazos de Arcade, con cada reason, están en la tabla de rechazos de Arcade.

De dónde viene un rechazo

La mayoría de los rechazos son de la base de datos, no del handler. Una constraint, una columna no nula, un disparador de límite o una política de fila levanta el error, y ese error se traduce a la forma de arriba.

Solo los rechazos levantados a propósito llevan su mensaje hacia fuera. Cualquier otro responde internal sin decir nada más, porque un mensaje de error imprevisto es una descripción del esquema.

404 not_found cubre dos casos a propósito: el recurso no existe, y el recurso existe pero el dueño de la llave no puede verlo. Distinguirlos sería una forma de preguntar si la lista privada de alguien existe.

Límites de uso

Contados por llave, no por cuenta, e informados en cada respuesta.

Paginación

Un objeto de página, en cada colección.

En esta página

Otros miembrosDe dónde viene un rechazo