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.

EventiPermesso 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

  • objectOrderobbligatorio

    The 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)
    • objectstringobbligatorio

      Always order.

      Valori:"order"

    • idstring (uuid)obbligatorio

      The order.

    • codestringobbligatorio

      Short code the guest sees and says at the counter, e.g. K7Q2M9.

    • external_idstringobbligatoriopuò essere null

      Your app's reference set with POST /orders/{id}/acknowledge; null when none. Always null in webhook events and in GET /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.

    • typestringobbligatorio

      How the guest gets the order.

      Valori:"pickup""delivery""dine_in"

    • sourcestringobbligatorio

      Where it was placed: table via a table's QR code, app in the Flavoso app by a signed-in guest, storefront everything else (the restaurant's ordering page, the app without sign-in).

      Valori:"storefront""table""app"

    • statusstringobbligatorio

      Where the order is now. Restaurants may skip statuses, see GET /store.

      Valori:"pending""confirmed""preparing""ready""completed""cancelled"

    • created_atstring (date-time)obbligatorio

      When the order was placed. ISO 8601 in UTC (Z).

    • updated_atstring (date-time)obbligatorio

      Last change. ISO 8601 in UTC (Z).

    • acknowledged_atstring (date-time)obbligatoriopuò essere null

      When your app first acknowledged the order (POST /orders/{id}/acknowledge); null when not yet. Always null in webhook events and in GET /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 null

      Pickup or delivery time chosen by the guest (pre-order); null means as soon as possible.

    • currencystringobbligatorio

      ISO 4217, e.g. EUR.

    • amountsobjectobbligatorio

      The amounts of the order, in cents.

      Campi interni (6)
      • subtotalintegerobbligatorio

        Sum of the items. Integer amount in the smallest currency unit (cents).

      • delivery_feeintegerobbligatorio

        Delivery fee. Integer amount in the smallest currency unit (cents).

      • service_feeintegerobbligatorio

        Service fee. Integer amount in the smallest currency unit (cents).

      • discountintegerobbligatorio

        Discount (stamp card), already subtracted. Integer amount in the smallest currency unit (cents).

      • tipintegerobbligatorio

        Tip. Pass-through, not revenue. Integer amount in the smallest currency unit (cents).

      • totalintegerobbligatorio

        subtotal + delivery_fee + service_fee − discount + tip. Integer amount in the smallest currency unit (cents).

    • taxobjectobbligatorio

      VAT 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)
      • includedbooleanobbligatorio

        Always true: prices include VAT.

        Valori:true

      • linesTaxLine[]obbligatorio

        One line per rate, ascending, lines without rate last. The gross amounts add up to total − tip.

        Campi interni (4)
        • rate_bpsintegerobbligatoriopuò essere null

          The 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.

        • grossintegerobbligatorio

          Gross amount at this rate. Integer amount in the smallest currency unit (cents).

        • netintegerobbligatoriopuò essere null

          gross − tax, in cents. null when rate_bps is null.

        • taxintegerobbligatoriopuò essere null

          VAT contained in gross: round(gross × rate / (10000 + rate)), in cents. null when rate_bps is null.

    • paymentobjectobbligatorio

      How and whether it is paid.

      Campi interni (3)
      • methodstringobbligatorio

        online: paid at checkout. on_site: paid at pickup, delivery or the table.

        Valori:"online""on_site"

      • statusstringobbligatorio

        paid once the online payment is confirmed. open: to be paid on site; it stays open, because Flavoso does not record payments on site.

        Valori:"paid""open"

      • paid_atstring (date-time)obbligatoriopuò essere null

        When it was paid; null while open.

    • customerobjectobbligatoriopuò essere null

      Only 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 null

        The guest's name.

      • phonestringobbligatoriopuò essere null

        Phone for questions; null for dine-in.

    • deliveryobjectobbligatoriopuò essere null

      The delivery address; null unless type is delivery.

      Campi interni (3)
      • addressstringobbligatoriopuò essere null

        Street and number.

      • postal_codestringobbligatoriopuò essere null

        Postal code.

      • citystringobbligatoriopuò essere null

        City.

    • tableobjectobbligatoriopuò essere null

      The table of a dine-in order; null otherwise.

      Campi interni (2)
      • idstring (uuid)obbligatorio

        The table (GET /tables).

      • labelstringobbligatoriopuò essere null

        The table's name, e.g. 4.

    • notestringobbligatoriopuò essere null

      Guest's note for the kitchen (allergies!).

    • itemsOrderItem[]obbligatorio

      The lines.

      Campi interni (8)
      • idstring (uuid)obbligatorio

        The line.

      • product_idstring (uuid)obbligatoriopuò essere null

        The dish (GET /menu/products/{id}); null when it was deleted since.

      • namestringobbligatorio

        Name at the time of ordering.

      • quantityintegerobbligatorio

        How many.

        min 1

      • unit_priceintegerobbligatorio

        Price of one unit including options. Integer amount in the smallest currency unit (cents).

      • line_totalintegerobbligatorio

        unit_price × quantity. Integer amount in the smallest currency unit (cents).

      • tax_rate_bpsintegerobbligatoriopuò essere null

        VAT rate frozen at order time, in basis points (700 = 7 %). null when the restaurant has not set rates.

      • optionsobject[]obbligatorio

        The 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 null

          The option (GET /menu/options/{id}); with it you find your own modifier through its external_id. null for orders placed before 8 October 2026.

        • namestringobbligatorio

          Name of the option.

        • price_deltaintegerobbligatorio

          Surcharge of this option, per unit. Integer amount in the smallest currency unit (cents).

        • group_idstring (uuid)obbligatoriopuò essere null

          The option group the option was chosen in (GET /menu/option-groups/{id}). null for orders placed before 8 October 2026.

        • group_namestringobbligatoriopuò essere null

          Name of that group at order time, e.g. Extras or Size. null for orders placed before 8 October 2026.

