Documentación

API de Moon Inventory

Una API REST sobre HTTPS que expone el mismo modelo de datos que usa la aplicación: inventario, ventas, servicios, gastos, compras y reportes. Todas las respuestas son JSON y todo está delimitado a tu organización.

REST · JSON420 endpoints39 módulos Plan Empresarial

Introducción

La API usa convenciones REST: sustantivos en la ruta, verbos HTTP para la acción, códigos de estado estándar y JSON en peticiones y respuestas.

URL base

https://mooninventoryapi.onrender.com/api

Todas las rutas de esta documentación se muestran completas e incluyen el prefijo /api. La API no está versionada por URL todavía; los cambios incompatibles se anunciarán con antelación por correo a los administradores de la organización.

Comprobación rápida

bash
curl https://mooninventoryapi.onrender.com/api/health

Requisitos

El acceso programático es una funcionalidad del plan Empresarial. Las claves de API solo pueden crearse y usarse si tu organización tiene ese plan activo.

Si tu plan no lo incluye, cualquier petición autenticada con una clave responde 403 con el código FEATURE_NOT_IN_PLAN.

Ver planes

Autenticación

La API acepta dos tipos de credencial. Para integraciones usa siempre una clave de API; el token de sesión (JWT) existe para la aplicación web y caduca a las 24 horas.

1. Crear una clave

Desde la aplicación: Configuración → Claves de API → Crear clave. La clave se muestra una sola vez; guárdala en tu gestor de secretos en ese momento, porque solo almacenamos su hash y no podemos recuperarla después.

Una clave tiene el formato:

mk_live_XSb9m2q7Kv1pLd0zR4tYhN8jWcE3gAuF6oQi5rTvBnM

2. Enviarla en cada petición

Se acepta en cualquiera de estas dos cabeceras — usa una, no ambas:

http
Authorization: Bearer mk_live_TU_CLAVE
# o bien
X-API-Key: mk_live_TU_CLAVE

Ejemplos

bash
curl -s "https://mooninventoryapi.onrender.com/api/products/products?page=1&limit=20" \
  -H "Authorization: Bearer mk_live_TU_CLAVE"
javascript
const res = await fetch("https://mooninventoryapi.onrender.com/api/products/products?limit=20", {
  headers: { "X-API-Key": process.env.MOON_API_KEY },
});

if (!res.ok) {
  const error = await res.json();
  throw new Error(`${res.status} ${error.code ?? ""}: ${error.message}`);
}

const { data } = await res.json();
python
import os, requests

res = requests.get(
    "https://mooninventoryapi.onrender.com/api/products/products",
    headers={"X-API-Key": os.environ["MOON_API_KEY"]},
    params={"page": 1, "limit": 20},
    timeout=30,
)
res.raise_for_status()
data = res.json()["data"]

Nunca uses una clave desde el navegador

Una clave en JavaScript de cliente, en una app móvil o en un repositorio público queda expuesta a cualquiera. Úsala solo desde tu servidor. Si se filtra, revócala de inmediato: la revocación es instantánea.

Scopes y permisos

Cada clave lleva uno o más scopes, que limitan los verbos HTTP permitidos:

ScopePermiteBloquea
readGET, HEAD, OPTIONSPOST, PUT, PATCH, DELETE
writeTodos los verbos—

Un intento de escritura con una clave de solo lectura responde 403 con INSUFFICIENT_API_SCOPE.

La clave hereda los permisos de quien la creó

Una clave actúa como el usuario que la generó y está sujeta a su rol y sus permisos (RBAC), además del scope. Si ese usuario no puede ver gastos, la clave tampoco. Si desactivas al usuario o cambias su rol, sus claves se ven afectadas de inmediato.

Recomendación: crea un usuario de servicio con el rol mínimo necesario y genera las claves de integración desde esa cuenta.

Formato de respuestas

Las respuestas correctas devuelven status: "success" y el contenido dentro de data.

json
{
  "status": "success",
  "data": {
    "products": [ { "_id": "66f1…", "name": "Café molido 1lb", "price": 350 } ],
    "total": 128,
    "page": 1,
    "totalPages": 7
  }
}

