Factuarea API
CLI

Agentes y scripting

El contrato agent-first del CLI factuarea — JSON estable por stdout, errores estructurados por stderr, exit codes semánticos, el manifiesto commands --json, scope-check local y confirmación tipada de operaciones irreversibles.

El CLI es agent-first: un asistente de IA o un script puede descubrir toda la superficie en una llamada, obtener salida estable legible por máquina, y ramificar según exit codes semánticos en lugar de parsear prosa.

Descubre la superficie en una llamada

factuarea commands --json

Esto vuelca el manifiesto completo de comandos. Cada entrada lleva:

CampoSignificado
pathEl path del comando, p. ej. invoices create.
argsArgumentos posicionales (path params).
flagsFlags disponibles.
mutatingSi el comando escribe (necesita --live en producción).
binarySi devuelve un binario (PDF/ZIP/XML) en lugar de JSON.
paginatedSi el comando soporta paginación por cursor.
required_scopeEl scope que la API key debe tener, p. ej. invoices:read.
irreversibleSi la operación no se puede deshacer.
exampleUna invocación de ejemplo lista para adaptar.

required_scope e irreversible vienen directamente de las extensiones x-required-scope y x-irreversible de la especificación OpenAPI, así que el CLI y la referencia de la API coinciden por construcción.

Contrato de salida

  • --json emite el cuerpo crudo de la API por stdout.
  • Los errores van a stderr como JSON estructurado — el mismo envoltorio de error que la API: error.{type,code,message,request_id,doc_url}.
  • Reserva stdout para los datos y stderr para los diagnósticos: canaliza stdout a jq, registra stderr.

Exit codes

Ramifica según el exit code, nunca según el mensaje:

CódigoSignificado
0OK
2Error de uso / guard local
3Fallo de autenticación
4Permiso / scope ausente
5Error de validación
6No encontrado
7Límite de peticiones
8Conflicto / idempotencia
9Error del servidor
10Red / timeout

Scope-check local

Antes de una llamada, el CLI comprueba que tu key tiene el required_scope de la operación. Si no lo tiene, el comando falla en local con exit 4 y un mensaje claro — sin gastar un round trip que la API rechazaría con 403 de todos modos.

  • La comprobación solo corre cuando la operación declara un scope y resuelve los scopes de la key de forma lazy (como mucho un GET /v1/account por invocación, memoizado).
  • Un scope * en la key cubre cualquier operación.
  • --skip-scope-check degrada el bloqueo a un aviso y continúa — útil si tus scopes cacheados están desactualizados. El 403 real de la API sigue siendo la última línea de defensa.

Operaciones irreversibles

Las operaciones que la especificación marca x-irreversible (borrados, void, conversiones terminales, emisión fiscal, rotación de certificado, olvido GDPR…) piden una confirmación tipada antes de la llamada:

factuarea invoices delete <uuid> --confirm <uuid>
  • Pasa --confirm <id> con el id del recurso para continuar.
  • En un contexto no interactivo (--no-input o sin TTY) sin --confirm, el comando se niega con exit 2 en lugar de adivinar.

Consulta la guía de scopes e irreversibilidad para la lista completa de qué operaciones llevan cada scope y cuáles son irreversibles.

¿Quieres que el agente maneje Factuarea a través de tools en lugar de comandos del CLI? Conéctalo al servidor MCP — la misma superficie expuesta como tools, con autenticación OAuth y por API key.

En esta página