Vai al contenuto
v26.3

Riferimento API

API REST completa con 341 endpoint in 34 aree. Autenticazione tramite token JWT Bearer (vedere API REST).


Panoramica

Area Endpoint Descrizione
Analytics 5 Analitica
ArticleImport 13 Importazione articoli
Articles 15 Articoli e gruppi articoli
Auth 6 Login, token, refresh
AutoBeleg 14
BankTransfer 7
Banking 50 FinTS, recupero conto, SEPA
CustomerGroups 4 Gruppi clienti
Customers 16 Anagrafica clienti, credito, documenti
Delivery 18 Servizio consegna
Dunning 3 Solleciti (3 livelli)
Export 6 DSFinV-K, GDPdU
Geocoding 3 Geocoding
Invoice 18 Fatture clienti, PDF
MenuCard 9 Gestione menù
OpenBons 9 Ordini aperti (servizio al tavolo)
OptionTemplates 5 Modelli di opzioni
Payments 2 Eseguire pagamenti
Receipts 12 Scontrini, storno
Reports 7 Report fatturato, articoli, personale
Reservations 8 Prenotazioni tavoli
SavedTransfer 8
SepaMandate 7 Mandati SEPA
Spendings 9 Spese / Prelievi di contante
StockBookings 4
StockInventory 2
StockOrders 5
Stocks 5 Gestione magazzino
Subscription 7 Abbonamenti
Tables 20 Tavoli, gruppi tavoli, stato
TimeTracking 8 Rilevazione presenze
Vouchers 9 Buoni
WhatsApp 10 Integrazione WhatsApp
Workshop 17 Ordini di officina

Analytics

Metodo Endpoint Descrizione
GET /api/v1/analytics/customer-insights Recupera l'analitica degli insight clienti per un intervallo di date.
GET /api/v1/analytics/disco-stats Recupera l'analitica disco per un intervallo di date.
GET /api/v1/analytics/online-orders Recupera l'analitica degli ordini online per un intervallo di date.
GET /api/v1/analytics/staff-performance Recupera l'analitica delle prestazioni del personale per un intervallo di date.
GET /api/v1/analytics/workshop-stats Recupera l'analitica dell'officina per un intervallo di date.

ArticleImport

Metodo Endpoint Descrizione
POST /api/v1/article-import/ai-extract
POST /api/v1/article-import/ai-suggest
POST /api/v1/article-import/ai/allergens
POST /api/v1/article-import/ai/description
POST /api/v1/article-import/analyze
POST /api/v1/article-import/execute
GET /api/v1/article-import/profiles
POST /api/v1/article-import/profiles
DELETE /api/v1/article-import/profiles/{id}
GET /api/v1/article-import/profiles/{id}
PUT /api/v1/article-import/profiles/{id}
GET /api/v1/article-import/target-fields
GET /api/v1/article-import/template
Request Body: POST /api/v1/article-import/profiles (CreateImportProfileRequest)
Campo Tipo Obbligatorio Descrizione
name string?
description string?
sourceFormat string?
presetId string?
csvSettings object
excelSettings object
columnMappings array[ColumnMappingDto]?
valueTransforms array[ValueTransformDto]?
defaultGroupId string?
defaultTaxRate number
conflictMode string?
matchField string?
Request Body: PUT /api/v1/article-import/profiles/{id} (UpdateImportProfileRequest)
Campo Tipo Obbligatorio Descrizione
name string?
description string?
sourceFormat string?
presetId string?
csvSettings object
excelSettings object
columnMappings array[ColumnMappingDto]?
valueTransforms array[ValueTransformDto]?
defaultGroupId string?
defaultTaxRate number?
conflictMode string?
matchField string?

Articles

Metodo Endpoint Descrizione
GET /api/v1/articles Elenca gli articoli, opzionalmente filtrati per gruppo, con paginazione.
POST /api/v1/articles Crea un nuovo articolo.
GET /api/v1/articles/barcode/{barcode} Cerca l'articolo che riporta un determinato codice a barre (ad es. da uno scanner).
GET /api/v1/articles/groups
POST /api/v1/articles/groups
DELETE /api/v1/articles/groups/{documentId}
PUT /api/v1/articles/groups/{documentId}
GET /api/v1/articles/search
DELETE /api/v1/articles/{id}
GET /api/v1/articles/{id} Recupera un singolo articolo tramite il suo document id.
PUT /api/v1/articles/{id}
PUT /api/v1/articles/{id}/icon
POST /api/v1/articles/{id}/images
DELETE /api/v1/articles/{id}/images/{name}
GET /api/v1/articles/{id}/images/{name}
Request Body: POST /api/v1/articles/groups (CreateArticleGroupRequest)
Campo Tipo Obbligatorio Descrizione
groupId string?
name string?
shortName string?
description string?
color string?
background string?
sortOrder integer
displayType integer
isActive boolean
Request Body: PUT /api/v1/articles/groups/{documentId} (UpdateArticleGroupRequest)
Campo Tipo Obbligatorio Descrizione
name string?
shortName string?
description string?
color string?
background string?
sortOrder integer?
displayType integer?
isActive boolean?
printOption object
extraPrintOptions array[ExtraPrintOptionDto]?
extraArticleIds array[string]?
rules array[ArticleRuleDto]?
optionGroups array[ArticleOptionGroupDto]?

Auth

Metodo Endpoint Descrizione
POST /api/v1/auth/change-password Cambia la password per l'utente attualmente connesso.
POST /api/v1/auth/login Accedi con nome utente e password e ricevi i token JWT.
POST /api/v1/auth/login/card Autenticazione con carta NFC/RFID.
POST /api/v1/auth/logout Disconnetti e invalida il refresh token.
GET /api/v1/auth/me Recupera le informazioni dell'utente corrente.
POST /api/v1/auth/refresh Scambia un refresh token con un nuovo access token.
Request Body: POST /api/v1/auth/login (LoginRequest)
Campo Tipo Obbligatorio Descrizione
username string? Nome utente per l'autenticazione.
password string? Password per l'autenticazione.
Request Body: POST /api/v1/auth/login/card (CardLoginRequest)
Campo Tipo Obbligatorio Descrizione
cardId string? ID della carta dal lettore NFC/RFID.