Esempio
{
  "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

  • objectOrderobbligatorio

    An 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)
    • objectstringobbligatorio

      Always order.

      Valori:"order"

    • idstring (uuid)obbligatorio

      The order.

    • codestringobbligatorio

      Short code the guest sees and says at the counter, e.g. K7Q2M9.

    • external_idstringobbligatoriopuò essere null

      Your app's reference set with POST /orders/{id}/acknowledge; null when none. Always null in webhook events and in GET /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.

    • typestringobbligatorio

      How the guest gets the order.

      Valori:"pickup""delivery""dine_in"

    • sourcestringobbligatorio

      Where it was placed: table via a table's QR code, app in the Flavoso app by a signed-in guest, storefront everything else (the restaurant's ordering page, the app without sign-in).

      Valori:"storefront""table""app"

    • statusstringobbligatorio

      Where the order is now. Restaurants may skip statuses, see GET /store.

      Valori:"pending""confirmed""preparing""ready""completed""cancelled"

    • created_atstring (date-time)obbligatorio

      When the order was placed. ISO 8601 in UTC (Z).

    • updated_atstring (date-time)obbligatorio

      Last change. ISO 8601 in UTC (Z).

    • acknowledged_atstring (date-time)obbligatoriopuò essere null

      When your app first acknowledged the order (POST /orders/{id}/acknowledge); null when not yet. Always null in webhook events and in GET /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 null

      Pickup or delivery time chosen by the guest (pre-order); null means as soon as possible.

    • currencystringobbligatorio

      ISO 4217, e.g. EUR.

    • amountsobjectobbligatorio

      The amounts of the order, in cents.

      Campi interni (6)
      • subtotalintegerobbligatorio

        Sum of the items. Integer amount in the smallest currency unit (cents).

      • delivery_feeintegerobbligatorio

        Delivery fee. Integer amount in the smallest currency unit (cents).

      • service_feeintegerobbligatorio

        Service fee. Integer amount in the smallest currency unit (cents).

      • discountintegerobbligatorio

        Discount (stamp card), already subtracted. Integer amount in the smallest currency unit (cents).

      • tipintegerobbligatorio

        Tip. Pass-through, not revenue. Integer amount in the smallest currency unit (cents).

      • totalintegerobbligatorio

        subtotal + delivery_fee + service_fee − discount + tip. Integer amount in the smallest currency unit (cents).

    • taxobjectobbligatorio

      VAT 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)
      • includedbooleanobbligatorio

        Always true: prices include VAT.

        Valori:true

      • linesTaxLine[]obbligatorio

        One line per rate, ascending, lines without rate last. The gross amounts add up to total − tip.

        Campi interni (4)
        • rate_bpsintegerobbligatoriopuò essere null

          The 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.

        • grossintegerobbligatorio

          Gross amount at this rate. Integer amount in the smallest currency unit (cents).

        • netintegerobbligatoriopuò essere null

          gross − tax, in cents. null when rate_bps is null.

        • taxintegerobbligatoriopuò essere null

          VAT contained in gross: round(gross × rate / (10000 + rate)), in cents. null when rate_bps is null.

    • paymentobjectobbligatorio

      How and whether it is paid.

      Campi interni (3)
      • methodstringobbligatorio

        online: paid at checkout. on_site: paid at pickup, delivery or the table.

        Valori:"online""on_site"

      • statusstringobbligatorio

        paid once the online payment is confirmed. open: to be paid on site; it stays open, because Flavoso does not record payments on site.

        Valori:"paid""open"

      • paid_atstring (date-time)obbligatoriopuò essere null

        When it was paid; null while open.

    • customerobjectobbligatoriopuò essere null

      Only 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 null

        The guest's name.

      • phonestringobbligatoriopuò essere null

        Phone for questions; null for dine-in.

    • deliveryobjectobbligatoriopuò essere null

      The delivery address; null unless type is delivery.

      Campi interni (3)
      • addressstringobbligatoriopuò essere null

        Street and number.

      • postal_codestringobbligatoriopuò essere null

        Postal code.

      • citystringobbligatoriopuò essere null

        City.

    • tableobjectobbligatoriopuò essere null

      The table of a dine-in order; null otherwise.

      Campi interni (2)
      • idstring (uuid)obbligatorio

        The table (GET /tables).

      • labelstringobbligatoriopuò essere null

        The table's name, e.g. 4.

    • notestringobbligatoriopuò essere null

      Guest's note for the kitchen (allergies!).

    • itemsOrderItem[]obbligatorio

      The lines.

      Campi interni (8)
      • idstring (uuid)obbligatorio

        The line.

      • product_idstring (uuid)obbligatoriopuò essere null

        The dish (GET /menu/products/{id}); null when it was deleted since.

      • namestringobbligatorio

        Name at the time of ordering.

      • quantityintegerobbligatorio

        How many.

        min 1

      • unit_priceintegerobbligatorio

        Price of one unit including options. Integer amount in the smallest currency unit (cents).

      • line_totalintegerobbligatorio

        unit_price × quantity. Integer amount in the smallest currency unit (cents).

      • tax_rate_bpsintegerobbligatoriopuò essere null

        VAT rate frozen at order time, in basis points (700 = 7 %). null when the restaurant has not set rates.

      • optionsobject[]obbligatorio

        The 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 null

          The option (GET /menu/options/{id}); with it you find your own modifier through its external_id. null for orders placed before 8 October 2026.

        • namestringobbligatorio

          Name of the option.

        • price_deltaintegerobbligatorio

          Surcharge of this option, per unit. Integer amount in the smallest currency unit (cents).

        • group_idstring (uuid)obbligatoriopuò essere null

          The option group the option was chosen in (GET /menu/option-groups/{id}). null for orders placed before 8 October 2026.

        • group_namestringobbligatoriopuò essere null

          Name of that group at order time, e.g. Extras or Size. null for orders placed before 8 October 2026.

  • previous_statusstringobbligatorio

    The status before this change.

