Sari la conținut

API Reference

Acest conținut nu este încă disponibil în limba selectată.

Bază: https://gdocs.gstack.esempla.systems. Autentificare: Authorization: Bearer <jwt> (din POST /api/authenticate), exceptând rutele publice. Erorile admin folosesc problem+json (JHipster); /api/v1 folosește {"message": …}.

Legendă acces: pub = fără auth · auth = orice autentificat · admin = ROLE_ADMIN (service + org admin) · machine = ROLE_MACHINE.

MetodăCaleAccesDescriere
POST/api/authenticatepublogin user/parolă → { id_token }
GET/api/authenticateauthlogin curent (string)
POST/api/registerpubînregistrare
GET/api/activatepubactivare cont
GET/api/accountauthcontul curent
POST/api/accountauthactualizare profil
POST/api/account/change-passwordauthschimbare parolă
POST/api/account/reset-password/init | /finishpubresetare parolă
GET/api/acl/meauthcontextul de acces (L1/L2/L3, isAdmin, hasSecret)
MetodăCaleAccesDescriere
GET/api/documentsauthlistă (filtre + paginare + sort), scopat ACL/tenant
GET/api/documents/countauthnumăr
GET/api/documents/{id}authmetadate (checkRead → 404 dacă nu are drept)
POST/api/documentsauthcreare (JSON metadate)
PUT/api/documents/{id}authupdate complet
PATCH/api/documents/{id}authupdate parțial (application/merge-patch+json)
DELETE/api/documents/{id}authsoft-delete → STERS
POST/api/documents/uploadauthupload multipart (file, denumire, bucketId, secret, parola, proprietarId, emitentId)
GET/api/documents/{id}/downloadauthdownload binar (ACL-enforced)
POST/api/documents/{id}/arhiveaza | /restore | /purgeauthtranziții ciclu de viață

Un document păstrează un singur conținut curent (Document.storageUri), dar istoricul versiunilor e păstrat: fiecare „încărcare versiune nouă” înlocuiește conținutul curent și adaugă o versiune, fără a suprascrie octeții vechi (cheie versionată uploads/<cod>/v<n>). Prima interogare a versiunilor face backfill automat al versiunii v1 din conținutul curent.

MetodăCaleAccesDescriere
GET/api/documents/{id}/versionsauth (read)istoricul versiunilor (nou → vechi); backfill v1 la nevoie
POST/api/documents/{id}/versionsauth (writer/owner)încarcă o versiune nouă — multipart file (+ comentariu?); devine versiunea curentă
GET/api/documents/{id}/versions/{numar}/downloadauth (read)descarcă o versiune anume (numar = 1, 2, …); verifică parola dacă documentul e protejat
POST/api/documents/{id}/versions/{numar}/restoreauth (writer/owner)restaurează versiunea numar → creează o versiune nouă (curentă) cu conținutul celei alese

Răspuns versiune (VersiuneView): { id, numarVersiune, dimensiune, hashSha256, extensie, format, contentType, comentariu, creatDe, creatLa, curenta }.

Note:

  • Restaurarea e forward-only — nu șterge nimic: readuce conținutul unei versiuni vechi ca versiune nouă, deci istoricul (și auditul) rămâne intact. Fiecare încărcare/restaurare scrie un EvenimentDocument (MODIFICAT / RESTAURAT).
  • Cifrarea la repaus a fiecărei versiuni oglindește tipSecuritate al documentului (CRIPTAT → AES; PAROLA → parola cerută și la download-ul unei versiuni).
  • download de versiune trimite Content-Disposition: attachment cu numele denumire.ext (v<numar>).
Terminal window
# token
TOKEN=$(curl -s -X POST $BASE/api/authenticate -H 'Content-Type: application/json' \
-d '{"username":"admin","password":"admin"}' | jq -r .id_token)
# 1) încarcă o versiune nouă a documentului 42
curl -X POST "$BASE/api/documents/42/versions" -H "Authorization: Bearer $TOKEN" \
-F "file=@raport-v2.pdf;type=application/pdf" -F "comentariu=corectat anexa 2"
# 2) listează versiunile
curl -s "$BASE/api/documents/42/versions" -H "Authorization: Bearer $TOKEN" | jq .
# 3) descarcă versiunea 1 (conținutul original)
curl -L "$BASE/api/documents/42/versions/1/download" -H "Authorization: Bearer $TOKEN" -o raport-v1.pdf
# 4) restaurează versiunea 1 (devine versiunea curentă, ex. v3)
curl -X POST "$BASE/api/documents/42/versions/1/restore" -H "Authorization: Bearer $TOKEN"