AutoBeleg

Metodo Endpoint Descrizione
GET /api/v1/autobeleg/entries
GET /api/v1/autobeleg/entries/{id}
PUT /api/v1/autobeleg/entries/{id}
GET /api/v1/autobeleg/entries/{id}/attachments/{fileName}
POST /api/v1/autobeleg/entries/{id}/convert
POST /api/v1/autobeleg/entries/{id}/ignore
POST /api/v1/autobeleg/fetch
GET /api/v1/autobeleg/rules
POST /api/v1/autobeleg/rules
DELETE /api/v1/autobeleg/rules/{id}
PUT /api/v1/autobeleg/rules/{id}
POST /api/v1/autobeleg/simulate
GET /api/v1/autobeleg/stats
POST /api/v1/autobeleg/test-connection
Request Body: POST /api/v1/autobeleg/rules (CreateAutoBelegRuleRequest)
Campo Tipo Obbligatorio Descrizione
name string?
senderEmail string?
senderPattern string?
subjectPattern string?
fixedAmount number?
defaultAccountMode integer
defaultAmountNormal number
defaultAmountReduced number
defaultAmountTaxFree number
defaultComment string?
expenseCategoryId string?
imapAccountId string?
isActive boolean
Request Body: PUT /api/v1/autobeleg/rules/{id} (UpdateAutoBelegRuleRequest)
Campo Tipo Obbligatorio Descrizione
name string?
senderEmail string?
senderPattern string?
subjectPattern string?
fixedAmount number?
defaultAccountMode integer?
defaultAmountNormal number?
defaultAmountReduced number?
defaultAmountTaxFree number?
defaultComment string?
expenseCategoryId string?
imapAccountId string?
isActive boolean?

BankTransfer

Metodo Endpoint Descrizione
GET /api/v1/bank-transfers
DELETE /api/v1/bank-transfers/{id}
GET /api/v1/bank-transfers/{id}
GET /api/v1/bank-transfers/{id}/invoices
POST /api/v1/bank-transfers/{id}/send-emails
GET /api/v1/bank-transfers/{id}/sepa
POST /api/v1/bank-transfers/{id}/submit-fints
Request Body: POST /api/v1/bank-transfers/{id}/submit-fints (SubmitFinTsRequest)
Campo Tipo Obbligatorio Descrizione
bankAccountId string?

Banking