Esempio
{
  "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

  • objectOrderobbligatorio

    An 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)
    • objectstringobbligatorio

      Always order.

      Valori:"order"

    • idstring (uuid)obbligatorio

      The order.

    • codestringobbligatorio

      Short code the guest sees and says at the counter, e.g. K7Q2M9.

    • external_idstringobbligatoriopuò essere null

      Your app's reference set with POST /orders/{id}/acknowledge; null when none. Always null in webhook events and in GET /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.

    • typestringobbligatorio

      How the guest gets the order.

      Valori:"pickup""delivery""dine_in"

    • sourcestringobbligatorio

      Where it was placed: table via a table's QR code, app in the Flavoso app by a signed-in guest, storefront everything else (the restaurant's ordering page, the app without sign-in).

      Valori:"storefront""table""app"

    • statusstringobbligatorio

      Where the order is now. Restaurants may skip statuses, see GET /store.

      Valori:"pending""confirmed""preparing""ready""completed""cancelled"

    • created_atstring (date-time)obbligatorio

      When the order was placed. ISO 8601 in UTC (Z).

    • updated_atstring (date-time)obbligatorio

      Last change. ISO 8601 in UTC (Z).

    • acknowledged_atstring (date-time)obbligatoriopuò essere null

      When your app first acknowledged the order (POST /orders/{id}/acknowledge); null when not yet. Always null in webhook events and in GET /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 null

      Pickup or delivery time chosen by the guest (pre-order); null means as soon as possible.

    • currencystringobbligatorio

      ISO 4217, e.g. EUR.

    • amountsobjectobbligatorio

      The amounts of the order, in cents.

      Campi interni (6)
      • subtotalintegerobbligatorio

        Sum of the items. Integer amount in the smallest currency unit (cents).

      • delivery_feeintegerobbligatorio

        Delivery fee. Integer amount in the smallest currency unit (cents).

      • service_feeintegerobbligatorio

        Service fee. Integer amount in the smallest currency unit (cents).

      • discountintegerobbligatorio

        Discount (stamp card), already subtracted. Integer amount in the smallest currency unit (cents).

      • tipintegerobbligatorio

        Tip. Pass-through, not revenue. Integer amount in the smallest currency unit (cents).

      • totalintegerobbligatorio

        subtotal + delivery_fee + service_fee − discount + tip. Integer amount in the smallest currency unit (cents).

    • taxobjectobbligatorio

      VAT 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)
      • includedbooleanobbligatorio

        Always true: prices include VAT.

        Valori:true

      • linesTaxLine[]obbligatorio

        One line per rate, ascending, lines without rate last. The gross amounts add up to total − tip.

        Campi interni (4)
        • rate_bpsintegerobbligatoriopuò essere null

          The 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.

        • grossintegerobbligatorio

          Gross amount at this rate. Integer amount in the smallest currency unit (cents).

        • netintegerobbligatoriopuò essere null

          gross − tax, in cents. null when rate_bps is null.

        • taxintegerobbligatoriopuò essere null

          VAT contained in gross: round(gross × rate / (10000 + rate)), in cents. null when rate_bps is null.

    • paymentobjectobbligatorio

      How and whether it is paid.

      Campi interni (3)
      • methodstringobbligatorio

        online: paid at checkout. on_site: paid at pickup, delivery or the table.

        Valori:"online""on_site"

      • statusstringobbligatorio

        paid once the online payment is confirmed. open: to be paid on site; it stays open, because Flavoso does not record payments on site.

        Valori:"paid""open"

      • paid_atstring (date-time)obbligatoriopuò essere null

        When it was paid; null while open.

    • customerobjectobbligatoriopuò essere null

      Only 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 null

        The guest's name.

      • phonestringobbligatoriopuò essere null

        Phone for questions; null for dine-in.

    • deliveryobjectobbligatoriopuò essere null

      The delivery address; null unless type is delivery.

      Campi interni (3)
      • addressstringobbligatoriopuò essere null

        Street and number.

      • postal_codestringobbligatoriopuò essere null

        Postal code.

      • citystringobbligatoriopuò essere null

        City.

    • tableobjectobbligatoriopuò essere null

      The table of a dine-in order; null otherwise.

      Campi interni (2)
      • idstring (uuid)obbligatorio

        The table (GET /tables).

      • labelstringobbligatoriopuò essere null

        The table's name, e.g. 4.

    • notestringobbligatoriopuò essere null

      Guest's note for the kitchen (allergies!).

    • itemsOrderItem[]obbligatorio

      The lines.

      Campi interni (8)
      • idstring (uuid)obbligatorio

        The line.

      • product_idstring (uuid)obbligatoriopuò essere null

        The dish (GET /menu/products/{id}); null when it was deleted since.

      • namestringobbligatorio

        Name at the time of ordering.

      • quantityintegerobbligatorio

        How many.

        min 1

      • unit_priceintegerobbligatorio

        Price of one unit including options. Integer amount in the smallest currency unit (cents).

      • line_totalintegerobbligatorio

        unit_price × quantity. Integer amount in the smallest currency unit (cents).

      • tax_rate_bpsintegerobbligatoriopuò essere null

        VAT rate frozen at order time, in basis points (700 = 7 %). null when the restaurant has not set rates.

      • optionsobject[]obbligatorio

        The 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 null

          The option (GET /menu/options/{id}); with it you find your own modifier through its external_id. null for orders placed before 8 October 2026.

        • namestringobbligatorio

          Name of the option.

        • price_deltaintegerobbligatorio

          Surcharge of this option, per unit. Integer amount in the smallest currency unit (cents).

        • group_idstring (uuid)obbligatoriopuò essere null

          The option group the option was chosen in (GET /menu/option-groups/{id}). null for orders placed before 8 October 2026.

        • group_namestringobbligatoriopuò essere null

          Name of that group at order time, e.g. Extras or Size. null for orders placed before 8 October 2026.

  • previous_statusstringobbligatorio

    The status before the cancellation.