La forma exacta de data depende del endpoint: la clave interna suele llamarse como el recurso (products, sales…). Los identificadores son ObjectId de 24 caracteres hexadecimales y las fechas van en ISO 8601 (UTC).

Errores

Los errores usan códigos HTTP estándar y devuelven status: "error" con un mensaje legible. Cuando el error es accionable incluye además un code estable — usa ese campo en tu lógica, no el texto del mensaje, que puede cambiar.

json
{
  "status": "error",
  "code": "INSUFFICIENT_API_SCOPE",
  "message": "This API key is read-only. Create a key with the 'write' scope to perform this operation.",
  "data": { "scopes": ["read"] }
}
HTTPcodeSignificado y qué hacer
400—Petición inválida. Revisa el cuerpo y los parámetros; los errores de validación detallan el campo.
401INVALID_API_KEYClave inexistente, mal formada, revocada o caducada. No reintentes: genera una nueva.
401—Token de sesión caducado o inválido (solo autenticación por JWT).
403INSUFFICIENT_API_SCOPELa clave es de solo lectura y se intentó escribir. Crea una clave con scope write.
403FEATURE_NOT_IN_PLANTu plan no incluye esta funcionalidad. data.requiredPlan indica cuál la incluye.
403TIER_TOO_LOWEl módulo requiere un plan superior. data.requiredPlan indica el mínimo.
403API_KEY_SELF_MANAGEMENT_FORBIDDENUna clave intentó gestionar claves. Usa la sesión de la aplicación.
403—Tu rol no tiene permiso para esta acción (RBAC), o la organización/usuario está inactivo.
404—El recurso no existe o no pertenece a tu organización.
429—Límite de peticiones superado. Espera y reintenta con backoff exponencial.
500—Error del servidor. Reintenta con backoff; si persiste, contáctanos.

Límites de uso

  • 100 peticiones cada 15 minutos por IP sobre la API en general. Al superarlo recibes 429.
  • Las respuestas incluyen las cabeceras estándar RateLimit-Limit, RateLimit-Remaining y RateLimit-Reset. Úsalas para regular tu ritmo en lugar de esperar al 429.
  • Tamaño máximo del cuerpo: 10 KB en JSON. Para cargas grandes usa los endpoints de /api/upload.
  • Los endpoints de IA consumen además los créditos mensuales de tu plan y responden 402 cuando se agotan.

Escribe integraciones tolerantes

Reintenta los 429 y 5xx con backoff exponencial y un poco de aleatoriedad. Nunca reintentes un 401 o 403: no van a mejorar solos.

Paginación y filtros

Los listados aceptan page (desde 1) y limit, y devuelven el total junto a los resultados.

bash
curl -s "https://mooninventoryapi.onrender.com/api/sales/invoices?page=2&limit=50" \
  -H "X-API-Key: mk_live_TU_CLAVE"

Muchos listados aceptan además filtros propios del recurso — rangos de fecha (startDate, endDate), estado, categoría o búsqueda por texto. Los parámetros no reconocidos se ignoran, así que compruébalos con cuidado.

Recorre las páginas de forma estable

Si se crean registros mientras paginas, el contenido se desplaza. Para exportaciones completas, filtra por un rango de fechas cerrado y ordena por fecha de creación en lugar de recorrer page a ciegas.

Gestión de claves

Estos endpoints se usan solo con la sesión de la aplicación. Una clave de API no puede crear ni revocar claves — así, una clave filtrada no puede perpetuarse a sí misma.

GET/api/api-keysLista las claves de la organización. Nunca devuelve el secreto.
POST/api/api-keysCrea una clave. Única respuesta que incluye el texto plano.
DELETE/api/api-keys/:idRevoca una clave. Deja de funcionar de inmediato.

Crear una clave

json
POST /api/api-keys
{
  "name": "Integración ERP",
  "scopes": ["read", "write"],
  "expiresInDays": 365
}

scopes por defecto es ["read"]; expiresInDays es opcional (1–3650) y si se omite la clave no caduca.