În UI (Documentele mele → deschide un document → butonul 🕘 Versiuni): listă cu nr./mărime/autor/dată/comentariu și badge „curentă”, plus Încarcă versiune nouă, ⬇ Descarcă și ⟲ Restaurează per versiune.

Un utilizator își leagă contul Google (Drive/Docs) sau GitLab (OAuth2 authorization-code) și importă documente specifice. Fiecare element importat e fie Copie (octeți copiați în gdocs → Document, re-sincronizabil ca versiune) fie Legătură (referință live — conținutul e adus din furnizor la cerere, fără copie).

MetodăCaleAccesDescriere
GET/api/conexiuniauthconexiunile utilizatorului + status
GET/api/conexiuni/{furnizor}/authorizeauth→ { authorizationUrl } (furnizor = google|gitlab); se deschide în popup
GET/api/conexiuni/{furnizor}/callback?code&statepubcallback OAuth (identitate din state semnat HS512); închide popup-ul
DELETE/api/conexiuni/{furnizor}authdeconectează (șterge token-urile)
GET/api/conexiuni/{furnizor}/fisiere?kind=&path=&ref=&q=authnavighează fișierele remote (GitLab kind = repo|wiki|snippet)
POST/api/documents/importauthimport (multi-select + mod per element)
POST/api/documents/{id}/resyncauthre-sincronizează un document COPIE → versiune nouă dacă sursa s-a schimbat

Body import: { "furnizor": "GOOGLE|GITLAB", "items": [ { "ref": "...", "mod": "COPIE|LEGATURA", "formatExport": "pdf|office|both", "denumire": "...", "urlWeb": "..." } ], "bucketId": null, "secret": false }.

Note:

  • Fișierele native Google (Docs/Sheets/Slides) se exportă (formatExport): pdf, office (docx/xlsx/pptx) sau both (PDF document + Office ca versiune).
  • Documentele SECRET nu se importă pe acest canal; o Legătură se descarcă live prin GET /api/documents/{id}/download (409 dacă conexiunea nu mai e validă) și se deschide în furnizor prin urlWeb.
  • Configurare: gdocs.integrations.{google,gitlab} (client-id/secret din env) + aplicații OAuth cu redirect …/api/conexiuni/{furnizor}/callback.
