Factuarea API

Scopes y permisos

El catálogo de scopes del consentimiento OAuth, cómo se mapea a los scopes detallados que aplican las tools, el super-scope y el gating por plan/módulo.

Cada tool MCP declara el scope que una credencial debe tener para invocarla. Los scopes funcionan de forma ligeramente distinta según el canal:

  • Las API keys se crean directamente con scopes detallados (resource:action, p. ej. invoices:read) — el mismo catálogo cerrado que usa la API REST. También puedes conceder el super-scope *.
  • Los tokens OAuth reciben scopes con punto (resource.action, p. ej. invoices.read) en la pantalla de consentimiento. El servidor los traduce a los scopes detallados automáticamente, de modo que ambos canales aplican el mismo conjunto en el límite de la tool.

Catálogo de consentimiento OAuth

Estos son los scopes que un usuario puede conceder a una app de terceros en la pantalla de consentimiento. Hay 59 scopes simples más 3 macros.

Scopes simples

Cada uno concede una capacidad. La columna Maps to muestra el scope detallado que aplican las tools — la capa de consentimiento traduce los scopes OAuth con punto a estos automáticamente. La columna Sensitive marca los scopes que la pantalla de consentimiento destaca y no marca por defecto.

Perfil

ScopeConcedeMaps toSensitive
profile.readLeer tu nombre, email y empresa activa.account:readno

CRM — clientes y proveedores

ScopeConcedeMaps toSensitive
clients.readListar y leer clientes.clients:readno
clients.writeCrear y actualizar clientes.clients:writeno
clients.deleteEliminar clientes.clients:delete⚠ sí
suppliers.readListar y leer proveedores.suppliers:readno
suppliers.writeCrear y actualizar proveedores.suppliers:writeno
suppliers.deleteEliminar proveedores.suppliers:delete⚠ sí

Catálogo — productos, series, impuestos

ScopeConcedeMaps toSensitive
products.readListar y leer el catálogo de productos.products:readno
products.writeCrear y actualizar productos.products:writeno
products.deleteEliminar productos.products:delete⚠ sí
series.readLeer series de numeración.series:readno
series.writeCrear y actualizar series de numeración.series:writeno
taxes.readLeer tipos impositivos y retenciones.taxes:readno
taxes.writeCrear y actualizar tipos impositivos.taxes:writeno

Ventas — facturas, presupuestos, proformas, albaranes

ScopeConcedeMaps toSensitive
invoices.readListar y leer facturas.invoices:readno
invoices.writeCrear y actualizar facturas.invoices:writeno
invoices.sendEnviar facturas por email.invoices:sendno
invoices.deleteEliminar facturas en borrador.invoices:delete⚠ sí
invoices.annulAnular facturas emitidas.invoices:void⚠ sí
invoices.create_correctiveEmitir facturas rectificativas.invoices:writeno
quotes.readListar y leer presupuestos.quotes:readno
quotes.writeCrear y actualizar presupuestos.quotes:writeno
quotes.sendEnviar presupuestos por email.quotes:sendno
quotes.deleteEliminar presupuestos.quotes:delete⚠ sí
quotes.convert_to_invoiceAceptar/rechazar y convertir presupuestos en facturas.quotes:transitionno
proformas.readListar y leer facturas proforma.proformas:readno
proformas.writeCrear y actualizar proformas.proformas:writeno
proformas.sendEnviar proformas por email.proformas:sendno
proformas.deleteEliminar proformas.proformas:delete⚠ sí
proformas.convertConvertir proformas en facturas.proformas:transitionno
delivery_notes.readListar y leer albaranes.delivery_notes:readno
delivery_notes.writeCrear, actualizar y enviar albaranes.delivery_notes:writeno
delivery_notes.sendEnviar albaranes por email.delivery_notes:writeno
delivery_notes.deleteEliminar albaranes.delivery_notes:delete⚠ sí
delivery_notes.convertConvertir albaranes.delivery_notes:transitionno
delivery_notes.signMarcar como entregados / firmar albaranes.delivery_notes:transition⚠ sí

Compras

ScopeConcedeMaps toSensitive
purchase_invoices.readListar y leer facturas de compra.purchase_invoices:readno
purchase_invoices.writeCrear y actualizar facturas de compra.purchase_invoices:writeno
purchase_invoices.mark_paidMarcar facturas de compra como pagadas.purchase_invoices:transition⚠ sí
purchase_invoices.deleteEliminar facturas de compra.purchase_invoices:delete⚠ sí