json
{
  "status": "success",
  "message": "Guarda esta clave ahora: por seguridad no volverá a mostrarse completa.",
  "data": {
    "key": {
      "id": "66f1…", "name": "Integración ERP",
      "prefix": "mk_live_XSb9m2q7", "scopes": ["read","write"],
      "expiresAt": "2027-09-04T00:00:00.000Z", "revokedAt": null
    },
    "plaintext": "mk_live_XSb9m2q7Kv1pLd0zR4tYhN8jWcE3gAuF6oQi5rTvBnM"
  }
}

Seguridad

  • Guardamos únicamente un hash SHA-256 de la clave. Ni nosotros podemos recuperar el texto plano, por eso solo se muestra al crearla.
  • La comparación es de tiempo constante, de modo que no se puede deducir una clave midiendo tiempos de respuesta.
  • Concede el mínimo privilegio: usa read salvo que la integración escriba de verdad, y créala desde un usuario de servicio con un rol acotado.
  • Rota las claves periódicamente con expiresInDays. Crea la nueva, migra la integración y revoca la anterior.
  • Guárdalas en variables de entorno o un gestor de secretos. Nunca en el control de versiones ni en código que llegue al navegador.
  • Todo el tráfico va sobre HTTPS. Las peticiones desde un navegador están sujetas a una lista de orígenes permitidos (CORS); las llamadas de servidor a servidor no se ven afectadas.

Referencia de endpoints

420 endpoints en 39 módulos. Los módulos marcados con un candado exigen un plan concreto: la comprobación ocurre en el servidor, así que una clave de un plan inferior recibe 403 aunque conozca la ruta.

Analítica

/api/analytics7 endpoints

Series y agregados analíticos.

  • GET/api/analytics
  • GET/api/analytics/dashboard
  • GET/api/analytics/insights
  • GET/api/analytics/inventory-trends
  • GET/api/analytics/profit-margins
  • GET/api/analytics/sales-trends
  • POST/api/analytics/visits

Anuncios

/api/system-announcements6 endpoints

Anuncios del sistema.

  • GET/api/system-announcements
  • POST/api/system-announcements
  • DELETE/api/system-announcements/:id
  • PUT/api/system-announcements/:id
  • POST/api/system-announcements/:id/dismiss
  • GET/api/system-announcements/active

Archivos

/api/upload6 endpoints

Carga de imágenes y archivos.

  • POST/api/upload/avatar
  • PUT/api/upload/avatar
  • POST/api/upload/image
  • POST/api/upload/images
  • POST/api/upload/logo
  • PUT/api/upload/logo

Auditoría

/api/audit-logs6 endpointshasAuditLogs · Profesional+

Registro de quién hizo qué y cuándo.

  • GET/api/audit-logs
  • POST/api/audit-logs
  • GET/api/audit-logs/entity/:entityType/:entityId
  • GET/api/audit-logs/recent
  • GET/api/audit-logs/stats
  • GET/api/audit-logs/user/:userId

Bajas de inventario

/api/write-offs11 endpointsProfesional+ (por tier)

Mermas, roturas y ajustes con motivo.

  • GET/api/write-offs
  • POST/api/write-offs
  • GET/api/write-offs/:id
  • PUT/api/write-offs/:id
  • POST/api/write-offs/:id/cancel
  • GET/api/write-offs/analytics
  • GET/api/write-offs/reasons
  • POST/api/write-offs/reasons
  • DELETE/api/write-offs/reasons/:id
  • GET/api/write-offs/reasons/:id
  • PUT/api/write-offs/reasons/:id

Campañas

/api/campaigns8 endpointsProfesional+ (por tier)

Campañas de descuento y su retorno.

  • GET/api/campaigns
  • POST/api/campaigns
  • DELETE/api/campaigns/:id
  • GET/api/campaigns/:id
  • PUT/api/campaigns/:id
  • GET/api/campaigns/:id/roi
  • PATCH/api/campaigns/:id/status
  • GET/api/campaigns/analytics

Conduces

/api/delivery-notes8 endpoints