Metodo Endpoint Descrizione
GET /api/v1/banking/accounts
POST /api/v1/banking/accounts
DELETE /api/v1/banking/accounts/{id}
GET /api/v1/banking/accounts/{id}
PUT /api/v1/banking/accounts/{id}
GET /api/v1/banking/aging-report
POST /api/v1/banking/auto-match
GET /api/v1/banking/cashflow-projection
GET /api/v1/banking/expense-categories
POST /api/v1/banking/expense-categories
DELETE /api/v1/banking/expense-categories/{id}
PUT /api/v1/banking/expense-categories/{id}
GET /api/v1/banking/expense-summary
POST /api/v1/banking/fints/balance
GET /api/v1/banking/fints/bank-lookup
POST /api/v1/banking/fints/batch-transfer
POST /api/v1/banking/fints/direct-debit
POST /api/v1/banking/fints/fetch
GET /api/v1/banking/fints/protocol-log/{sessionToken} Restituisce un log di protocollo sanificato per una sessione FinTS (per la visualizzazione diagnostica prima della segnalazione).
POST /api/v1/banking/fints/report-issue Segnala un problema SEPA con log di protocollo sanificato al team DiKAS.
DELETE /api/v1/banking/fints/sessions/{id}
POST /api/v1/banking/fints/tan
POST /api/v1/banking/fints/transfer
POST /api/v1/banking/fints/vop-confirm/{sessionId} Conferma una mancata corrispondenza del nome VoP (Verification of Payee) e procede con il bonifico.
Chiamato quando l'utente prende atto di un nome non corrispondente e vuole continuare.
POST /api/v1/banking/import
GET /api/v1/banking/invoice-search
GET /api/v1/banking/open-items/export
GET /api/v1/banking/overpayments
POST /api/v1/banking/overpayments/{invoiceId}/redistribute
POST /api/v1/banking/overpayments/{invoiceId}/refund
GET /api/v1/banking/payment-journal
POST /api/v1/banking/payment-reminders
POST /api/v1/banking/recompute-hashes Ricalcola gli hash di deduplicazione per tutte le transazioni (correzione una tantum dopo la modifica dell'algoritmo di hash)
POST /api/v1/banking/reconcile Reimposta le fatture nell'intervallo e le riconcilia nuovamente con i movimenti bancari
POST /api/v1/banking/sepa
GET /api/v1/banking/sessions/{id}
POST /api/v1/banking/sessions/{id}/complete
PUT /api/v1/banking/sessions/{id}/match
GET /api/v1/banking/statements
POST /api/v1/banking/statements/fetch
POST /api/v1/banking/statements/import
DELETE /api/v1/banking/statements/{id}
GET /api/v1/banking/transactions
PUT /api/v1/banking/transactions/{id}/categorize
PUT /api/v1/banking/transactions/{id}/ignore
PUT /api/v1/banking/transactions/{id}/match
POST /api/v1/banking/transactions/{id}/multi-match
POST /api/v1/banking/transactions/{id}/sepa-return
PUT /api/v1/banking/transactions/{id}/unmatch
GET /api/v1/banking/validate-iban Convalida un IBAN e restituisce le informazioni bancarie (BIC, nome della banca) se deducibili.
Request Body: PUT /api/v1/banking/sessions/{id}/match (MatchBankEntryRequest)
Campo Tipo Obbligatorio Descrizione
entryIndex integer
invoiceId string?
customerId string?
status integer
Request Body: POST /api/v1/banking/accounts (CreateBankAccountRequest)
Campo Tipo Obbligatorio Descrizione
name string?
iban string?
bic string?
blz string?
finTsUrl string?
userId string?
pin string?
accountHolder string?
tanMethod string?
isDefault boolean

CustomerGroups

Metodo Endpoint Descrizione
GET /api/v1/customer-groups Recupera tutti i gruppi clienti.
POST /api/v1/customer-groups Crea un nuovo gruppo clienti.
DELETE /api/v1/customer-groups/{id} Elimina un gruppo clienti (soft delete).
PUT /api/v1/customer-groups/{id} Aggiorna un gruppo clienti esistente.
Request Body: POST /api/v1/customer-groups (CreateCustomerGroupRequest)
Campo Tipo Obbligatorio Descrizione
name string?
description string?
defaultDiscount number?
color string?
sortOrder integer
isActive boolean
Request Body: PUT /api/v1/customer-groups/{id} (UpdateCustomerGroupRequest)
Campo Tipo Obbligatorio Descrizione
name string?
description string?
defaultDiscount number?
color string?
sortOrder integer?
isActive boolean?

Customers

Metodo Endpoint Descrizione
GET /api/v1/customers Recupera tutti i clienti.
POST /api/v1/customers Crea un nuovo cliente.
DELETE /api/v1/customers/all Elimina tutti i clienti (hard delete).
GET /api/v1/customers/card/{cardId} Cerca il cliente tramite ID carta.
DELETE /api/v1/customers/without-receipts Elimina tutti i clienti che non hanno scontrini (hard delete).
DELETE /api/v1/customers/{id} Elimina un cliente.
GET /api/v1/customers/{id} Recupera un cliente tramite ID.
PUT /api/v1/customers/{id} Aggiorna un cliente esistente.
GET /api/v1/customers/{id}/account-transactions Recupera le transazioni di conto (saldo) di un cliente.
POST /api/v1/customers/{id}/documents Carica un documento per un cliente. Max 5MB.
DELETE /api/v1/customers/{id}/documents/{name} Elimina un documento del cliente.
GET /api/v1/customers/{id}/documents/{name} Scarica un documento del cliente.
GET /api/v1/customers/{id}/invoice-summary Recupera il riepilogo fatture di un cliente (ricerca rapida).
POST /api/v1/customers/{id}/payout Versamento dal AccountBalance del cliente (non BonusBalance).
GET /api/v1/customers/{id}/point-transactions Recupera le transazioni dei punti fedeltà di un cliente.
POST /api/v1/customers/{id}/portal-invite Invia un'email di invito al portale a un cliente.
Request Body: POST /api/v1/customers/{id}/payout (PayoutRequest)
Campo Tipo Obbligatorio Descrizione
amount number

Delivery

Metodo Endpoint Descrizione
GET /api/v1/delivery
POST /api/v1/delivery
PUT /api/v1/delivery/assign
GET /api/v1/delivery/by-number/{number}
POST /api/v1/delivery/dispatch
POST /api/v1/delivery/optimize-route
POST /api/v1/delivery/place Inserisce un ordine di consegna/ritiro con comande cucina (senza pagamento).
POST /api/v1/delivery/send-route
GET /api/v1/delivery/stats
DELETE /api/v1/delivery/{id}
GET /api/v1/delivery/{id}
GET /api/v1/delivery/{id}/bons Recupera gli OpenBons non pagati di un ordine di consegna.
POST /api/v1/delivery/{id}/complete-payment
POST /api/v1/delivery/{id}/load-for-edit Carica un ordine di consegna con OpenBons per la modifica nel punto cassa.
POST /api/v1/delivery/{id}/pay
PUT /api/v1/delivery/{id}/reassign-driver
PUT /api/v1/delivery/{id}/status
POST /api/v1/delivery/{id}/void-item Storna un singolo articolo da un ordine di consegna non pagato.
Request Body: POST /api/v1/delivery (CreateDeliveryOrderRequest)
Campo Tipo Obbligatorio Descrizione
orderType integer
customerId string?
customerName string?
customerPhone string?
street string?
houseNumber string?
zipCode string?
city string?
requestedTime string?
items array[DeliveryOrderItemRequest]?
notes string?
source string?
externalOrderId string?
isPaid boolean
paymentMethod string?
latitude number?
longitude number?
Request Body: PUT /api/v1/delivery/{id}/status (UpdateDeliveryStatusRequest)
Campo Tipo Obbligatorio Descrizione
status integer

Dunning

Metodo Endpoint Descrizione
POST /api/v1/dunning/execute
GET /api/v1/dunning/preview/{customerId} Anteprima dell'email di sollecito per un cliente specifico.
POST /api/v1/dunning/simulate

Export

Metodo Endpoint Descrizione
POST /api/v1/export/dsfinvk
GET /api/v1/export/dsfinvk/{sessionId}
GET /api/v1/export/dsfinvk/{sessionId}/download
POST /api/v1/export/gdpdu
GET /api/v1/export/gdpdu/{sessionId}
GET /api/v1/export/gdpdu/{sessionId}/download
Request Body: POST /api/v1/export/gdpdu (StartExportRequest)
Campo Tipo Obbligatorio Descrizione
startDate string
endDate string
Request Body: POST /api/v1/export/dsfinvk (StartExportRequest)
Campo Tipo Obbligatorio Descrizione
startDate string
endDate string

Geocoding

Metodo Endpoint Descrizione
GET /api/v1/geocoding/geocode
GET /api/v1/geocoding/place-details Recupera i Google Place Details (completa una sessione di autocompletamento).
Fornisce l'indirizzo completo con le coordinate.
GET /api/v1/geocoding/search

Invoice

Metodo Endpoint Descrizione
GET /api/v1/invoices
POST /api/v1/invoices
POST /api/v1/invoices/bulk-close
GET /api/v1/invoices/overview
POST /api/v1/invoices/write-off
DELETE /api/v1/invoices/{id}
GET /api/v1/invoices/{id}
PUT /api/v1/invoices/{id}
POST /api/v1/invoices/{id}/cancel
POST /api/v1/invoices/{id}/credit-note
POST /api/v1/invoices/{id}/duplicate
GET /api/v1/invoices/{id}/email-preview Anteprima dell'email che verrebbe inviata per questa fattura.
POST /api/v1/invoices/{id}/payment
GET /api/v1/invoices/{id}/payment-journal
GET /api/v1/invoices/{id}/pdf
POST /api/v1/invoices/{id}/send
PUT /api/v1/invoices/{id}/sepa-status
GET /api/v1/invoices/{id}/xml
Request Body: POST /api/v1/invoices (CreateInvoiceRequest)
Campo Tipo Obbligatorio Descrizione
customerId string?
positions array[InvoicePositionRequest]?
paymentTermDays integer
isBankDebit boolean
notes string?
billingCompanyName string?
billingName string?
billingStreet string?
billingZipCode string?
billingCity string?
Request Body: PUT /api/v1/invoices/{id} (UpdateInvoiceRequest)
Campo Tipo Obbligatorio Descrizione
customerId string?
positions array[InvoicePositionRequest]?
paymentTermDays integer
isBankDebit boolean
notes string?
billingCompanyName string?
billingName string?
billingStreet string?
billingZipCode string?
billingCity string?
Metodo Endpoint Descrizione
DELETE /api/v1/menu-card/custom-template
GET /api/v1/menu-card/custom-template
POST /api/v1/menu-card/custom-template
GET /api/v1/menu-card/default-template
GET /api/v1/menu-card/excel
GET /api/v1/menu-card/pdf
GET /api/v1/menu-card/settings
PUT /api/v1/menu-card/settings
GET /api/v1/menu-card/template
Request Body: PUT /api/v1/menu-card/settings (UpdateMenuCardSettingsRequest)
Campo Tipo Obbligatorio Descrizione
restaurantName string?
subtitle string?
footerText string?
showAllergens boolean
showArticleNumbers boolean
showDescriptions boolean
showPrices boolean
showGroupDescriptions boolean
columnCount integer
pageFormat string?
fontSize integer
groupIds array[string]?
headerColor string?
currency string?

OpenBons

Metodo Endpoint Descrizione
GET /api/v1/open-bons Recupera tutti gli ordini aperti con filtro opzionale.
POST /api/v1/open-bons Crea un nuovo ordine aperto (aggiungi articolo all'ordine).
POST /api/v1/open-bons/batch Registra una serie di articoli su un tavolo (la chiamata principale "ordinare").
GET /api/v1/open-bons/kitchen Recupera gli ordini aperti per il monitor cucina (filtrati per stato di lavorazione e opzione di stampa cucina).
POST /api/v1/open-bons/move Sposta gli articoli di un ordine aperto su un altro tavolo.
GET /api/v1/open-bons/table/{tableId}/summary Recupera il conto corrente di un tavolo: tutti gli articoli aperti (non pagati) e il totale attuale.
PUT /api/v1/open-bons/{id} Aggiorna un articolo di un ordine aperto.
POST /api/v1/open-bons/{id}/void Storna/annulla un articolo di un ordine aperto.
PATCH /api/v1/open-bons/{id}/work-status Aggiorna lo stato di lavorazione di un ordine aperto (flusso cucina).
Request Body: POST /api/v1/open-bons (CreateOpenBonRequest)
Campo Tipo Obbligatorio Descrizione
bonId string? ID di un bon esistente a cui aggiungere, oppure null per crearne uno nuovo.
tableId string? ID del tavolo per l'ordine.
subTableName string? Nome del sotto-tavolo (ad es. "Gast 1").
seatNumber integer? Numero del posto per l'ordinazione basata sui posti.
articleId string? Articolo da ordinare.
customerGroupId string? Gruppo clienti per il prezzo.
price number? Prezzo personalizzato (null = usa il prezzo dell'articolo).
count number Quantità da ordinare.
gang string? Numero della portata.
extraOptions array[CreateOpenBonExtraOptionRequest]? Opzioni/modificatori extra.
extraDescription string? Note/descrizione aggiuntive.
Request Body: POST /api/v1/open-bons/batch (CreateOpenBonsBatchRequest)
Campo Tipo Obbligatorio Descrizione
tableId string?
subTableName string?
customerGroupId string?
printerId string?
workplaceId string?
items array[BatchOpenBonItem]?

OptionTemplates

Metodo Endpoint Descrizione
GET /api/v1/option-templates
POST /api/v1/option-templates
DELETE /api/v1/option-templates/{id}
GET /api/v1/option-templates/{id}
PUT /api/v1/option-templates/{id}
Request Body: POST /api/v1/option-templates (CreateOptionTemplateRequest)
Campo Tipo Obbligatorio Descrizione
name string?
description string?
isActive boolean
sortOrder integer
groups array[ArticleOptionGroupDto]?
Request Body: PUT /api/v1/option-templates/{id} (UpdateOptionTemplateRequest)
Campo Tipo Obbligatorio Descrizione
name string?
description string?
isActive boolean?
sortOrder integer?
groups array[ArticleOptionGroupDto]?

Payments

Metodo Endpoint Descrizione
POST /api/v1/payments/direct Registra e paga una vendita al banco in una sola chiamata (senza tavolo coinvolto).
POST /api/v1/payments/table Paga gli ordini aperti di un tavolo e li chiude in uno scontrino.
Request Body: POST /api/v1/payments/table (ProcessTablePaymentRequest)
Campo Tipo Obbligatorio Descrizione
tableId string? ID del tavolo da pagare.
openBonIds array[string]? ID specifici degli ordini aperti da pagare (null = paga tutto).
items array[PartialPaymentItemRequest]? Articoli con pagamento parziale (alternativa a OpenBonIds).

Permette di pagare una quantità parziale di un articolo. | | payments | array[PaymentEntryRequest]? | | Voci di pagamento. | | customerId | string? | | ID del cliente da collegare. | | tipAmount | number | | Importo della mancia. | | cashGiven | number | | Importo in contanti consegnato dal cliente (per il calcolo del resto). | | notes | string? | | Note. | | printerId | string? | | ID della stampante di destinazione per la stampa automatica dello scontrino. | | autoPrint | boolean | | Se true, stampa lo scontrino anche se non è impostato alcun PrinterId esplicito (usa DefaultPrinterId). | | isBewirtungsbeleg | boolean | | Se true, contrassegna lo scontrino come Bewirtungsbeleg (§4 Abs. 5 Nr. 2 EStG). | | bewirtungTipAmount | number | | Importo della mancia per la Bewirtungsbeleg (incluso nel totale per il calcolo del 70%). |

Request Body: POST /api/v1/payments/direct (ProcessDirectSaleRequest)
Campo Tipo Obbligatorio Descrizione
items array[DirectSaleItemRequest]? Articoli da vendere.
payments array[PaymentEntryRequest]? Voci di pagamento.
customerId string? ID del cliente da collegare.
customerGroupId string? Gruppo clienti per il prezzo.
tipAmount number Importo della mancia.
cashGiven number Importo in contanti consegnato dal cliente (per il calcolo del resto).
notes string? Note.
payoutAmount number Importo del versamento dal saldo conto del cliente (0 = nessun versamento).
printerId string? ID della stampante di destinazione per la stampa automatica dello scontrino.
autoPrint boolean Se true, stampa lo scontrino anche se non è impostato alcun PrinterId esplicito (usa DefaultPrinterId).
workplaceId string? ID della postazione per la determinazione del prezzo e il tracciamento.
isBewirtungsbeleg boolean Se true, contrassegna lo scontrino come Bewirtungsbeleg (§4 Abs. 5 Nr. 2 EStG).
bewirtungTipAmount number Importo della mancia per la Bewirtungsbeleg (incluso nel totale per il calcolo del 70%).

Receipts

Metodo Endpoint Descrizione
GET /api/v1/receipts Recupera tutti gli scontrini con filtro opzionale.
GET /api/v1/receipts/today Recupera gli scontrini di oggi.
GET /api/v1/receipts/{id} Recupera uno scontrino tramite ID.
POST /api/v1/receipts/{id}/assign-customer Assegna un cliente a uno scontrino esistente (per Bewirtungsbeleg >=250€).
POST /api/v1/receipts/{id}/bewirtungsbeleg/email Invia il PDF della Bewirtungsbeleg via email.
GET /api/v1/receipts/{id}/bewirtungsbeleg/pdf Scarica una Bewirtungsbeleg come PDF.
POST /api/v1/receipts/{id}/change-payment Cambia il tipo di pagamento di uno scontrino.
POST /api/v1/receipts/{id}/email Invia lo scontrino come PDF + ZUGFeRD-XML via email.
GET /api/v1/receipts/{id}/pdf Scarica uno scontrino come PDF.
GET /api/v1/receipts/{id}/print Recupera il bon di stampa di uno scontrino.
POST /api/v1/receipts/{id}/reopen Riapre uno scontrino: lo storna e registra nuovamente gli articoli come ordini aperti.
POST /api/v1/receipts/{id}/void Storna/annulla uno scontrino.
Request Body: POST /api/v1/receipts/{id}/void (VoidReceiptRequest)
Campo Tipo Obbligatorio Descrizione
reason string?
terminalId string?
Request Body: POST /api/v1/receipts/{id}/change-payment (ChangePaymentTypeRequest)
Campo Tipo Obbligatorio Descrizione
newPaymentMethod string?

Reports

Metodo Endpoint Descrizione
GET /api/v1/reports/article-stats Recupera le statistiche degli articoli (più/meno venduti).
GET /api/v1/reports/dayclose Recupera lo storico delle chiusure giornaliere.
GET /api/v1/reports/financial-overview Recupera la panoramica finanziaria di un anno con anno di confronto opzionale.
GET /api/v1/reports/hourly Recupera la ripartizione oraria del fatturato.
GET /api/v1/reports/points Recupera il report dei punti fedeltà.
GET /api/v1/reports/revenue Recupera il report del fatturato per un intervallo di date.
GET /api/v1/reports/staff-discounts Recupera il report degli sconti del personale per un intervallo di date.

Reservations

Metodo Endpoint Descrizione
GET /api/v1/reservations Recupera tutte le prenotazioni con filtro opzionale.
POST /api/v1/reservations Crea una prenotazione per un ospite.
GET /api/v1/reservations/today Recupera le prenotazioni di oggi.
GET /api/v1/reservations/upcoming Recupera le prenotazioni imminenti (prossimi 7 giorni).
POST /api/v1/reservations/{id}/cancel Annulla una prenotazione.
POST /api/v1/reservations/{id}/confirm Conferma una prenotazione.
POST /api/v1/reservations/{id}/seat Contrassegna una prenotazione come accomodata.
PATCH /api/v1/reservations/{id}/status Aggiorna lo stato di una prenotazione.
Request Body: POST /api/v1/reservations (CreateReservationRequest)
Campo Tipo Obbligatorio Descrizione
guestName string? Nome dell'ospite.
guestPhone string? Telefono dell'ospite.
guestEmail string? Email dell'ospite.
customerId string? ID del cliente se cliente esistente.
reservationDateTime string Data e ora della prenotazione.
durationMinutes integer Durata in minuti (predefinito: 120).
guestCount integer Numero di ospiti.
tableId string? ID del tavolo preferito.
source string? Origine (Manual, Phone, Email, Website, Resmio, OpenTable).
externalReferenceId string? ID di riferimento esterno.
notes string? Richieste speciali/note.
internalNotes string? Note interne.

SavedTransfer

Metodo Endpoint Descrizione
GET /api/v1/saved-transfers
POST /api/v1/saved-transfers
DELETE /api/v1/saved-transfers/{id}
GET /api/v1/saved-transfers/{id}
PUT /api/v1/saved-transfers/{id}
POST /api/v1/saved-transfers/{id}/complete
POST /api/v1/saved-transfers/{id}/execute
POST /api/v1/saved-transfers/{id}/reset
Request Body: POST /api/v1/saved-transfers (CreateSavedTransferRequest)
Campo Tipo Obbligatorio Descrizione
recipientName string?
recipientIban string?
recipientBic string?
amount number
purpose string?
endToEndId string?
bankAccountId string?
Request Body: PUT /api/v1/saved-transfers/{id} (UpdateSavedTransferRequest)
Campo Tipo Obbligatorio Descrizione
recipientName string?
recipientIban string?
recipientBic string?
amount number
purpose string?
endToEndId string?
bankAccountId string?

SepaMandate

Metodo Endpoint Descrizione
GET /api/v1/sepa-mandates
POST /api/v1/sepa-mandates
GET /api/v1/sepa-mandates/sign/{token}
POST /api/v1/sepa-mandates/sign/{token}
GET /api/v1/sepa-mandates/{id}
POST /api/v1/sepa-mandates/{id}/revoke
POST /api/v1/sepa-mandates/{id}/send
Request Body: POST /api/v1/sepa-mandates (CreateSepaMandateCommand)
Campo Tipo Obbligatorio Descrizione
customerId string?
debtorName string?
debtorIban string?
debtorBic string?
mandateType integer
Request Body: POST /api/v1/sepa-mandates/sign/{token} (SignMandateRequest)
Campo Tipo Obbligatorio Descrizione
signatureImageBase64 string?

Spendings

Metodo Endpoint Descrizione
GET /api/v1/spendings Elenca le spese con filtri opzionali.
POST /api/v1/spendings Crea una nuova voce di spesa.
POST /api/v1/spendings/migrate-categories Migra i vecchi SpendingTypes (OperationalConfig) in ExpenseCategories
e aggiorna le spese esistenti.
DELETE /api/v1/spendings/{id} Elimina una voce di spesa (soft delete).
GET /api/v1/spendings/{id} Recupera una voce di spesa tramite ID.
PUT /api/v1/spendings/{id} Aggiorna una voce di spesa esistente.
POST /api/v1/spendings/{id}/attachments Carica un allegato a una voce di spesa.
DELETE /api/v1/spendings/{id}/attachments/{name} Elimina un allegato da una voce di spesa.
GET /api/v1/spendings/{id}/attachments/{name} Scarica un allegato da una voce di spesa.
Request Body: POST /api/v1/spendings (CreateSpendingRequest)
Campo Tipo Obbligatorio Descrizione
comment string? Descrizione/commento.
accountType integer Tipo di conto (Kontotyp).
accountMode integer Modalità conto: 0=NotSet, 1=Expense, 2=Transfer, 3=Income, 4=DeferredPayment.
expenseCategoryId string?
receiptDate string Data della ricevuta/registrazione.
amountNormal number Importo lordo con aliquota IVA al 19%.
amountReduced number Importo lordo con aliquota IVA al 7%.
amountTaxFree number Importo lordo con aliquota IVA allo 0%.
Request Body: PUT /api/v1/spendings/{id} (UpdateSpendingRequest)
Campo Tipo Obbligatorio Descrizione
comment string? Descrizione/commento (aggiornamento parziale opzionale).
accountType integer? Tipo di conto (aggiornamento parziale opzionale).
accountMode integer? Modalità conto (aggiornamento parziale opzionale).
expenseCategoryId string?
receiptDate string? Data della ricevuta/registrazione (aggiornamento parziale opzionale).
amountNormal number? Importo lordo al 19% (aggiornamento parziale opzionale).
amountReduced number? Importo lordo al 7% (aggiornamento parziale opzionale).
amountTaxFree number? Importo lordo allo 0% (aggiornamento parziale opzionale).

StockBookings

Metodo Endpoint Descrizione
GET /api/v1/stock-bookings Recupera le registrazioni di magazzino aperte.
POST /api/v1/stock-bookings Crea una nuova registrazione di magazzino.
GET /api/v1/stock-bookings/{id} Recupera una registrazione di magazzino tramite ID.
POST /api/v1/stock-bookings/{id}/process Elabora (esegue) una registrazione di magazzino, aggiornando l'inventario.
Request Body: POST /api/v1/stock-bookings (CreateStockBookingRequest)
Campo Tipo Obbligatorio Descrizione
items array[StockBookingItemRequest]?
targetStock string?
workplaceName string?
distributorId string?
targetPrinter string?

StockInventory

Metodo Endpoint Descrizione
GET /api/v1/stock-inventory Recupera la panoramica dell'inventario per tutti i magazzini.
GET /api/v1/stock-inventory/{stockId} Recupera l'inventario di un magazzino specifico.

StockOrders

Metodo Endpoint Descrizione
GET /api/v1/stock-orders Recupera gli ordini di magazzino aperti.
POST /api/v1/stock-orders Crea un nuovo ordine di magazzino.
GET /api/v1/stock-orders/{id} Recupera un ordine di magazzino tramite ID.
PUT /api/v1/stock-orders/{id} Aggiorna un ordine di magazzino esistente.
PUT /api/v1/stock-orders/{id}/status Aggiorna lo stato di un ordine di magazzino.
Request Body: POST /api/v1/stock-orders (CreateStockOrderRequest)
Campo Tipo Obbligatorio Descrizione
targetStock string?
distributorId string?
company string?
name2 string?
street string?
city string?
zip string?
country string?
email string?
fax string?
distCustId string?
comment string?
deliveryDate string?
positions array[StockOrderPositionRequest]?
Request Body: PUT /api/v1/stock-orders/{id} (UpdateStockOrderRequest)
Campo Tipo Obbligatorio Descrizione
targetStock string?
company string?
name2 string?
street string?
city string?
zip string?
country string?
email string?
fax string?
distCustId string?
comment string?
deliveryDate string?
positions array[StockOrderPositionRequest]?

Stocks

Metodo Endpoint Descrizione
GET /api/v1/stocks Recupera tutte le ubicazioni di magazzino.
POST /api/v1/stocks Crea una nuova ubicazione di magazzino.
DELETE /api/v1/stocks/{id} Elimina un'ubicazione di magazzino (i magazzini di sistema non possono essere eliminati).
GET /api/v1/stocks/{id} Recupera un'ubicazione di magazzino tramite ID.
PUT /api/v1/stocks/{id} Aggiorna un'ubicazione di magazzino esistente.
Request Body: POST /api/v1/stocks (CreateStockRequest)
Campo Tipo Obbligatorio Descrizione
name string?
stockType integer
isCookingMonitor boolean
Request Body: PUT /api/v1/stocks/{id} (UpdateStockRequest)
Campo Tipo Obbligatorio Descrizione
name string?
stockType integer?
isCookingMonitor boolean?
minMaxRules array[StockMinMaxRuleRequest]?
articleOrder array[string]?

Subscription

Metodo Endpoint Descrizione
GET /api/v1/subscriptions
POST /api/v1/subscriptions
POST /api/v1/subscriptions/generate
POST /api/v1/subscriptions/simulate
DELETE /api/v1/subscriptions/{id}
GET /api/v1/subscriptions/{id}
PUT /api/v1/subscriptions/{id}
Request Body: POST /api/v1/subscriptions (CreateSubscriptionRequest)
Campo Tipo Obbligatorio Descrizione
customerId string?
name string?
description string?
positions array[InvoicePositionRequest]?
interval integer
startDate string
endDate string?
isBankDebit boolean
paymentTermDays integer
billingCompanyName string?
billingName string?
billingStreet string?
billingZipCode string?
billingCity string?
billingCountry string?
isNettoMode boolean
Request Body: PUT /api/v1/subscriptions/{id} (UpdateSubscriptionRequest)
Campo Tipo Obbligatorio Descrizione
name string?
description string?
positions array[InvoicePositionRequest]?
interval integer
endDate string?
isBankDebit boolean
paymentTermDays integer
isActive boolean
billingCompanyName string?
billingName string?
billingStreet string?
billingZipCode string?
billingCity string?
billingCountry string?
isNettoMode boolean

Tables

Metodo Endpoint Descrizione
GET /api/v1/tables Recupera tutti i tavoli.
POST /api/v1/tables Crea un nuovo tavolo.
GET /api/v1/tables/groups Recupera tutti i gruppi tavoli.
POST /api/v1/tables/groups Crea un nuovo gruppo tavoli.
DELETE /api/v1/tables/groups/{id} Elimina un gruppo tavoli.
GET /api/v1/tables/groups/{id} Recupera un gruppo tavoli tramite ID.
PUT /api/v1/tables/groups/{id} Aggiorna un gruppo tavoli.
POST /api/v1/tables/guest Trova o crea un tavolo ospite tramite ID cliente.
POST /api/v1/tables/guest/by-card/{cardId} Trova o crea un tavolo ospite tramite ID carta NFC.
DELETE /api/v1/tables/{id} Elimina un tavolo.
GET /api/v1/tables/{id} Recupera un tavolo tramite ID.
PUT /api/v1/tables/{id} Aggiorna un tavolo.
POST /api/v1/tables/{id}/cleaned Contrassegna un tavolo come pulito (passa da Pulizia a Libero).
POST /api/v1/tables/{id}/gang Cambia la portata (gang) per tutti gli ordini aperti su un tavolo.
GET /api/v1/tables/{id}/qr Codice QR come PNG per la sessione del tavolo.
GET /api/v1/tables/{id}/session Interroga la sessione QR attiva per un tavolo.
POST /api/v1/tables/{id}/session Genera/rigenera la sessione QR per un tavolo.
PATCH /api/v1/tables/{id}/status Aggiorna lo stato di un tavolo.
POST /api/v1/tables/{id}/viewed Contrassegna un tavolo come visualizzato (azzera il timer di invecchiamento per tutti i client).
DELETE /api/v1/tables/{id}/waiter-call Azzera la chiamata cameriere (quando il cameriere apre il tavolo).
Request Body: POST /api/v1/tables/groups (CreateTableGroupRequest)
Campo Tipo Obbligatorio Descrizione
name string?
description string?
color string?
icon string?
sortOrder integer
isActive boolean
bonPrefix string?
showPlan boolean
useSeats boolean
seatCount integer
isPayOffsite boolean
Request Body: POST /api/v1/tables (CreateTableRequest)
Campo Tipo Obbligatorio Descrizione
tableNumber string?
name string?
groupId string?
seats integer
positionX integer
positionY integer
width integer
height integer
shape string?
color string?
sortOrder integer
isActive boolean
rotation integer
printTableId integer?
extraBonText string?
background string?
isDecorative boolean
decorationType string?
beverageTableNr integer?
customFields object?

TimeTracking

Metodo Endpoint Descrizione
GET /api/v1/time-tracking/active-workers Recupera tutti i lavoratori attualmente attivi (timbrati in entrata) per la dashboard del supervisore.
GET /api/v1/time-tracking/report Recupera il report delle presenze per un intervallo di date.
GET /api/v1/time-tracking/report/excel Esporta il report delle presenze come file Excel.
DELETE /api/v1/time-tracking/sheets/{id}/stamps/{index} Elimina una timbratura (admin).
PUT /api/v1/time-tracking/sheets/{id}/stamps/{index} Modifica una timbratura esistente (correzione admin).
GET /api/v1/time-tracking/sheets/{userId}/{year}/{month} Recupera un foglio presenze per utente/anno/mese (vista admin).
POST /api/v1/time-tracking/stamp Timbra un lavoratore in entrata o in uscita, oppure avvia/termina una pausa.
GET /api/v1/time-tracking/status/{userId} Recupera lo stato attuale della rilevazione presenze di un utente (visualizzazione POS).
Request Body: POST /api/v1/time-tracking/stamp (RecordTimeStampRequest)
Campo Tipo Obbligatorio Descrizione
userId string?
type integer
note string?
timestamp string?
Request Body: PUT /api/v1/time-tracking/sheets/{id}/stamps/{index} (EditTimeStampRequest)
Campo Tipo Obbligatorio Descrizione
newTimestamp string?
newType integer?
newNote string?

Vouchers

Metodo Endpoint Descrizione
GET /api/v1/vouchers Recupera tutti i buoni con filtro opzionale.
POST /api/v1/vouchers Crea un nuovo buono.
POST /api/v1/vouchers/batch Crea in blocco più buoni con le stesse impostazioni.
POST /api/v1/vouchers/import Importa un buono con un numero di serie preesistente.
Verifica i seriali duplicati e li rifiuta se già esistenti.
GET /api/v1/vouchers/search/{serial} Cerca un buono tramite numero di serie.
Supporta numero a 6 cifre (ad es. 481293), formato legacy V+numero (ad es. V000001) o seriale testuale.
GET /api/v1/vouchers/{id} Recupera un buono tramite ID.
POST /api/v1/vouchers/{id}/close Chiude manualmente un buono.
POST /api/v1/vouchers/{id}/redeem Riscatta (utilizza) un buono parzialmente o per intero.
POST /api/v1/vouchers/{id}/topup Ricarica un buono.
Request Body: POST /api/v1/vouchers (CreateVoucherRequest)
Campo Tipo Obbligatorio Descrizione
amount number Valore del buono.
articleId string? ID articolo opzionale collegato al buono.
name string? Nome/descrizione opzionale del buono.
taxClass integer Classe fiscale (0 = normale, 1 = ridotta, ecc.).
validDays integer? Periodo di validità opzionale in giorni da adesso. Null = illimitato.
serial string? Codice seriale personalizzato opzionale. Se non impostato, viene generato automaticamente un codice alfanumerico.
articles array[VoucherArticleRequest]? Articoli opzionali riscattabili con il buono.
Request Body: POST /api/v1/vouchers/{id}/redeem (RedeemVoucherRequest)
Campo Tipo Obbligatorio Descrizione
amount number Importo da riscattare dal buono.
bonId string? ID scontrino/bon opzionale per il tracciamento.

WhatsApp

Metodo Endpoint Descrizione
GET /api/v1/whatsapp/messages
POST /api/v1/whatsapp/send
POST /api/v1/whatsapp/send/invoice/{invoiceId}
POST /api/v1/whatsapp/send/work-order/{workOrderId}
GET /api/v1/whatsapp/templates
POST /api/v1/whatsapp/templates
DELETE /api/v1/whatsapp/templates/{id}
GET /api/v1/whatsapp/templates/{id}
PUT /api/v1/whatsapp/templates/{id}
POST /api/v1/whatsapp/test
Request Body: POST /api/v1/whatsapp/send (SendWhatsAppRequest)
Campo Tipo Obbligatorio Descrizione
to string?
templateName string?
language string?
parameters object?
contextType integer
contextId string?
customerId string?
Request Body: POST /api/v1/whatsapp/templates (CreateWhatsAppTemplateRequest)
Campo Tipo Obbligatorio Descrizione
name string?
metaTemplateName string?
language string?
contextType integer
parameterMappings array[WhatsAppParameterMappingDto]?
hasDocument boolean
isDefault boolean
isActive boolean
description string?

Workshop

Metodo Endpoint Descrizione
GET /api/v1/workshop/orders
POST /api/v1/workshop/orders
GET /api/v1/workshop/orders/search
GET /api/v1/workshop/orders/{id}
POST /api/v1/workshop/orders/{id}/activities
DELETE /api/v1/workshop/orders/{id}/activities/{index}
POST /api/v1/workshop/orders/{id}/cancel
POST /api/v1/workshop/orders/{id}/complete
POST /api/v1/workshop/orders/{id}/invoice
PUT /api/v1/workshop/orders/{id}/items
POST /api/v1/workshop/orders/{id}/materials
DELETE /api/v1/workshop/orders/{id}/materials/{index}
POST /api/v1/workshop/orders/{id}/pause
POST /api/v1/workshop/orders/{id}/print-label
POST /api/v1/workshop/orders/{id}/reopen
POST /api/v1/workshop/orders/{id}/resume
POST /api/v1/workshop/orders/{id}/start
Request Body: POST /api/v1/workshop/orders (CreateWorkOrderRequest)
Campo Tipo Obbligatorio Descrizione
customerId string?
faultDescription string?
bikeDescription string?
frameNumber string?
estimatedCompletionDate string?
printLabel boolean
printerId string?
Request Body: POST /api/v1/workshop/orders/{id}/activities (AddActivityRequest)
Campo Tipo Obbligatorio Descrizione
description string?
durationMinutes integer