Referencia de la API
Endpoints reales del Backend Modular (POS). Todas las rutas usan el prefijo /api y autenticación con Bearer token (Sanctum).
Auth
core/AuthCoreAutenticación con Sanctum por correo o número telefónico. Emite el token de acceso con el plan vigente del cliente.
/api/auth/loginPúblicoInicia sesión con correo o teléfono. Aplica rate limit.
Request body
| Campo | Tipo | Req. | Descripción |
|---|---|---|---|
| identifier | string | requerido | Correo electrónico o número telefónico. |
| credential | string | requerido | Contraseña o código de acceso. |
Respuesta: token, user, plan
/api/auth/logoutauth:sanctumCierra la sesión del token actual.
/api/auth/request-codePúblicoSolicita un código de verificación para iniciar sesión.
/api/auth/logout-allauth:sanctumCierra la sesión en todos los dispositivos.
Register
clients/RegisterClientsRegistro de empresa / cliente con plan seleccionado. Devuelve el checkout de Stripe para el pago inicial.
/api/registerPúblicoRegistra una empresa y genera el checkout de pago.
Request body
| Campo | Tipo | Req. | Descripción |
|---|---|---|---|
| plan_ulid | string | requerido | ULID del plan (exists:plans). |
| name | string | opcional | Nombre corto / nombre comercial. |
| legal_name | string | opcional | Razón social. |
| opcional | Correo de contacto. | ||
| phone_number | string | requerido | Teléfono (único). |
Respuesta: Registro exitoso + checkout de Stripe
/api/register/renoveauth:sanctumRenueva la suscripción con un nuevo plan.
Request body
| Campo | Tipo | Req. | Descripción |
|---|---|---|---|
| plan_ulid | string | requerido | ULID del plan a renovar. |
QR Login
core/QrLoginCoreAcceso por código QR: una sesión solicita y otra confirma.
/api/qr/loginauth:sanctumInicia el flujo de login por QR.
/api/qr/confirmPúblicoConfirma el acceso QR aprobado.
Seguridad (OTP)
core/SecurityCoreCódigos OTP por propósito (login, 2FA) y contraseñas encriptadas para clientes.
/api/otp/send/{purpose}auth:sanctumEnvía un código OTP para el propósito indicado.
/api/otp/validatePúblicoValida el código OTP recibido.
/api/security/password/enableauth:sanctumHabilita una contraseña encriptada.
/api/security/password/revealauth:sanctumRevela la contraseña encriptada.
Payments
core/PaymentsCorePagos abstractos sobre proveedores (Stripe, etc.). Stripe se integra como capa interna con gateways y handlers de webhook.
/api/paymentsauth:sanctum + licenciaLista los pagos (con cache).
/api/paymentsauth:sanctum + licenciaCrea un pago para un modelo (payable).
Request body
| Campo | Tipo | Req. | Descripción |
|---|---|---|---|
| payable_type | string | requerido | Modelo al que pertenece el pago (morfo). |
| payable_id | string | requerido | ULID del modelo relacionado. |
| amount | numeric | requerido | Monto del pago. |
| tip | numeric | opcional | Propina (opcional). |
| method | string | requerido | Método de pago. |
| provider | string | requerido | Proveedor (ej. stripe). |
| status | integer | opcional | Estado del pago (default 1). |
/api/payments/{payment}auth:sanctum + licenciaDetalle de un pago.
/api/payments/{payment}auth:sanctum + licenciaActualiza un pago.
/api/webhooks/{provider}PúblicoWebhook público del proveedor (ej. stripe) para eventos como payment_intent.succeeded.
Users
core/UsersCoreAdministración de usuarios con roles, propietarios y estado.
/api/usersauth:sanctum + licenciaLista usuarios.
/api/users/{ulid}auth:sanctum + licenciaDetalle de un usuario.
/api/usersauth:sanctum + licenciaCrea un usuario.
Request body
| Campo | Tipo | Req. | Descripción |
|---|---|---|---|
| name | string | requerido | Nombre del usuario. |
| client_ulid | string | opcional | Cliente / empresa al que pertenece. |
| requerido | Correo único. | ||
| password | string | opcional | Mín. 8 caracteres, requiere confirmation. |
| lastname | string | opcional | Apellido. |
| phone_number | string | opcional | Teléfono único. |
| role_ulid | string | opcional | Rol asignado (exists:roles). |
| user | string | opcional | Nombre de usuario (auto: slug del nombre). |
/api/users/{ulid}auth:sanctum + licenciaActualiza un usuario.
/api/users/{ulid}auth:sanctum + licenciaElimina un usuario.
Roles
core/RolesCoreRoles de acceso con slug automático.
/api/rolesauth:sanctum + feature:mesasLista roles.
/api/roles/{ulid}auth:sanctum + feature:mesasDetalle de un rol.
/api/rolesauth:sanctum + feature:mesasCrea un rol.
Request body
| Campo | Tipo | Req. | Descripción |
|---|---|---|---|
| name | string | requerido | Nombre único del rol. |
| slug | string | opcional | Auto-generado por Str::slug. |
| description | string | opcional | Descripción del rol. |
/api/roles/{ulid}auth:sanctum + feature:mesasActualiza un rol.
/api/roles/{ulid}auth:sanctum + feature:mesasElimina un rol.
Permissions
core/PermissionsCoreCatálogo de permisos disponible en el sistema (solo lectura).
/api/permissionsauth:sanctumLista permisos (cache 60s).
/api/permissions/{permission}auth:sanctumDetalle de un permiso.
IA
core/AICoreAsistencia con inteligencia artificial: chat de operación (ventas, consultas) y soporte público con webhook del proveedor.
/api/ai/chatauth:sanctumChat con IA para asistir en operación, ventas y consultas.
/api/ai/webhookauth:sanctumRecibe eventos del proveedor de IA (estado de respuestas).
/api/ai/ventasauth:sanctumAnálisis de ventas asistido por IA (utilidad de prueba).
/api/ai/support/chatPúblicoChat público de soporte al cliente con IA.
Chat
core/ChatCoreEnvío de mensajes entre dispositivos / usuarios en tiempo real.
/api/chat/sendPúblicoEnvía un mensaje.
Integración con WhatsApp: verificación y recepción de mensajes por webhook.
/api/whatsapp/webhookPúblicoVerificación del webhook con el proveedor de WhatsApp.
/api/whatsapp/webhookPúblicoRecibe los mensajes entrantes de WhatsApp.
Legal
core/LegalCoreDocumentos legales y aceptaciones: firma electrónica por enlace, aprobación, auditoría (PDF/ZIP) y verificación pública con sello de tiempo RFC 3161.
/api/legal/pendingauth:sanctumDocumentos legales pendientes del cliente.
/api/legal/documentsauth:sanctumCrea un documento legal.
/api/legal/documents/previewauth:sanctumVista previa de un documento legal.
/api/legal/documents/{ulid}auth:sanctumDetalle de un documento legal.
/api/legal/documents/{ulid}/acceptauth:sanctumAcepta un documento legal.
/api/legal/documents/{document}/approveauth:sanctumAprueba un documento legal.
/api/legal/documents/{document}/rejectauth:sanctumRechaza un documento legal.
/api/legal/acceptances/{ulid}auth:sanctumDetalle de una aceptación.
/api/legal/acceptances/{ulid}/audit/pdfauth:sanctumAuditoría de la aceptación en PDF.
/api/legal/acceptances/{ulid}/audit/zipauth:sanctumAuditoría de la aceptación en ZIP (evidencia).
/api/legal/sign/{token}auth:sanctumMuestra el documento para firmar por enlace.
/api/legal/sign/{token}auth:sanctumFirma el documento por enlace.
/api/legal/verify/{hash}PúblicoVerificación pública de un documento firmado.
/api/legal/rfc3161/{hash}PúblicoVerificación con sello de tiempo RFC 3161.
Signatures
core/SignaturesCoreServicio de firmas electrónicas: generación de documentos firmados y PDFs certificados.
Files
core/FilesCoreAlmacenamiento de archivos con subida, descarga (pública/privada) y enlaces temporales firmados.
/api/filesauth:sanctumLista archivos (cache 60s).
/api/filesauth:sanctumSube un archivo (rate limit 5).
/api/files/{ulid}auth:sanctumDetalle de un archivo.
/api/files/{ulid}auth:sanctumActualiza un archivo.
/api/files/{ulid}auth:sanctumElimina un archivo.
/api/files/{ulid}/downloadauth:sanctumDescarga de un archivo privado.
/api/files/{ulid}/temporary-downloadFirmado (signed)Descarga temporal firmada.
/api/files/{ulid}/temporary-generateFirmado (signed)Genera un enlace temporal de descarga.
Notifications
core/NotificationsCoreBandeja de notificaciones por cliente y marcado como leídas.
/api/notificationsauth:sanctumLista notificaciones (cache 60s).
/api/notifications/{notification}auth:sanctumMarca una notificación como leída (rate limit 10).
Document Generator
core/DocumentGeneratorCoreGeneración de documentos (template) y conversión a PDF.
/api/documents/generateGenera un documento a partir de una plantilla.
/api/documents/pdfConvierte / genera el documento en PDF.
Settings
core/SettingsCoreConfiguración por grupos y claves (pares group/key).
/api/settings/group/{group}auth:sanctumLee todas las claves de un grupo.
/api/settings/{group}/{key}auth:sanctumLee una configuración.
/api/settings/{group}/{key}auth:sanctumCrea una configuración.
/api/settings/{group}/{key}auth:sanctumActualiza una configuración.
/api/settings/{group}/{key}auth:sanctumElimina una configuración.
ApiSupport
core/ApiSupportCoreCapa transversal de la API: middlewares y servicios compartidos por todos los módulos.
Sales
clients/SalesClientsVentas con detalle de items y estados (pending, paid). El monto se compone de unit_price × quantity por item.
/api/salesLista ventas.
/api/sales/{ulid}Detalle de una venta.
/api/salesCrea una venta con items.
Request body
| Campo | Tipo | Req. | Descripción |
|---|---|---|---|
| client_ulid | string | requerido | Cliente que realiza la venta. |
| branch_ulid | string | opcional | Sucursal. |
| source_type | string | opcional | Origen (morfo). |
| source_ulid | string | opcional | ULID del origen. |
| discount | numeric | opcional | Descuento (default 0). |
| tax | numeric | opcional | Impuesto (default 0). |
| currency | string | opcional | Moneda (default MXN). |
| meta | object | opcional | Metadatos adicionales. |
| items[] | array | requerido | Items: { type?, ulid?, description, unit_price, quantity, total }. |
Respuesta: Venta con status=pending, paid_amount=0, balance=total
Products
clients/ProductsClientsCatálogo de productos por cliente con licencia de módulo.
/api/productsauth:sanctum + módulo productsLista productos.
/api/productsauth:sanctum + módulo productsCrea un producto.
/api/products/{product}auth:sanctum + módulo productsDetalle de un producto.
/api/products/{product}auth:sanctum + módulo productsActualiza un producto.
/api/products/{product}auth:sanctum + módulo productsElimina un producto.
Orders
clients/OrdersClientsÓrdenes con código auto-generado (ORD-YYYYMMDD-XXXX).
/api/ordersauth:sanctum + licenciaLista órdenes.
/api/orders/{ulid}auth:sanctum + licenciaDetalle de una orden.
/api/ordersauth:sanctum + licenciaCrea una orden.
Request body
| Campo | Tipo | Req. | Descripción |
|---|---|---|---|
| ticket_ulid | string | opcional | Ticket asociado (exists:tickets). |
| code | string | opcional | Auto: ORD-YYYYMMDD-XXXX. |
| subtotal | numeric | opcional | Subtotal del pedido. |
| iva | numeric | opcional | IVA. |
| total | numeric | opcional | Total (default 0). |
| status | integer | opcional | Estado (default 1). |
/api/orders/{ulid}auth:sanctum + licenciaActualiza una orden.
/api/orders/{ulid}auth:sanctum + licenciaElimina una orden.
Cashbox
clients/CashboxClientsApertura de cajas por sucursal y registro de movimientos (entradas / salidas).
/api/cashboxesauth:sanctumAbre una caja.
Request body
| Campo | Tipo | Req. | Descripción |
|---|---|---|---|
| name | string | requerido | Nombre de la caja. |
| client_ulid | string | requerido | Cliente propietario. |
| branch_ulid | string | opcional | Sucursal (opcional). |
| opening_balance | numeric | opcional | Saldo inicial (min 0). |
/api/cashboxes/{cashbox}/movementsauth:sanctumRegistra un movimiento en la caja.
Request body
| Campo | Tipo | Req. | Descripción |
|---|---|---|---|
| type | enum | requerido | in | out. |
| amount | numeric | requerido | Monto (min 0.01). |
| concept | string | requerido | Concepto del movimiento (máx. 255). |
Invoices (CFDI)
clients/InvoicesClientsFacturación electrónica: genera, descarga (XML/PDF) y cancela comprobantes con motivo de cancelación.
/api/invoicesGenera una factura a partir de un pago (rate limit 5).
Request body
| Campo | Tipo | Req. | Descripción |
|---|---|---|---|
| payment_id | ulid | requerido | Pago a facturar. |
| rfc | string | requerido | RFC del receptor (máx. 13). |
| name | string | requerido | Razón social del receptor (máx. 255). |
/api/invoices/{ulid}/cancelCancela un CFDI.
Request body
| Campo | Tipo | Req. | Descripción |
|---|---|---|---|
| reason | enum | requerido | Motivo de cancelación: 01, 02, 03 o 04. |
/api/invoices/{ulid}/xmlDescarga el XML del comprobante.
/api/invoices/{ulid}/pdfDescarga el PDF del comprobante.
/api/webhooks/pacPúblicoWebhook público del PAC para actualizar el timbrado (status / pac_response).
Wallets
clients/WalletsClientsMonederos por propietario (ULID) con historial de transacciones.
/api/v1/wallets/{ownerUlid}Obtiene el wallet del propietario.
/api/v1/wallets/{ownerUlid}/transactionsTransacciones del wallet.
Clients (empresas)
admin/ClientsAdminAdministración central de clientes / empresas (tenant) con datos fiscales.
/api/clientsauth:sanctumLista clientes / empresas.
/api/clients/{ulid}auth:sanctumDetalle de un cliente.
/api/clientsauth:sanctumCrea un cliente / empresa.
Request body
| Campo | Tipo | Req. | Descripción |
|---|---|---|---|
| name | string | requerido | Nombre único. |
| legal_name | string | requerido | Razón social única. |
| requerido | Correo único. | ||
| type | enum | opcional | 1 = persona física, 2 = moral. |
| rfc | string | opcional | RFC (máx. 13, único). |
| phone | string | opcional | Teléfono (máx. 20, único). |
| owner_user_ulid | string | opcional | Usuario propietario (exists:users). |
/api/clients/{ulid}auth:sanctumActualiza un cliente.
/api/clients/{ulid}auth:sanctumElimina un cliente.
Plans
admin/PlansAdminPlanes de suscripción disponibles para los clientes.
/api/plansauth:sanctumLista planes.
/api/plans/{ulid}auth:sanctumDetalle de un plan.
/api/plansauth:sanctumCrea un plan.
/api/plans/{ulid}auth:sanctumActualiza un plan.
/api/plans/{ulid}auth:sanctumElimina un plan.
Subscriptions
admin/SubscriptionsAdminSuscripciones de los clientes. La creación se gestiona vía pagos / registro / renovación.
/api/subscriptionsauth:sanctumLista suscripciones.
/api/subscriptions/{ulid}auth:sanctumDetalle de una suscripción.
/api/subscriptions/{ulid}auth:sanctumActualiza una suscripción.
/api/subscriptions/{ulid}auth:sanctumElimina una suscripción.
Licences
admin/LicencesAdminActivación de licencias por llave; responde con una firma firmada.
/api/licences/{key}/activateauth:sanctumActiva una licencia por llave.
Respuesta: HTTP 201 · licencia activada con firma