You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Empresas y permisos por conexión (ADR-0006 del monorepo): tras el login
OAuth, el CLI abre una página de FacturaDirecta para elegir a qué empresas
accede y con qué permisos en cada área, espera a que lo confirmes y guarda
la conexión en el perfil (id, secreto, URL de gestión y nombre; permisos 0600). Cada petición a la API lleva la cabecera FD-Connection. Con --device o --no-browser la URL solo se imprime. Si cancelas o la
solicitud caduca, el login falla sin guardar nada (el perfil anterior queda
como estaba); si el servidor aún no admite conexiones, avisa y sigue sin
ella. Con --api-key no hay paso de conexión.
login --no-connection: se salta la conexión (acceso a todas tus empresas
con los permisos de tu rol) e inicia sesión con el cliente OAuth facturadirecta-api, el único con el que la API admite peticiones sin
conexión.
facturadirecta auth permissions: abre (o imprime, con --no-browser) la
página para cambiar las empresas y permisos de la conexión del perfil, sin
volver a iniciar sesión. Sin conexión, falla con connection_required y la
pista de login.
auth status y auth profile muestran la conexión (aplicación, id y URL de
gestión); auth profile, además, los permisos de la conexión en cada
empresa.
whoami muestra la conexión y los permisos de la conexión en cada empresa.
En JSON (whoami --json, la llamada inicial de los agentes) añade connection (id, clientName y manageUrl: la de /profile o, si no
la trae, la del perfil guardado; nunca el secreto) y, en cada empresa de companies y en company, permissions (área → read, full…) y manageUrl. Sin conexión esos campos no aparecen.
Nuevos códigos de error para los 401/403 de la API con conexiones, los
mismos que el MCP (exit 3): connection_permission_insufficient y company_not_in_connection (pista facturadirecta auth permissions, con data.manageUrl y data.companyId), user_role_insufficient, plan_api_not_available, token_scope_missing (pista login --scope full), connection_required y connection_revoked (pista login). Con estos
códigos, el texto para humanos es HTTP 403: <mensaje> en vez del cuerpo
JSON. Sin code, todo sigue igual.
Variables de entorno para probar contra otro entorno: FACTURADIRECTA_SERVER (servidor de la API que el login guarda en el
perfil) y FACTURADIRECTA_OAUTH_CLIENT_ID (fuerza el cliente OAuth del
login; por defecto facturadirecta-cli y, con --no-connection, facturadirecta-api).
Comando oculto facturadirecta __surface: imprime en JSON el árbol completo
de comandos visibles (ruta, padre, textos, uso, subcomandos y flags propias),
las flags globales y los grupos de la ayuda raíz. make surface-json lo
escribe en dist/commands.json.
Cada release adjunta ese JSON como asset commands.json en facturadirecta/cli, con URL estable https://github.com/facturadirecta/cli/releases/latest/download/commands.json.
La web de desarrolladores genera con él la referencia del CLI.
Cambiado
El login OAuth usa por defecto el cliente propio del CLI, facturadirecta-cli (antes facturadirecta-api, compartido con Zapier y
las integraciones): con él, la API exige la conexión (connection_required
sin ella). Necesita ese cliente en el realm de Keycloak (tarea 6 de tools/mcp-connect-clients.sh del repo keycloak) y la API con conexiones.
Los perfiles existentes siguen funcionando con facturadirecta-api hasta el
siguiente login. --no-connection usa facturadirecta-api.
logout revoca la conexión del perfil en FacturaDirecta antes de borrarlo;
si no puede, avisa y cierra la sesión igualmente. Volver a iniciar sesión
sobre un perfil con otra conexión también la revoca.
El perfil guarda el cliente OAuth del login y el token se renueva siempre
con él (los perfiles anteriores, con facturadirecta-api).