General
Endpoints Generales
Endpoints generales del sistema Ambrosia POS que proporcionan información básica y configuración.
Endpoint Raíz
GET /
: Endpoint raíz de la API.- Authorization: No requiere autenticación
- cURL Example:
curl -X GET "http://127.0.0.1:9154/"
- Response Body (200 OK):
"Root path of the API Nothing to see here"
Configuración del Sistema
GET /base-currency
: Obtiene la moneda base del sistema.- Authorization: No requiere autenticación
- cURL Example:
curl -X GET "http://127.0.0.1:9154/base-currency"
- Response Body (200 OK):
{
"currency_id": "c4765ebd-6674-4b96-ab99-647fb7a24840"
}
Documentación de la API
GET /swagger
: Accede a la documentación interactiva de la API (Swagger UI).- Authorization: No requiere autenticación
- URL:
http://127.0.0.1/9154/swagger
- Descripción: Interfaz web interactiva para explorar y probar todos los endpoints de la API.
Códigos de Estado HTTP
La API utiliza los siguientes códigos de estado HTTP estándar:
Éxito (2xx)
- 200 OK: Operación exitosa
- 201 Created: Recurso creado exitosamente
- 204 No Content: Sin contenido (lista vacía o eliminación exitosa)
Error del Cliente (4xx)
- 400 Bad Request: Solicitud incorrecta (parámetros faltantes o inválidos)
- 401 Unauthorized: No autenticado o token inválido
- 403 Forbidden: Acceso denegado (permisos insuficientes)
- 404 Not Found: Recurso no encontrado
Error del Servidor (5xx)
- 500 Internal Server Error: Error interno del servidor
Formato de Datos
Timestamps
- Formato de timestamp: 1753549837824 (Unix timestamp in milliseconds)
Identificadores
- Tipo: UUID v4
- Formato: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
- Ejemplo:
76ee1086-b945-4170-b2e6-9fbeb95ae0be
Monedas y Cantidades
- Formato numérico: Punto decimal (ejemplo: 45.50)
- Precisión: 2 decimales para cantidades monetarias
- Monedas soportadas: MXN, USD, BTC
Autenticación
Esquema de Autenticación
- Tipo: JWT (JSON Web Tokens)
- Almacenamiento: Cookies HTTP
- Access Token: Duración de 15 minutos
- Refresh Token: Duración de 30 días
Cookies de Autenticación
- accessToken: Token de acceso para operaciones de la API
- refreshToken: Token para renovar el access token
Endpoints de Autenticación
- Login:
POST /auth/login
- Refresh:
POST /auth/refresh
- Logout:
POST /auth/logout
Paginación
Algunos endpoints soportan parámetros de paginación:
Parámetros de Query
- limit (int): Número máximo de resultados (por defecto: 20)
- offset (int): Número de resultados a omitir (por defecto: 0)
- all (boolean): Mostrar todos los resultados sin paginación
Ejemplo de Uso
curl -X GET "http://127.0.0.1:9154/wallet/payments/incoming?limit=10&offset=20" \
-H 'Cookie: accessToken=your_access_token_here' \
-H 'Cookie: refreshToken=your_refresh_token_here'
Filtros Comunes
Filtros por Fecha
- from (timestamp): Fecha/hora de inicio
- to (timestamp): Fecha/hora de fin
- limit (date): Fecha específica
Filtros por Relación
- user_id (uuid): Filtrar por usuario
- table_id (uuid): Filtrar por mesa
- space_id (uuid): Filtrar por espacio
Manejo de Errores
Estructura de Respuesta de Error
{
"message": "Descripción del error"
}
Errores Comunes
- "Missing or malformed ID": ID requerido no proporcionado o inválido
- "Invalid credentials": Credenciales de autenticación incorrectas
- "Unauthorized": Token de acceso inválido o expirado
- "Resource not found": El recurso solicitado no existe
- "Validation failed": Los datos de entrada no pasan la validación
Entornos
Desarrollo
- URL Base:
http://127.0.0.1:9154
- Base de Datos: SQLite local
- Logging: Nivel DEBUG
Producción
- URL Base: Configurada según el despliegue
- Base de Datos: Sqlite
- HTTPS: Obligatorio
- Logging: Nivel INFO
Tipos de Datos Personalizados
Estados de Mesa
available
: Mesa disponibleoccupied
: Mesa ocupadareserved
: Mesa reservada
Estados de Orden
pending
: Pedido pendientepreparing
: En preparaciónready
: Listo para servircompleted
: Completadocancelled
: Cancelado
Estados de Ticket
1
: Pendiente2
: Pagado3
: Cancelado
Integración Bitcoin Lightning
El sistema incluye integración completa con Bitcoin Lightning Network a través del servicio Phoenix:
Funcionalidades
- Crear facturas Lightning
- Procesar pagos Lightning
- Consultar balance y transacciones
- Gestión de pagos on-chain
- Historial de transacciones
Monedas Soportadas
- Satoshis: Unidad base de Bitcoin
- Millisatoshis: Para microtransacciones Lightning
- Bitcoin: Conversión automática
Seguridad
Medidas de Seguridad
- Encripción de PIN: Los PIN's se almacenan encriptados usando PBKDF2WithHmacSHA256 con 10,000 iteraciones y una longitud de clave de 256 bits. La función
hashPinForStorage()
combina la clave maestra de la aplicación con el nombre de usuario como salt para generar un hash único y seguro (implementado enSecurePinProcessor.kt
) - Tokens JWT: Firmados con clave secreta
- Cookies HttpOnly: Para prevenir ataques XSS
- Validación de entrada: Todos los datos se validan antes del procesamiento
Algoritmo de Encriptación de PIN
- Algoritmo: PBKDF2WithHmacSHA256
- Iteraciones: 10,000
- Longitud de clave: 256 bits
- Salt: Combinación de clave maestra de aplicación + nombre de usuario
- Implementación:
pos.ambrosia.utils.SecurePinProcessor.hashPinForStorage()
- Verificación:
pos.ambrosia.utils.SecurePinProcessor.verifyPin()
Recomendaciones de Producción
- HTTPS obligatorio: Para proteger las comunicaciones
- Certificados SSL válidos: Para la confianza del cliente
- Backup regular: De la base de datos y configuración
- Monitoreo: Logs de acceso y errores