Los scopes de pago son asimétricos entre ventas y compras. Registrar un pago en una factura de venta (register_invoice_payment) requiere invoices:write — edita la factura. En cambio, registrar un pago en una factura de compra (register_purchase_invoice_payment) requiere purchase_invoices:transition, porque en el lado de compra un pago hace avanzar la factura por su ciclo de vida (pendiente → pagada) en vez de editarla.

Facturas recurrentes

ScopeConcedeMaps toSensitive
recurring.readListar y leer plantillas recurrentes.recurring_invoices:readno
recurring.writeCrear y actualizar plantillas recurrentes.recurring_invoices:writeno
recurring.pausePausar plantillas recurrentes.recurring_invoices:transitionno
recurring.resumeReanudar plantillas recurrentes.recurring_invoices:transitionno
recurring.generate_nowEmitir una factura recurrente manualmente.recurring_invoices:transition⚠ sí
recurring.deleteEliminar plantillas recurrentes.recurring_invoices:delete⚠ sí

Cumplimiento (VeriFactu)

ScopeConcedeMaps toSensitive
verifactu.readLeer registros, eventos, certificados y configuración de VeriFactu.verifactu:readno

Webhooks

ScopeConcedeMaps toSensitive
webhooks.readListar webhook endpoints y entregas.webhooks:readno
webhooks.writeCrear, actualizar, rotar y hacer ping de webhook endpoints.webhooks:write⚠ sí
webhooks.deleteEliminar webhook endpoints.webhooks:delete⚠ sí

Personal — control horario

Datos de empleados, fichajes, ausencias, horarios de trabajo, presencia, festivos y exportaciones de nómina. Todos los scopes de personal son sensibles (PII de empleado y datos de cumplimiento) y requieren el módulo de plan control_horario — consulta Gating por plan y módulo. Las lecturas, employees.write y la generación de exportaciones de nómina se conceden en la pantalla de consentimiento; las acciones privilegiadas de escritura y transición no tienen scope OAuth con punto y son solo API key (listadas más abajo en los scopes detallados).

ScopeConcedeMaps toSensitive
employees.readListar y leer empleados.employees:read⚠ sí
employees.writeCrear y actualizar empleados.employees:write⚠ sí
time_entries.readLeer fichajes, saldos y hojas de horas mensuales.time_entries:read⚠ sí
absences.readListar y leer ausencias, políticas y solicitudes.absences:read⚠ sí
work_schedules.readLeer horarios de trabajo y sus asignaciones.work_schedules:read⚠ sí
presence.readLeer la presencia en vivo y diaria.presence:read⚠ sí
holidays.readLeer el calendario de festivos de la empresa.holidays:read⚠ sí
payroll_exports.readLeer las exportaciones de nómina generadas.payroll_exports:read⚠ sí
payroll_exports.writeGenerar exportaciones de nómina.payroll_exports:write⚠ sí

Macros

Paquetes de conveniencia que se expanden a una lista de scopes simples en el momento de emitir el token. El token persiste los scopes expandidos — las macros nunca se almacenan.

MacroConcedeSensitive
factuarea.readAcceso de lectura completo a todo (sin escrituras).no
factuarea.writeLeer todo, además de crear/actualizar documentos y enviar emails.no
factuarea.fullLeer, escribir, enviar y acciones destructivas (eliminar, anular, marcar como pagada, firmar). Excluye las escrituras de VeriFactu.⚠ sí

El super-scope *

Una credencial que tiene * cubre todos los scopes — las 391 tools en el caso de una API key. Es el equivalente a una clave de propietario. Resérvalo para migraciones puntuales o automatizaciones de propietario totalmente confiables; para todo lo demás, prefiere el conjunto de scopes más reducido. El super-scope está disponible para las API keys; el consentimiento OAuth concede scopes explícitos (o macros), nunca un * directo.

Cómo los scopes OAuth se convierten en scopes detallados

Cuando se emite un token OAuth, sus scopes con punto se traducen una vez al catálogo detallado que aplican las tools. Conviene conocer algunas reconciliaciones:

  • recurring.* se mapea al recurso recurring_invoices:*.
  • invoices.create_corrective se mapea a invoices:write (crear es una escritura).
  • invoices.annul se mapea a invoices:void.
  • Las acciones de ciclo de vida (*.convert, *.sign, *.pause, *.resume, *.generate_now, *.mark_paid, quotes.convert_to_invoice) se mapean al scope :transition del recurso.
  • Cualquier scope de lectura sobre un documento también concede las utilidades de lectura transversales pdfs:read (descargar su PDF/recibo) y events:read (su registro de actividad).
  • verifactu.write y delivery_notes:gdpr_forget no tienen scope OAuth con punto — son inalcanzables vía OAuth por diseño.
  • facturae:read / facturae:write aún no están en el catálogo de consentimiento OAuth — las tools de FacturaE (FACe) solo son accesibles con API key por ahora.