Notas de entrega.

  • GET/api/delivery-notes
  • POST/api/delivery-notes
  • DELETE/api/delivery-notes/:id
  • GET/api/delivery-notes/:id
  • PUT/api/delivery-notes/:id
  • POST/api/delivery-notes/:id/cancel
  • POST/api/delivery-notes/:id/dispatch
  • POST/api/delivery-notes/:id/invoice

Cotizaciones

/api/quotations8 endpoints

Cotizaciones y su ciclo de aceptación o rechazo.

  • GET/api/quotations
  • POST/api/quotations
  • DELETE/api/quotations/:id
  • GET/api/quotations/:id
  • PUT/api/quotations/:id
  • POST/api/quotations/:id/accept
  • POST/api/quotations/:id/reject
  • POST/api/quotations/:id/send

Cuentas por cobrar

/api/receivables4 endpoints

Saldos pendientes de clientes.

  • GET/api/receivables/aging-report
  • GET/api/receivables/by-client
  • GET/api/receivables/overdue
  • GET/api/receivables/summary

Departamentos

/api/departments6 endpoints

Departamentos dentro de la organización.

  • GET/api/departments
  • POST/api/departments
  • DELETE/api/departments/:id
  • GET/api/departments/:id
  • PUT/api/departments/:id
  • GET/api/departments/hierarchy

Encuestas

/api/surveys6 endpoints

Encuestas a usuarios.

  • POST/api/surveys/:id/responses
  • GET/api/surveys/active
  • GET/api/surveys/backoffice
  • POST/api/surveys/backoffice
  • PATCH/api/surveys/backoffice/:id
  • GET/api/surveys/backoffice/:id/results

Entradas de mercancía

/api/goods-receipts6 endpoints

Recepción de mercancía contra órdenes de compra.

  • GET/api/goods-receipts
  • POST/api/goods-receipts
  • GET/api/goods-receipts/:id
  • PUT/api/goods-receipts/:id
  • POST/api/goods-receipts/:id/cancel
  • POST/api/goods-receipts/:id/confirm

Etiquetas y códigos

/api/labels3 endpoints

Generación de etiquetas y códigos de barras.

  • POST/api/labels/batch
  • POST/api/labels/print/:productId
  • POST/api/labels/testLabelPrinter

Feedback

/api/feedback13 endpoints

Envío de comentarios.

  • POST/api/feedback
  • POST/api/feedback/:id/comments
  • POST/api/feedback/:id/vote
  • GET/api/feedback/backoffice/board
  • POST/api/feedback/backoffice/columns
  • DELETE/api/feedback/backoffice/columns/:id
  • PATCH/api/feedback/backoffice/columns/:id
  • PATCH/api/feedback/backoffice/settings
  • PATCH/api/feedback/backoffice/tickets/:id
  • POST/api/feedback/backoffice/tickets/:id/comments
  • GET/api/feedback/ideas
  • GET/api/feedback/mine
  • GET/api/feedback/settings

Gastos

/api/expenses34 endpointshasExpenseTracking · Básico+

Gastos, categorías, presupuestos, cuentas por pagar y análisis.

  • GET/api/expenses
  • POST/api/expenses
  • DELETE/api/expenses/:id
  • GET/api/expenses/:id
  • PUT/api/expenses/:id
  • POST/api/expenses/:id/mark-paid
  • POST/api/expenses/:id/partial-payment
  • GET/api/expenses/:id/payment-history
  • GET/api/expenses/analysis/categories
  • GET/api/expenses/analysis/suppliers
  • GET/api/expenses/analysis/timeline
  • GET/api/expenses/budgets
  • POST/api/expenses/budgets
  • DELETE/api/expenses/budgets/:id
  • GET/api/expenses/budgets/:id
  • PUT/api/expenses/budgets/:id
  • GET/api/expenses/budgets/months-years
  • GET/api/expenses/categories
  • POST/api/expenses/categories
  • DELETE/api/expenses/categories/:id
  • GET/api/expenses/categories/:id
  • PUT/api/expenses/categories/:id
  • GET/api/expenses/dashboard
  • GET/api/expenses/distribution
  • GET/api/expenses/payables/aging-report
  • GET/api/expenses/payables/overdue
  • GET/api/expenses/payables/summary
  • GET/api/expenses/reports/generate
  • GET/api/expenses/suppliers
  • POST/api/expenses/suppliers
  • DELETE/api/expenses/suppliers/:id
  • GET/api/expenses/suppliers/:id
  • PUT/api/expenses/suppliers/:id
  • GET/api/expenses/trend

