Los clientes deben depender de códigos de error estables y no de texto humano.
Formato común
Cada error devuelve un objeto `error` con código estable, mensaje legible y request_id.
{
"error": {
"code": "provider_capability_not_supported",
"message": "Provider has no tasks support.",
"request_id": "req_123"
}
}Conflictos y etags
Los clientes deben ramificar por código, no por el mensaje.
- `bad_request`: input inválido o campo faltante.
- `unauthorized`: API key ausente o inválida.
- `forbidden`: la key no tiene scope o una política de sesión bloquea la acción.
- `not_found`: el recurso no existe en el alcance actual de organización/aplicación.
- `conflict`: etag vencido, conexión revocada o autorización incompleta.
- `rate_limited`: reintenta después de la ventana de límite documentada.