Esempio
{
  "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

  • objectOrderobbligatorio

    An 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)
    • objectstringobbligatorio

      Always order.

      Valori:"order"

    • idstring (uuid)obbligatorio

      The order.

    • codestringobbligatorio

      Short code the guest sees and says at the counter, e.g. K7Q2M9.

    • external_idstringobbligatoriopuò essere null

      Your app's reference set with POST /orders/{id}/acknowledge; null when none. Always null in webhook events and in GET /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.

    • typestringobbligatorio

      How the guest gets the order.

      Valori:"pickup""delivery""dine_in"

    • sourcestringobbligatorio

      Where it was placed: table via a table's QR code, app in the Flavoso app by a signed-in guest, storefront everything else (the restaurant's ordering page, the app without sign-in).

      Valori:"storefront""table""app"

    • statusstringobbligatorio

      Where the order is now. Restaurants may skip statuses, see GET /store.

      Valori:"pending""confirmed""preparing""ready""completed""cancelled"

    • created_atstring (date-time)obbligatorio

      When the order was placed. ISO 8601 in UTC (Z).

    • updated_atstring (date-time)obbligatorio

      Last change. ISO 8601 in UTC (Z).

    • acknowledged_atstring (date-time)obbligatoriopuò essere null

      When your app first acknowledged the order (POST /orders/{id}/acknowledge); null when not yet. Always null in webhook events and in GET /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 null

      Pickup or delivery time chosen by the guest (pre-order); null means as soon as possible.

    • currencystringobbligatorio

      ISO 4217, e.g. EUR.

    • amountsobjectobbligatorio

      The amounts of the order, in cents.

      Campi interni (6)
      • subtotalintegerobbligatorio

        Sum of the items. Integer amount in the smallest currency unit (cents).

      • delivery_feeintegerobbligatorio

        Delivery fee. Integer amount in the smallest currency unit (cents).

      • service_feeintegerobbligatorio

        Service fee. Integer amount in the smallest currency unit (cents).

      • discountintegerobbligatorio

        Discount (stamp card), already subtracted. Integer amount in the smallest currency unit (cents).

      • tipintegerobbligatorio

        Tip. Pass-through, not revenue. Integer amount in the smallest currency unit (cents).

      • totalintegerobbligatorio

        subtotal + delivery_fee + service_fee − discount + tip. Integer amount in the smallest currency unit (cents).

    • taxobjectobbligatorio

      VAT 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)
      • includedbooleanobbligatorio

        Always true: prices include VAT.

        Valori:true

      • linesTaxLine[]obbligatorio

        One line per rate, ascending, lines without rate last. The gross amounts add up to total − tip.

        Campi interni (4)
        • rate_bpsintegerobbligatoriopuò essere null

          The 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.

        • grossintegerobbligatorio

          Gross amount at this rate. Integer amount in the smallest currency unit (cents).

        • netintegerobbligatoriopuò essere null

          gross − tax, in cents. null when rate_bps is null.

        • taxintegerobbligatoriopuò essere null

          VAT contained in gross: round(gross × rate / (10000 + rate)), in cents. null when rate_bps is null.

    • paymentobjectobbligatorio

      How and whether it is paid.

      Campi interni (3)
      • methodstringobbligatorio

        online: paid at checkout. on_site: paid at pickup, delivery or the table.

        Valori:"online""on_site"

      • statusstringobbligatorio

        paid once the online payment is confirmed. open: to be paid on site; it stays open, because Flavoso does not record payments on site.

        Valori:"paid""open"

      • paid_atstring (date-time)obbligatoriopuò essere null

        When it was paid; null while open.

    • customerobjectobbligatoriopuò essere null

      Only 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 null

        The guest's name.

      • phonestringobbligatoriopuò essere null

        Phone for questions; null for dine-in.

    • deliveryobjectobbligatoriopuò essere null

      The delivery address; null unless type is delivery.

      Campi interni (3)
      • addressstringobbligatoriopuò essere null

        Street and number.

      • postal_codestringobbligatoriopuò essere null

        Postal code.

      • citystringobbligatoriopuò essere null

        City.

    • tableobjectobbligatoriopuò essere null

      The table of a dine-in order; null otherwise.

      Campi interni (2)
      • idstring (uuid)obbligatorio

        The table (GET /tables).

      • labelstringobbligatoriopuò essere null

        The table's name, e.g. 4.

    • notestringobbligatoriopuò essere null

      Guest's note for the kitchen (allergies!).

    • itemsOrderItem[]obbligatorio

      The lines.

      Campi interni (8)
      • idstring (uuid)obbligatorio

        The line.

      • product_idstring (uuid)obbligatoriopuò essere null

        The dish (GET /menu/products/{id}); null when it was deleted since.

      • namestringobbligatorio

        Name at the time of ordering.

      • quantityintegerobbligatorio

        How many.

        min 1

      • unit_priceintegerobbligatorio

        Price of one unit including options. Integer amount in the smallest currency unit (cents).

      • line_totalintegerobbligatorio

        unit_price × quantity. Integer amount in the smallest currency unit (cents).

      • tax_rate_bpsintegerobbligatoriopuò essere null

        VAT rate frozen at order time, in basis points (700 = 7 %). null when the restaurant has not set rates.

      • optionsobject[]obbligatorio

        The 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 null

          The option (GET /menu/options/{id}); with it you find your own modifier through its external_id. null for orders placed before 8 October 2026.

        • namestringobbligatorio

          Name of the option.

        • price_deltaintegerobbligatorio

          Surcharge of this option, per unit. Integer amount in the smallest currency unit (cents).

        • group_idstring (uuid)obbligatoriopuò essere null

          The option group the option was chosen in (GET /menu/option-groups/{id}). null for orders placed before 8 October 2026.

        • group_namestringobbligatoriopuò essere null

          Name of that group at order time, e.g. Extras or Size. null for orders placed before 8 October 2026.

