API Alloggiati Web

Endpoint per l’integrazione con il sistema Alloggiati Web della Polizia di Stato (Questura). Permettono di validare, inviare e verificare le schedine degli ospiti, nonché scaricare le ricevute di avvenuta comunicazione.

[!IMPORTANT]
Questi endpoint comunicano con i servizi SOAP della Questura. Assicurati che le credenziali Alloggiati Web siano configurate correttamente prima di utilizzarli.


Test Connessione SOAP

Verifica la connessione al servizio SOAP della Questura. Utile per diagnosticare problemi di configurazione.

GET /api/alloggiati/check

Risposta (Successo)

{
  "connected": true,
  "message": "Connessione al servizio Alloggiati Web riuscita",
  "endpoint": "https://alloggiatiweb.poliziadistato.it/service/..."
}

Risposta (Errore)

{
  "connected": false,
  "error": "Impossibile connettersi al servizio SOAP. Verificare le credenziali.",
  "status": 503
}

Valida Schedine

Valida i dati degli ospiti prima dell’invio alla Questura. Restituisce eventuali errori o avvisi sui record.

POST /api/alloggiati/valida

Parametri Body

Parametro Tipo Obbligatorio Descrizione
ospiti object[] Array di oggetti ospite con tutti i campi richiesti
prenotazione object Oggetto prenotazione con dati del soggiorno

Esempio di Richiesta

{
  "ospiti": [
    {
      "tipo_alloggiato": "16",
      "cognome": "Rossi",
      "nome": "Mario",
      "sesso": "M",
      "data_nascita": "1985-03-15",
      "comune_nascita": "411004",
      "provincia_nascita": "RM",
      "stato_nascita": "100000100",
      "cittadinanza": "100000100",
      "tipo_documento": "PASOR",
      "numero_documento": "YA1234567",
      "luogo_rilascio": "411004"
    }
  ],
  "prenotazione": {
    "check_in": "2026-07-20",
    "numero_notti": 5
  }
}

Risposta

{
  "valid": false,
  "errors": [
    {
      "ospite": 0,
      "campo": "provincia_nascita",
      "messaggio": "La provincia non è richiesta per cittadini stranieri"
    }
  ],
  "warnings": [
    {
      "ospite": 0,
      "campo": "numero_documento",
      "messaggio": "Formato documento potrebbe non essere valido per il tipo selezionato"
    }
  ]
}

Campi della Risposta

Campo Tipo Descrizione
valid boolean true se tutti i record sono validi
errors object[] Errori bloccanti che impediscono l’invio
warnings object[] Avvisi non bloccanti

Invio Schedine alla Questura

Invia le schedine degli ospiti al servizio Alloggiati Web della Questura tramite protocollo SOAP.

POST /api/alloggiati/invio

Parametri Body

Parametro Tipo Obbligatorio Descrizione
ospiti object[] Array di oggetti ospite (stessa struttura della validazione)
prenotazione object Oggetto prenotazione con dati del soggiorno
soggiorno object Dati aggiuntivi del soggiorno (alternativo a prenotazione)
testMode boolean Se true, utilizza il metodo SOAP Test invece di Send

[!CAUTION]
Modalità Test vs Produzione

  • Con testMode: true, viene invocato il metodo SOAP Test che valida i dati senza registrarli ufficialmente. Utilizzalo sempre durante lo sviluppo e i test.
  • Con testMode: false (o omesso), viene invocato il metodo SOAP Send che registra ufficialmente le schedine presso la Questura. Questa operazione non è reversibile.

Si raccomanda di validare sempre i dati con l’endpoint /api/alloggiati/valida prima di procedere con l’invio in produzione.

Esempio di Richiesta

{
  "ospiti": [
    {
      "tipo_alloggiato": "16",
      "cognome": "Rossi",
      "nome": "Mario",
      "sesso": "M",
      "data_nascita": "1985-03-15",
      "comune_nascita": "411004",
      "provincia_nascita": "",
      "stato_nascita": "100000100",
      "cittadinanza": "100000100",
      "tipo_documento": "PASOR",
      "numero_documento": "YA1234567",
      "luogo_rilascio": "411004"
    }
  ],
  "prenotazione": {
    "check_in": "2026-07-20",
    "numero_notti": 5
  },
  "testMode": true
}

Risposta (Successo)

