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
facturadirecta api <operación> [ids…] (ADR-0008): llama a cualquier
operación de la API por su nombre de acción (el de describe y del servidor
MCP) o su operationId, también las que no tienen comando propio (pedidos,
órdenes de compra, versiones, campos personalizados, stock, actividad…).
Los ids de la ruta van como argumentos y la query con -p nombre=valor;
el cuerpo, con --data '<json>', --data @fichero o por stdin.
--idempotency-key la envía donde la espera la operación; --dry-run
imprime la petición, sin credenciales, sin enviarla; --output guarda la
respuesta.
Las escrituras necesitan login --scope full y los borrados
irreversibles, confirmación (--yes), como los comandos dedicados.
describe añade la invocación genérica (cli.api).
La salida JSON (también la de --jq y la de los errores en modo agente) ya
no escapa <, > ni & como \u003c, \u003e y \u0026: los textos y las
formas de uso (<id>) se leen tal cual. Sigue siendo el mismo JSON.
commands.json (la superficie que publica cada release) añade, en cada
comando, las operaciones de la API a las que llama (operations, con operationId y action), y apiOnly, las operaciones sin comando
dedicado, que se llaman con facturadirecta api. Son campos nuevos: los
existentes no cambian.
facturadirecta describe [objetivo…] (ADR-0008 del monorepo): el contrato de
cualquier operación de la API sin llamarla. Muestra parámetros, la forma y el
esquema del cuerpo, el esquema de la respuesta, los ejemplos de la
documentación, las notas de uso y los comandos del CLI que la llaman.
Admite la acción (create_invoice, con los nombres del servidor MCP), el
operationId (createInvoice), la ruta de un comando (invoices create) o
una sección (invoices, delivery-notes); sin objetivo, lista las
secciones.
Con -j la salida es JSON. --schema body|response imprime solo el
esquema completo, y --example [n] el cuerpo de ejemplo, listo para --data.
La ayuda (--help) de cada comando que llama a la API termina con la forma
del cuerpo (Cuerpo (--data o stdin): {"content" (obligatorio), "tags"}) y
el describe de su operación.
--search <texto> en invoices list, estimates list, delivery-notes list, bills list, payrolls list y recurring list:
búsqueda aproximada en el texto del documento (título, líneas, notas) y en
el nombre de su contacto, con el mismo criterio que la búsqueda rápida de la
web (sale del contrato de la API).
Informes de FacturaDirecta en facturadirecta accounting, con las mismas
cifras que la web y calculados en el servidor:
accounting results: ingresos, gastos y beneficio por origen, en todos los
planes; --breakdown month|quarter|year (con --total) o --compare previousPeriod|previousYear (con --difference, --variance).
accounting results-documents --category <categoría>: los documentos que
forman una cifra del resumen.
accounting profit-loss, accounting balance-sheet y accounting trial-balance: pérdidas y ganancias, balance de situación y
sumas y saldos, para las empresas con el módulo de Contabilidad.
whoami indica en cada empresa si tiene el módulo de Contabilidad
(accountingModule), con una conexión por empresa.
Adjuntos, como en el MCP: --summary indica en facturas, presupuestos y
gastos cuántos ficheros adjuntos tiene cada documento (attachments, solo si
tiene alguno), y fetch los enumera al final del texto y en metadata.attachments con su url, que es pública y permanente.
La ayuda de statements reconcile-new explica cómo cobrar o pagar una
factura, un gasto o una nómina con el movimiento: {"document": "<id>"},
también entre monedas; amount para un parcial entre monedas; lines solo
para movimientos sin documento. La de invoices pay, bills pay y payrolls pay recomienda conciliar el movimiento cuando el cobro o pago sale
del extracto bancario.
Cambiado
products list --search usa ahora la búsqueda global de la API (título,
referencia y descripciones del producto); el filtro por nombre que antes
hacía --search es ahora --title.
journal solo responde para las empresas con el módulo de Contabilidad (con
una conexión por empresa): sin él, falla con plan_limit_exceeded y la pista facturadirecta accounting results.
Los límites del plan (plan_limit_exceeded, exit 3) y los informes que
tardan demasiado (report_query_timeout, exit 6) tienen su propio error: ya
no sugieren login --scope full ni «revisa los parámetros».
Los errores de validación de la API (invalid_input) traen en detail los
mensajes de errors[] con su campo y, cuando el cuerpo no cumple el esquema
(«Documento con formato incorrecto»), la ruta y el motivo de cada campo
rechazado (hasta 5), como el MCP. Antes detail solo traía el mensaje
genérico y un agente no sabía qué corregir.
--help de los subcomandos muestra su descripción antes del uso, como la
ayuda por defecto de Cobra. Antes solo mostraba el uso, y los textos largos
(accounting, auth logout, auth permissions…) no se veían.
Cambiado (BREAKING)
Los borrados irreversibles piden confirmación: los delete de facturas,
presupuestos, albaranes, gastos, nóminas, recurrentes, contactos, productos,
métodos de pago, API keys y webhooks, y los attachments delete.
En una terminal preguntan [s/N].
En scripts y agentes (sin terminal, o con -j, -q, --agent o --jq)
hace falta --yes. Sin él fallan con confirmation_required (exit 2) y no
llaman a la API.
inbox archive y statements unreconcile no la piden porque se pueden
deshacer.
La API pública y los SDK no cambian: la confirmación es solo del CLI.
Eliminado (BREAKING)
accounting summary y accounting accounts. Sumaban el diario en el CLI,
recorriendo hasta 10.000 apuntes, y en las empresas grandes eran lentos e
incompletos.
Corregido
<recurso> attachments list -q devuelve la lista de adjuntos, como el resto
de listados (imprimía el objeto {"items": …} entero), y admite --ids-only
y --count. Encontrado probando contra el sandbox.
describe de update_bill y de los update_* de documentos numerados avisa
de los campos de la lectura que la escritura no admite
(content.accounting, content.books y content.import en los gastos, y content.main.manualTotals en los documentos numerados), y la skill lo
dice. Reenviar el content de un gasto tal como lo devuelve get daba 400.
Ejemplos de la skill y del README: las altas y modificaciones usaban {"main": {...}}, y el contrato exige {"content": {"type": "<tipo>", "main": {...}}}. Los envíos por email
van con {"to": [...]} (no emails), invoices substitution con {"contact", "substitutedInvoices"}, los pagos llevan bank y el alta de
webhooks, name. El alta de contactos lleva currency y accounts (vacío =
cliente) y la de productos, sales.account: comprobado contra la API, que
los exige aunque algunos ejemplos de api-docs los omitan.
La skill explica además que update sustituye el contenido completo (hay
que partir de get), que invoices list y bills list solo muestran
borradores con --draft only|all, cómo conciliar con document, cómo
tratar los adjuntos y que search no busca en el texto de los documentos
(para eso, --search en los listados). Ya no dice que search use la misma
heurística que el MCP, que ahora usa la búsqueda global de la API.
La regla de update de la skill dice lo que hace la API (comprobado contra
el sandbox): en contactos, productos y métodos de pago los obligatorios se
envían siempre (no conservan su valor) y no hay líneas ni docNumber; en
los documentos solo se conservan los campos que FacturaDirecta completa por
su cuenta, y docNumber va tal cual solo en facturas, presupuestos y
albaranes. tags y webhooks endpoints update no sustituyen el contenido.
describe de las operaciones de endpoints y eventos de webhooks y de los
adjuntos de gastos, pedidos, albaranes, presupuestos, nóminas, órdenes de
compra y recurrentes daba la descripción y los ejemplos de otra operación.
Por ejemplo, la del PUT de un endpoint describía el alta, y ahora dice
que es una actualización parcial. Ahora cada una tiene los suyos y su
enlace a la documentación lleva a su sección. Los enlaces con tilde en el
encabezado (23 operaciones) tampoco llevaban a su sección en GitHub.
Migración
Scripts y agentes que borran: añade --yes a delete y attachments delete
después de confirmar el borrado.
accounting summary → accounting results para ingresos, gastos y
beneficio (--group-by month → --breakdown month), o accounting trial-balance --account <prefijo> para los totales de una
cuenta o grupo.
accounting accounts → accounting trial-balance, que lista las cuentas con
movimientos y su saldo.