I workflow automatizzano azioni al verificarsi di un evento o su base
pianificata. Le esecuzioni sono gestite da una coda affidabile con retry e
dead-letter; questi endpoint ne coprono la configurazione e le operazioni.
Solo amministratori
Tutti gli endpoint dei workflow richiedono il ruolo amministratore
(requireAdminRole). Un utente autenticato ma non admin riceve
403. Vedi le convenzioni per envelope ed errori;
ogni richiesta richiede l'header Authorization: Bearer <accessToken>.
01L'oggetto Workflow
Un workflow è composto da tre parti: un trigger (evento
on_create / on_update su un modulo,
oppure time_based pianificato), un insieme di
condizioni (le stesse dei filtri, valutate in AND/OR) e una lista di
azioni eseguite in ordine. La struttura completa si legge da
GET /:id. Le date sono stringhe ISO 8601 in UTC.
Campo mancante/fuori misura, trigger o modulo non valido, nessuna azione, o actionType non registrato.
403
FORBIDDEN
L'utente non è amministratore.
05Modificare ed eliminare
PATCH/api/workflows/:idadmin richiesto
Modifica parziale: invia solo i campi da cambiare (gli stessi del body di
creazione, tutti opzionali; almeno uno è richiesto). Attivare/disattivare un workflow è un
PATCH con { "isActive": false }. Se invii
conditions o actions, l'array
sostituisce quello esistente.
Risponde 200 con { data: { item } },
422 in validazione, 403 per i non-admin.
DELETE/api/workflows/:idadmin richiesto
Elimina il workflow. Risponde 200 con { success: true, data: { id } }.
06Esecuzione manuale
POST/api/workflows/:id/run-nowadmin richiesto
Accoda subito il workflow per un record specifico, ignorando il trigger. Le azioni vengono
eseguite dal worker; la risposta riporta l'id del job accodato.
Parametri path
Parametro
Tipo
Descrizione
id
integer
Id del workflow.
Parametri body
Campo
Tipo
Note
recordId
integer
richiesto
Id del record del modulo su cui eseguire il workflow.
Stato di coda, scheduler e statistiche di esecuzione.
GET
/api/workflows/execution-logs
Log delle esecuzioni (successi, retry, dead-letter).
GET
/api/workflows/diagnostics
Diagnostica dei fallimenti ricorrenti.
execution-logs accetta i parametri query limit,
offset, workflowId e status.
Tutti e tre gli endpoint rispondono 200 con l'envelope standard e
403 ai non-admin.
08Dead-letter
Un job che fallisce oltre i tentativi previsti finisce in dead-letter: non
viene perso, resta lì per l'ispezione e il rilancio manuale.
Metodo
Path
Cosa fa
GET
/api/workflows/dead-letter-jobs
Elenco dei job falliti definitivamente (con stats della coda).
POST
/api/workflows/dead-letter-jobs/:jobId/retry
Rilancia un job.
POST
/api/workflows/dead-letter-jobs/purge
Svuota la coda dead-letter (opzionale workflowId per limitare).
Nota · Riprendi vs Da capo
Il retry di un job può riprendere saltando le azioni già completate
(riprendi, default) oppure ripartire dall'inizio azzerando il registro delle azioni eseguite
({ "fromScratch": true }). La scelta evita di duplicare effetti
collaterali come email o task già inviati.