Un webhook permite ca FlexiProject să notifice un sistem extern în clipa în care se întâmplă ceva în organizația dvs. În loc să interogați API-ul întruna pentru a vedea dacă s-a schimbat ceva, sistemul dvs. primește o cerere HTTP cu datele evenimentului imediat după producerea acestuia.

Un webhook leagă un eveniment de o adresă de destinatar. Pentru a trimite două evenimente diferite la aceeași adresă sau același eveniment la două sisteme, creați două webhook-uri.

Webhook-urile se configurează în Setări de sistem > Webhook-uri. Secțiunea este disponibilă administratorilor de sistem (vezi Utilizatori și permisiuni). Pentru a citi datele pe un alt canal, folosiți API-ul.

Evenimente

FlexiProject raportează patru evenimente. Fiecare webhook ascultă exact unul dintre ele, ales din lista Eveniment.

Add webhook window with the Event list expanded and the available events highlighted

Eveniment Când trimite FlexiProject cererea Date specifice evenimentului
Proiect creat A apărut un proiect nou, în orice mod: de la zero, dintr-un șablon, prin clonare, prin importul unui fișier MS Project sau Excel ori cu ajutorul AI. projectId, projectName, createdAt
Proiect șters Un proiect a fost șters. projectId, projectName
Aprobare începută O schimbare de bază a fost trimisă spre aprobare și a început calea ei de aprobare. changeRequestId, changeRequestName, projectId, projectName, date
Aprobare finalizată Calea de aprobare s-a încheiat cu o decizie: aprobare, respingere sau anulare. changeRequestId, changeRequestName, projectId, projectName, decisionDate, status

Fiecare cerere conține și numele evenimentului (event), momentul generării (timestamp), precum și identificatorul (userId) și adresa de e-mail (userEmail) ale utilizatorului a cărui acțiune a declanșat-o. Formatul întregii cereri este descris în Formatul cererii HTTP. Aprobările sunt descrise în Aprobări.

Configurarea webhook-ului

Lista webhook-urilor

Pagina Webhook-uri afișează toate webhook-urile organizației în trei coloane: Eveniment, URL-ul destinatarului și Descriere. Când nu este definit niciunul, apare mesajul Nu există webhook-uri.

Add webhook window with the Event and Receiver URL fields highlighted

Adăugarea unui webhook

  1. Faceți clic pe butonul de adăugare de deasupra listei. Se deschide fereastra Adaugă webhook.
  2. Alegeți valoarea din câmpul Eveniment. Implicit este setat Proiect creat.
  3. Introduceți URL-ul destinatarului — adresa la care FlexiProject trimite cererea. Câmpul este obligatoriu și necesită adresa completă, inclusiv protocolul, de exemplu https://example.com/hooks/flexiproject. O adresă incompletă este respinsă cu un mesaj de eroare de procesare a datelor.
  4. Opțional, introduceți o Descriere — o notă pentru echipa dvs., vizibilă doar în listă.
  5. Faceți clic pe Salvare.

Secretul

Imediat după salvare apare fereastra Secret cu mesajul: Webhook-ul a fost creat. Mai jos se află secretul, care va fi afișat o singură dată. Copiați-l și păstrați-l într-un loc sigur. Butonul Copiază pune valoarea în clipboard (mesajul Copiat în clipboard); salvați-o apoi în sistemul destinatar. Secretul semnează fiecare cerere, astfel încât destinatarul poate confirma că cererea provine de la FlexiProject (vezi Formatul cererii HTTP).

După ce închideți fereastra, valoarea completă nu mai este disponibilă nicăieri în aplicație. Într-un webhook deschis mai târziu, câmpul Secret arată doar primele și ultimele patru caractere, cu asteriscuri la mijloc; câmpul nu poate fi editat.

Editarea unui webhook

Faceți clic pe numele unui eveniment din listă pentru a deschide fereastra Editează webhook-ul. Acolo modificați evenimentul, adresa destinatarului și descrierea, apoi faceți clic pe Salvare. Secretul rămâne neschimbat — editarea nu emite niciodată unul nou. Închiderea ferestrei cu modificări nesalvate afișează întrebarea Vrei să mergi mai departe și să renunți la schimbare?.

Testarea unui webhook

Butonul Testează se află în fereastra de editare a unui webhook salvat. El trimite la adresa configurată o cerere în formatul evenimentului ales, completată cu date de probă (de exemplu, un proiect numit Test Project), și confirmă cu Cererea de test a fost trimisă cu succes. Mesajul confirmă că cererea a fost trimisă, nu că destinatarul a acceptat-o — verificați rezultatul în sistemul destinatar.

Ștergerea unui webhook

Butonul Ștergeți din fereastra webhook-ului cere confirmarea întrebării Sigur doriți să ștergeți webhook-ul?. De atunci evenimentul nu mai este trimis la acea adresă. Ștergerea nu poate fi anulată; reluarea livrării înseamnă un webhook nou și, deci, un secret nou.

Formatul cererii HTTP

FlexiProject trimite o cerere POST cu corp JSON la adresa configurată.

Antete

Antet Conținut
X-FlexiProject-Event Numele evenimentului: ProjectCreated, ProjectDeleted, AcceptanceStarted sau AcceptanceCompleted.
X-FlexiProject-Delivery Identificatorul livrării. Rămâne același la toate reîncercările aceluiași eveniment, deci permite recunoașterea duplicatelor.
X-FlexiProject-Timestamp Momentul în care a fost trimisă cererea.
X-FlexiProject-Signature Semnătura corpului cererii sub forma sha256=<value>.

Verificarea semnăturii

Semnătura este un HMAC-SHA256 al corpului brut al cererii, calculat cu secretul webhook-ului drept cheie și scris în hexazecimal cu litere mici. La recepție, calculați aceeași valoare din corpul primit și comparați-o cu partea antetului X-FlexiProject-Signature de după sha256=. Dacă valorile diferă, respingeți cererea — nu provine din organizația dvs. din FlexiProject.

Exemplu de corp

{
  "projectId": "6712f0a1c3d4e5f601234567",
  "projectName": "Warehouse modernization",
  "createdAt": "2026-09-21T08:14:02Z",
  "userId": "a3f1c7de-1b20-4f9e-9a55-0c2d8e7b41aa",
  "userEmail": "anna.kowalska@example.com",
  "event": "ProjectCreated",
  "timestamp": "2026-09-21T08:14:02Z"
}

Răspunsul și reîncercările

Răspundeți cu un cod de succes (2xx) imediat ce acceptați cererea. Orice alt răspuns sau lipsa răspunsului se consideră livrare eșuată.

O livrare eșuată este reluată automat la intervale crescânde: după 1, 2, 4, 8, 16, 32, 64, 128, 256 și 512 de minute. Încercările se întind pe aproximativ șaptesprezece ore, deci un destinatar indisponibil o vreme nu pierde evenimentul. Fiecare încercare repetă aceeași valoare X-FlexiProject-Delivery, așa că pregătiți prelucrarea astfel încât să poată primi același eveniment de mai multe ori.