Download OpenAPI specification:
Questo progetto implementa un microservizio Vapor dedicato alla gestione di sessioni di "presa visione" di documenti HTML. Il servizio genera pagine a partire da template Leaf, raccoglie l'accettazione dell'utente finale e ne traccia ogni accesso a fini di audit.
CheckSession, AccessLog) e la logica di dominio per la gestione dello stato della sessione.documents/ e pagine condivise (session.leaf) che appendono il footer di conferma.POST /check-sessions accetta il nome del template, eventuale URL di redirect e un dizionario di variabili (stringa/stringa) da iniettare nella vista. Restituisce l'identificativo della sessione insieme allo stato iniziale pending.GET /check-sessions/{sessionId} renderizza il template scelto e mostra il footer con checkbox e pulsante di conferma. Ogni apertura viene registrata in tabella access_logs con IP, user-agent, header principali e path richiesto.GET /check-sessions/{sessionId}/status restituisce lo stato corrente (pending, accepted, rejected) insieme al timestamp di accettazione, utile per orchestrare frontend o workflow asincroni.POST /check-sessions/{sessionId}/{response} richiede il form accepted=true e supporta due percorsi:response = accept: porta la sessione in stato accepted e, se configurato, reindirizza l'utente (303 See Other); senza redirect restituisce 200 OK.response = reject: registra il rifiuto impostando lo stato su rejected, mantenendo lo stesso comportamento di redirect facoltativo.Gli stati disponibili sono:
pending: la sessione attende l'interazione dell'utente.accepted: il documento è stato confermato e l'utente può essere reindirizzato.rejected: indica che l'utente ha rifiutato il documento tramite endpoint /reject.Resources/Views/documents/<nome>.leaf.#(chiave).Resources/Views/session.leaf incapsula il template dinamico e gestisce il footer, evitando duplicazione di logica nei template di dominio.GET /check-sessions/{sessionId} viene creato un record AccessLog con IP, user-agent, accept-language, referer, metodo HTTP e path.CheckSessionTests verifica creazione, render, accettazione e gestione di template temporanei.swift test.templateName sia non vuoto (max 80 caratteri) e che la checkbox di accettazione sia impostata a true prima di aggiornare lo stato della sessione.Creates a new acknowledgement session bound to a Leaf template and returns its identifier.
| templateName required | string [ 1 .. 80 ] characters Leaf template stored under Resources/Views/documents |
| redirectURL | string <uri> Optional absolute URL used after confirmation |
required | object Key-value pairs injected into the template |
{- "templateName": "string",
- "variables": {
- "title": "Documento di prova",
- "body": "Messaggio dinamico"
}
}{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "templateName": "string",
- "status": "pending",
- "createdAt": "2019-08-24T14:15:22Z",
- "acceptedAt": "2019-08-24T14:15:22Z"
}Returns the current acknowledgement status for the provided session.
| sessionId required | string <uuid> Identifier of the check session |
{- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "status": "pending",
- "acceptedAt": "2019-08-24T14:15:22Z"
}Validates the acceptance checkbox, updates the session status, and optionally redirects the user. Use accept to confirm the acknowledgement or reject to record a refusal.
| sessionId required | string <uuid> Identifier of the check session |
| response required | string Enum: "accept" "reject" Action to execute on the session |
| accepted required | boolean Must be true to process the acknowledgement outcome |