API Prenotazioni

Endpoint per la gestione completa del ciclo di vita delle prenotazioni: dalla creazione alla gestione degli ospiti associati.


Lista Prenotazioni (Calendario)

Restituisce tutte le prenotazioni in formato compatibile con i componenti calendario (FullCalendar).

GET /api/prenotazioni

Risposta

[
  {
    "id": 142,
    "title": "Mario Rossi",
    "start": "2026-07-20",
    "end": "2026-07-25",
    "url": "/prenotazioni/142"
  },
  {
    "id": 143,
    "title": "John Smith",
    "start": "2026-07-22",
    "end": "2026-07-28",
    "url": "/prenotazioni/143"
  }
]

Campi della Risposta

Campo Tipo Descrizione
id number ID univoco della prenotazione
title string Nome e cognome dell’ospite principale
start string Data di check-in (formato YYYY-MM-DD)
end string Data di check-out (formato YYYY-MM-DD)
url string Percorso relativo alla pagina di dettaglio

Lista Prenotazioni (RESTful)

Restituisce l’elenco completo delle prenotazioni in formato RESTful con tutti i campi.

GET /api/v1/prenotazioni

Risposta

{
  "data": [
    {
      "id": 142,
      "nome_cognome": "Mario Rossi",
      "lingua": "IT",
      "email": "mario.rossi@email.com",
      "telefono": "+39 333 1234567",
      "paese_id": 380,
      "check_in": "2026-07-20",
      "check_out": "2026-07-25",
      "numero_notti": 5,
      "numero_ospiti": 2,
      "idf_gen": "ABC123",
      "created_at": "2026-07-10T14:30:00Z",
      "updated_at": "2026-07-10T14:30:00Z"
    }
  ]
}

Dettaglio Prenotazione

Restituisce i dettagli completi di una singola prenotazione, inclusi i dati degli ospiti associati.

GET /api/v1/prenotazioni/:id

Parametri URL

Parametro Tipo Obbligatorio Descrizione
id number ID della prenotazione

Esempio di Richiesta

GET /api/v1/prenotazioni/142

Risposta

{
  "data": {
    "id": 142,
    "nome_cognome": "Mario Rossi",
    "lingua": "IT",
    "email": "mario.rossi@email.com",
    "telefono": "+39 333 1234567",
    "paese_id": 380,
    "check_in": "2026-07-20",
    "check_out": "2026-07-25",
    "numero_notti": 5,
    "numero_ospiti": 2,
    "idf_gen": "ABC123",
    "ospiti": [
      {
        "id": 1,
        "nome": "Mario",
        "cognome": "Rossi",
        "sesso": "M",
        "data_nascita": "1985-03-15",
        "tipo_documento": "PASOR",
        "numero_documento": "YA1234567"
      }
    ],
    "created_at": "2026-07-10T14:30:00Z",
    "updated_at": "2026-07-10T14:30:00Z"
  }
}

Crea Prenotazione

Crea una nuova prenotazione. È possibile specificare la durata del soggiorno tramite check_out oppure numero_notti (se entrambi sono presenti, check_out ha la priorità).

POST /api/v1/prenotazioni

Parametri Body

Parametro Tipo Obbligatorio Descrizione
nome_cognome string Nome e cognome dell’ospite principale
lingua string Codice lingua (es. IT, EN, DE, FR)
email string Indirizzo email
telefono string Numero di telefono
paese_id number ID del paese di provenienza
check_in string Data di arrivo (YYYY-MM-DD)
check_out string ❌* Data di partenza (YYYY-MM-DD)
numero_notti number ❌* Numero di notti di soggiorno
numero_ospiti number Numero totale di ospiti
idf_gen string Identificativo generato (codice prenotazione esterno)

[!NOTE]
*È necessario specificare almeno uno tra check_out e numero_notti. Se viene fornito numero_notti, la data di check-out viene calcolata automaticamente.

Esempio di Richiesta