{
  "success": true,
  "message": "Invio completato con successo (modalità test)",
  "ricevuta": "2026-07-20-001",
  "dettagli": {
    "schedine_inviate": 1,
    "metodo": "Test"
  }
}

Risposta (Errore)

{
  "success": false,
  "error": "Errore durante l'invio alla Questura",
  "dettagli": {
    "codice_errore": "ERR_SOAP_003",
    "messaggio_soap": "Record non valido alla posizione 1"
  },
  "status": 422
}

Scarica Ricevute

Scarica le ricevute di avvenuta comunicazione dalla Questura per una data specifica. Restituisce un file PDF.

GET /api/alloggiati/ricevute

Parametri Query

Parametro Tipo Obbligatorio Descrizione
data string Data di riferimento (YYYY-MM-DD)

Esempio di Richiesta

GET /api/alloggiati/ricevute?data=2026-07-20

Risposta

La risposta è un file PDF con Content-Type: application/pdf.

Content-Type: application/pdf
Content-Disposition: attachment; filename="ricevuta_2026-07-20.pdf"

[!NOTE]
Se non sono presenti ricevute per la data indicata, l’endpoint restituisce un errore 404.


Verifica Incrociata Ricevute

Esegue un controllo incrociato tra le prenotazioni registrate nel sistema e le ricevute effettivamente presenti sul portale della Questura, per individuare eventuali invii mancanti.

GET /api/alloggiati/verifica-ricevute

Risposta

{
  "totale_prenotazioni": 45,
  "totale_ricevute": 42,
  "mancanti": [
    {
      "prenotazione_id": 138,
      "nome_cognome": "Hans Müller",
      "check_in": "2026-07-15"
    },
    {
      "prenotazione_id": 140,
      "nome_cognome": "Sophie Dupont",
      "check_in": "2026-07-16"
    },
    {
      "prenotazione_id": 141,
      "nome_cognome": "James Wilson",
      "check_in": "2026-07-17"
    }
  ]
}

Codici di Riferimento

Restituisce le tabelle di codici di riferimento necessarie per la compilazione delle schedine: tipi di documento, paesi, comuni e province.

GET /api/alloggiati/codici

Risposta

{
  "tipi_documento": [
    { "codice": "PASOR", "descrizione": "Passaporto Ordinario" },
    { "codice": "IDELE", "descrizione": "Carta d'Identità Elettronica" },
    { "codice": "IDENT", "descrizione": "Carta d'Identità" },
    { "codice": "PATEN", "descrizione": "Patente di Guida" }
  ],
  "paesi": [
    { "codice": "100000100", "descrizione": "Italia" },
    { "codice": "100000200", "descrizione": "Germania" }
  ],
  "comuni": [
    { "codice": "411004", "descrizione": "Roma" },
    { "codice": "415027", "descrizione": "Milano" }
  ]
}

Formato Record Schedina

Ogni schedina alloggiato viene codificata come una stringa di 168 caratteri con campi a lunghezza fissa, secondo le specifiche del sistema Alloggiati Web della Questura.

Struttura del Record

Posizione Lunghezza Campo Descrizione
1–2 2 tipo_alloggiato Tipo alloggiato (es. 16 = ospite singolo, 17 = capofamiglia, 18 = capogruppo, 19 = familiare, 20 = membro gruppo)
3–12 10 data_arrivo Data di arrivo (GG/MM/AAAA)
13–14 2 permanenza Numero di notti (padded con zeri)
15–64 50 cognome Cognome (padded con spazi)
65–94 30 nome Nome (padded con spazi)
95 1 sesso Sesso (1 = M, 2 = F)
96–105 10 data_nascita Data di nascita (GG/MM/AAAA)
106–114 9 comune_nascita Codice comune di nascita
115–116 2 provincia Sigla provincia (solo per italiani)
117–125 9 stato_nascita Codice stato di nascita
126–134 9 cittadinanza Codice cittadinanza
135–139 5 tipo_doc Codice tipo documento
140–159 20 num_doc Numero documento (padded con spazi)
160–168 9 luogo_rilascio Codice luogo rilascio documento

Esempio di Record

1620/07/202605Rossi                                             Mario                         119850315  411004  RM100000100100000100PASORYA1234567           411004   

[!TIP]
Per i cittadini stranieri, il campo provincia (posizioni 115–116) deve essere lasciato vuoto (spazi). Il campo comune_nascita per gli stranieri indica lo stato di nascita.