IA de ventas

/api/sales-ai7 endpoints

Predicciones y análisis de ventas con IA.

  • POST/api/sales-ai/clients/:clientId/insight
  • POST/api/sales-ai/dashboard/insight
  • GET/api/sales-ai/insights
  • GET/api/sales-ai/insights/:entityType/:entityId
  • DELETE/api/sales-ai/insights/:insightId
  • POST/api/sales-ai/sales/:saleId/insight
  • GET/api/sales-ai/summary

Inteligencia artificial

/api/ai15 endpoints

Análisis con IA. Consume créditos del plan.

  • POST/api/ai/budget/optimization
  • GET/api/ai/credits
  • GET/api/ai/credits/packages
  • POST/api/ai/credits/purchase
  • POST/api/ai/credits/purchase/capture
  • POST/api/ai/credits/purchase/paddle
  • POST/api/ai/credits/purchase/paddle/capture
  • POST/api/ai/expenses/:expenseId/insight
  • GET/api/ai/insights
  • GET/api/ai/insights/:entityType/:entityId
  • DELETE/api/ai/insights/:insightId
  • POST/api/ai/inventory/optimization
  • POST/api/ai/products/:productId/insight
  • POST/api/ai/products/demand-forecast
  • GET/api/ai/summary

Inventario y productos

/api/products39 endpoints

Productos, categorías, variantes, lotes, etiquetas y movimientos de stock.

  • POST/api/products/:id/add-stock
  • POST/api/products/:id/adjust-stock
  • POST/api/products/:id/remove-discount
  • POST/api/products/:id/remove-stock
  • GET/api/products/:id/stock-movements
  • GET/api/products/categories
  • POST/api/products/categories
  • DELETE/api/products/categories/:id
  • GET/api/products/categories/:id
  • PUT/api/products/categories/:id
  • GET/api/products/discounts/active
  • GET/api/products/discounts/dashboard
  • GET/api/products/exportAsExcel
  • GET/api/products/inventory-value
  • GET/api/products/lots/:lotId
  • PUT/api/products/lots/:lotId
  • GET/api/products/lots/expired
  • GET/api/products/lots/expiring
  • GET/api/products/low-stock
  • GET/api/products/out-of-stock
  • GET/api/products/products
  • POST/api/products/products
  • DELETE/api/products/products/:id
  • GET/api/products/products/:id
  • PUT/api/products/products/:id
  • GET/api/products/products/:id/lots
  • GET/api/products/products/:id/variants
  • POST/api/products/products/:id/variants
  • GET/api/products/products/category/:categoryId
  • GET/api/products/stock-movements
  • GET/api/products/tags
  • POST/api/products/tags
  • DELETE/api/products/tags/:id
  • GET/api/products/tags/:id
  • PUT/api/products/tags/:id
  • DELETE/api/products/variants/:variantId
  • GET/api/products/variants/:variantId
  • PUT/api/products/variants/:variantId
  • GET/api/products/variants/:variantId/lots

MFA

/api/mfa6 endpoints

Autenticación de dos factores de la cuenta.

  • POST/api/mfa/disable
  • POST/api/mfa/enable
  • POST/api/mfa/regenerate-backup-codes
  • POST/api/mfa/setup
  • GET/api/mfa/status
  • POST/api/mfa/verify-login

Notificaciones

/api/notifications2 endpoints

Notificaciones de la organización.

  • GET/api/notifications
  • POST/api/notifications/:id/read

Organización

/api/organization10 endpoints

