Configura una key
Nel pannello Developer API assegna soltanto gli scope necessari. Per chiavi esistenti puoi usare Gestisci permessi senza rigenerare il token.
SPACE Integration Layer · Private Alpha
Una API business-scoped e in sola lettura per collegare software autorizzati a menu, ordini e prenotazioni. Senza accesso diretto al database, alle credenziali Bridge o alla rete locale.
Tre passaggi per verificare il token e conoscere il business a cui è collegato. Le API key vengono create o aggiornate dal pannello SPACE.
Nel pannello Developer API assegna soltanto gli scope necessari. Per chiavi esistenti puoi usare Gestisci permessi senza rigenerare il token.
La key è una credenziale segreta: non inserirla in browser, app pubbliche, QR code, repository o log applicativi.
Verifica business, scadenza, scope e capability prima di avviare una sincronizzazione reale.
curl --request GET \
--header "X-SPACE-API-Key: spx_live_..." \
"https://space.techgamesitalia.it/api/integrations/v1/whoami.php"
<?php
$context = stream_context_create([
'http' => [
'method' => 'GET',
'header' => "X-SPACE-API-Key: " . getenv('SPACE_API_KEY') . "\r\n",
'ignore_errors' => true,
],
]);
$response = file_get_contents(
'https://space.techgamesitalia.it/api/integrations/v1/whoami.php',
false,
$context
);
$data = json_decode($response ?: '', true);
?>
const response = await fetch(
'https://space.techgamesitalia.it/api/integrations/v1/whoami.php',
{
headers: {
'X-SPACE-API-Key': process.env.SPACE_API_KEY,
},
}
);
const payload = await response.json();
Tutte le richieste sono protette da API key. Puoi inviarla in un header dedicato oppure come Bearer token.
Usa questo formato per chiarezza e semplicità nei log dell’integrazione.
X-SPACE-API-Key: spx_live_...
Alternativa utile per SDK o middleware che usano già l’autenticazione Bearer.
Authorization: Bearer spx_live_...
Ogni API key ha un set di capability esplicite. Gli scope nuovi non vengono mai assegnati automaticamente a chiavi già in uso.
Permette di chiamare whoami.php per conoscere business, chiave, scope e capability disponibili.
Legge manifest e menu sorgente completo, incluse sezioni, prodotti, varianti, aggiunte, allergeni, ingredienti e disponibilità.
Legge ordini asporto e Self Order, stati, pagamento, tavolo, cliente, note, prodotti, modificatori e gruppi opzioni.
Legge prenotazioni, coperti, cliente, contatti, note e assegnazione sala/tavolo quando disponibile.
Tutti gli endpoint sono GET, business-scoped e in sola lettura. La base URL è https://space.techgamesitalia.it.
Menu
Operatività
Lista paginata di asporto e Self Order.
GETorders.read /api/integrations/v1/orders/view.php?id=123Dettaglio ordine con prodotti, modificatori e opzioni.
GETreservations.read /api/integrations/v1/reservations/index.phpLista paginata e filtrabile di prenotazioni.
GETreservations.read /api/integrations/v1/reservations/view.php?id=123Dettaglio con assegnazione tavolo attiva, quando presente.
La collection restituisce una sintesi pronta per sincronizzare asporto e Self Order. Il dettaglio aggiunge righe, modificatori e gruppi opzioni.
Richiede orders.read. Restituisce schema_version, business, array orders e metadati page.
Accetta id oppure code, mai entrambi. Restituisce l’ordine completo con items, modifiers e option_groups.
curl --request GET \
--header "X-SPACE-API-Key: spx_live_..." \
"https://space.techgamesitalia.it/api/integrations/v1/orders/index.php?status=confirmed,preparing,ready&limit=50"
| Parametro | Tipo | Descrizione |
|---|---|---|
| limit | 1–100 | Numero massimo di risorse per pagina. Default 50. |
| cursor | string | Cursor opaco restituito in data.page.next_cursor. Non costruirlo manualmente. |
| updated_after | ISO-8601 | Restituisce risorse cambiate a partire dal checkpoint indicato. |
| status | CSV | pending, confirmed, preparing, ready, completed, cancelled, rejected, no_show |
| channel | CSV | takeaway per asporto oppure table per Self Order al tavolo. |
{
"id": 123,
"code": "ORD-000123",
"channel": "table",
"fulfillment_type": "dine_in",
"status": "confirmed",
"customer": {
"id": 54,
"name": "Mario Rossi",
"phone": "+39...",
"email": "..."
},
"service": {
"pickup_mode": null,
"pickup_date": null,
"pickup_time": null,
"table": {
"label": "Tavolo 12",
"room_id": 3,
"room_table_id": 28,
"qr_mode": "single_qr"
}
},
"payment": {
"mode": "online_future",
"status": "paid",
"provider": "stripe",
"paid_at": "2026-06-23T18:30:00+02:00"
},
"totals": {
"subtotal": 19.50,
"discount": 0,
"total": 19.50,
"currency": "EUR"
},
"changed_at": "2026-06-23T18:30:00+02:00"
}
Recupera agenda, cliente, coperti, note e assegnazione tavolo attiva. Le date vengono restituite nel contesto timezone del business.
Richiede reservations.read. Restituisce una pagina ordinata per ultima modifica, poi ID decrescente.
Richiede un ID SPACE valido. Include table_assignment quando la prenotazione ha un’assegnazione attiva.
curl --request GET \
--header "X-SPACE-API-Key: spx_live_..." \
"https://space.techgamesitalia.it/api/integrations/v1/reservations/index.php?date_from=2026-06-23&date_to=2026-06-24&status=pending,confirmed"
| Parametro | Tipo | Descrizione |
|---|---|---|
| limit | 1–100 | Numero massimo di prenotazioni per pagina. Default 50. |
| cursor | string | Cursor opaco da data.page.next_cursor. |
| updated_after | ISO-8601 | Checkpoint per sincronizzazioni incrementali. |
| status | CSV | pending, confirmed, cancelled, rejected, completed, no_show |
| date_from | YYYY-MM-DD | Include prenotazioni dalla data indicata. |
| date_to | YYYY-MM-DD | Include prenotazioni fino alla data indicata. Non può precedere date_from. |
{
"id": 145,
"status": "confirmed",
"source": "menu",
"customer": {
"id": 54,
"name": "Giulia Rinaldi",
"phone": "+39...",
"email": "..."
},
"schedule": {
"date": "2026-06-24",
"time": "21:00",
"people": 2,
"timezone": "Europe/Rome"
},
"notes": "Tavolo vicino alla vetrata.",
"table_assignment": {
"id": 18,
"room_id": 3,
"room_name": "Sala interna",
"room_table_id": 28,
"table_code": "T12",
"table_label": "Tavolo 12",
"starts_at": "2026-06-24T21:00:00+02:00",
"ends_at": "2026-06-24T22:30:00+02:00",
"people": 2
},
"changed_at": "2026-06-23T18:30:00+02:00"
}
Usa il cursor per attraversare una risposta lunga e updated_after per le sincronizzazioni successive. Il tuo software deve trattare l’ID SPACE come identità stabile.
PRIMA IMPORTAZIONE
1. Chiama /orders/index.php?limit=100
2. Salva ogni risorsa usando data.orders[].id come chiave esterna
3. Finché data.page.has_more è true:
chiama la stessa collection con cursor=data.page.next_cursor
4. Al termine salva il valore changed_at più recente elaborato
SINCRONIZZAZIONI SUCCESSIVE
1. Chiama /orders/index.php?updated_after=<checkpoint ISO-8601>
2. Durante la paginazione non cambiare filtri o updated_after
3. Effettua upsert per id SPACE
4. Salva un nuovo checkpoint solo dopo aver elaborato tutte le pagine
STESSO MODELLO
- /reservations/index.php per prenotazioni
- /menus/manifest.php → /menus/current.php per il menu
Il menu completo e i dettagli di ordini e prenotazioni restituiscono un ETag. Riutilizzalo con If-None-Match per evitare download inutili.
# Prima lettura: conserva l'header ETag della risposta 200
curl --include \
--header "X-SPACE-API-Key: spx_live_..." \
"https://space.techgamesitalia.it/api/integrations/v1/orders/view.php?id=123"
# Lettura successiva: invia lo stesso valore
curl --include \
--header "X-SPACE-API-Key: spx_live_..." \
--header 'If-None-Match: "sha256-del-documento"' \
"https://space.techgamesitalia.it/api/integrations/v1/orders/view.php?id=123"
# Se non è cambiato: HTTP 304, senza body JSON
Gli errori sono JSON coerenti. Controlla il codice HTTP, error.code e il request ID.
| HTTP | Codice | Significato |
|---|---|---|
| 401 | UNAUTHORIZED | API key mancante, non valida o scaduta. |
| 403 | FORBIDDEN | La key è valida ma non possiede lo scope richiesto. |
| 404 | ORDER_NOT_FOUND / RESERVATION_NOT_FOUND | Risorsa inesistente o non appartenente al business della key. |
| 422 | INVALID_QUERY | Parametro non valido, ad esempio ID errato o filtri in conflitto. |
| 429 | RATE_LIMITED | Troppi tentativi. Rispetta l’header Retry-After. |
| 503 | API_NOT_READY / ORDERS_NOT_READY | Modulo o ambiente non ancora disponibile. |
{
"ok": false,
"error": {
"code": "FORBIDDEN",
"message": "Scope API non autorizzato.",
"request_id": "req_..."
}
}
La Developer API è progettata per sincronizzazione server-to-server. È in Alpha e non espone funzioni di scrittura, credenziali locali o riferimenti sensibili ai provider di pagamento.