Skip to main content
Una app recibe errores de dos formas:
  • /oauth/token y /oauth/revoke responden como OAuth: un JSON con error y error_description.
  • La API (/v1) responde como siempre: application/problem+json con su code. Lee Errores.

La conexión: lo que vuelve a tu dirección de retorno

invalid_scope e invalid_target vuelven a tu web solo si quien conecta puede conectar tu app: una app en desarrollo no le devuelve nada a alguien que no es propietario del negocio que la registró. Si el client_id o la redirect_uri no son válidos, o falta el PKCE, Craqui no vuelve a tu web: el propietario ve en la pantalla de conexión que la app no está bien configurada. Revisa la URL contra Conectar un negocio.

/oauth/token y /oauth/revoke

Una respuesta 401 trae el header WWW-Authenticate: Basic.

La API con el token de una app

Además de los errores de siempre, el token de una app puede recibir estos: Los 401 traen el header WWW-Authenticate: Bearer error="invalid_token", resource_metadata="https://api.craqui.com/.well-known/oauth-protected-resource/v1".

Las pausas no desconectan

Dos situaciones dejan la conexión en pausa, sin cortarla:
  • El plan del negocio deja de incluir la API. La API responde plan_required, pero el refresh token sigue renovándose: no lo descartes. Cuando el negocio vuelve a un plan con API, todo funciona sin conectar de nuevo.
  • Quien conectó tu app deja de ser propietario. La API responde app_connection_suspended, y el refresh token también sigue renovándose. Si esa persona vuelve a ser propietaria, todo funciona sin conectar de nuevo. Si no, otro propietario del negocio conecta tu app desde tu web, y esa conexión reemplaza a la anterior.
En las dos, el propietario ve la conexión En pausa en sus aplicaciones conectadas, con el motivo. Una suspensión de tu app tampoco desconecta: si la reactivamos, los mismos tokens vuelven a funcionar.

Cuánto tarda un corte

Desconectar, suspender tu app o perder el rol de propietario se nota en la API en menos de un minuto: puede que algunos pedidos de los segundos siguientes todavía funcionen. La renovación de tokens, en cambio, se corta en el primer intento cuando la conexión se desconectó (invalid_grant) o tu app está suspendida (invalid_client).

Límites

Una app tiene dos límites por minuto, y un pedido pasa solo si los dos tienen lugar:
  • Por conexión son los mismos números que una clave: un negocio no le da a tu app más que a cualquier otro sistema.
  • El límite por app protege a todos los negocios de un error en tu código. Si tu app crece y lo necesitas más alto, escríbenos: lo subimos a 5.000 lecturas, 1.500 escrituras y 500 de plata por minuto.
  • Un pedido que la conexión ya rechazó no cuenta para el total de la app: un negocio con mucho movimiento no le gasta el límite a los demás.
Los headers RateLimit-Policy y RateLimit de cada respuesta dicen el límite que está más cerca de cortar, el de la conexión o el de la app. Cuando se acaba, la respuesta es 429 rate_limited con Retry-After. Lee Límites. /oauth/token y /oauth/revoke tienen su propio límite: 60 pedidos por minuto por app, sumando los dos y todos los negocios. Renueva cada access token solo cuando está por vencer, no en cada pedido, y reparte las renovaciones en el tiempo en vez de renovar todos los negocios a la misma hora.