/api/v1/auth/loginAutentica un utente e restituisce token, profilo utente e contesto tenant.
Accesso
Pubblico
Body
emailpasswordsessionIdtenantId opzionale
SIMPLYFAD API
Esempio login
POST /api/v1/auth/login
Content-Type: application/json
{
"email": "admin@simplyfad.local",
"password": "simplyfad123",
"sessionId": "web-uuid-session",
"tenantId": "11111111-1111-1111-1111-111111111111"
}Response tipica
{
"accessToken": "simplyfad-dev-token:tenant:user:session",
"user": {
"email": "admin@simplyfad.local",
"firstName": "Admin",
"lastName": "Tenant",
"role": "tenant_admin"
},
"tenantContext": {
"tenantId": "11111111-1111-1111-1111-111111111111",
"companyId": "33333333-3333-3333-3333-333333333333",
"role": "tenant_admin"
}
}Authorization: Bearer <token>x-sync-api-key: <key>Gli endpoint tecnici di handoff e sync non richiedono sessione utente, ma sono protetti da chiave applicativa. Tutti gli altri endpoint protetti lavorano con token Bearer e applicano tenant scope e controllo ruoli lato backend.
01 · Auth
Login, handoff applicativo e heartbeat di sessione per learner, admin e integrazioni controllate.
/api/v1/auth/loginAutentica un utente e restituisce token, profilo utente e contesto tenant.
Accesso
Pubblico
Body
emailpasswordsessionIdtenantId opzionale/api/v1/auth/handoff/issueGenera un token temporaneo di handoff per aprire una sessione learner o admin senza reinserire credenziali.
Accesso
Pubblico con x-sync-api-key
Headers
x-sync-api-keyBody
emailtenantSlug opzionaleredirectPath opzionale/api/v1/auth/handoff/consumeConsuma il token di handoff e crea la sessione applicativa finale.
Accesso
Pubblico
Body
tokensessionId/api/v1/auth/meRestituisce utente autenticato e tenantScope attivo della richiesta.
Accesso
Bearer token
/api/v1/auth/session/heartbeatAggiorna tracking di sessione e presenza applicativa dell’utente.
Accesso
Bearer token
02 · Tenant
Gestione multi-tenant del core, più endpoint pubblici minimi per risoluzione tenant.
/api/v1/tenantsElenca i tenant visibili all’utente autenticato.
Accesso
super_admin, tenant_admin
/api/v1/tenants/currentRestituisce il tenant attivo della sessione.
Accesso
Bearer token
/api/v1/tenants/public/:slugRisoluzione pubblica di un tenant tramite slug.
Accesso
Pubblico
/api/v1/tenantsCrea un nuovo tenant operativo.
Accesso
super_admin
Body
nameslug opzionalestatus opzionale/api/v1/tenants/:tenantIdAggiorna tenant esistente.
Accesso
super_admin
/api/v1/tenants/:tenantIdElimina il tenant selezionato.
Accesso
super_admin
/api/v1/tenants/current/companiesElenco aziende del tenant attivo.
Accesso
super_admin, tenant_admin
/api/v1/tenants/current/companiesCrea una nuova azienda nel tenant attivo.
Accesso
super_admin, tenant_admin
Body
namevatNumber opzionale/api/v1/tenants/current/sitesElenco sedi del tenant attivo.
Accesso
super_admin, tenant_admin
/api/v1/tenants/current/sitesCrea una nuova sede.
Accesso
super_admin, tenant_admin
Body
companyIdnamecode opzionalecity opzionale/api/v1/tenants/current/departmentsElenco reparti del tenant attivo.
Accesso
super_admin, tenant_admin
/api/v1/tenants/current/departmentsCrea un nuovo reparto.
Accesso
super_admin, tenant_admin
Body
companyIdsiteId opzionalenamecode opzionale03 · Users
Anagrafica utente completa, con dati personali, gerarchia aziendale e ruolo applicativo.
/api/v1/usersElenca gli utenti del tenant corrente.
Accesso
super_admin, tenant_admin
/api/v1/users/:idRecupera il dettaglio di un utente.
Accesso
Bearer token
/api/v1/usersCrea un nuovo utente.
Accesso
super_admin, tenant_admin
Body
tenantIdcompanyIdsiteId opzionaledepartmentId opzionaletitlefirstNamelastNamebirthProvincebirthPlacesexbirthDatetaxCodeemailphone opzionalemobile opzionalenationalityresidenceaddresscityzipCodeprovincepasswordroleauditableCourseIds opzionale/api/v1/users/:idAggiorna anagrafica, ruolo e appartenenze dell’utente.
Accesso
super_admin, tenant_admin
/api/v1/users/:idRimuove l’utente dal tenant corrente.
Accesso
super_admin, tenant_admin
04 · Courses
Authoring completo del catalogo formativo interno: corso, moduli, lezioni e propedeuticità.
/api/v1/coursesElenca i corsi visibili nel tenant.
Accesso
super_admin, tenant_admin, auditor
/api/v1/courses/:idDettaglio completo del corso selezionato.
Accesso
super_admin, tenant_admin, auditor
/api/v1/coursesCrea un nuovo corso.
Accesso
super_admin, tenant_admin
Body
titledescription opzionaleimageUrl opzionalecertificateBackgroundUrl opzionalecertificateValidityYears opzionalecategory opzionaledurationMinutes opzionalepriceCents opzionalecurrency opzionaleisPurchasable opzionaledeliveryCourseId opzionalestatus opzionaleprerequisiteCourseId opzionale/api/v1/courses/:idAggiorna dati base del corso.
Accesso
super_admin, tenant_admin
/api/v1/courses/:id/modulesElenca i moduli del corso.
Accesso
super_admin, tenant_admin
/api/v1/courses/:id/modulesCrea un modulo del corso.
Accesso
super_admin, tenant_admin
Body
titlesortOrderquizTitle opzionaleprerequisiteModuleId opzionale/api/v1/courses/:id/modules/:moduleIdAggiorna un modulo esistente.
Accesso
super_admin, tenant_admin
/api/v1/courses/:id/modules/:moduleId/lessonsCrea una lezione nel modulo.
Accesso
super_admin, tenant_admin
Body
titlesortOrdercontentTypecontentUrl opzionaleestimatedMinutes opzionaleprerequisiteLessonId opzionale/api/v1/courses/:id/modules/:moduleId/lessons/:lessonIdAggiorna una lezione esistente.
Accesso
super_admin, tenant_admin
/api/v1/courses/:id/modules/:moduleId/lessons/:lessonIdElimina una lezione.
Accesso
super_admin, tenant_admin
05 · Assignments
Collega i corsi a singoli utenti o target organizzativi: tenant, sede o reparto.
/api/v1/assignmentsElenca le assegnazioni del tenant.
Accesso
super_admin, tenant_admin
/api/v1/assignmentsCrea una nuova assegnazione.
Accesso
super_admin, tenant_admin
Body
courseIdtargetType = user | department | site | tenanttargetUserId opzionaletargetDepartmentId opzionaletargetSiteId opzionaledueAt opzionale/api/v1/assignments/:idAggiorna scadenza o target dell’assegnazione.
Accesso
super_admin, tenant_admin
/api/v1/assignments/:idElimina l’assegnazione selezionata.
Accesso
super_admin, tenant_admin
06 · Enrollments
Area learner, avanzamento, tracking sessioni, attestato e sincronizzazione controllata via email.
/api/v1/enrollmentsElenco enrollment filtrabile per corso lato admin.
Accesso
super_admin, tenant_admin, auditor
Query
courseId opzionale/api/v1/enrollments/meRestituisce gli enrollment del learner autenticato.
Accesso
Bearer token
/api/v1/enrollments/sync/by-emailEndpoint tecnico di lookup enrollment per integrazioni esterne controllate.
Accesso
Pubblico con x-sync-api-key
Headers
x-sync-api-keyQuery
email opzionaletenantSlug opzionale/api/v1/enrollments/:idDettaglio enrollment singolo.
Accesso
Bearer token
/api/v1/enrollments/:id/trackingTracking completo di accessi, permanenza e progressione.
Accesso
Bearer token
/api/v1/enrollments/:id/certificateRecupera attestato associato all’enrollment se disponibile.
Accesso
Bearer token
/api/v1/enrollments/:id/startSegna ufficialmente l’avvio del corso learner.
Accesso
Bearer token
/api/v1/enrollments/:id/lessons/:lessonIdAggiorna completamento della singola lezione.
Accesso
Bearer token
Body
completed boolean07 · Quiz
Gestione dei quiz lato admin e flusso tentativi lato learner per modulo, finale corso e valutazione.
/api/v1/courses/:courseId/quizzesCrea un quiz sul corso.
Accesso
super_admin, tenant_admin
Body
titlekind = module | final | evaluationmoduleId opzionalepassingPercentage opzionalequestionCount opzionalemaxAttempts opzionaletimeLimitMinutes opzionalegenerateDefaultQuestions opzionale/api/v1/courses/:courseId/quizzes/:quizIdAggiorna quiz esistente.
Accesso
super_admin, tenant_admin
/api/v1/courses/:courseId/quizzes/:quizIdElimina il quiz selezionato.
Accesso
super_admin, tenant_admin
/api/v1/courses/:courseId/quizzes/:quizId/reset-attemptsResetta i tentativi del quiz.
Accesso
super_admin, tenant_admin
/api/v1/courses/:courseId/quizzes/:quizId/questionsAggiunge una domanda al quiz.
Accesso
super_admin, tenant_admin
Body
promptsortOrderquestionType = true_false | single_choice | rating_scaleoptions opzionalecorrectAnswer opzionale/api/v1/courses/:courseId/quizzes/:quizId/questions/:questionIdAggiorna una domanda esistente.
Accesso
super_admin, tenant_admin
/api/v1/courses/:courseId/quizzes/:quizId/questions/:questionIdElimina una domanda dal quiz.
Accesso
super_admin, tenant_admin
/api/v1/enrollments/:enrollmentId/quizzesElenca i quiz disponibili per l’enrollment learner.
Accesso
Bearer token
/api/v1/enrollments/:enrollmentId/quizzes/:quizId/attempts/startAvvia un nuovo tentativo quiz.
Accesso
Bearer token
/api/v1/enrollments/:enrollmentId/quizzes/:quizId/attempts/:attemptId/submitInvia le risposte del tentativo quiz.
Accesso
Bearer token
Body
answers[{ questionId, value }]Esempio authoring
POST /api/v1/courses
Authorization: Bearer <token>
Content-Type: application/json
{
"title": "Sicurezza base in magazzino",
"description": "Corso introduttivo per operatori warehouse",
"category": "Compliance",
"status": "published",
"durationMinutes": 180,
"prerequisiteCourseId": null
}Convenzioni consigliate
Prossimo step
Se vuoi, il passo successivo è generare anche una versione OpenAPI/Swagger machine-readable partendo da questi stessi endpoint del backend.