Datos y preferencias de la organización.

  • GET/api/organization
  • PUT/api/organization
  • DELETE/api/organization/:id
  • GET/api/organization/:id
  • PUT/api/organization/:id
  • GET/api/organization/ai-preferences
  • PUT/api/organization/ai-preferences
  • GET/api/organization/all
  • GET/api/organization/check-slug/:slug
  • PATCH/api/organization/logo

Panel

/api/dashboard11 endpoints

Métricas del panel principal.

  • GET/api/dashboard/best-selling
  • GET/api/dashboard/category-distribution
  • GET/api/dashboard/comprehensive
  • GET/api/dashboard/expenses-overview
  • GET/api/dashboard/low-stock
  • GET/api/dashboard/monthly-sales-expenses-profit
  • GET/api/dashboard/recent-sales
  • GET/api/dashboard/sales-by-category
  • GET/api/dashboard/sales-expenses-profit
  • GET/api/dashboard/summary
  • GET/api/dashboard/supplier-summary

Permisos

/api/permissions3 endpoints

Catálogo de permisos disponibles.

  • GET/api/permissions
  • POST/api/permissions
  • PATCH/api/permissions/:permissionId

Posiciones

/api/positions6 endpoints

Cargos y posiciones organizacionales.

  • GET/api/positions
  • POST/api/positions
  • DELETE/api/positions/:id
  • GET/api/positions/:id
  • PUT/api/positions/:id
  • GET/api/positions/hierarchy

Precios mayoristas

/api/wholesale-prices5 endpoints

Listas de precio por mayorista.

  • POST/api/wholesale-prices
  • DELETE/api/wholesale-prices/:id
  • GET/api/wholesale-prices/client/:clientId
  • GET/api/wholesale-prices/product/:productId
  • GET/api/wholesale-prices/search/:code

Proveedores

/api/suppliers5 endpointshasSupplierManagement · Básico+

Catálogo de proveedores.

  • GET/api/suppliers
  • POST/api/suppliers
  • DELETE/api/suppliers/:id
  • GET/api/suppliers/:id
  • PUT/api/suppliers/:id

Punto de venta

/api/pos11 endpointsBásico+ (por tier)

Turnos de caja, ventas rápidas, ventas aparcadas y anulaciones.

  • GET/api/pos/dashboard
  • GET/api/pos/parked
  • POST/api/pos/parked
  • DELETE/api/pos/parked/:id
  • POST/api/pos/sales
  • GET/api/pos/sales-history
  • POST/api/pos/sales/:id/void
  • GET/api/pos/shifts
  • POST/api/pos/shifts/close
  • POST/api/pos/shifts/open
  • GET/api/pos/wholesaler/:code

Reportes

/api/reports23 endpoints

Generación, descarga y programación de reportes.

  • GET/api/reports
  • DELETE/api/reports/:id
  • GET/api/reports/:id
  • GET/api/reports/:id/download/excel
  • GET/api/reports/:id/download/pdf
  • POST/api/reports/:id/save
  • POST/api/reports/:id/save-template
  • POST/api/reports/:id/schedule
  • POST/api/reports/:id/share
  • GET/api/reports/action-to-take/:id
  • GET/api/reports/ai-insight-action/:insightId
  • GET/api/reports/categories
  • GET/api/reports/customers/segmentation
  • GET/api/reports/expenses/categories
  • GET/api/reports/financial/profit-loss
  • POST/api/reports/generate
  • GET/api/reports/inventory/stock-levels
  • GET/api/reports/recent
  • GET/api/reports/sales/summary
  • GET/api/reports/sales/top-products
  • GET/api/reports/saved
  • GET/api/reports/scheduled
  • GET/api/reports/tab-counts

Requisiciones

/api/requisitions9 endpoints

Solicitudes internas de compra.

  • GET/api/requisitions
  • POST/api/requisitions
  • DELETE/api/requisitions/:id
  • GET/api/requisitions/:id
  • PUT/api/requisitions/:id
  • POST/api/requisitions/:id/approve
  • POST/api/requisitions/:id/create-po
  • POST/api/requisitions/:id/reject
  • POST/api/requisitions/:id/submit

