Schemas
AddOrderItemsRequest
usuarioUsuario del punto de venta al que se atribuye la operación. Se valida contra el catálogo de
usuarios. Omitido = API.
Líneas a agregar, en el mismo formato que POST /temp_ordenes. El campo
movimiento sólo define el orden dentro de esta petición y a qué producto base
pertenece cada modificador: debe empezar en 1 y ser consecutivo. El movimiento real dentro de
la cuenta lo asigna el punto de venta continuando desde la última línea existente, y se
devuelve en movimientos.
AddOrderItemsResponse
jobIdfolioitemsAgregadosNúmero de líneas insertadas en la cuenta.
movimientosMovimientos que el punto de venta asignó a las líneas nuevas, en el mismo orden en que se enviaron. Son los valores con los que se identifica cada línea al descontarla o cancelarla.
Totales de la cuenta recalculados después de aplicar (o cancelar) un descuento.
ApplyDiscountResponse
jobIdfolioitemsAfectadosNúmero de líneas modificadas — siempre 0 para el descuento general.
forzarDescuentoValor de parametros3.forzardescuento en la sucursal. Se expone tal cual: el punto de venta
lo consulta al abrir el diálogo de descuento, pero no observamos ninguna regla derivada de él en
las capturas, así que esta API no bloquea en función de su valor.
Totales de la cuenta recalculados después de aplicar (o cancelar) un descuento.
ApplyItemDiscountsRequest
comentarioComentario/motivo del descuento — se guarda en cada línea afectada.
idTipoDescuentoClave del tipo de descuento (catálogo tipodescuento). Obligatorio si la sucursal fuerza tipo de descuento.
usuarioUsuario del punto de venta que autoriza. Se valida contra el catálogo de usuarios. Omitido = API.
Líneas a descontar. Cada una debe existir en la cuenta.
ApplyOrderDiscountRequest
modoporcentaje — valor es un porcentaje (0–100) sobre el subtotal.
importe — valor es un monto fijo; base decide si se resta del subtotal
sin impuestos o del total con impuestos.
baseSolo aplica cuando modo es importe: indica de qué cifra se resta el importe.
subtotal — del subtotal sin impuestos (valor por omisión).
total — del total con impuestos.
Se ignora en modo porcentaje.
valorPorcentaje o importe según modo. Enviar 0 para cancelar el descuento.
comentarioComentario/motivo del descuento — se guarda en tempcheques.comentariodescuento.
idTipoDescuentoClave del tipo de descuento (catálogo tipodescuento). Obligatorio si la sucursal fuerza tipo de descuento.
usuarioUsuario del punto de venta que autoriza. Se valida contra el catálogo de usuarios. Omitido = API.
AsistenciaDto
idEmpleadoId del empleado tal como lo registra el Punto de Venta: id del mesero cuando tipo es 1, usuario cuando tipo es 2.
nombreNombre del empleado resuelto contra el catálogo correspondiente a su tipo. Cadena vacía si el empleado ya no existe en el catálogo.
tipoCatálogo al que pertenece el empleado: 1 = mesero, 2 = usuario.
tipoDescripcionDescripción legible de tipo: "MESERO" o "USUARIO". Cadena vacía si el Punto de Venta reportó un tipo desconocido.
entradaFecha y hora en que el empleado marcó entrada, en la hora local de la sucursal.
salidaFecha y hora en que el empleado marcó salida, en la hora local de la sucursal. null mientras el turno sigue abierto.
abiertatrue cuando el empleado aún no marca salida; en ese caso salida y duracionMinutos vienen en null.
duracionMinutosMinutos trabajados entre entrada y salida, redondeados hacia abajo. null mientras el turno sigue abierto.
AsistenciasQueryResponse
jobIdId del trabajo de consulta despachado al agente local. Útil para rastrear la solicitud en auditoría y soporte.
workerIdId interno del punto de venta que atendió la consulta.
dispatchedAtMomento en que la consulta se envió al agente local.
entradaStartInicio de la ventana de búsqueda efectivamente aplicada sobre la hora de entrada (inclusivo). Refleja el valor recibido en entradaStart o, si se omitió, el inicio del día operativo calculado.
entradaEndFin de la ventana de búsqueda efectivamente aplicada sobre la hora de entrada (inclusivo). Refleja el valor recibido en entradaEnd o, si se omitió, el cierre del día operativo calculado.
pageNúmero de página devuelta, empezando en 1.
pageSizeCantidad de registros por página efectivamente aplicada (máximo 100).
totalResultsTotal de registros de asistencia que cumplen los filtros, sin importar la paginación.
totalPagesTotal de páginas disponibles con el pageSize aplicado. Es 0 cuando no hay resultados.
hasNextPagetrue cuando existe al menos una página más después de la actual.
Registros de asistencia de la página, ordenados por id de empleado y luego por hora de entrada.
CancelOrderItem
movimientoNúmero de movimiento de la línea dentro de la cuenta.
idProductoClave del producto de esa línea.
CancelOrderItemsRequest
Líneas a cancelar. Cada una debe existir en la cuenta.
razonMotivo de la cancelación, en texto libre — se guarda en el registro de cancelaciones que ve
el punto de venta. Obligatorio si la sucursal exige motivo de cancelación
(forzarmotivocancela); en ese caso una cadena vacía se rechaza.
El punto de venta ofrece un catálogo de motivos sugeridos (SERVICIO LENTO, ERROR DE CAPTURA, MAL SABOR, CAMBIO DE OPINIÓN CLIENTE), pero son sólo texto: no llevan clave. Envíe aquí la descripción tal cual, o cualquier otro texto. Máximo 200 caracteres.
Lo que se guarda no es exactamente lo enviado: el punto de venta añade la mesa al final, en
el formato "ERROR DE CAPTURA Mesa: CL-GE9-1", porque el registro de cancelaciones no
tiene columna de mesa. Se reproduce ese mismo formato.
usuarioUsuario del punto de venta que autoriza. Se valida contra el catálogo de usuarios. Omitido = API.
CancelOrderItemsResponse
jobIdfolioitemsCanceladosNúmero de líneas efectivamente canceladas. Puede ser mayor que el número de líneas enviadas: cancelar un producto base arrastra sus modificadores.
movimientosMovimientos de las líneas canceladas, incluidos los modificadores arrastrados. Son los movimientos que tenían ANTES de la renumeración; las líneas que sobreviven se renumeran de forma consecutiva desde 1, igual que hace SoftRestaurant.
Totales de la cuenta recalculados después de aplicar (o cancelar) un descuento.
CloseShiftRequest
idTurnoestacionidEmpresaserieCloseShiftResponse
jobIdidTurnocierremigratedChequesefectivotarjetavalescreditoCreateClosedOrderRequest
turnDependentestacionserieidEmpresanoPersonasidFormaDePagoCreateOrderRequest
turnDependentmesaidMeseroestacionserieidEmpresanoPersonasCreatePrinterRequest
licenseKeyLicense key (16 caracteres) del punto de venta al que pertenece la impresora.
printerIpDirección IP de la impresora en la red local de la sucursal (p. ej. "192.168.1.50").
widthMmAncho del papel en milímetros (típicamente 58 u 80). Requerido para impresoras térmicas.
displayNameNombre visible de la impresora (p. ej. "Cocina", "Barra").
sourceOrigen opcional de la impresora cuando se importa de un sistema externo.
sourceIdIdentificador de la impresora en el sistema de origen, si aplica.
kindProtocolo de la impresora: "thermal" (ESC/POS) o "label" (etiquetadora TSPL).
Parámetros de medio TSPL de una etiquetadora. Sólo se aplican cuando kind es "label"; en una impresora térmica se devuelven con sus valores por defecto y se ignoran al imprimir.
EmpresaDto
idEmpresanombrerazonSocialdireccionsucursalrfccurptelefonogirocontactofaxemailfechaCompradistribuidornumeroFacturanumeroDeControlcontrasenaControlidHardwarelicenciaPrincipallicenciaMonederoElectronicolicenciaMonitorProduccionlicenciaSrMovillicenciaManttoVentaslicenciaPagoEnLinealicenciaHuellaDigitallicenciaBillarfranquiciawebciudadestadopaisciudadSucursalestadoSucursalpasswordEmpresaEmpresasResponse
workerIddispatchedAttotalResultsGrupoDto
idGrupodescripcionclasificacionprioridadcolorcolorLetraprioridadImpresioncambiaColorCuentacolorCuentacolorLetraCuentasolicitaAutorizacionimagenMenuElectronicoextMenuporcentajePropinaimagenMenuidEtiquetaworkspaceIdalcoholserviceCodeGruposModificadorDto
idProductoidGruposModificadoresdescripcionprioridadforzarCapturamaximoModificadoresincluidosGruposQueryResponse
jobIdworkerIddispatchedAtpagepageSizetotalResultstotalPageshasNextPageImpuestosDto
nombreImpuesto1impuesto1nombreImpuesto2impuesto2nombreImpuesto3impuesto3LabelSettingsDto
widthMmAncho de la etiqueta en milímetros (primer argumento de SIZE).
heightMmAlto de la etiqueta en milímetros (segundo argumento de SIZE).
gapMmSeparación entre etiquetas en milímetros (primer argumento de GAP).
gapOffsetMmDesplazamiento de la separación en milímetros (segundo argumento de GAP).
speedVelocidad de impresión en pulgadas por segundo (SPEED), 1-14.
densityDensidad o calor del cabezal (DENSITY), 0-15.
directionSentido de avance del papel (DIRECTION), 0 o 1.
copiesCopias de cada etiqueta (segundo argumento de PRINT).
MeseroDto
idMeseroInternoidMeseronombrecontrasenatipofotografiavisibleidEmpresatipoAccesocapturaRestringidaMesasperfilmonitorMeseroColorFondomonitorMeseroColorLetraaccesoIndicadorMesasturnoAbiertocomisionautorizaProductosMenuQrworkspaceIdMeserosResponse
workerIddispatchedAttotalResultsModificadorDto
idProductoidModificadorprecionombreidGruposModificadoresModifiersPrint
idModifierId interno del modificador.
nameNombre del modificador impreso en el ticket.
pricePrecio del modificador. Se guarda para futuras plantillas de recibo; no se imprime en la comanda.
OpenOrderDto
folioserieFolionumchequefechacierremesanoPersonasidMeseropagadocanceladoimpresoimpresionesdescuentorazonCanceladoordenfacturadoidTurnousuarioCancelocomentarioDescuentousuarioPagototalArticulossubtotalsubtotalSinImpuestostotaltotalConPropinaefectivotarjetavalesotrospropinatotalSinDescuentototalAlimentostotalBebidastotalOtrostotalDescuentostotalCortesiastotalCortesiaAlimentosnombreMeseroOpenOrdersResponse
workerIddispatchedAttotalResultsOpenShiftRequest
estacionidEmpresaidMeserocajerofondofondoDolaresOpenShiftResponse
jobIdidTurnoaperturafondocajeroidMeserofondoDolaresOrderDetailDto
folioDetmovimientocomandacantidadidProductodescuentoprecioprecioSinImpuestoscomentariotiempomitadhoramodificadoridEstacionusuarioDescuentocomentarioDescuentoidTipoDescuentoidProductoCompuestoproductoCompuestoPrincipalprecioCatalogomarcaridMeseroProductoidCortesianumeroTarjetafolioProduccionnivelsistemaEnviopromoVolumenOrderDetailsQueryResponse
jobIdworkerIddispatchedAtpagepageSizetotalResultstotalPageshasNextPageOrderDiscountTotalsDto
totalSinDescuentoSuma de los importes de línea sin impuestos y sin ningún descuento.
subtotalSubtotal sin impuestos, ya neteado de los descuentos por producto.
subtotalConDescuentoSubtotal después de aplicar además el descuento general.
totalDescuentosSuma de todos los descuentos aplicados (por producto + general).
descuentoPorcentaje de descuento general vigente en la cuenta.
descuentoImporteImporte de descuento general vigente en la cuenta.
totalImpuestosImpuestos calculados sobre el subtotal con descuento.
totalTotal a cobrar, con impuestos.
totalSinDescuentoImpTotal con impuestos antes del descuento general.
totalAlimentosTotal de alimentos después de descuentos.
totalBebidasTotal de bebidas después de descuentos.
totalOtrosTotal de otros después de descuentos.
totalCortesiasTotal de cortesías. Un descuento general del 100% no se registra como descuento sino como
cortesía: totalDescuentos conserva únicamente los descuentos por producto y el
importe general pasa a este campo, igual que hace SoftRestaurant.
totalArticulosNúmero de artículos de la cuenta.
OrderDtoWithItemsAndPayments
folioserieFolionumchequefechacierremesanoPersonasidMeseropagadocanceladoimpresoimpresionesdescuentorazonCanceladoordenfacturadoidTurnousuarioCancelocomentarioDescuentousuarioPagototalArticulossubtotalsubtotalSinImpuestostotaltotalConPropinaefectivotarjetavalesotrospropinatotalSinDescuentototalAlimentostotalBebidastotalOtrostotalDescuentostotalCortesiastotalCortesiaAlimentosOrderItemDiscount
movimientoNúmero de movimiento de la línea dentro de la cuenta.
idProductoClave del producto de esa línea.
modoporcentaje — valor es un porcentaje (0–100) sobre la línea.
importe — valor es un monto fijo POR UNIDAD; base decide si se resta del
precio unitario sin impuestos o del precio unitario con impuestos.
Code
baseSolo aplica cuando modo es importe: indica de qué precio unitario se resta.
subtotal — del precio unitario sin impuestos (valor por omisión).
total — del precio unitario con impuestos.
Se ignora en modo porcentaje.
valorPorcentaje o importe unitario según modo. Enviar 0 para cancelar el descuento
de la línea.
En modo importe el valor es POR UNIDAD: una línea de 3 piezas a $100 con importe $50
sobre total descuenta $150 en total, porque cada pieza baja $50. Es lo que hace el
punto de venta, que guarda el descuento de esa línea como 50%.
OrderPaymentMethodsDto
folioidFormaDePagodescripcionimportepropinatipoDeCambioOrdersResponse
workerIddispatchedAtpagepageSizetotalResultstotalPageshasNextPagePartialProductDto
idProductodescripcionProductoidGrupomovimientoNúmero de línea dentro de la orden. Debe empezar en 1 y ser consecutivo.
cantidadCantidad vendida. Debe ser mayor a 0.
descripcionGrupoclasificacionmodificadorRequerido. 0 para un producto normal; distinto de 0 si la línea es un modificador.
productoCompuestoPrincipalnombreCortoimagenvisibleMenuidProdServSatcomentarioprecioPrecio unitario CON impuestos incluidos.
precioSinImpuestosPrecio unitario SIN impuestos, es decir precio / (1 + (impuesto1+impuesto2+impuesto3)/100).
impuesto1TASA del impuesto en porcentaje — 16.00 significa 16%, no $16.00. No es el importe
del impuesto. Enviar aquí el importe hace que la orden se cree con totales aparentemente
correctos pero que cambien solos al aplicarle el primer descuento.
impuesto2Tasa del segundo impuesto en porcentaje. 0 si no aplica.
impuesto3Tasa del tercer impuesto en porcentaje. 0 si no aplica.
descuentoPorcentaje de descuento de la línea (0–100). 0 si no lleva descuento.
bloqueadopermitirprodcompenmodifPaymentMethodDto
idFormaDePagodescripciontipotipoDeCambiosolicitaReferenciaprioridadBotoncuentaContableImportecuentaContableComisioncuentaContableIvaComisioncomisionvisibleaceptaPropinasubtipoprefijo1prefijo2codigoDePrefijoconsultacodigoDePrefijoacumredgeneraPuntosformatoImpresionidFPagoFiscalpagoEnLineatipoTarjetanoFacturablecomisionReporte1comisionReporte2tipoTarjetaBancariaidTipoDescuentoidFormaPagoSatserviceCodeleerBrazaletecargoHabitacionEgvisibleKioscoautocapturarsumaTotalequivalenciabloqueaImportePaymentMethodsResponse
jobIdworkerIddispatchedAtpagepageSizetotalResultstotalPageshasNextPagePrintCustomerRequest
codeCódigo del cliente (p. ej. "A17").
nameNombre del cliente.
typeTipo de cliente (p. ej. "Socio").
roomNameSala o área desde la que se ordenó.
PrintGroupRequest
printerIdId de la impresora destino (obtenido de GET /print/{licenseKey}/printers).
jobTypeQué se imprime. Envíe "receipt" para el recibo del cliente o "order" para la comanda de preparación (cocina/barra).
titleTítulo del ticket — se imprime como la línea de destino (p. ej. "COCINA").
Artículos a imprimir en este ticket. Ignorado cuando se envían "sections".
qrDataQR del ticket si se requiere. Reservado para la futura plantilla de recibo.
Bloques de artículos con encabezado. Sustituye a "items" cuando se envía.
PrintGroupResult
printerIdId de la impresora a la que apuntó este grupo.
jobIdId de auditoría del trabajo de impresión creado, si se creó alguno.
statusEstado del resultado: "Completed" o "Failed".
errorDetalle de la falla cuando el grupo no se imprimió.
PrintLineRequest
idProductId interno del producto.
nameNombre del producto impreso en el ticket.
quantityCantidad solicitada.
Modificadores del producto, impresos como líneas "+ {nombre}".
pricePrecio unitario. Se guarda para futuras plantillas de recibo; no se imprime en la comanda.
notesNota libre para esta línea, impresa como "nota: {notas}".
PrintOrderRequest
orderFolioFolio de la orden mostrado en el ticket (p. ej. "169").
isReprintIndica si el ticket ya había sido impreso anteriormente.
Un grupo de impresión por cada impresora destino.
priceTotal de la orden. Se guarda para futuras plantillas de recibo; no se imprime en la comanda.
paymentMethodMétodo de pago. Se guarda para futuras plantillas de recibo; no se imprime en la comanda.
businessNameNombre del negocio impreso como encabezado del ticket.
businessSubtitleSegunda línea opcional del encabezado, debajo del nombre del negocio (p. ej. marca o sucursal).
orderNoteNota que aplica a toda la orden, impresa al final del ticket.
PrintOrderResponse
orderRefPrintSectionRequest
Artículos de este bloque.
labelEncabezado del bloque, p. ej. el comensal al que pertenecen los artículos.
PrintTestRequest
printerIdId de la impresora a probar (obtenido de GET /print/{licenseKey}/printers).
printerNameNombre de la impresora, impreso en el ticket para identificar cuál respondió.
titleEncabezado de la prueba. Por defecto "PRUEBA".
messageCuerpo de la prueba. Por defecto "IMPRESORA OK - IGNORAR".
PrinterAssignmentDto
idprinterIpdisplayNamekindProtocolo de la impresora: "thermal" (ESC/POS) o "label" (etiquetadora TSPL).
widthMmParámetros de medio TSPL de una etiquetadora. Sólo se aplican cuando kind es "label"; en una impresora térmica se devuelven con sus valores por defecto y se ignoran al imprimir.
sourcePrinterDto
idworkerIdlicenseKeyprinterIpdisplayNamekindProtocolo de la impresora: "thermal" (ESC/POS) o "label" (etiquetadora TSPL).
widthMmParámetros de medio TSPL de una etiquetadora. Sólo se aplican cuando kind es "label"; en una impresora térmica se devuelven con sus valores por defecto y se ignoran al imprimir.
sourcesourceIdcreatedAtupdatedAtProblemDetails
typetitlestatusdetailinstanceProductDto
idProductodescripcionProductoidGrupodescripcionGrupoclasificacionnombreCortoimagenvisibleMenuidProdServSatprecioprecioSinImpuestosimpuesto1impuesto2impuesto3bloqueadopermitirprodcompenmodifProductsQueryResponse
jobIdworkerIddispatchedAtpagepageSizetotalResultstotalPageshasNextPageSearchOrdersRequest
idTurnossearchpagepageSizefacturadofechaStartfechaEndcierreStartcierreEndStationDto
idEstaciondescripcionserieipimpresoraChequesimpresoraNotascajaComanderodirectorioRespaldorutaTemporalStationsQueryResponse
jobIdworkerIddispatchedAtpagepageSizetotalResultstotalPageshasNextPageTipoDescuentoDto
idTipoDescuentoClave del tipo de descuento. Es el valor que se envia como idTipoDescuento al aplicar un descuento.
descripcionNombre visible del tipo de descuento.
descuentoPorcentaje propio del tipo de descuento. No es un tope.
maximoActivadoCuando es true, PosGateway.Application.Features.Workers.TiposDescuento.Dtos.TipoDescuentoDto.ImporteMaximoDescuento funciona como tope: un descuento
cuyo importe lo exceda sera rechazado. PosGateway.Application.Features.Workers.TiposDescuento.Dtos.TipoDescuentoDto.Descuento NO es el tope — es el
porcentaje propio del tipo de descuento.
importeMaximoDescuentoMonto máximo del descuento a aplicar cuando PosGateway.Application.Features.Workers.TiposDescuento.Dtos.TipoDescuentoDto.MaximoActivado es true.
TiposDescuentoResponse
jobIdworkerIddispatchedAttotalResultsTurnoDto
idTurnoInternoidTurnofondoaperturacierreidEstacioncajeroefectivotarjetavalescreditoprocesadoWebidEmpresaenviadoACentralfechaEnviadousuarioEnvioofflineenviadoAfcorteEnviadoeliminarTemporalesEnCierreidMeserofondoDolaresprocesadoTurnosQueryResponse
jobIdworkerIddispatchedAtpagepageSizetotalResultstotalPageshasNextPageUpdatePrinterRequest
printerIpDirección IP de la impresora en la red local de la sucursal (p. ej. "192.168.1.50").
widthMmAncho del papel en milímetros (típicamente 58 u 80). Requerido para impresoras térmicas.
displayNameNombre visible de la impresora (p. ej. "Cocina", "Barra").
sourceOrigen opcional de la impresora cuando se importa de un sistema externo.
sourceIdIdentificador de la impresora en el sistema de origen, si aplica.
kindProtocolo de la impresora: "thermal" (ESC/POS) o "label" (etiquetadora TSPL).
Parámetros de medio TSPL de una etiquetadora. Sólo se aplican cuando kind es "label"; en una impresora térmica se devuelven con sus valores por defecto y se ignoran al imprimir.
UpdateProductRequest
idEmpresaId de la empresa dueña del producto. Debe corresponder a una empresa existente; de lo contrario la solicitud falla.
descripcionProductoidGruponombreCortovisibleMenuprecioimpuesto1impuesto2impuesto3bloqueadopermitirprodcompenmodif