{
  "nome_cognome": "Maria Bianchi",
  "lingua": "IT",
  "email": "maria.bianchi@email.com",
  "telefono": "+39 340 9876543",
  "paese_id": 380,
  "check_in": "2026-08-01",
  "numero_notti": 7,
  "numero_ospiti": 3,
  "idf_gen": "BK-2026-001"
}

Risposta (201 Created)

{
  "data": {
    "id": 144,
    "nome_cognome": "Maria Bianchi",
    "lingua": "IT",
    "email": "maria.bianchi@email.com",
    "telefono": "+39 340 9876543",
    "paese_id": 380,
    "check_in": "2026-08-01",
    "check_out": "2026-08-08",
    "numero_notti": 7,
    "numero_ospiti": 3,
    "idf_gen": "BK-2026-001",
    "created_at": "2026-07-15T10:00:00Z"
  },
  "status": 201
}

Aggiorna Prenotazione

Aggiorna i dati di una prenotazione esistente. Vengono modificati solo i campi specificati nel body.

PUT /api/v1/prenotazioni/:id

Parametri URL

Parametro Tipo Obbligatorio Descrizione
id number ID della prenotazione da aggiornare

Parametri Body

Tutti i parametri della creazione sono accettati. Solo i campi inclusi nel body verranno aggiornati.

Esempio di Richiesta

PUT /api/v1/prenotazioni/144
{
  "numero_ospiti": 4,
  "check_out": "2026-08-10"
}

Risposta

{
  "data": {
    "id": 144,
    "nome_cognome": "Maria Bianchi",
    "numero_ospiti": 4,
    "check_in": "2026-08-01",
    "check_out": "2026-08-10",
    "numero_notti": 9,
    "updated_at": "2026-07-15T12:00:00Z"
  },
  "status": 200
}

Eliminazione in Blocco

Elimina più prenotazioni contemporaneamente.

POST /api/v1/prenotazioni/delete-bulk

Parametri Body

Parametro Tipo Obbligatorio Descrizione
ids number[] Array di ID delle prenotazioni da eliminare

Esempio di Richiesta

{
  "ids": [140, 141, 143]
}

Risposta

{
  "message": "3 prenotazioni eliminate con successo",
  "deleted": [140, 141, 143],
  "status": 200
}

[!WARNING]
L’eliminazione è permanente e non reversibile. Tutti i dati associati alla prenotazione (ospiti, documenti, lettere) verranno eliminati.


Salva Dati Ospiti

Salva o aggiorna i dati degli ospiti associati a una prenotazione.

POST /api/saveOspiti

Parametri Body

Parametro Tipo Obbligatorio Descrizione
prenotazione_id number ID della prenotazione a cui associare gli ospiti
dati object[] Array di oggetti con i dati di ciascun ospite

Struttura Oggetto Ospite (dati)

Campo Tipo Descrizione
nome string Nome dell’ospite
cognome string Cognome dell’ospite
sesso string Sesso (M o F)
data_nascita string Data di nascita (YYYY-MM-DD)
luogo_nascita string Luogo di nascita
cittadinanza string Codice cittadinanza
tipo_documento string Codice tipo documento
numero_documento string Numero del documento
luogo_rilascio string Luogo di rilascio del documento

Esempio di Richiesta

{
  "prenotazione_id": 142,
  "dati": [
    {
      "nome": "Mario",
      "cognome": "Rossi",
      "sesso": "M",
      "data_nascita": "1985-03-15",
      "luogo_nascita": "Roma",
      "cittadinanza": "100000100",
      "tipo_documento": "PASOR",
      "numero_documento": "YA1234567",
      "luogo_rilascio": "411004"
    },
    {
      "nome": "Laura",
      "cognome": "Rossi",
      "sesso": "F",
      "data_nascita": "1987-09-22",
      "luogo_nascita": "Roma",
      "cittadinanza": "100000100",
      "tipo_documento": "IDELE",
      "numero_documento": "CA12345AB",
      "luogo_rilascio": "411004"
    }
  ]
}

Risposta

{
  "message": "Ospiti salvati con successo",
  "count": 2,
  "status": 200
}