Saltar al contenido principal
Versión: v0.8.0 🚧

Printer

Gestión de Impresoras​

Endpoints para gestionar las impresoras de tickets.

Autorización

Todos los endpoints de impresoras requieren únicamente un accessToken válido (auth-jwt); no usan permisos granulares.

Impresoras del Sistema​

GET /printers/available​

Obtiene la lista de impresoras detectadas en el sistema operativo.

Authorization: accessToken válido.

cURL Example:

curl -X GET "http://127.0.0.1:9154/printers/available" \
-H "Cookie: accessToken=$ACCESS_TOKEN"

Response Body (200 OK):

["Printer 1", "Printer 2", "Cocina"]

POST /printers/set​

Establece la impresora activa para un tipo específico, creando o actualizando una configuración.

Authorization: accessToken válido.

Request Body:

{
"printerType": "KITCHEN | CUSTOMER | BAR",
"printerName": "string"
}

cURL Example:

curl -X POST "http://127.0.0.1:9154/printers/set" \
-H "Cookie: accessToken=$ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"printerType": "KITCHEN",
"printerName": "Cocina"
}'

Response Body (200 OK):

Printer Cocina set for KITCHEN

Response Body (409 Conflict):

{ "error": "Failed to set default printer" }

POST /printers/print​

Envía un trabajo de impresión.

Authorization: accessToken válido.

Request Body:

{
"templateName": "string (opcional)",
"ticketData": { "...": "objeto TicketData" },
"printerType": "KITCHEN | CUSTOMER | BAR",
"printerId": "string (opcional, UUID de config)",
"broadcast": false,
"forceTemplateName": false
}

cURL Example:

curl -X POST "http://127.0.0.1:9154/printers/print" \
-H "Cookie: accessToken=$ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"templateName": "Default Customer Ticket",
"ticketData": {
"ticketId": "T-123",
"tableName": "Mesa 5",
"roomName": "Salón Principal",
"date": "2025-10-06",
"items": [
{ "quantity": 2, "name": "Pizza Margherita", "price": 12.50 }
],
"total": 25.00
},
"printerType": "CUSTOMER"
}'

Response Body (200 OK):

Print job sent

Response Body (503 Service Unavailable): cualquier error de impresión (impresora no disponible, plantilla no encontrada, etc.).

{ "message": "Error processing print job" }

Configuraciones de Impresoras​

GET /printers/configs​

Obtiene todas las configuraciones de impresoras guardadas.

Authorization: accessToken válido.

Response Body (200 OK):

[
{
"id": "config-uuid",
"printerType": "KITCHEN",
"printerName": "Cocina",
"templateName": null,
"isDefault": true,
"enabled": true,
"createdAt": "2025-10-06T12:00:00Z"
}
]

POST /printers/configs​

Crea una nueva configuración de impresora.

Authorization: accessToken válido.

Request Body:

{
"printerType": "KITCHEN | CUSTOMER | BAR",
"printerName": "string",
"templateName": "string (opcional)",
"isDefault": false,
"enabled": true
}

Response Body (201 Created):

{ "id": "new-config-uuid" }

Response Body (409 Conflict):

{ "error": "Printer configuration already exists" }

PUT /printers/configs/{id}​

Actualiza una configuración de impresora. Todos los campos son opcionales.

Authorization: accessToken válido.

Path Parameters:

  • id (string): ID de la configuración.

Request Body:

{
"printerType": "KITCHEN | CUSTOMER | BAR",
"printerName": "string",
"templateName": "string",
"isDefault": false,
"enabled": true
}

Response: 200 OK si se actualiza; 404 Not Found si no existe; 409 Conflict { "error": "Printer configuration already exists" } si colisiona.

DELETE /printers/configs/{id}​

Elimina una configuración de impresora.

Authorization: accessToken válido.

Path Parameters:

  • id (string): ID de la configuración.

Response: 204 No Content si se elimina; 404 Not Found si no existe.

POST /printers/configs/{id}/default​

Establece una configuración como impresora predeterminada para su tipo.

Authorization: accessToken válido.

Path Parameters:

  • id (string): ID de la configuración.

Response: 200 OK si se establece; 404 Not Found si no existe.

Notas​

Errores de impresión

Cualquier fallo durante POST /printers/print se envuelve en un 503 con { "message": "Error processing print job" }, incluidas plantillas inexistentes o impresoras no disponibles.