API Reference
Panoramica
Il Carrubo espone una REST API composta da 46 endpoint per la gestione completa delle strutture ricettive: prenotazioni, ospiti, documenti, comunicazioni con la Questura e molto altro.
Base URL:
https://carrubo.cristianobleve.com
Tutte le richieste e le risposte utilizzano il formato JSON (Content-Type: application/json), salvo dove diversamente specificato (es. download PDF, upload immagini).
Autenticazione
L’API supporta due metodi di autenticazione, utilizzabili in alternativa:
1. API Key
Passa la chiave API tramite header o query parameter:
GET /api/v1/prenotazioni HTTP/1.1
Host: carrubo.cristianobleve.com
x-api-key: la-tua-api-key
Oppure come query parameter:
GET /api/v1/prenotazioni?api_key=la-tua-api-key
2. Supabase Bearer Token
Utilizza un token JWT ottenuto tramite autenticazione Supabase:
GET /api/v1/prenotazioni HTTP/1.1
Host: carrubo.cristianobleve.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Endpoint Pubblici
I seguenti endpoint non richiedono autenticazione:
| Endpoint | Descrizione |
|---|---|
GET /api/config |
Configurazione Supabase (URL e chiave pubblica) |
GET /api/version |
Versione dell’applicazione |
GET /api/settings/features |
Feature flag attive |
Formato delle Risposte
Tutte le risposte sono in formato JSON. Una risposta di successo tipica:
{
"data": { ... },
"status": 200
}
Una risposta di errore:
{
"error": "Messaggio di errore descrittivo",
"status": 400
}
Gestione Errori
L’API utilizza i codici di stato HTTP standard:
| Codice | Significato |
|---|---|
200 |
Successo |
201 |
Risorsa creata con successo |
400 |
Richiesta non valida — parametri mancanti o errati |
401 |
Non autenticato — API key o token mancante/non valido |
403 |
Non autorizzato — permessi insufficienti |
404 |
Risorsa non trovata |
429 |
Troppe richieste — rate limit superato |
500 |
Errore interno del server |
Rate Limiting
Le API applicano limiti di frequenza per garantire la stabilità del servizio. In caso di superamento del limite, riceverai una risposta 429 Too Many Requests. Riprova dopo il tempo indicato nell’header Retry-After.
Tabella Riepilogativa degli Endpoint
Prenotazioni
| Metodo | Endpoint | Auth | Descrizione |
|---|---|---|---|
GET |
/api/prenotazioni |
✅ | Lista prenotazioni (formato calendario) |
GET |
/api/v1/prenotazioni |
✅ | Lista prenotazioni (RESTful) |
GET |
/api/v1/prenotazioni/:id |
✅ | Dettaglio prenotazione |
POST |
/api/v1/prenotazioni |
✅ | Crea prenotazione |
PUT |
/api/v1/prenotazioni/:id |
✅ | Aggiorna prenotazione |
POST |
/api/v1/prenotazioni/delete-bulk |
✅ | Elimina prenotazioni in blocco |
POST |
/api/saveOspiti |
✅ | Salva dati ospiti |
Alloggiati Web (Questura)
| Metodo | Endpoint | Auth | Descrizione |
|---|---|---|---|
GET |
/api/alloggiati/check |
✅ | Test connessione SOAP |
POST |
/api/alloggiati/valida |
✅ | Valida schedine alloggiati |
POST |
/api/alloggiati/invio |
✅ | Invio schedine alla Questura |
GET |
/api/alloggiati/ricevute |
✅ | Scarica ricevute (PDF) |
GET |
/api/alloggiati/verifica-ricevute |
✅ | Verifica incrociata prenotazioni/ricevute |
GET |
/api/alloggiati/codici |
✅ | Codici di riferimento |
Documenti & PDF
| Metodo | Endpoint | Auth | Descrizione |
|---|---|---|---|
POST |
/api/documents/upload |
✅ | Carica immagine documento su GitHub |
GET |
/api/documents/:booking_id/:guest_idx/:side |
✅ | Recupera immagine documento |
POST |
/api/generate-pdf |
✅ | Genera PDF tramite APITemplate.io |
POST |
/api/generate-apitemplate |
✅ | Genera report finanziario PDF |
GET |
/api/csv-pdf-list |
✅ | Lista PDF generati |
GET |
/api/csv-pdf-download/:id |
✅ | Download PDF |
GET |
/api/history |
✅ | Storico generazione PDF |
Lettere di Benvenuto
| Metodo | Endpoint | Auth | Descrizione |
|---|---|---|---|
GET |
/api/lettere-benvenuto |
✅ | Lista lettere di benvenuto |
GET |
/api/lettere-benvenuto/:prenotazioneId |
✅ | Verifica esistenza lettera |
POST |
/api/lettere-benvenuto/genera |
✅ | Genera lettera di benvenuto |
DELETE |
/api/lettere-benvenuto/:prenotazioneId |
✅ | Elimina lettera (per rigenerazione) |
OCR & MRZ (Scanner Documenti)
| Metodo | Endpoint | Auth | Descrizione |
|---|---|---|---|
POST |
/api/ocr |
✅ | Elaborazione OCR immagine |
POST |
/api/mrz/parse |
✅ | Parsing righe MRZ |
POST |
/api/save-scan |
✅ | Salva risultato scansione |
Admin & Utenti
| Metodo | Endpoint | Auth | Descrizione |
|---|---|---|---|
POST |
/api/operators |
✅ 🔒 | Crea operatore |
GET |
/api/operators |
✅ 🔒 | Lista operatori |
POST |
/api/operators/pfp |
✅ 🔒 | Imposta foto profilo |
GET |
/api/users |
✅ 🔒 | Lista utenti con metadati |
POST |
/api/send-email |
✅ 🔒 | Invia email |
POST |
/api/admin/grant-cookie |
✅ 🔒 | Concedi cookie admin |
POST |
/api/auth/unlink |
✅ | Scollega provider OAuth |
GET |
/api/sessions |
✅ | Lista sessioni attive |
POST |
/api/sessions/revoke-all |
✅ | Revoca tutte le sessioni |
Sistema & Storage
| Metodo | Endpoint | Auth | Descrizione |
|---|---|---|---|
GET |
/api/config |
❌ | Configurazione Supabase |
GET |
/api/version |
❌ | Versione e info deploy |
GET |
/api/settings/features |
❌ | Feature flag |
POST |
/api/settings/features |
✅ 🔒 | Attiva/disattiva feature |
GET |
/api/settings/maintenance |
✅ | Stato manutenzione |
POST |
/api/settings/maintenance |
✅ 🔒 | Attiva/disattiva manutenzione |
GET |
/api/storage/signed-url |
✅ | URL firmato per storage |
GET |
/api/storage/:bucket/:filename |
✅ | Proxy Supabase Storage |
POST |
/api/querysql |
✅ 🔒 | Esegui query SQL |
GET |
/api/widget/data |
✅ | Dati widget dashboard |
GET |
/api/map/top-countries |
✅ | Paesi più frequenti |
GET |
/api/cli/auth/key |
✅ | Chiave autenticazione CLI |
GET |
/sitemap.xml |
❌ | Sitemap XML dinamica |
[!NOTE]
🔒 = Richiede privilegi di amministratore oltre all’autenticazione standard.