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/validaprima 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 errore404.
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 campoprovincia(posizioni 115–116) deve essere lasciato vuoto (spazi). Il campocomune_nascitaper gli stranieri indica lo stato di nascita.