Roles

/api/roles6 endpoints

Roles asignables dentro de la organización.

  • GET/api/roles
  • POST/api/roles
  • DELETE/api/roles/:roleId
  • GET/api/roles/:roleId
  • PUT/api/roles/:roleId
  • POST/api/roles/assign-to-user

Servicios

/api/services23 endpoints

Categorías, plantillas y transacciones de servicio con sus pagos.

  • GET/api/services/categories
  • POST/api/services/categories
  • DELETE/api/services/categories/:id
  • GET/api/services/categories/:id
  • PUT/api/services/categories/:id
  • GET/api/services/dashboard
  • GET/api/services/payments/analytics
  • GET/api/services/templates
  • POST/api/services/templates
  • DELETE/api/services/templates/:id
  • GET/api/services/templates/:id
  • PUT/api/services/templates/:id
  • GET/api/services/transactions
  • POST/api/services/transactions
  • DELETE/api/services/transactions/:id
  • GET/api/services/transactions/:id
  • PUT/api/services/transactions/:id
  • POST/api/services/transactions/:id/cancel
  • POST/api/services/transactions/:id/complete
  • PUT/api/services/transactions/:id/payment-due-date
  • GET/api/services/transactions/:id/payments
  • POST/api/services/transactions/:id/payments
  • GET/api/services/transactions/overdue

Solicitudes de plan

/api/plan-requests6 endpoints

Activación asistida por nuestro equipo.

  • POST/api/plan-requests
  • GET/api/plan-requests/backoffice
  • DELETE/api/plan-requests/backoffice/:id
  • POST/api/plan-requests/backoffice/:id/activate
  • PATCH/api/plan-requests/backoffice/:id/status
  • GET/api/plan-requests/mine

Sucursales

/api/branches6 endpoints

Ubicaciones físicas y su jerarquía.

  • GET/api/branches
  • POST/api/branches
  • DELETE/api/branches/:id
  • GET/api/branches/:id
  • PUT/api/branches/:id
  • GET/api/branches/hierarchy

Suscripción

/api/subscriptions27 endpoints

Plan actual, cambios de plan y facturación.

  • GET/api/subscriptions
  • POST/api/subscriptions
  • PATCH/api/subscriptions/:id/auto-renew
  • POST/api/subscriptions/:subscriptionId/backoffice
  • PUT/api/subscriptions/:subscriptionId/cancel
  • DELETE/api/subscriptions/:subscriptionId/exemption
  • POST/api/subscriptions/:subscriptionId/exemption
  • PUT/api/subscriptions/:subscriptionId/payment
  • GET/api/subscriptions/ai-usage
  • GET/api/subscriptions/all
  • GET/api/subscriptions/analytics
  • POST/api/subscriptions/change-plan
  • GET/api/subscriptions/current
  • GET/api/subscriptions/paddle/:subscriptionId
  • POST/api/subscriptions/paddle/:subscriptionId/cancel
  • POST/api/subscriptions/paddle/checkout
  • GET/api/subscriptions/paddle/confirm
  • POST/api/subscriptions/paddle/portal
  • GET/api/subscriptions/paid
  • GET/api/subscriptions/plans
  • GET/api/subscriptions/plans/public
  • GET/api/subscriptions/stripe/:subscriptionId
  • POST/api/subscriptions/stripe/:subscriptionId/cancel
  • POST/api/subscriptions/stripe/checkout
  • GET/api/subscriptions/stripe/confirm
  • POST/api/subscriptions/stripe/portal
  • POST/api/subscriptions/trial

Tareas

/api/tasks4 endpoints

Tareas internas.

  • GET/api/tasks
  • POST/api/tasks
  • DELETE/api/tasks/:id
  • PUT/api/tasks/:id

Usuarios

/api/users10 endpoints

Usuarios de la organización y su perfil.

  • GET/api/users
  • POST/api/users
  • DELETE/api/users/:id
  • GET/api/users/:id
  • PUT/api/users/:id
  • POST/api/users/:id/reset-password
  • POST/api/users/add-to-organization
  • GET/api/users/organization-users
  • GET/api/users/profile
  • PUT/api/users/profile

