Cloud API · Tickets
Imprimir un ticket
Renderiza un árbol JSON y lo imprime en la impresora térmica del terminal.
/terminals/:terminalId/print-ticketRenderiza el árbol del ticket y lo imprime en el terminal indicado. La respuesta llega en cuanto el terminal acepta el trabajo de impresión: no espera a que salga el papel.
Cabeceras
| Cabecera | Valor | Obligatoria |
|---|---|---|
Content-Type |
application/json |
Sí |
Authorization |
Bearer <clientSecret> |
Sí |
venue-api-key |
La clave de tu local | Sí |
Cuerpo
{
"ticket": {
"root": {
"type": "column",
"children": [
{ "type": "text", "content": "HONEI BAR", "style": { "bold": true, "size": "lg", "align": "center" } },
{ "type": "separator" },
{
"type": "row",
"children": [
{ "type": "text", "content": "Cerveza", "style": { "flex": 1 } },
{ "type": "text", "content": "3,50 €", "style": { "align": "right", "bold": true } }
]
}
]
}
}
}El cuerpo tiene un único campo de primer nivel, ticket, con un campo anidado, root. root es el bloque raíz del árbol. La gramática completa está en Esquema del ticket.
Respuesta
El terminal ha aceptado el trabajo de impresión.
{
"message": "Print job sent"
}El cuerpo de la petición está mal formado: falta ticket, falta ticket.root, o root no es un objeto.
{
"code": 400,
"message": "ticket.root is required"
}El terminalId no existe.
{
"code": 404,
"message": "Terminal not found"
}Tus credenciales no dan acceso al terminal.
{
"code": 403,
"message": "Not authorized"
}Esquema del ticket
Un ticket es un árbol recursivo de bloques. Cada bloque tiene un type y un objeto style opcional. Los contenedores (column, row) también tienen children.
Contenedores
| Tipo | Descripción |
|---|---|
column |
Apila los children en vertical. gap por defecto de 4 px entre ellos. |
row |
Coloca los children en horizontal. gap por defecto de 4 px entre ellos. |
Por defecto, los contenedores ocupan todo el ancho de su padre. Para cambiarlo, usa style.width (en px o "%") o style.flex.
Bloques finales
| Tipo | Campos obligatorios | Descripción |
|---|---|---|
text |
content |
Un bloque de texto. Por defecto salta de línea; usa style.wrap para cambiarlo. |
image |
src |
Una imagen. src acepta una URL HTTPS o una data URL en base64 (data:image/png;base64,...). Usa style.width y style.height para darle tamaño. |
separator |
— | Una línea horizontal. style.char controla su aspecto: - (discontinua, por defecto), =, ., _ (continua). |
space |
lines (opcional) |
Espacio vertical. lines vale 1 por defecto. Cada línea equivale a un em del tamaño de letra heredado. |
Estilo
El objeto style es opcional en todos los bloques, y todas sus propiedades también.
| Propiedad | Tipo | Se aplica a | Descripción |
|---|---|---|---|
bold |
boolean |
text, contenedores |
Negrita. |
italic |
boolean |
text, contenedores |
Cursiva. |
underline |
boolean |
text, contenedores |
Subraya el texto. |
size |
"sm" | "md" | "lg" | "xl" |
text, contenedores |
Tamaño de letra: sm=11 px, md=14 px (por defecto), lg=18 px, xl=22 px. |
invert |
boolean |
text, contenedores |
Texto blanco sobre fondo negro, para destacar. Combínalo con padding para dar aire. |
align |
"left" | "center" | "right" |
Todos | En text: alineación horizontal del texto. En row: posición horizontal de los hijos. En column: posición vertical de los hijos. |
width |
number (px) | "<n>%" (string) |
Todos | Ancho explícito. Si se omite, los contenedores ocupan el ancho de su padre. |
height |
number (px) |
image |
Alto explícito en px. Sin él, las imágenes mantienen su proporción natural. |
flex |
number |
Todos | Factor de crecimiento dentro de un row o column. Sirve para repartir el espacio sobrante de forma proporcional. |
gap |
number (px) |
row, column |
Espacio entre hijos. Por defecto, 4. Usa 0 para eliminarlo. |
padding |
number | { x, y, top, ...} |
Todos | Margen interior. Un número se aplica a todos los lados. El objeto acepta x, y, top, right, bottom, left. |
margin |
number | { x, y, top, ...} |
Todos | Margen exterior. Misma forma que padding. |
wrap |
"wrap" | "truncate" | "ellipsis" |
text |
Qué hacer con el texto que no cabe. wrap (por defecto) salta de línea, truncate lo corta y ellipsis añade …. |