API di FlavosoWebhook ed eventiTipi di evento
Tipi di evento
Ogni tipo di evento con descrizione, permesso necessario, i campi in data e una busta di esempio.
Panoramica
Ogni modifica genera esattamente un evento, che sia avvenuta nella dashboard, sul display di cucina, nell'app per il telefono, alla stampante per scontrini o tramite l'API. Quali tipi riceve la tua app lo scegli nella console; con GET /events tramite types.
Il tuo programma dovrebbe ignorare i tipi che non conosce.
| Eventi | Permesso richiesto |
|---|---|
order.* | orders:read |
reservation.* | reservations:read |
menu.* | menu:read |
store.* | store:read |
app.* | nessuno, solo il collegamento stesso |
Ordini
order.created
È arrivato un nuovo ordine: subito con il pagamento in loco, con il pagamento online non appena il pagamento è confermato. Esattamente una volta per ordine.
Permesso richiesto: orders:read
Campi in data
objectOrderobbligatorioThe order when the event was first read. Values that belong to a single app (
external_id,acknowledged_at) are always null in events: the envelope is built once and sent the same to every receiver. Retrieve the object to see yours.Campi interni (20)
objectstringobbligatorioAlways
order.Valori:
"order"idstring (uuid)obbligatorioThe order.
codestringobbligatorioShort code the guest sees and says at the counter, e.g. K7Q2M9.
external_idstringobbligatoriopuò essere nullYour app's reference set with
POST /orders/{id}/acknowledge; null when none. Always null in webhook events and inGET /events: the envelope is built once and sent the same to every receiver, but this value belongs to a single app. Retrieve the object to see yours.typestringobbligatorioHow the guest gets the order.
Valori:
"pickup""delivery""dine_in"sourcestringobbligatorioWhere it was placed:
tablevia a table's QR code,appin the Flavoso app by a signed-in guest,storefronteverything else (the restaurant's ordering page, the app without sign-in).Valori:
"storefront""table""app"statusstringobbligatorioWhere the order is now. Restaurants may skip statuses, see
GET /store.Valori:
"pending""confirmed""preparing""ready""completed""cancelled"created_atstring (date-time)obbligatorioWhen the order was placed. ISO 8601 in UTC (
Z).updated_atstring (date-time)obbligatorioLast change. ISO 8601 in UTC (
Z).acknowledged_atstring (date-time)obbligatoriopuò essere nullWhen your app first acknowledged the order (
POST /orders/{id}/acknowledge); null when not yet. Always null in webhook events and inGET /events: the envelope is built once and sent the same to every receiver, but this value belongs to a single app. Retrieve the object to see yours.requested_forstring (date-time)obbligatoriopuò essere nullPickup or delivery time chosen by the guest (pre-order); null means as soon as possible.
currencystringobbligatorioISO 4217, e.g. EUR.
amountsobjectobbligatorioThe amounts of the order, in cents.
Campi interni (6)
subtotalintegerobbligatorioSum of the items. Integer amount in the smallest currency unit (cents).
delivery_feeintegerobbligatorioDelivery fee. Integer amount in the smallest currency unit (cents).
service_feeintegerobbligatorioService fee. Integer amount in the smallest currency unit (cents).
discountintegerobbligatorioDiscount (stamp card), already subtracted. Integer amount in the smallest currency unit (cents).
tipintegerobbligatorioTip. Pass-through, not revenue. Integer amount in the smallest currency unit (cents).
totalintegerobbligatoriosubtotal + delivery_fee + service_fee − discount + tip. Integer amount in the smallest currency unit (cents).
taxobjectobbligatorioVAT per rate of
total − tip(items, fees, minus discount), computed like the restaurant's accounting export: discounts and delivery fees spread over the rates as the restaurant set it.Campi interni (2)
includedbooleanobbligatorioAlways true: prices include VAT.
Valori:
truelinesTaxLine[]obbligatorioOne line per rate, ascending, lines without rate last. The gross amounts add up to total − tip.
Campi interni (4)
rate_bpsintegerobbligatoriopuò essere nullThe rate in basis points (700 = 7 %). null: no rate was stored for this part (not the same as 0 %); then net and tax are null.
grossintegerobbligatorioGross amount at this rate. Integer amount in the smallest currency unit (cents).
netintegerobbligatoriopuò essere nullgross − tax, in cents. null when rate_bps is null.
taxintegerobbligatoriopuò essere nullVAT contained in gross: round(gross × rate / (10000 + rate)), in cents. null when rate_bps is null.
paymentobjectobbligatorioHow and whether it is paid.
Campi interni (3)
methodstringobbligatorioonline: paid at checkout.on_site: paid at pickup, delivery or the table.Valori:
"online""on_site"statusstringobbligatoriopaidonce the online payment is confirmed.open: to be paid on site; it staysopen, because Flavoso does not record payments on site.Valori:
"paid""open"paid_atstring (date-time)obbligatoriopuò essere nullWhen it was paid; null while open.
customerobjectobbligatoriopuò essere nullOnly what is needed to hand the order over (data minimisation): no e-mail, and no phone for dine-in. null when neither is known.
Campi interni (2)
namestringobbligatoriopuò essere nullThe guest's name.
phonestringobbligatoriopuò essere nullPhone for questions; null for dine-in.
deliveryobjectobbligatoriopuò essere nullThe delivery address; null unless type is delivery.
Campi interni (3)
addressstringobbligatoriopuò essere nullStreet and number.
postal_codestringobbligatoriopuò essere nullPostal code.
citystringobbligatoriopuò essere nullCity.
tableobjectobbligatoriopuò essere nullThe table of a dine-in order; null otherwise.
Campi interni (2)
idstring (uuid)obbligatorioThe table (
GET /tables).labelstringobbligatoriopuò essere nullThe table's name, e.g. 4.
notestringobbligatoriopuò essere nullGuest's note for the kitchen (allergies!).
itemsOrderItem[]obbligatorioThe lines.
Campi interni (8)
idstring (uuid)obbligatorioThe line.
product_idstring (uuid)obbligatoriopuò essere nullThe dish (
GET /menu/products/{id}); null when it was deleted since.namestringobbligatorioName at the time of ordering.
quantityintegerobbligatorioHow many.
min 1
unit_priceintegerobbligatorioPrice of one unit including options. Integer amount in the smallest currency unit (cents).
line_totalintegerobbligatoriounit_price × quantity. Integer amount in the smallest currency unit (cents).
tax_rate_bpsintegerobbligatoriopuò essere nullVAT rate frozen at order time, in basis points (700 = 7 %). null when the restaurant has not set rates.
optionsobject[]obbligatorioThe chosen options (extras, sizes), as ordered. Name, surcharge and group name are frozen at order time; the ids point to the menu (
GET /menu/options/{id}) as long as the option exists.Campi interni (5)
idstring (uuid)obbligatoriopuò essere nullThe option (
GET /menu/options/{id}); with it you find your own modifier through itsexternal_id. null for orders placed before 8 October 2026.namestringobbligatorioName of the option.
price_deltaintegerobbligatorioSurcharge of this option, per unit. Integer amount in the smallest currency unit (cents).
group_idstring (uuid)obbligatoriopuò essere nullThe option group the option was chosen in (
GET /menu/option-groups/{id}). null for orders placed before 8 October 2026.group_namestringobbligatoriopuò essere nullName of that group at order time, e.g. Extras or Size. null for orders placed before 8 October 2026.
{
"id": "evt_2bf5a9b06b75442a9244e884a1acfc57",
"object": "event",
"type": "order.created",
"created_at": "2026-10-04T17:46:12.410Z",
"api_version": "2026-10-08",
"livemode": true,
"tenant_id": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
"connection_id": "4b3f7c1e-9a2d-4e8b-b5f6-0c1d2e3f4a5b",
"data": {
"object": {
"object": "order",
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"code": "K7Q2M9",
"external_id": "ART-1001",
"type": "pickup",
"source": "storefront",
"status": "pending",
"created_at": "2026-10-04T17:44:59.942Z",
"updated_at": "2026-10-04T17:44:59.942Z",
"acknowledged_at": "2026-10-04T17:44:59.942Z",
"requested_for": "2026-10-04T17:44:59.942Z",
"currency": "EUR",
"amounts": {
"subtotal": 1290,
"delivery_fee": 1290,
"service_fee": 1290,
"discount": 1290,
"tip": 1290,
"total": 1290
},
"tax": {
"included": true,
"lines": [
{
"rate_bps": 700,
"gross": 1290,
"net": 1290,
"tax": 1290
}
]
},
"payment": {
"method": "online",
"status": "paid",
"paid_at": "2026-10-04T17:44:59.942Z"
},
"customer": {
"name": "string",
"phone": "string"
},
"delivery": {
"address": "string",
"postal_code": "string",
"city": "string"
},
"table": {
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"label": "string"
},
"note": "string",
"items": [
{
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"product_id": "6818680c-4376-47b0-a818-680c4376d7b0",
"name": "string",
"quantity": 1,
"unit_price": 1290,
"line_total": 1290,
"tax_rate_bps": 700,
"options": [
{
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"name": "string",
"price_delta": 1290,
"group_id": "9594642c-e6ef-49ac-a594-642ce6efc9ac",
"group_name": "string"
}
]
}
]
}
}
}order.status_changed
Un ordine ha cambiato stato, ovunque sia successo: dashboard, display di cucina, app per il telefono, stampante per scontrini o API. previous_status indica quello precedente.
Permesso richiesto: orders:read
Campi in data
objectOrderobbligatorioAn order. Guest data is limited to what is needed to hand it over: the name, the phone for pickup and delivery, the address for delivery, never an e-mail.
Campi interni (20)
objectstringobbligatorioAlways
order.Valori:
"order"idstring (uuid)obbligatorioThe order.
codestringobbligatorioShort code the guest sees and says at the counter, e.g. K7Q2M9.
external_idstringobbligatoriopuò essere nullYour app's reference set with
POST /orders/{id}/acknowledge; null when none. Always null in webhook events and inGET /events: the envelope is built once and sent the same to every receiver, but this value belongs to a single app. Retrieve the object to see yours.typestringobbligatorioHow the guest gets the order.
Valori:
"pickup""delivery""dine_in"sourcestringobbligatorioWhere it was placed:
tablevia a table's QR code,appin the Flavoso app by a signed-in guest,storefronteverything else (the restaurant's ordering page, the app without sign-in).Valori:
"storefront""table""app"statusstringobbligatorioWhere the order is now. Restaurants may skip statuses, see
GET /store.Valori:
"pending""confirmed""preparing""ready""completed""cancelled"created_atstring (date-time)obbligatorioWhen the order was placed. ISO 8601 in UTC (
Z).updated_atstring (date-time)obbligatorioLast change. ISO 8601 in UTC (
Z).acknowledged_atstring (date-time)obbligatoriopuò essere nullWhen your app first acknowledged the order (
POST /orders/{id}/acknowledge); null when not yet. Always null in webhook events and inGET /events: the envelope is built once and sent the same to every receiver, but this value belongs to a single app. Retrieve the object to see yours.requested_forstring (date-time)obbligatoriopuò essere nullPickup or delivery time chosen by the guest (pre-order); null means as soon as possible.
currencystringobbligatorioISO 4217, e.g. EUR.
amountsobjectobbligatorioThe amounts of the order, in cents.
Campi interni (6)
subtotalintegerobbligatorioSum of the items. Integer amount in the smallest currency unit (cents).
delivery_feeintegerobbligatorioDelivery fee. Integer amount in the smallest currency unit (cents).
service_feeintegerobbligatorioService fee. Integer amount in the smallest currency unit (cents).
discountintegerobbligatorioDiscount (stamp card), already subtracted. Integer amount in the smallest currency unit (cents).
tipintegerobbligatorioTip. Pass-through, not revenue. Integer amount in the smallest currency unit (cents).
totalintegerobbligatoriosubtotal + delivery_fee + service_fee − discount + tip. Integer amount in the smallest currency unit (cents).
taxobjectobbligatorioVAT per rate of
total − tip(items, fees, minus discount), computed like the restaurant's accounting export: discounts and delivery fees spread over the rates as the restaurant set it.Campi interni (2)
includedbooleanobbligatorioAlways true: prices include VAT.
Valori:
truelinesTaxLine[]obbligatorioOne line per rate, ascending, lines without rate last. The gross amounts add up to total − tip.
Campi interni (4)
rate_bpsintegerobbligatoriopuò essere nullThe rate in basis points (700 = 7 %). null: no rate was stored for this part (not the same as 0 %); then net and tax are null.
grossintegerobbligatorioGross amount at this rate. Integer amount in the smallest currency unit (cents).
netintegerobbligatoriopuò essere nullgross − tax, in cents. null when rate_bps is null.
taxintegerobbligatoriopuò essere nullVAT contained in gross: round(gross × rate / (10000 + rate)), in cents. null when rate_bps is null.
paymentobjectobbligatorioHow and whether it is paid.
Campi interni (3)
methodstringobbligatorioonline: paid at checkout.on_site: paid at pickup, delivery or the table.Valori:
"online""on_site"statusstringobbligatoriopaidonce the online payment is confirmed.open: to be paid on site; it staysopen, because Flavoso does not record payments on site.Valori:
"paid""open"paid_atstring (date-time)obbligatoriopuò essere nullWhen it was paid; null while open.
customerobjectobbligatoriopuò essere nullOnly what is needed to hand the order over (data minimisation): no e-mail, and no phone for dine-in. null when neither is known.
Campi interni (2)
namestringobbligatoriopuò essere nullThe guest's name.
phonestringobbligatoriopuò essere nullPhone for questions; null for dine-in.
deliveryobjectobbligatoriopuò essere nullThe delivery address; null unless type is delivery.
Campi interni (3)
addressstringobbligatoriopuò essere nullStreet and number.
postal_codestringobbligatoriopuò essere nullPostal code.
citystringobbligatoriopuò essere nullCity.
tableobjectobbligatoriopuò essere nullThe table of a dine-in order; null otherwise.
Campi interni (2)
idstring (uuid)obbligatorioThe table (
GET /tables).labelstringobbligatoriopuò essere nullThe table's name, e.g. 4.
notestringobbligatoriopuò essere nullGuest's note for the kitchen (allergies!).
itemsOrderItem[]obbligatorioThe lines.
Campi interni (8)
idstring (uuid)obbligatorioThe line.
product_idstring (uuid)obbligatoriopuò essere nullThe dish (
GET /menu/products/{id}); null when it was deleted since.namestringobbligatorioName at the time of ordering.
quantityintegerobbligatorioHow many.
min 1
unit_priceintegerobbligatorioPrice of one unit including options. Integer amount in the smallest currency unit (cents).
line_totalintegerobbligatoriounit_price × quantity. Integer amount in the smallest currency unit (cents).
tax_rate_bpsintegerobbligatoriopuò essere nullVAT rate frozen at order time, in basis points (700 = 7 %). null when the restaurant has not set rates.
optionsobject[]obbligatorioThe chosen options (extras, sizes), as ordered. Name, surcharge and group name are frozen at order time; the ids point to the menu (
GET /menu/options/{id}) as long as the option exists.Campi interni (5)
idstring (uuid)obbligatoriopuò essere nullThe option (
GET /menu/options/{id}); with it you find your own modifier through itsexternal_id. null for orders placed before 8 October 2026.namestringobbligatorioName of the option.
price_deltaintegerobbligatorioSurcharge of this option, per unit. Integer amount in the smallest currency unit (cents).
group_idstring (uuid)obbligatoriopuò essere nullThe option group the option was chosen in (
GET /menu/option-groups/{id}). null for orders placed before 8 October 2026.group_namestringobbligatoriopuò essere nullName of that group at order time, e.g. Extras or Size. null for orders placed before 8 October 2026.
previous_statusstringobbligatorioThe status before this change.
{
"id": "evt_2bf5a9b06b75442a9244e884a1acfc57",
"object": "event",
"type": "order.status_changed",
"created_at": "2026-10-04T17:46:12.410Z",
"api_version": "2026-10-08",
"livemode": true,
"tenant_id": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
"connection_id": "4b3f7c1e-9a2d-4e8b-b5f6-0c1d2e3f4a5b",
"data": {
"object": {
"object": "order",
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"code": "K7Q2M9",
"external_id": "ART-1001",
"type": "pickup",
"source": "storefront",
"status": "pending",
"created_at": "2026-10-04T17:44:59.942Z",
"updated_at": "2026-10-04T17:44:59.942Z",
"acknowledged_at": "2026-10-04T17:44:59.942Z",
"requested_for": "2026-10-04T17:44:59.942Z",
"currency": "EUR",
"amounts": {
"subtotal": 1290,
"delivery_fee": 1290,
"service_fee": 1290,
"discount": 1290,
"tip": 1290,
"total": 1290
},
"tax": {
"included": true,
"lines": [
{
"rate_bps": 700,
"gross": 1290,
"net": 1290,
"tax": 1290
}
]
},
"payment": {
"method": "online",
"status": "paid",
"paid_at": "2026-10-04T17:44:59.942Z"
},
"customer": {
"name": "string",
"phone": "string"
},
"delivery": {
"address": "string",
"postal_code": "string",
"city": "string"
},
"table": {
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"label": "string"
},
"note": "string",
"items": [
{
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"product_id": "6818680c-4376-47b0-a818-680c4376d7b0",
"name": "string",
"quantity": 1,
"unit_price": 1290,
"line_total": 1290,
"tax_rate_bps": 700,
"options": [
{
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"name": "string",
"price_delta": 1290,
"group_id": "9594642c-e6ef-49ac-a594-642ce6efc9ac",
"group_name": "string"
}
]
}
]
},
"previous_status": "string"
}
}order.cancelled
Un ordine è stato annullato o rifiutato. Arriva in aggiunta a order.status_changed.
Permesso richiesto: orders:read
Campi in data
objectOrderobbligatorioAn order. Guest data is limited to what is needed to hand it over: the name, the phone for pickup and delivery, the address for delivery, never an e-mail.
Campi interni (20)
objectstringobbligatorioAlways
order.Valori:
"order"idstring (uuid)obbligatorioThe order.
codestringobbligatorioShort code the guest sees and says at the counter, e.g. K7Q2M9.
external_idstringobbligatoriopuò essere nullYour app's reference set with
POST /orders/{id}/acknowledge; null when none. Always null in webhook events and inGET /events: the envelope is built once and sent the same to every receiver, but this value belongs to a single app. Retrieve the object to see yours.typestringobbligatorioHow the guest gets the order.
Valori:
"pickup""delivery""dine_in"sourcestringobbligatorioWhere it was placed:
tablevia a table's QR code,appin the Flavoso app by a signed-in guest,storefronteverything else (the restaurant's ordering page, the app without sign-in).Valori:
"storefront""table""app"statusstringobbligatorioWhere the order is now. Restaurants may skip statuses, see
GET /store.Valori:
"pending""confirmed""preparing""ready""completed""cancelled"created_atstring (date-time)obbligatorioWhen the order was placed. ISO 8601 in UTC (
Z).updated_atstring (date-time)obbligatorioLast change. ISO 8601 in UTC (
Z).acknowledged_atstring (date-time)obbligatoriopuò essere nullWhen your app first acknowledged the order (
POST /orders/{id}/acknowledge); null when not yet. Always null in webhook events and inGET /events: the envelope is built once and sent the same to every receiver, but this value belongs to a single app. Retrieve the object to see yours.requested_forstring (date-time)obbligatoriopuò essere nullPickup or delivery time chosen by the guest (pre-order); null means as soon as possible.
currencystringobbligatorioISO 4217, e.g. EUR.
amountsobjectobbligatorioThe amounts of the order, in cents.
Campi interni (6)
subtotalintegerobbligatorioSum of the items. Integer amount in the smallest currency unit (cents).
delivery_feeintegerobbligatorioDelivery fee. Integer amount in the smallest currency unit (cents).
service_feeintegerobbligatorioService fee. Integer amount in the smallest currency unit (cents).
discountintegerobbligatorioDiscount (stamp card), already subtracted. Integer amount in the smallest currency unit (cents).
tipintegerobbligatorioTip. Pass-through, not revenue. Integer amount in the smallest currency unit (cents).
totalintegerobbligatoriosubtotal + delivery_fee + service_fee − discount + tip. Integer amount in the smallest currency unit (cents).
taxobjectobbligatorioVAT per rate of
total − tip(items, fees, minus discount), computed like the restaurant's accounting export: discounts and delivery fees spread over the rates as the restaurant set it.Campi interni (2)
includedbooleanobbligatorioAlways true: prices include VAT.
Valori:
truelinesTaxLine[]obbligatorioOne line per rate, ascending, lines without rate last. The gross amounts add up to total − tip.
Campi interni (4)
rate_bpsintegerobbligatoriopuò essere nullThe rate in basis points (700 = 7 %). null: no rate was stored for this part (not the same as 0 %); then net and tax are null.
grossintegerobbligatorioGross amount at this rate. Integer amount in the smallest currency unit (cents).
netintegerobbligatoriopuò essere nullgross − tax, in cents. null when rate_bps is null.
taxintegerobbligatoriopuò essere nullVAT contained in gross: round(gross × rate / (10000 + rate)), in cents. null when rate_bps is null.
paymentobjectobbligatorioHow and whether it is paid.
Campi interni (3)
methodstringobbligatorioonline: paid at checkout.on_site: paid at pickup, delivery or the table.Valori:
"online""on_site"statusstringobbligatoriopaidonce the online payment is confirmed.open: to be paid on site; it staysopen, because Flavoso does not record payments on site.Valori:
"paid""open"paid_atstring (date-time)obbligatoriopuò essere nullWhen it was paid; null while open.
customerobjectobbligatoriopuò essere nullOnly what is needed to hand the order over (data minimisation): no e-mail, and no phone for dine-in. null when neither is known.
Campi interni (2)
namestringobbligatoriopuò essere nullThe guest's name.
phonestringobbligatoriopuò essere nullPhone for questions; null for dine-in.
deliveryobjectobbligatoriopuò essere nullThe delivery address; null unless type is delivery.
Campi interni (3)
addressstringobbligatoriopuò essere nullStreet and number.
postal_codestringobbligatoriopuò essere nullPostal code.
citystringobbligatoriopuò essere nullCity.
tableobjectobbligatoriopuò essere nullThe table of a dine-in order; null otherwise.
Campi interni (2)
idstring (uuid)obbligatorioThe table (
GET /tables).labelstringobbligatoriopuò essere nullThe table's name, e.g. 4.
notestringobbligatoriopuò essere nullGuest's note for the kitchen (allergies!).
itemsOrderItem[]obbligatorioThe lines.
Campi interni (8)
idstring (uuid)obbligatorioThe line.
product_idstring (uuid)obbligatoriopuò essere nullThe dish (
GET /menu/products/{id}); null when it was deleted since.namestringobbligatorioName at the time of ordering.
quantityintegerobbligatorioHow many.
min 1
unit_priceintegerobbligatorioPrice of one unit including options. Integer amount in the smallest currency unit (cents).
line_totalintegerobbligatoriounit_price × quantity. Integer amount in the smallest currency unit (cents).
tax_rate_bpsintegerobbligatoriopuò essere nullVAT rate frozen at order time, in basis points (700 = 7 %). null when the restaurant has not set rates.
optionsobject[]obbligatorioThe chosen options (extras, sizes), as ordered. Name, surcharge and group name are frozen at order time; the ids point to the menu (
GET /menu/options/{id}) as long as the option exists.Campi interni (5)
idstring (uuid)obbligatoriopuò essere nullThe option (
GET /menu/options/{id}); with it you find your own modifier through itsexternal_id. null for orders placed before 8 October 2026.namestringobbligatorioName of the option.
price_deltaintegerobbligatorioSurcharge of this option, per unit. Integer amount in the smallest currency unit (cents).
group_idstring (uuid)obbligatoriopuò essere nullThe option group the option was chosen in (
GET /menu/option-groups/{id}). null for orders placed before 8 October 2026.group_namestringobbligatoriopuò essere nullName of that group at order time, e.g. Extras or Size. null for orders placed before 8 October 2026.
previous_statusstringobbligatorioThe status before the cancellation.
{
"id": "evt_2bf5a9b06b75442a9244e884a1acfc57",
"object": "event",
"type": "order.cancelled",
"created_at": "2026-10-04T17:46:12.410Z",
"api_version": "2026-10-08",
"livemode": true,
"tenant_id": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
"connection_id": "4b3f7c1e-9a2d-4e8b-b5f6-0c1d2e3f4a5b",
"data": {
"object": {
"object": "order",
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"code": "K7Q2M9",
"external_id": "ART-1001",
"type": "pickup",
"source": "storefront",
"status": "pending",
"created_at": "2026-10-04T17:44:59.942Z",
"updated_at": "2026-10-04T17:44:59.942Z",
"acknowledged_at": "2026-10-04T17:44:59.942Z",
"requested_for": "2026-10-04T17:44:59.942Z",
"currency": "EUR",
"amounts": {
"subtotal": 1290,
"delivery_fee": 1290,
"service_fee": 1290,
"discount": 1290,
"tip": 1290,
"total": 1290
},
"tax": {
"included": true,
"lines": [
{
"rate_bps": 700,
"gross": 1290,
"net": 1290,
"tax": 1290
}
]
},
"payment": {
"method": "online",
"status": "paid",
"paid_at": "2026-10-04T17:44:59.942Z"
},
"customer": {
"name": "string",
"phone": "string"
},
"delivery": {
"address": "string",
"postal_code": "string",
"city": "string"
},
"table": {
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"label": "string"
},
"note": "string",
"items": [
{
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"product_id": "6818680c-4376-47b0-a818-680c4376d7b0",
"name": "string",
"quantity": 1,
"unit_price": 1290,
"line_total": 1290,
"tax_rate_bps": 700,
"options": [
{
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"name": "string",
"price_delta": 1290,
"group_id": "9594642c-e6ef-49ac-a594-642ce6efc9ac",
"group_name": "string"
}
]
}
]
},
"previous_status": "string"
}
}order.paid
Un ordine è stato pagato online: il fornitore di pagamento ha confermato il pagamento, e da quel momento l'ordine esiste (subito dopo order.created). Gli ordini pagati in loco non vengono registrati come pagati in Flavoso e non generano mai questo evento.
Permesso richiesto: orders:read
Campi in data
objectOrderobbligatorioAn order. Guest data is limited to what is needed to hand it over: the name, the phone for pickup and delivery, the address for delivery, never an e-mail.
Campi interni (20)
objectstringobbligatorioAlways
order.Valori:
"order"idstring (uuid)obbligatorioThe order.
codestringobbligatorioShort code the guest sees and says at the counter, e.g. K7Q2M9.
external_idstringobbligatoriopuò essere nullYour app's reference set with
POST /orders/{id}/acknowledge; null when none. Always null in webhook events and inGET /events: the envelope is built once and sent the same to every receiver, but this value belongs to a single app. Retrieve the object to see yours.typestringobbligatorioHow the guest gets the order.
Valori:
"pickup""delivery""dine_in"sourcestringobbligatorioWhere it was placed:
tablevia a table's QR code,appin the Flavoso app by a signed-in guest,storefronteverything else (the restaurant's ordering page, the app without sign-in).Valori:
"storefront""table""app"statusstringobbligatorioWhere the order is now. Restaurants may skip statuses, see
GET /store.Valori:
"pending""confirmed""preparing""ready""completed""cancelled"created_atstring (date-time)obbligatorioWhen the order was placed. ISO 8601 in UTC (
Z).updated_atstring (date-time)obbligatorioLast change. ISO 8601 in UTC (
Z).acknowledged_atstring (date-time)obbligatoriopuò essere nullWhen your app first acknowledged the order (
POST /orders/{id}/acknowledge); null when not yet. Always null in webhook events and inGET /events: the envelope is built once and sent the same to every receiver, but this value belongs to a single app. Retrieve the object to see yours.requested_forstring (date-time)obbligatoriopuò essere nullPickup or delivery time chosen by the guest (pre-order); null means as soon as possible.
currencystringobbligatorioISO 4217, e.g. EUR.
amountsobjectobbligatorioThe amounts of the order, in cents.
Campi interni (6)
subtotalintegerobbligatorioSum of the items. Integer amount in the smallest currency unit (cents).
delivery_feeintegerobbligatorioDelivery fee. Integer amount in the smallest currency unit (cents).
service_feeintegerobbligatorioService fee. Integer amount in the smallest currency unit (cents).
discountintegerobbligatorioDiscount (stamp card), already subtracted. Integer amount in the smallest currency unit (cents).
tipintegerobbligatorioTip. Pass-through, not revenue. Integer amount in the smallest currency unit (cents).
totalintegerobbligatoriosubtotal + delivery_fee + service_fee − discount + tip. Integer amount in the smallest currency unit (cents).
taxobjectobbligatorioVAT per rate of
total − tip(items, fees, minus discount), computed like the restaurant's accounting export: discounts and delivery fees spread over the rates as the restaurant set it.Campi interni (2)
includedbooleanobbligatorioAlways true: prices include VAT.
Valori:
truelinesTaxLine[]obbligatorioOne line per rate, ascending, lines without rate last. The gross amounts add up to total − tip.
Campi interni (4)
rate_bpsintegerobbligatoriopuò essere nullThe rate in basis points (700 = 7 %). null: no rate was stored for this part (not the same as 0 %); then net and tax are null.
grossintegerobbligatorioGross amount at this rate. Integer amount in the smallest currency unit (cents).
netintegerobbligatoriopuò essere nullgross − tax, in cents. null when rate_bps is null.
taxintegerobbligatoriopuò essere nullVAT contained in gross: round(gross × rate / (10000 + rate)), in cents. null when rate_bps is null.
paymentobjectobbligatorioHow and whether it is paid.
Campi interni (3)
methodstringobbligatorioonline: paid at checkout.on_site: paid at pickup, delivery or the table.Valori:
"online""on_site"statusstringobbligatoriopaidonce the online payment is confirmed.open: to be paid on site; it staysopen, because Flavoso does not record payments on site.Valori:
"paid""open"paid_atstring (date-time)obbligatoriopuò essere nullWhen it was paid; null while open.
customerobjectobbligatoriopuò essere nullOnly what is needed to hand the order over (data minimisation): no e-mail, and no phone for dine-in. null when neither is known.
Campi interni (2)
namestringobbligatoriopuò essere nullThe guest's name.
phonestringobbligatoriopuò essere nullPhone for questions; null for dine-in.
deliveryobjectobbligatoriopuò essere nullThe delivery address; null unless type is delivery.
Campi interni (3)
addressstringobbligatoriopuò essere nullStreet and number.
postal_codestringobbligatoriopuò essere nullPostal code.
citystringobbligatoriopuò essere nullCity.
tableobjectobbligatoriopuò essere nullThe table of a dine-in order; null otherwise.
Campi interni (2)
idstring (uuid)obbligatorioThe table (
GET /tables).labelstringobbligatoriopuò essere nullThe table's name, e.g. 4.
notestringobbligatoriopuò essere nullGuest's note for the kitchen (allergies!).
itemsOrderItem[]obbligatorioThe lines.
Campi interni (8)
idstring (uuid)obbligatorioThe line.
product_idstring (uuid)obbligatoriopuò essere nullThe dish (
GET /menu/products/{id}); null when it was deleted since.namestringobbligatorioName at the time of ordering.
quantityintegerobbligatorioHow many.
min 1
unit_priceintegerobbligatorioPrice of one unit including options. Integer amount in the smallest currency unit (cents).
line_totalintegerobbligatoriounit_price × quantity. Integer amount in the smallest currency unit (cents).
tax_rate_bpsintegerobbligatoriopuò essere nullVAT rate frozen at order time, in basis points (700 = 7 %). null when the restaurant has not set rates.
optionsobject[]obbligatorioThe chosen options (extras, sizes), as ordered. Name, surcharge and group name are frozen at order time; the ids point to the menu (
GET /menu/options/{id}) as long as the option exists.Campi interni (5)
idstring (uuid)obbligatoriopuò essere nullThe option (
GET /menu/options/{id}); with it you find your own modifier through itsexternal_id. null for orders placed before 8 October 2026.namestringobbligatorioName of the option.
price_deltaintegerobbligatorioSurcharge of this option, per unit. Integer amount in the smallest currency unit (cents).
group_idstring (uuid)obbligatoriopuò essere nullThe option group the option was chosen in (
GET /menu/option-groups/{id}). null for orders placed before 8 October 2026.group_namestringobbligatoriopuò essere nullName of that group at order time, e.g. Extras or Size. null for orders placed before 8 October 2026.
{
"id": "evt_2bf5a9b06b75442a9244e884a1acfc57",
"object": "event",
"type": "order.paid",
"created_at": "2026-10-04T17:46:12.410Z",
"api_version": "2026-10-08",
"livemode": true,
"tenant_id": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
"connection_id": "4b3f7c1e-9a2d-4e8b-b5f6-0c1d2e3f4a5b",
"data": {
"object": {
"object": "order",
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"code": "K7Q2M9",
"external_id": "ART-1001",
"type": "pickup",
"source": "storefront",
"status": "pending",
"created_at": "2026-10-04T17:44:59.942Z",
"updated_at": "2026-10-04T17:44:59.942Z",
"acknowledged_at": "2026-10-04T17:44:59.942Z",
"requested_for": "2026-10-04T17:44:59.942Z",
"currency": "EUR",
"amounts": {
"subtotal": 1290,
"delivery_fee": 1290,
"service_fee": 1290,
"discount": 1290,
"tip": 1290,
"total": 1290
},
"tax": {
"included": true,
"lines": [
{
"rate_bps": 700,
"gross": 1290,
"net": 1290,
"tax": 1290
}
]
},
"payment": {
"method": "online",
"status": "paid",
"paid_at": "2026-10-04T17:44:59.942Z"
},
"customer": {
"name": "string",
"phone": "string"
},
"delivery": {
"address": "string",
"postal_code": "string",
"city": "string"
},
"table": {
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"label": "string"
},
"note": "string",
"items": [
{
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"product_id": "6818680c-4376-47b0-a818-680c4376d7b0",
"name": "string",
"quantity": 1,
"unit_price": 1290,
"line_total": 1290,
"tax_rate_bps": 700,
"options": [
{
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"name": "string",
"price_delta": 1290,
"group_id": "9594642c-e6ef-49ac-a594-642ce6efc9ac",
"group_name": "string"
}
]
}
]
}
}
}Prenotazioni
reservation.created
Una nuova prenotazione, creata online dal cliente o dal team.
Permesso richiesto: reservations:read
Campi in data
objectReservationobbligatorioA table reservation. Contact details stay in Flavoso (data minimisation); the name is enough to greet the party.
Campi interni (14)
objectstringobbligatorioAlways
reservation.Valori:
"reservation"idstring (uuid)obbligatorioThe reservation.
codestringobbligatorioShort code the guest sees.
statusstringobbligatoriopendingis a request the restaurant still has to confirm.Valori:
"pending""confirmed""declined""seated""done""cancelled""no_show"starts_atstring (date-time)obbligatorioStart of the reservation. ISO 8601 in UTC (
Z).duration_minutesintegerobbligatorioHow long the table is held.
party_sizeintegerobbligatorioNumber of guests.
table_idsstring (uuid)[]obbligatorioAssigned tables (
GET /tables); empty when none is assigned yet.sourcestringobbligatorioBooked online by the guest, by the restaurant's staff, or through this API.
Valori:
"guest""staff""api"guest_namestringobbligatoriopuò essere nullThe guest's name.
notestringobbligatoriopuò essere nullThe guest's wish.
created_atstring (date-time)obbligatorioWhen it was made. ISO 8601 in UTC (
Z).updated_atstring (date-time)obbligatorioLast change. ISO 8601 in UTC (
Z).deleted_atstring (date-time)obbligatoriopuò essere nullOnly set in the event that reports a deletion; deleted reservations are not returned otherwise.
{
"id": "evt_2bf5a9b06b75442a9244e884a1acfc57",
"object": "event",
"type": "reservation.created",
"created_at": "2026-10-04T17:46:12.410Z",
"api_version": "2026-10-08",
"livemode": true,
"tenant_id": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
"connection_id": "4b3f7c1e-9a2d-4e8b-b5f6-0c1d2e3f4a5b",
"data": {
"object": {
"object": "reservation",
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"code": "K7Q2M9",
"status": "pending",
"starts_at": "2026-10-04T17:44:59.942Z",
"duration_minutes": 30,
"party_size": 2,
"table_ids": [
"8ca0177d-0bbd-4c8f-aca0-177d0bbd2c8f"
],
"source": "guest",
"guest_name": "string",
"note": "string",
"created_at": "2026-10-04T17:44:59.942Z",
"updated_at": "2026-10-04T17:44:59.942Z",
"deleted_at": "2026-10-04T17:44:59.942Z"
}
}
}reservation.updated
Stato, orario, numero di persone, durata, tavoli o nota di una prenotazione sono cambiati; changed indica cosa. Se il locale elimina una prenotazione, arriva un ultimo evento con changed: ["deleted"] e deleted_at, dopodiché la prenotazione restituisce 404.
Permesso richiesto: reservations:read
Campi in data
objectReservationobbligatorioA table reservation. Contact details stay in Flavoso (data minimisation); the name is enough to greet the party.
Campi interni (14)
objectstringobbligatorioAlways
reservation.Valori:
"reservation"idstring (uuid)obbligatorioThe reservation.
codestringobbligatorioShort code the guest sees.
statusstringobbligatoriopendingis a request the restaurant still has to confirm.Valori:
"pending""confirmed""declined""seated""done""cancelled""no_show"starts_atstring (date-time)obbligatorioStart of the reservation. ISO 8601 in UTC (
Z).duration_minutesintegerobbligatorioHow long the table is held.
party_sizeintegerobbligatorioNumber of guests.
table_idsstring (uuid)[]obbligatorioAssigned tables (
GET /tables); empty when none is assigned yet.sourcestringobbligatorioBooked online by the guest, by the restaurant's staff, or through this API.
Valori:
"guest""staff""api"guest_namestringobbligatoriopuò essere nullThe guest's name.
notestringobbligatoriopuò essere nullThe guest's wish.
created_atstring (date-time)obbligatorioWhen it was made. ISO 8601 in UTC (
Z).updated_atstring (date-time)obbligatorioLast change. ISO 8601 in UTC (
Z).deleted_atstring (date-time)obbligatoriopuò essere nullOnly set in the event that reports a deletion; deleted reservations are not returned otherwise.
previous_statusstringpuò essere nullThe status before this change.
changedstring[]obbligatorioThe fields this change touched.
Valori:
"status""starts_at""party_size""duration_minutes""table_ids""note""deleted"
{
"id": "evt_2bf5a9b06b75442a9244e884a1acfc57",
"object": "event",
"type": "reservation.updated",
"created_at": "2026-10-04T17:46:12.410Z",
"api_version": "2026-10-08",
"livemode": true,
"tenant_id": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
"connection_id": "4b3f7c1e-9a2d-4e8b-b5f6-0c1d2e3f4a5b",
"data": {
"object": {
"object": "reservation",
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"code": "K7Q2M9",
"status": "pending",
"starts_at": "2026-10-04T17:44:59.942Z",
"duration_minutes": 30,
"party_size": 2,
"table_ids": [
"8ca0177d-0bbd-4c8f-aca0-177d0bbd2c8f"
],
"source": "guest",
"guest_name": "string",
"note": "string",
"created_at": "2026-10-04T17:44:59.942Z",
"updated_at": "2026-10-04T17:44:59.942Z",
"deleted_at": "2026-10-04T17:44:59.942Z"
},
"previous_status": "string",
"changed": [
"status"
]
}
}Locale
store.paused
La ricezione degli ordini è stata messa in pausa, fino a paused_until; object è il locale, come in store.updated. Se la pausa finisce da sola, non arriva un evento a parte.
Permesso richiesto: store:read
Campi in data
objectStoreobbligatorioThe store when the event was first read.
paused_untilandnotenext to it are the values of this pause.Campi interni (22)
objectstringobbligatorioAlways
store.Valori:
"store"idstring (uuid)obbligatorioThe restaurant.
namestringobbligatorioName.
slugstringobbligatorioIts address:
<slug>.flavoso.com.timezonestringobbligatorioIANA time zone of all local times.
currencystringobbligatorioISO 4217.
statusstringobbligatorioRight now: open, closed (outside hours or a closed special day), or paused.
Valori:
"open""closed""paused"paused_untilstring (date-time)obbligatoriopuò essere nullEnd of the running pause; null without one.
pause_notestringobbligatoriopuò essere nullReason of the running pause.
next_opening_atstring (date-time)obbligatoriopuò essere nullNext opening while closed (looks two weeks ahead); null while open.
preordersbooleanobbligatorioGuests may order for a later time, also while closed.
order_typesobjectobbligatorioWhich order types guests can choose.
Campi interni (3)
pickupbooleanobbligatorioPickup.
deliverybooleanobbligatorioDelivery.
dine_inbooleanobbligatorioOrdering at the table via QR code (Pro and up).
order_statusesstring[]obbligatorioStatuses this restaurant uses, in order, plus completed and cancelled.
lead_timesobjectobbligatorioHow long the kitchen needs; the earliest pickup or delivery time.
Campi interni (2)
pickup_minutesintegerobbligatorioMinutes until pickup, 0 to 240.
delivery_minutesintegerobbligatorioMinutes until delivery, 0 to 360.
min_orderintegerobbligatorioMinimum order value for delivery (0 = none). Integer amount in the smallest currency unit (cents).
always_openbooleanobbligatorioNo weekly schedule is set: online orders are taken around the clock (special days and pauses still apply) and no reservation times are offered.
opening_hoursWeekWindow[]obbligatorioThe weekly opening windows; a weekday without windows is closed.
Campi interni (3)
weekdayintegerobbligatorio0 = Monday … 6 = Sunday.
0 to 6
openstringobbligatorioOpening. 24-hour local time "HH:MM" in the restaurant's time zone.
pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
closestringobbligatorioClosing. Earlier than open: the window runs past midnight. Equal to open: until midnight. 24-hour local time "HH:MM" in the restaurant's time zone.
pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
delivery_hoursWeekWindow[]obbligatorioWeekly delivery windows; empty means delivery follows opening_hours.
Campi interni (3)
weekdayintegerobbligatorio0 = Monday … 6 = Sunday.
0 to 6
openstringobbligatorioOpening. 24-hour local time "HH:MM" in the restaurant's time zone.
pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
closestringobbligatorioClosing. Earlier than open: the window runs past midnight. Equal to open: until midnight. 24-hour local time "HH:MM" in the restaurant's time zone.
pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
closuresClosure[]obbligatorioUpcoming special days (today and later).
Campi interni (5)
objectstringobbligatorioAlways
closure.Valori:
"closure"datestring (date)obbligatorioThe day. A date YYYY-MM-DD in the restaurant's time zone.
closedbooleanobbligatorioClosed all day.
hoursTimeWindow[]obbligatorioThe windows of that day when not closed (at most two).
Campi interni (2)
openstringobbligatorioOpening. 24-hour local time "HH:MM" in the restaurant's time zone.
pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
closestringobbligatorioClosing; earlier than open runs past midnight. 24-hour local time "HH:MM" in the restaurant's time zone.
pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
notestringobbligatoriopuò essere nullNote, e.g. the reason.
contactobjectobbligatorioPublic contact details.
Campi interni (3)
phonestringobbligatoriopuò essere nullPhone.
emailstringobbligatoriopuò essere nullE-mail.
websitestringobbligatoriopuò essere nullWebsite.
addressobjectobbligatoriopuò essere nullThe address as far as it is known. Restaurants type it freely; postal code and city are only split out when a line starts with a postal code.
Campi interni (4)
linestringobbligatoriopuò essere nullStreet and number (or the whole address when it cannot be split).
postal_codestringobbligatoriopuò essere nullPostal code, when it can be read from the address.
citystringobbligatoriopuò essere nullCity, when it can be read from the address.
countrystringobbligatoriopuò essere nullISO 3166-1 alpha-2, as in GET /me.
locationobjectobbligatoriopuò essere nullCoordinates; null when not set.
Campi interni (2)
latnumberobbligatorioLatitude.
lonnumberobbligatorioLongitude.
paused_untilstring (date-time)obbligatorioWhen ordering resumes by itself.
notestringobbligatoriopuò essere nullThe reason, if given.
{
"id": "evt_2bf5a9b06b75442a9244e884a1acfc57",
"object": "event",
"type": "store.paused",
"created_at": "2026-10-04T17:46:12.410Z",
"api_version": "2026-10-08",
"livemode": true,
"tenant_id": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
"connection_id": "4b3f7c1e-9a2d-4e8b-b5f6-0c1d2e3f4a5b",
"data": {
"object": {
"object": "store",
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"name": "string",
"slug": "pizzeria-example",
"timezone": "Europe/Berlin",
"currency": "EUR",
"status": "open",
"paused_until": "2026-10-04T17:44:59.942Z",
"pause_note": "string",
"next_opening_at": "2026-10-04T17:44:59.942Z",
"preorders": true,
"order_types": {
"pickup": true,
"delivery": true,
"dine_in": true
},
"order_statuses": [
"string"
],
"lead_times": {
"pickup_minutes": 30,
"delivery_minutes": 30
},
"min_order": 1290,
"always_open": true,
"opening_hours": [
{
"weekday": 0,
"open": "11:30",
"close": "22:00"
}
],
"delivery_hours": [
{
"weekday": 0,
"open": "11:30",
"close": "22:00"
}
],
"closures": [
{
"object": "closure",
"date": "2026-10-04",
"closed": true,
"hours": [
{
"open": "11:30",
"close": "22:00"
}
],
"note": "string"
}
],
"contact": {
"phone": "string",
"email": "string",
"website": "string"
},
"address": {
"line": "string",
"postal_code": "string",
"city": "string",
"country": "DE"
},
"location": {
"lat": 0,
"lon": 0
}
},
"paused_until": "2026-10-04T17:44:59.942Z",
"note": "string"
}
}store.resumed
Una pausa in corso è stata terminata in anticipo; object è il locale.
Permesso richiesto: store:read
Campi in data
objectStoreobbligatorioThe store when the event was first read.
Campi interni (22)
objectstringobbligatorioAlways
store.Valori:
"store"idstring (uuid)obbligatorioThe restaurant.
namestringobbligatorioName.
slugstringobbligatorioIts address:
<slug>.flavoso.com.timezonestringobbligatorioIANA time zone of all local times.
currencystringobbligatorioISO 4217.
statusstringobbligatorioRight now: open, closed (outside hours or a closed special day), or paused.
Valori:
"open""closed""paused"paused_untilstring (date-time)obbligatoriopuò essere nullEnd of the running pause; null without one.
pause_notestringobbligatoriopuò essere nullReason of the running pause.
next_opening_atstring (date-time)obbligatoriopuò essere nullNext opening while closed (looks two weeks ahead); null while open.
preordersbooleanobbligatorioGuests may order for a later time, also while closed.
order_typesobjectobbligatorioWhich order types guests can choose.
Campi interni (3)
pickupbooleanobbligatorioPickup.
deliverybooleanobbligatorioDelivery.
dine_inbooleanobbligatorioOrdering at the table via QR code (Pro and up).
order_statusesstring[]obbligatorioStatuses this restaurant uses, in order, plus completed and cancelled.
lead_timesobjectobbligatorioHow long the kitchen needs; the earliest pickup or delivery time.
Campi interni (2)
pickup_minutesintegerobbligatorioMinutes until pickup, 0 to 240.
delivery_minutesintegerobbligatorioMinutes until delivery, 0 to 360.
min_orderintegerobbligatorioMinimum order value for delivery (0 = none). Integer amount in the smallest currency unit (cents).
always_openbooleanobbligatorioNo weekly schedule is set: online orders are taken around the clock (special days and pauses still apply) and no reservation times are offered.
opening_hoursWeekWindow[]obbligatorioThe weekly opening windows; a weekday without windows is closed.
Campi interni (3)
weekdayintegerobbligatorio0 = Monday … 6 = Sunday.
0 to 6
openstringobbligatorioOpening. 24-hour local time "HH:MM" in the restaurant's time zone.
pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
closestringobbligatorioClosing. Earlier than open: the window runs past midnight. Equal to open: until midnight. 24-hour local time "HH:MM" in the restaurant's time zone.
pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
delivery_hoursWeekWindow[]obbligatorioWeekly delivery windows; empty means delivery follows opening_hours.
Campi interni (3)
weekdayintegerobbligatorio0 = Monday … 6 = Sunday.
0 to 6
openstringobbligatorioOpening. 24-hour local time "HH:MM" in the restaurant's time zone.
pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
closestringobbligatorioClosing. Earlier than open: the window runs past midnight. Equal to open: until midnight. 24-hour local time "HH:MM" in the restaurant's time zone.
pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
closuresClosure[]obbligatorioUpcoming special days (today and later).
Campi interni (5)
objectstringobbligatorioAlways
closure.Valori:
"closure"datestring (date)obbligatorioThe day. A date YYYY-MM-DD in the restaurant's time zone.
closedbooleanobbligatorioClosed all day.
hoursTimeWindow[]obbligatorioThe windows of that day when not closed (at most two).
Campi interni (2)
openstringobbligatorioOpening. 24-hour local time "HH:MM" in the restaurant's time zone.
pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
closestringobbligatorioClosing; earlier than open runs past midnight. 24-hour local time "HH:MM" in the restaurant's time zone.
pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
notestringobbligatoriopuò essere nullNote, e.g. the reason.
contactobjectobbligatorioPublic contact details.
Campi interni (3)
phonestringobbligatoriopuò essere nullPhone.
emailstringobbligatoriopuò essere nullE-mail.
websitestringobbligatoriopuò essere nullWebsite.
addressobjectobbligatoriopuò essere nullThe address as far as it is known. Restaurants type it freely; postal code and city are only split out when a line starts with a postal code.
Campi interni (4)
linestringobbligatoriopuò essere nullStreet and number (or the whole address when it cannot be split).
postal_codestringobbligatoriopuò essere nullPostal code, when it can be read from the address.
citystringobbligatoriopuò essere nullCity, when it can be read from the address.
countrystringobbligatoriopuò essere nullISO 3166-1 alpha-2, as in GET /me.
locationobjectobbligatoriopuò essere nullCoordinates; null when not set.
Campi interni (2)
latnumberobbligatorioLatitude.
lonnumberobbligatorioLongitude.
{
"id": "evt_2bf5a9b06b75442a9244e884a1acfc57",
"object": "event",
"type": "store.resumed",
"created_at": "2026-10-04T17:46:12.410Z",
"api_version": "2026-10-08",
"livemode": true,
"tenant_id": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
"connection_id": "4b3f7c1e-9a2d-4e8b-b5f6-0c1d2e3f4a5b",
"data": {
"object": {
"object": "store",
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"name": "string",
"slug": "pizzeria-example",
"timezone": "Europe/Berlin",
"currency": "EUR",
"status": "open",
"paused_until": "2026-10-04T17:44:59.942Z",
"pause_note": "string",
"next_opening_at": "2026-10-04T17:44:59.942Z",
"preorders": true,
"order_types": {
"pickup": true,
"delivery": true,
"dine_in": true
},
"order_statuses": [
"string"
],
"lead_times": {
"pickup_minutes": 30,
"delivery_minutes": 30
},
"min_order": 1290,
"always_open": true,
"opening_hours": [
{
"weekday": 0,
"open": "11:30",
"close": "22:00"
}
],
"delivery_hours": [
{
"weekday": 0,
"open": "11:30",
"close": "22:00"
}
],
"closures": [
{
"object": "closure",
"date": "2026-10-04",
"closed": true,
"hours": [
{
"open": "11:30",
"close": "22:00"
}
],
"note": "string"
}
],
"contact": {
"phone": "string",
"email": "string",
"website": "string"
},
"address": {
"line": "string",
"postal_code": "string",
"city": "string",
"country": "DE"
},
"location": {
"lat": 0,
"lon": 0
}
}
}
}store.updated
Orari di apertura, giorni speciali, tempi di preparazione, tipi di ordine, ordine minimo o gli stati usati dal locale (order_statuses) sono cambiati; changed indica cosa.
Permesso richiesto: store:read
Campi in data
objectStoreobbligatorioThe restaurant as a store: status, schedule, ordering rules and contact.
Campi interni (22)
objectstringobbligatorioAlways
store.Valori:
"store"idstring (uuid)obbligatorioThe restaurant.
namestringobbligatorioName.
slugstringobbligatorioIts address:
<slug>.flavoso.com.timezonestringobbligatorioIANA time zone of all local times.
currencystringobbligatorioISO 4217.
statusstringobbligatorioRight now: open, closed (outside hours or a closed special day), or paused.
Valori:
"open""closed""paused"paused_untilstring (date-time)obbligatoriopuò essere nullEnd of the running pause; null without one.
pause_notestringobbligatoriopuò essere nullReason of the running pause.
next_opening_atstring (date-time)obbligatoriopuò essere nullNext opening while closed (looks two weeks ahead); null while open.
preordersbooleanobbligatorioGuests may order for a later time, also while closed.
order_typesobjectobbligatorioWhich order types guests can choose.
Campi interni (3)
pickupbooleanobbligatorioPickup.
deliverybooleanobbligatorioDelivery.
dine_inbooleanobbligatorioOrdering at the table via QR code (Pro and up).
order_statusesstring[]obbligatorioStatuses this restaurant uses, in order, plus completed and cancelled.
lead_timesobjectobbligatorioHow long the kitchen needs; the earliest pickup or delivery time.
Campi interni (2)
pickup_minutesintegerobbligatorioMinutes until pickup, 0 to 240.
delivery_minutesintegerobbligatorioMinutes until delivery, 0 to 360.
min_orderintegerobbligatorioMinimum order value for delivery (0 = none). Integer amount in the smallest currency unit (cents).
always_openbooleanobbligatorioNo weekly schedule is set: online orders are taken around the clock (special days and pauses still apply) and no reservation times are offered.
opening_hoursWeekWindow[]obbligatorioThe weekly opening windows; a weekday without windows is closed.
Campi interni (3)
weekdayintegerobbligatorio0 = Monday … 6 = Sunday.
0 to 6
openstringobbligatorioOpening. 24-hour local time "HH:MM" in the restaurant's time zone.
pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
closestringobbligatorioClosing. Earlier than open: the window runs past midnight. Equal to open: until midnight. 24-hour local time "HH:MM" in the restaurant's time zone.
pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
delivery_hoursWeekWindow[]obbligatorioWeekly delivery windows; empty means delivery follows opening_hours.
Campi interni (3)
weekdayintegerobbligatorio0 = Monday … 6 = Sunday.
0 to 6
openstringobbligatorioOpening. 24-hour local time "HH:MM" in the restaurant's time zone.
pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
closestringobbligatorioClosing. Earlier than open: the window runs past midnight. Equal to open: until midnight. 24-hour local time "HH:MM" in the restaurant's time zone.
pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
closuresClosure[]obbligatorioUpcoming special days (today and later).
Campi interni (5)
objectstringobbligatorioAlways
closure.Valori:
"closure"datestring (date)obbligatorioThe day. A date YYYY-MM-DD in the restaurant's time zone.
closedbooleanobbligatorioClosed all day.
hoursTimeWindow[]obbligatorioThe windows of that day when not closed (at most two).
Campi interni (2)
openstringobbligatorioOpening. 24-hour local time "HH:MM" in the restaurant's time zone.
pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
closestringobbligatorioClosing; earlier than open runs past midnight. 24-hour local time "HH:MM" in the restaurant's time zone.
pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$
notestringobbligatoriopuò essere nullNote, e.g. the reason.
contactobjectobbligatorioPublic contact details.
Campi interni (3)
phonestringobbligatoriopuò essere nullPhone.
emailstringobbligatoriopuò essere nullE-mail.
websitestringobbligatoriopuò essere nullWebsite.
addressobjectobbligatoriopuò essere nullThe address as far as it is known. Restaurants type it freely; postal code and city are only split out when a line starts with a postal code.
Campi interni (4)
linestringobbligatoriopuò essere nullStreet and number (or the whole address when it cannot be split).
postal_codestringobbligatoriopuò essere nullPostal code, when it can be read from the address.
citystringobbligatoriopuò essere nullCity, when it can be read from the address.
countrystringobbligatoriopuò essere nullISO 3166-1 alpha-2, as in GET /me.
locationobjectobbligatoriopuò essere nullCoordinates; null when not set.
Campi interni (2)
latnumberobbligatorioLatitude.
lonnumberobbligatorioLongitude.
changedstring[]obbligatorioThe Store fields this change touched.
Valori:
"opening_hours""delivery_hours""closures""lead_times""preorders""order_types""min_order""order_statuses"
{
"id": "evt_2bf5a9b06b75442a9244e884a1acfc57",
"object": "event",
"type": "store.updated",
"created_at": "2026-10-04T17:46:12.410Z",
"api_version": "2026-10-08",
"livemode": true,
"tenant_id": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
"connection_id": "4b3f7c1e-9a2d-4e8b-b5f6-0c1d2e3f4a5b",
"data": {
"object": {
"object": "store",
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"name": "string",
"slug": "pizzeria-example",
"timezone": "Europe/Berlin",
"currency": "EUR",
"status": "open",
"paused_until": "2026-10-04T17:44:59.942Z",
"pause_note": "string",
"next_opening_at": "2026-10-04T17:44:59.942Z",
"preorders": true,
"order_types": {
"pickup": true,
"delivery": true,
"dine_in": true
},
"order_statuses": [
"string"
],
"lead_times": {
"pickup_minutes": 30,
"delivery_minutes": 30
},
"min_order": 1290,
"always_open": true,
"opening_hours": [
{
"weekday": 0,
"open": "11:30",
"close": "22:00"
}
],
"delivery_hours": [
{
"weekday": 0,
"open": "11:30",
"close": "22:00"
}
],
"closures": [
{
"object": "closure",
"date": "2026-10-04",
"closed": true,
"hours": [
{
"open": "11:30",
"close": "22:00"
}
],
"note": "string"
}
],
"contact": {
"phone": "string",
"email": "string",
"website": "string"
},
"address": {
"line": "string",
"postal_code": "string",
"city": "string",
"country": "DE"
},
"location": {
"lat": 0,
"lon": 0
}
},
"changed": [
"opening_hours"
]
}
}Collegamento
app.connected
Un locale ha collegato la tua app, oppure l'ha collegata di nuovo dopo che il collegamento era terminato.
Permesso richiesto: nessuno, solo il collegamento stesso
Campi in data
objectConnectionSummaryobbligatorioThe connection in
app.*events.Campi interni (5)
objectstringobbligatorioAlways
connection.Valori:
"connection"idstring (uuid)obbligatorioThe connection.
scopesstring[]obbligatorioThe permissions the restaurant granted.
Valori:
"orders:read""orders:write""menu:read""menu:write""store:read""store:write""reservations:read""reservations:write""reports:read"created_atstring (date-time)obbligatorioWhen the restaurant connected the app. ISO 8601 in UTC (
Z).revoked_atstring (date-time)obbligatoriopuò essere nullWhen the connection ended; null while it is active.
{
"id": "evt_2bf5a9b06b75442a9244e884a1acfc57",
"object": "event",
"type": "app.connected",
"created_at": "2026-10-04T17:46:12.410Z",
"api_version": "2026-10-08",
"livemode": true,
"tenant_id": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
"connection_id": "4b3f7c1e-9a2d-4e8b-b5f6-0c1d2e3f4a5b",
"data": {
"object": {
"object": "connection",
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"scopes": [
"orders:read"
],
"created_at": "2026-10-04T17:44:59.942Z",
"revoked_at": "2026-10-04T17:44:59.942Z"
}
}
}app.scopes_changed
I permessi di un collegamento esistente sono cambiati, perché il titolare ha collegato di nuovo la tua app con altri permessi. previous_scopes indica quelli precedenti.
Permesso richiesto: nessuno, solo il collegamento stesso
Campi in data
objectConnectionSummaryobbligatorioThe connection in
app.*events.Campi interni (5)
objectstringobbligatorioAlways
connection.Valori:
"connection"idstring (uuid)obbligatorioThe connection.
scopesstring[]obbligatorioThe permissions the restaurant granted.
Valori:
"orders:read""orders:write""menu:read""menu:write""store:read""store:write""reservations:read""reservations:write""reports:read"created_atstring (date-time)obbligatorioWhen the restaurant connected the app. ISO 8601 in UTC (
Z).revoked_atstring (date-time)obbligatoriopuò essere nullWhen the connection ended; null while it is active.
previous_scopesstring[]obbligatorioThe permissions before this change.
{
"id": "evt_2bf5a9b06b75442a9244e884a1acfc57",
"object": "event",
"type": "app.scopes_changed",
"created_at": "2026-10-04T17:46:12.410Z",
"api_version": "2026-10-08",
"livemode": true,
"tenant_id": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
"connection_id": "4b3f7c1e-9a2d-4e8b-b5f6-0c1d2e3f4a5b",
"data": {
"object": {
"object": "connection",
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"scopes": [
"orders:read"
],
"created_at": "2026-10-04T17:44:59.942Z",
"revoked_at": "2026-10-04T17:44:59.942Z"
},
"previous_scopes": [
"string"
]
}
}app.disconnected
Il collegamento con un locale è terminato: l'ha chiuso il titolare, la tua app (DELETE /connection) o Flavoso. reason indica chi. Da quel momento nessun token di questo collegamento vale più; per questo l'evento non arriva mai tramite GET /events.
Permesso richiesto: nessuno, solo il collegamento stesso
Campi in data
objectConnectionSummaryobbligatorioThe connection in
app.*events.Campi interni (5)
objectstringobbligatorioAlways
connection.Valori:
"connection"idstring (uuid)obbligatorioThe connection.
scopesstring[]obbligatorioThe permissions the restaurant granted.
Valori:
"orders:read""orders:write""menu:read""menu:write""store:read""store:write""reservations:read""reservations:write""reports:read"created_atstring (date-time)obbligatorioWhen the restaurant connected the app. ISO 8601 in UTC (
Z).revoked_atstring (date-time)obbligatoriopuò essere nullWhen the connection ended; null while it is active.
reasonstringobbligatorioWho ended the connection.
Valori:
"owner""app""admin"
{
"id": "evt_2bf5a9b06b75442a9244e884a1acfc57",
"object": "event",
"type": "app.disconnected",
"created_at": "2026-10-04T17:46:12.410Z",
"api_version": "2026-10-08",
"livemode": true,
"tenant_id": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
"connection_id": "4b3f7c1e-9a2d-4e8b-b5f6-0c1d2e3f4a5b",
"data": {
"object": {
"object": "connection",
"id": "37386ae0-ca76-4d50-a738-6ae0ca766d50",
"scopes": [
"orders:read"
],
"created_at": "2026-10-04T17:44:59.942Z",
"revoked_at": "2026-10-04T17:44:59.942Z"
},
"reason": "owner"
}
}Prova
ping
Solo tramite «Invia un evento di prova» nella console. Non viene mai generato da solo.
Permesso richiesto: nessuno, solo il collegamento stesso
Campi in data
messagestring
{
"id": "evt_2bf5a9b06b75442a9244e884a1acfc57",
"object": "event",
"type": "ping",
"created_at": "2026-10-04T17:46:12.410Z",
"api_version": "2026-10-08",
"livemode": true,
"tenant_id": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
"connection_id": "4b3f7c1e-9a2d-4e8b-b5f6-0c1d2e3f4a5b",
"data": {
"message": "string"
}
}Qualcosa non è chiaro? Scrivi a support@flavoso.com indicando l'identificativo di X-Request-Id. Così troviamo la tua richiesta nel registro.