Ventas y facturas

/api/sales37 endpoints

Clientes, facturas, pagos parciales, analíticas de venta e impuestos.

  • GET/api/sales/analytics
  • GET/api/sales/analytics/categories
  • GET/api/sales/analytics/cogs-breakdown
  • GET/api/sales/analytics/performance
  • GET/api/sales/analytics/timeline
  • GET/api/sales/clients
  • POST/api/sales/clients
  • GET/api/sales/clients/:clientId/invoices
  • DELETE/api/sales/clients/:id
  • GET/api/sales/clients/:id
  • PUT/api/sales/clients/:id
  • DELETE/api/sales/clients/anonymous
  • GET/api/sales/clients/dashboard-summary
  • GET/api/sales/clients/dashboard-summary/:id
  • GET/api/sales/clients/top
  • GET/api/sales/clients/top/:id/products
  • GET/api/sales/dashboard
  • GET/api/sales/invoices
  • POST/api/sales/invoices
  • DELETE/api/sales/invoices/:id
  • GET/api/sales/invoices/:id
  • PUT/api/sales/invoices/:id
  • POST/api/sales/invoices/:id/mark-paid
  • GET/api/sales/invoices/:id/payments
  • POST/api/sales/invoices/:id/payments
  • GET/api/sales/invoices/:id/pdf
  • POST/api/sales/invoices/:id/send-reminder
  • GET/api/sales/invoices/deleted
  • GET/api/sales/invoices/deleted/:id
  • GET/api/sales/invoices/invoice-number/:invoiceNumber
  • GET/api/sales/invoices/overdue
  • GET/api/sales/invoices/partial-payments/list
  • GET/api/sales/invoices/pending
  • GET/api/sales/products/:productId/monthly-sales
  • GET/api/sales/products/:productId/summary
  • GET/api/sales/settings/tax
  • PATCH/api/sales/settings/toggle-itbis

Versión

/api/version9 endpoints

Versión de la plataforma.

  • GET/api/version
  • POST/api/version
  • DELETE/api/version/:id
  • PUT/api/version/:id
  • POST/api/version/:id/dismiss
  • GET/api/version/api-version
  • GET/api/version/check
  • GET/api/version/latest
  • POST/api/version/webhook/render-deploy

Órdenes de compra

/api/purchase-orders8 endpoints

Creación, aprobación, envío y cancelación de órdenes.

  • GET/api/purchase-orders
  • POST/api/purchase-orders
  • GET/api/purchase-orders/:id
  • PUT/api/purchase-orders/:id
  • POST/api/purchase-orders/:id/approve
  • POST/api/purchase-orders/:id/cancel
  • GET/api/purchase-orders/:id/receipts
  • POST/api/purchase-orders/:id/send

Limitaciones conocidas

Preferimos decirte esto por adelantado a que lo descubras integrando:

  • No hay webhooks salientes. Hoy no notificamos cambios a sistemas externos; hay que consultar (polling). Ten en cuenta el límite de peticiones al elegir la frecuencia.
  • No hay endpoint de refresco de token. El login devuelve un refreshToken, pero no existe una ruta para canjearlo: una sesión JWT caducada exige volver a autenticarse. Es justamente por esto que las integraciones deben usar claves de API, que no caducan salvo que tú lo indiques.
  • La API no está versionada por URL. No hay /v1/. Programa de forma defensiva: ignora los campos que no conozcas en lugar de validar la forma exacta de la respuesta.
  • Hay dos superficies de proveedores — /api/suppliers y /api/expenses/suppliers. La aplicación usa la segunda; prefiere esa hasta que unifiquemos.
  • Sin entorno de pruebas separado. Las claves operan sobre tus datos reales. Prueba con una organización de prueba o con claves read antes de escribir.

Soporte

¿Dudas o un comportamiento que no cuadra con esta documentación? Escríbenos desde Configuración → Feedback en la aplicación, e incluye el método, la ruta, la hora aproximada y el code del error. No nos envíes nunca tu clave.