Scopes detallados sin scope OAuth (solo API key)

Algunos scopes detallados viven en el catálogo cerrado recurso:accion que usan las API keys, pero no tienen equivalente OAuth con punto — nunca se conceden a través de una pantalla de consentimiento de terceros y solo son accesibles con API key. Concédelos directamente en la key (o vía el super-scope *). Algunos están gateados por un módulo de integración —entonces la empresa de la key debe tener el plan correspondiente (consulta Gating por plan y módulo)—; el resto son scopes de cuenta propia y de gestoría.

ScopeConcedeGating de módulo
stripe_autoinvoicing:readLeer el estado de la integración Stripe Connect, la configuración de auto-facturación y las cuentas conectadas, y listar cobros/rectificativas auto-facturados.integration_stripe
stripe_autoinvoicing:writeActivar/desactivar la auto-facturación de cobros Stripe, fijar la serie auto-emitida y editar/desconectar cuentas conectadas.integration_stripe
payouts:readLeer los payouts de Stripe ingeridos y su estado de conciliación bancaria.integration_stripe

Estos scopes habilitan las tools de Pagos y pasarelas.

Un segundo grupo de scopes solo para API key gobierna la gestión de cuenta propia y de gestoría — tus propias credenciales y, para asesorías, las empresas hijas que gestionas y sus API keys. companies:* requiere el módulo del plan de gestoría; el resto no tienen gating de módulo.

ScopeConcedeGating de módulo
account:writeGestionar tus propias API keys (crear, rotar, revocar) y actualizar la personalización de la cuenta.
companies:readListar y leer las empresas gestionadas (sub-cuentas hijas).gestoria
companies:writeCrear, actualizar, activar y desactivar empresas gestionadas.gestoria
companies:deleteArchivar empresas gestionadas.gestoria
api_keys:readListar y leer las API keys de las empresas gestionadas.
api_keys:writeCrear, rotar y revocar las API keys de las empresas gestionadas.
api_keys:deleteEliminar permanentemente las API keys de las empresas gestionadas.

Un tercer grupo cubre las acciones de escritura y transición de personal (control horario). Sus lecturas se conceden por OAuth (consulta los scopes de consentimiento de Personal más arriba), pero estos scopes privilegiados no tienen equivalente OAuth con punto — son solo API key, el espejo de verifactu:write. Todos requieren el módulo de plan control_horario.

ScopeConcedeGating de módulo
employees:deleteEliminar empleados de forma permanente.control_horario
time_entries:writeFichar entrada/salida, registrar entradas manuales, gestionar correcciones de fichaje y el cierre mensual del registro.control_horario
absences:writeCrear y gestionar tipos, políticas y solicitudes de ausencia.control_horario
absences:transitionAprobar, rechazar y cancelar solicitudes de ausencia.control_horario
work_schedules:writeCrear, actualizar, asignar y archivar horarios de trabajo.control_horario

verifactu:write, facturae:read, facturae:write y delivery_notes:gdpr_forget también son scopes detallados solo para API key (descritos arriba) — se aplican en la frontera de la tool como cualquier otro scope, pero no tienen contraparte en el consentimiento OAuth.

Gating por plan y módulo

La mayoría de las tools publicadas solo aplican una comprobación de scope: son accesibles en cuanto la credencial tiene el scope requerido. Dos familias además están limitadas por módulo. Las tools de Pagos y pasarelas mapean sus scopes (stripe_autoinvoicing:*, payouts:read) al módulo integration_stripe. Las tools de personal (Empleados, Asientos de empleado, Horarios de trabajo, Control horario, Ausencias, Presencia, Festivos) mapean sus scopes (employees:*, time_entries:*, absences:*, work_schedules:*, presence:read, holidays:read, payroll_exports:*) al módulo control_horario. Cuando el plan de la empresa no incluye el módulo, el servidor oculta esas tools de tools/list y devuelve module_not_in_plan (-32005) ante una llamada directa.

  • Los límites de uso del plan (p. ej. cuotas mensuales de documentos) se aplican en el momento de la llamada y se manifiestan como plan_limit_exceeded (-32004). Consulta Errores y límites de peticiones.

Toda la superficie pública MCP también requiere que la empresa tenga un plan de Factuarea activo — el acceso a la API está incluido en todos los planes; de lo contrario, cada llamada devuelve addon_not_active (-32007).

En esta página