MetodăCaleAccesDescriere
POST/api/documents/{id}/partajeazaauth (writer/owner)acordă acces: { beneficiarClientId? , beneficiarOperatorId? , drept, dataExpirare? }
POST/api/documents/cerereauthcere acces după cod: { cod, drept, motivare }
POST/api/cereri/{id}/aproba | /respingeadminsoluționează o cerere (aprobare → grant)
MetodăCaleAccesDescriere
POST/api/documents/{id}/semneazaauth (writer)semnează: { semnatar }
POST/api/semnaturi/{id}/verificaauthreverifică (VALIDA/INVALIDA)
GET/api/documents/{id}/semnaturiauthsemnăturile documentului
MetodăCaleAccesDescriere
GET/api/search/documente?q=&size=authfull-text + facete pe etichete; re-filtrat prin ACL
POST/api/admin/search/reindexadminreindexare
MetodăCaleAccesDescriere
GET/api/tenant/meauthtier + organizatieId + bucket-uri
GET/api/tenant/bucketsauthbucket-urile vizibile (selector upload)
GET/api/admin/organizatiiadmin (service)listă organizații
POST/api/admin/organizatiiadmin (service)creare: { cod, denumire, idno }
PUT/api/admin/organizatii/{id}admin (service)editare: { denumire, idno, statut }
PUT/api/admin/organizatii/{id}/statutadmin (service){ statut }
GET/api/admin/bucketsadminlistă bucket-uri (scopat)
POST/api/admin/bucketsadmincreare: { organizatieId, cod, denumire, provider?, endpoint?, regiune?, accessKey?, secret? }
PUT/api/admin/buckets/{id}admineditare / mutare între organizații / conexiune S3
PUT/api/admin/buckets/{id}/activadmin{ activ }
GET/api/admin/bucket-acces?bucketId=adminmembrii unui bucket
POST/api/admin/bucket-accesadminacordă: { bucketId, appUserId, rol } (ADMIN/OPERATOR)
DELETE/api/admin/bucket-acces/{id}adminrevocă
GET/api/admin/tenant-usersadminutilizatori + organizația lor
PUT/api/admin/tenant-users/{id}/organizatieadminasignează: { organizatieId } (null = dezasignează)
MetodăCaleAccesDescriere
GET/POST/PUT/PATCH/DELETE/api/templates[...]authCRUD standard
GET/api/templates/{id}/exportauthexport JSON
POST/api/templates/importauthimport (multipart)
POST/api/templates/renderauthpreview {{var}} → text
POST/api/templates/{id}/genereazaauthgenerează document real (PDF/DOCX)
POST/api/templates/{id}/descarcaauthdescarcă rezultatul generat
MetodăCaleAccesDescriere
POST/api/transcriereauthtranscrie un document: { documentId, tip }
POST/api/transcriere/uploadauthtranscrie un fișier (multipart)
GET/api/transcriere/{id}/text | /downloadauthtext / fișier rezultat
POST/api/transcriere/{id}/salveazaauthsalvează rezultatul ca document nou
MetodăCaleDescriere
GET/api/public/documents?q=&format=&size=căutare L1 (doar PUBLIC + ACTIV)
GET/api/public/documents/{id}metadate (404 dacă nu e public)
GET/api/public/documents/{id}/downloaddownload L1
MetodăCaleAccesDescriere
POST/api/v1/tokenpubclient-credentials → { access_token, scope, emitent, expires_in }
GET/api/v1/documentsmachine (documente.read)listă (PUBLIC ∪ PERSONAL ale emitentului; L3 niciodată)
GET/api/v1/documents/{cod}machinemetadate
GET/api/v1/documents/{cod}/continutmachinedownload
POST/api/v1/documentsmachine (documente.write)ingest (multipart)
GET/api/v1/documents/{cod}/versiunimachine (documente.read)istoricul versiunilor (backfill v1 la nevoie; L3 niciodată)
POST/api/v1/documents/{cod}/versiunimachine (documente.write)încarcă o versiune nouă (multipart file + comentariu?)
GET/api/v1/documents/{cod}/versiuni/{numar}/continutmachine (documente.read)descarcă o versiune anume (numar = 1, 2, …)
POST/api/v1/documents/{cod}/versiuni/{numar}/restauraremachine (documente.write)restaurează versiunea numar (forward-only)
GET/api/v1/templates | /{cod}machinetemplaturi publicate
POST/api/v1/templates/{cod}/rendermachinerender

Versionarea pe canalul mașină e adresată după cod (ca restul /api/v1), delimitată de scope-uri (documente.read/documente.write) și emitentul din token; documentele SECRET nu sunt niciodată expuse aici. Răspuns versiune: { numarVersiune, dimensiune, hashSha256, extensie, format, contentType, comentariu, creatDe, creatLa, curenta } (creatDe = machine:<clientId>).

Terminal window
MT=$(curl -s -X POST $BASE/api/v1/token -d 'grant_type=client_credentials&client_id=...&client_secret=...' | jq -r .access_token)
# încarcă o versiune nouă a documentului DOC-2026-000042
curl -X POST "$BASE/api/v1/documents/DOC-2026-000042/versiuni" -H "Authorization: Bearer $MT" \
-F "file=@raport-v2.pdf;type=application/pdf" -F "comentariu=actualizare automată"
# listează + descarcă versiunea 1
curl -s "$BASE/api/v1/documents/DOC-2026-000042/versiuni" -H "Authorization: Bearer $MT" | jq .
curl -L "$BASE/api/v1/documents/DOC-2026-000042/versiuni/1/continut" -H "Authorization: Bearer $MT" -o v1.pdf
MetodăCaleAccesDescriere
GET/POST/PUT/DELETE/api/admin/users[...]admingestionare jhi_user
GET/api/admin/machine-clientsadminclienți v1 (fără secrete)
POST/api/admin/maintenance/runadminrulează arhivarea/purjarea

Fiecare are: GET (listă+filtre+paginare), GET /count, GET /{id}, POST , PUT /{id}, PATCH /{id}, DELETE /{id}.

/api/clients · /api/emitents · /api/rols · /api/app-users · /api/cerere-acces · /api/partajare-documents · /api/eveniment-documents (append-only) · /api/conversies · /api/semnatura-documents · /api/authorities

GET /management/health · GET /management/info · GET /management/prometheus (pub); restul /management/** = admin.