Esempio
{
  "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

  • objectReservationobbligatorio

    A table reservation. Contact details stay in Flavoso (data minimisation); the name is enough to greet the party.

    Campi interni (14)
    • objectstringobbligatorio

      Always reservation.

      Valori:"reservation"

    • idstring (uuid)obbligatorio

      The reservation.

    • codestringobbligatorio

      Short code the guest sees.

    • statusstringobbligatorio

      pending is a request the restaurant still has to confirm.

      Valori:"pending""confirmed""declined""seated""done""cancelled""no_show"

    • starts_atstring (date-time)obbligatorio

      Start of the reservation. ISO 8601 in UTC (Z).

    • duration_minutesintegerobbligatorio

      How long the table is held.

    • party_sizeintegerobbligatorio

      Number of guests.

    • table_idsstring (uuid)[]obbligatorio

      Assigned tables (GET /tables); empty when none is assigned yet.

    • sourcestringobbligatorio

      Booked online by the guest, by the restaurant's staff, or through this API.

      Valori:"guest""staff""api"

    • guest_namestringobbligatoriopuò essere null

      The guest's name.

    • notestringobbligatoriopuò essere null

      The guest's wish.

    • created_atstring (date-time)obbligatorio

      When it was made. ISO 8601 in UTC (Z).

    • updated_atstring (date-time)obbligatorio

      Last change. ISO 8601 in UTC (Z).

    • deleted_atstring (date-time)obbligatoriopuò essere null

      Only set in the event that reports a deletion; deleted reservations are not returned otherwise.

Esempio
{
  "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

  • objectReservationobbligatorio

    A table reservation. Contact details stay in Flavoso (data minimisation); the name is enough to greet the party.

    Campi interni (14)
    • objectstringobbligatorio

      Always reservation.

      Valori:"reservation"

    • idstring (uuid)obbligatorio

      The reservation.

    • codestringobbligatorio

      Short code the guest sees.

    • statusstringobbligatorio

      pending is a request the restaurant still has to confirm.

      Valori:"pending""confirmed""declined""seated""done""cancelled""no_show"

    • starts_atstring (date-time)obbligatorio

      Start of the reservation. ISO 8601 in UTC (Z).

    • duration_minutesintegerobbligatorio

      How long the table is held.

    • party_sizeintegerobbligatorio

      Number of guests.

    • table_idsstring (uuid)[]obbligatorio

      Assigned tables (GET /tables); empty when none is assigned yet.

    • sourcestringobbligatorio

      Booked online by the guest, by the restaurant's staff, or through this API.

      Valori:"guest""staff""api"

    • guest_namestringobbligatoriopuò essere null

      The guest's name.

    • notestringobbligatoriopuò essere null

      The guest's wish.

    • created_atstring (date-time)obbligatorio

      When it was made. ISO 8601 in UTC (Z).

    • updated_atstring (date-time)obbligatorio

      Last change. ISO 8601 in UTC (Z).

    • deleted_atstring (date-time)obbligatoriopuò essere null

      Only set in the event that reports a deletion; deleted reservations are not returned otherwise.

  • previous_statusstringpuò essere null

    The status before this change.

  • changedstring[]obbligatorio

    The fields this change touched.

    Valori:"status""starts_at""party_size""duration_minutes""table_ids""note""deleted"

Esempio
{
  "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

  • objectStoreobbligatorio

    The store when the event was first read. paused_until and note next to it are the values of this pause.

    Campi interni (22)
    • objectstringobbligatorio

      Always store.

      Valori:"store"

    • idstring (uuid)obbligatorio

      The restaurant.

    • namestringobbligatorio

      Name.

    • slugstringobbligatorio

      Its address: <slug>.flavoso.com.

    • timezonestringobbligatorio

      IANA time zone of all local times.

    • currencystringobbligatorio

      ISO 4217.

    • statusstringobbligatorio

      Right now: open, closed (outside hours or a closed special day), or paused.

      Valori:"open""closed""paused"

    • paused_untilstring (date-time)obbligatoriopuò essere null

      End of the running pause; null without one.

    • pause_notestringobbligatoriopuò essere null

      Reason of the running pause.

    • next_opening_atstring (date-time)obbligatoriopuò essere null

      Next opening while closed (looks two weeks ahead); null while open.

    • preordersbooleanobbligatorio

      Guests may order for a later time, also while closed.

    • order_typesobjectobbligatorio

      Which order types guests can choose.

      Campi interni (3)
      • pickupbooleanobbligatorio

        Pickup.

      • deliverybooleanobbligatorio

        Delivery.

      • dine_inbooleanobbligatorio

        Ordering at the table via QR code (Pro and up).

    • order_statusesstring[]obbligatorio

      Statuses this restaurant uses, in order, plus completed and cancelled.

    • lead_timesobjectobbligatorio

      How long the kitchen needs; the earliest pickup or delivery time.

      Campi interni (2)
      • pickup_minutesintegerobbligatorio

        Minutes until pickup, 0 to 240.

      • delivery_minutesintegerobbligatorio

        Minutes until delivery, 0 to 360.

    • min_orderintegerobbligatorio

      Minimum order value for delivery (0 = none). Integer amount in the smallest currency unit (cents).

    • always_openbooleanobbligatorio

      No 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[]obbligatorio

      The weekly opening windows; a weekday without windows is closed.

      Campi interni (3)
      • weekdayintegerobbligatorio

        0 = Monday … 6 = Sunday.

        0 to 6

      • openstringobbligatorio

        Opening. 24-hour local time "HH:MM" in the restaurant's time zone.

        pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$

      • closestringobbligatorio

        Closing. 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[]obbligatorio

      Weekly delivery windows; empty means delivery follows opening_hours.

      Campi interni (3)
      • weekdayintegerobbligatorio

        0 = Monday … 6 = Sunday.

        0 to 6

      • openstringobbligatorio

        Opening. 24-hour local time "HH:MM" in the restaurant's time zone.

        pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$

      • closestringobbligatorio

        Closing. 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[]obbligatorio

      Upcoming special days (today and later).

      Campi interni (5)
      • objectstringobbligatorio

        Always closure.

        Valori:"closure"

      • datestring (date)obbligatorio

        The day. A date YYYY-MM-DD in the restaurant's time zone.

      • closedbooleanobbligatorio

        Closed all day.

      • hoursTimeWindow[]obbligatorio

        The windows of that day when not closed (at most two).

        Campi interni (2)
        • openstringobbligatorio

          Opening. 24-hour local time "HH:MM" in the restaurant's time zone.

          pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$

        • closestringobbligatorio

          Closing; 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 null

        Note, e.g. the reason.

    • contactobjectobbligatorio

      Public contact details.

      Campi interni (3)
      • phonestringobbligatoriopuò essere null

        Phone.

      • emailstringobbligatoriopuò essere null

        E-mail.

      • websitestringobbligatoriopuò essere null

        Website.

    • addressobjectobbligatoriopuò essere null

      The 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 null

        Street and number (or the whole address when it cannot be split).

      • postal_codestringobbligatoriopuò essere null

        Postal code, when it can be read from the address.

      • citystringobbligatoriopuò essere null

        City, when it can be read from the address.

      • countrystringobbligatoriopuò essere null

        ISO 3166-1 alpha-2, as in GET /me.

    • locationobjectobbligatoriopuò essere null

      Coordinates; null when not set.

      Campi interni (2)
      • latnumberobbligatorio

        Latitude.

      • lonnumberobbligatorio

        Longitude.

  • paused_untilstring (date-time)obbligatorio

    When ordering resumes by itself.

  • notestringobbligatoriopuò essere null

    The reason, if given.

Esempio
{
  "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

  • objectStoreobbligatorio

    The store when the event was first read.

    Campi interni (22)
    • objectstringobbligatorio

      Always store.

      Valori:"store"

    • idstring (uuid)obbligatorio

      The restaurant.

    • namestringobbligatorio

      Name.

    • slugstringobbligatorio

      Its address: <slug>.flavoso.com.

    • timezonestringobbligatorio

      IANA time zone of all local times.

    • currencystringobbligatorio

      ISO 4217.

    • statusstringobbligatorio

      Right now: open, closed (outside hours or a closed special day), or paused.

      Valori:"open""closed""paused"

    • paused_untilstring (date-time)obbligatoriopuò essere null

      End of the running pause; null without one.

    • pause_notestringobbligatoriopuò essere null

      Reason of the running pause.

    • next_opening_atstring (date-time)obbligatoriopuò essere null

      Next opening while closed (looks two weeks ahead); null while open.

    • preordersbooleanobbligatorio

      Guests may order for a later time, also while closed.

    • order_typesobjectobbligatorio

      Which order types guests can choose.

      Campi interni (3)
      • pickupbooleanobbligatorio

        Pickup.

      • deliverybooleanobbligatorio

        Delivery.

      • dine_inbooleanobbligatorio

        Ordering at the table via QR code (Pro and up).

    • order_statusesstring[]obbligatorio

      Statuses this restaurant uses, in order, plus completed and cancelled.

    • lead_timesobjectobbligatorio

      How long the kitchen needs; the earliest pickup or delivery time.

      Campi interni (2)
      • pickup_minutesintegerobbligatorio

        Minutes until pickup, 0 to 240.

      • delivery_minutesintegerobbligatorio

        Minutes until delivery, 0 to 360.

    • min_orderintegerobbligatorio

      Minimum order value for delivery (0 = none). Integer amount in the smallest currency unit (cents).

    • always_openbooleanobbligatorio

      No 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[]obbligatorio

      The weekly opening windows; a weekday without windows is closed.

      Campi interni (3)
      • weekdayintegerobbligatorio

        0 = Monday … 6 = Sunday.

        0 to 6

      • openstringobbligatorio

        Opening. 24-hour local time "HH:MM" in the restaurant's time zone.

        pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$

      • closestringobbligatorio

        Closing. 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[]obbligatorio

      Weekly delivery windows; empty means delivery follows opening_hours.

      Campi interni (3)
      • weekdayintegerobbligatorio

        0 = Monday … 6 = Sunday.

        0 to 6

      • openstringobbligatorio

        Opening. 24-hour local time "HH:MM" in the restaurant's time zone.

        pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$

      • closestringobbligatorio

        Closing. 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[]obbligatorio

      Upcoming special days (today and later).

      Campi interni (5)
      • objectstringobbligatorio

        Always closure.

        Valori:"closure"

      • datestring (date)obbligatorio

        The day. A date YYYY-MM-DD in the restaurant's time zone.

      • closedbooleanobbligatorio

        Closed all day.

      • hoursTimeWindow[]obbligatorio

        The windows of that day when not closed (at most two).

        Campi interni (2)
        • openstringobbligatorio

          Opening. 24-hour local time "HH:MM" in the restaurant's time zone.

          pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$

        • closestringobbligatorio

          Closing; 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 null

        Note, e.g. the reason.

    • contactobjectobbligatorio

      Public contact details.

      Campi interni (3)
      • phonestringobbligatoriopuò essere null

        Phone.

      • emailstringobbligatoriopuò essere null

        E-mail.

      • websitestringobbligatoriopuò essere null

        Website.

    • addressobjectobbligatoriopuò essere null

      The 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 null

        Street and number (or the whole address when it cannot be split).

      • postal_codestringobbligatoriopuò essere null

        Postal code, when it can be read from the address.

      • citystringobbligatoriopuò essere null

        City, when it can be read from the address.

      • countrystringobbligatoriopuò essere null

        ISO 3166-1 alpha-2, as in GET /me.

    • locationobjectobbligatoriopuò essere null

      Coordinates; null when not set.

      Campi interni (2)
      • latnumberobbligatorio

        Latitude.

      • lonnumberobbligatorio

        Longitude.

Esempio
{
  "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

  • objectStoreobbligatorio

    The restaurant as a store: status, schedule, ordering rules and contact.

    Campi interni (22)
    • objectstringobbligatorio

      Always store.

      Valori:"store"

    • idstring (uuid)obbligatorio

      The restaurant.

    • namestringobbligatorio

      Name.

    • slugstringobbligatorio

      Its address: <slug>.flavoso.com.

    • timezonestringobbligatorio

      IANA time zone of all local times.

    • currencystringobbligatorio

      ISO 4217.

    • statusstringobbligatorio

      Right now: open, closed (outside hours or a closed special day), or paused.

      Valori:"open""closed""paused"

    • paused_untilstring (date-time)obbligatoriopuò essere null

      End of the running pause; null without one.

    • pause_notestringobbligatoriopuò essere null

      Reason of the running pause.

    • next_opening_atstring (date-time)obbligatoriopuò essere null

      Next opening while closed (looks two weeks ahead); null while open.

    • preordersbooleanobbligatorio

      Guests may order for a later time, also while closed.

    • order_typesobjectobbligatorio

      Which order types guests can choose.

      Campi interni (3)
      • pickupbooleanobbligatorio

        Pickup.

      • deliverybooleanobbligatorio

        Delivery.

      • dine_inbooleanobbligatorio

        Ordering at the table via QR code (Pro and up).

    • order_statusesstring[]obbligatorio

      Statuses this restaurant uses, in order, plus completed and cancelled.

    • lead_timesobjectobbligatorio

      How long the kitchen needs; the earliest pickup or delivery time.

      Campi interni (2)
      • pickup_minutesintegerobbligatorio

        Minutes until pickup, 0 to 240.

      • delivery_minutesintegerobbligatorio

        Minutes until delivery, 0 to 360.

    • min_orderintegerobbligatorio

      Minimum order value for delivery (0 = none). Integer amount in the smallest currency unit (cents).

    • always_openbooleanobbligatorio

      No 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[]obbligatorio

      The weekly opening windows; a weekday without windows is closed.

      Campi interni (3)
      • weekdayintegerobbligatorio

        0 = Monday … 6 = Sunday.

        0 to 6

      • openstringobbligatorio

        Opening. 24-hour local time "HH:MM" in the restaurant's time zone.

        pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$

      • closestringobbligatorio

        Closing. 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[]obbligatorio

      Weekly delivery windows; empty means delivery follows opening_hours.

      Campi interni (3)
      • weekdayintegerobbligatorio

        0 = Monday … 6 = Sunday.

        0 to 6

      • openstringobbligatorio

        Opening. 24-hour local time "HH:MM" in the restaurant's time zone.

        pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$

      • closestringobbligatorio

        Closing. 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[]obbligatorio

      Upcoming special days (today and later).

      Campi interni (5)
      • objectstringobbligatorio

        Always closure.

        Valori:"closure"

      • datestring (date)obbligatorio

        The day. A date YYYY-MM-DD in the restaurant's time zone.

      • closedbooleanobbligatorio

        Closed all day.

      • hoursTimeWindow[]obbligatorio

        The windows of that day when not closed (at most two).

        Campi interni (2)
        • openstringobbligatorio

          Opening. 24-hour local time "HH:MM" in the restaurant's time zone.

          pattern ^([01][0-9]|2[0-3]):[0-5][0-9]$

        • closestringobbligatorio

          Closing; 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 null

        Note, e.g. the reason.

    • contactobjectobbligatorio

      Public contact details.

      Campi interni (3)
      • phonestringobbligatoriopuò essere null

        Phone.

      • emailstringobbligatoriopuò essere null

        E-mail.

      • websitestringobbligatoriopuò essere null

        Website.

    • addressobjectobbligatoriopuò essere null

      The 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 null

        Street and number (or the whole address when it cannot be split).

      • postal_codestringobbligatoriopuò essere null

        Postal code, when it can be read from the address.

      • citystringobbligatoriopuò essere null

        City, when it can be read from the address.

      • countrystringobbligatoriopuò essere null

        ISO 3166-1 alpha-2, as in GET /me.

    • locationobjectobbligatoriopuò essere null

      Coordinates; null when not set.

      Campi interni (2)
      • latnumberobbligatorio

        Latitude.

      • lonnumberobbligatorio

        Longitude.

  • changedstring[]obbligatorio

    The Store fields this change touched.

    Valori:"opening_hours""delivery_hours""closures""lead_times""preorders""order_types""min_order""order_statuses"

Esempio
{
  "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

  • objectConnectionSummaryobbligatorio

    The connection in app.* events.

    Campi interni (5)
    • objectstringobbligatorio

      Always connection.

      Valori:"connection"

    • idstring (uuid)obbligatorio

      The connection.

    • scopesstring[]obbligatorio

      The 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)obbligatorio

      When the restaurant connected the app. ISO 8601 in UTC (Z).

    • revoked_atstring (date-time)obbligatoriopuò essere null

      When the connection ended; null while it is active.

Esempio
{
  "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

  • objectConnectionSummaryobbligatorio

    The connection in app.* events.

    Campi interni (5)
    • objectstringobbligatorio

      Always connection.

      Valori:"connection"

    • idstring (uuid)obbligatorio

      The connection.

    • scopesstring[]obbligatorio

      The 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)obbligatorio

      When the restaurant connected the app. ISO 8601 in UTC (Z).

    • revoked_atstring (date-time)obbligatoriopuò essere null

      When the connection ended; null while it is active.

  • previous_scopesstring[]obbligatorio

    The permissions before this change.

Esempio
{
  "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

  • objectConnectionSummaryobbligatorio

    The connection in app.* events.

    Campi interni (5)
    • objectstringobbligatorio

      Always connection.

      Valori:"connection"

    • idstring (uuid)obbligatorio

      The connection.

    • scopesstring[]obbligatorio

      The 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)obbligatorio

      When the restaurant connected the app. ISO 8601 in UTC (Z).

    • revoked_atstring (date-time)obbligatoriopuò essere null

      When the connection ended; null while it is active.

  • reasonstringobbligatorio

    Who ended the connection.

    Valori:"owner""app""admin"

Esempio
{
  "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
Esempio
{
  "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.