Sari la conținut

Dezvoltatori

Datele cadrului, direct în sistemele tale

Modelele publicate, specificația și indexul de căutare sunt disponibile printr-un API public, doar pentru citire. Nu ai nevoie de cont sau de cheie: trimiți o cerere HTTP și primești JSON.

Adresa de bază

https://www.publicframework.com
Autentificare
Nu este necesară
Format
JSON, UTF-8
CORS
Permis de pe orice domeniu
Actualizare
Cel mult 5 minute

Primii pași

Pornește de la lista modelelor publicate. Fiecare intrare conține adresa de export, de unde descarci modelul complet: elemente, relații și viewuri.

  1. 1Cere lista modelelor de la /api/repository.
  2. 2Alege un model după slug și urmează links.export.
  3. 3Citește elementele și relațiile după formatul de schimb documentat.

Endpointuri

Lista modelelor publicate

Metodă: GET/api/repositoryDeschide în browser

Toate modelele publicate în repository, de la cel mai recent. Include numărul de elemente, relații și viewuri, precum și adresele de export și de pe site.

curl -s "https://www.publicframework.com/api/repository"
Exemplu de răspuns
{
  "format": "public-framework-exchange",
  "formatVersion": 1,
  "count": 0,
  "models": []
}
  • Câmpurile name și description au variante ro și en; o limbă lipsește dacă modelul nu a fost tradus.

Exportul unui model

Metodă: GET/api/repository/{slug}/export

Modelul complet, în formatul de schimb Public Framework: metadate, elemente, relații și viewuri cu poziția nodurilor.

Parametri

Parametri: Exportul unui model
NumeUndeDescriere
slugobligatoriucaleIdentificatorul modelului, din câmpul slug al listei.
curl -s "https://www.publicframework.com/api/repository/certificat-urbanism-demo/export"
Exemplu de răspuns
{
  "format": "public-framework-exchange",
  "formatVersion": 1,
  "model": {
    "id": "certificat-urbanism-demo",
    "language": "ro",
    "name": {
      "ro": "Certificatul de urbanism (model demonstrativ)",
      "en": "Urban planning certificate (demo model)"
    },
    "description": {
      "ro": "Model demonstrativ al serviciului de eliberare a certificatului de urbanism într-o primărie de municipiu, de la temeiul legal până la sistemele informatice. Conține intenționat câteva erori de modelare pentru a ilustra validarea.",
      "en": "Demo model of the urban planning certificate service in a city hall, from the legal basis to the information systems. It deliberately contains a few modelling errors to illustrate validation."
    },
    "scope": "Primăria Municipiului Exemplu",
    "owner": "Echipa Public Framework",
    "version": "0.3.0"
  },
  "elements": [
    {
      "id": "act-l50",
      "type": "LegalAct",
      "status": "approved",
      "name": {
        "ro": "Legea nr. 50/1991 privind autorizarea executării lucrărilor de construcții",
        "en": "Law no. 50/1991 on authorising construction works"
      },
      "description": {
        "ro": "Actul normativ care reglementează certificatul de urbanism și autorizația de construire.",
        "en": "The legal act governing the urban planning certificate and the building permit."
      },
      "properties": {
        "kind": "lege",
        "number": "50",
        "year": 1991,
        "issuer": "Parlamentul României"
      },
      "sources": [
        {
          "kind": "legalAct",
          "reference": "Legea nr. 50/1991, republicată",
          "url": "https://legislatie.just.ro/"
        }
      ]
    }
  ],
  "relationships": [
    {
      "id": "r1",
      "type": "contains",
      "source": "act-l50",
      "target": "prov-l50-art6"
    }
  ],
  "views": [
    {
      "id": "v-service",
      "name": {
        "ro": "Serviciul pe scurt",
        "en": "The service at a glance"
      },
      "viewpoint": "service",
      "description": {
        "ro": "De la evenimentul de viață la actul emis.",
        "en": "From the life event to the issued act."
      },
      "nodes": [
        "le-build",
        "svc-cu"
      ]
    }
  ]
}
  • Răspunsul are antetul Content-Disposition: attachment, așa că browserul îl descarcă. Clienții HTTP îl citesc normal.
  • Câmpurile goale sunt omise, nu trimise ca null.

Versiunile specificației

Metodă: GET/api/specificationDeschide în browser

Toate edițiile publicate ale specificației, cu rezumatul schimbărilor și fișierele disponibile pentru fiecare limbă.

curl -s "https://www.publicframework.com/api/specification"
Răspuns real, prescurtat
{
  "latest": "1.0",
  "count": 2,
  "versions": [
    {
      "version": "1.0",
      "title": {
        "ro": "Specificația Public Framework Modelling Language 1.0",
        "en": "Public Framework Modelling Language 1.0 specification"
      },
      "changes": {
        "ro": "Metamodelul pe 12 straturi: 152 de tipuri de elemente, 21 de tipuri de relații, reguli de validitate și notația grafică. Înlocuiește metamodelul pe șase straturi din versiunea 0.1-alpha.",
        "en": "The 12-layer metamodel: 152 element types, 21 relationship types, validity rules and the graphical notation. Replaces the six-layer metamodel of version 0.1-alpha."
      },
      "releasedAt": "2026-10-17T09:13:22.845Z",
      "files": [
        {
          "locale": "ro",
          "url": "https://www.publicframework.com/api/specification/1.0/ro",
          "contentType": "application/pdf",
          "sizeBytes": 6165765,
          "sha256": "38c3775be82be0e8d48eb40d63b52e11d40f56eaaeb098fba28ceea6053f5e20"
        }
      ]
    }
  ]
}
  • latest indică cea mai nouă versiune publicată. Edițiile programate apar doar după data lansării.
  • sha256 îți permite să verifici integritatea fișierului descărcat.

Fișierul specificației

Metodă: GET/api/specification/{version}/{locale}Deschide în browser

Documentul unei ediții, într-o anumită limbă. Folosește latest ca să primești mereu ediția curentă.

Parametri

Parametri: Fișierul specificației
NumeUndeDescriere
versionobligatoriucaleNumărul versiunii, de exemplu 1.0, sau latest.
localeobligatoriucaleLimba documentului: ro sau en.
viewopționalqueryCu valoarea 1, fișierul se deschide în browser în loc să fie descărcat.
# -J keeps the file name sent by the server
curl -fLOJ "https://www.publicframework.com/api/specification/latest/ro"
Exemplu de răspuns
HTTP/2 200
content-type: application/pdf
content-disposition: attachment; filename="public-framework-specification-v1.0-ro.pdf"
etag: "…"
cache-control: private, no-cache
x-specification-version: 1.0
  • Antetul X-Specification-Version spune ce versiune ai primit, util când ceri latest.
  • Trimite If-None-Match cu ETag-ul primit anterior: dacă fișierul nu s-a schimbat, răspunsul este 304, fără conținut.
  • O versiune sau o limbă inexistentă redirecționează (302) către pagina specificației.

Formatul modelelor

Exportul folosește formatul de schimb public-framework-exchange. Pagina dedicată descrie fiecare câmp, regulile de validare și tipurile de elemente acceptate, cu un fișier de exemplu.

Vezi formatul de schimb

Fluxuri RSS

Pentru notificări despre conținut nou, abonează-te la fluxurile RSS. Fiecare există în ambele limbi.

Cache și erori

Răspunsurile JSON sunt păstrate în cache până la 5 minute. Datele noi apar după acest interval, fără să faci nimic.

Cache și erori
CodÎnțeles
200Cererea a reușit.
302Fișierul specificației nu există pentru versiunea sau limba cerută.
304Fișierul nu s-a schimbat față de ETag-ul trimis.
404Modelul nu există sau nu este publicat ori limba nu este suportată.
502 / 503Sursa datelor nu este disponibilă temporar. Reîncearcă mai târziu.

Nu există limite stricte de trafic, dar te rugăm să păstrezi local răspunsurile și să nu interoghezi API-ul mai des de o dată pe minut.

Versionare

Fiecare export include format și formatVersion. Câmpurile noi pot apărea oricând fără să schimbe versiunea, așa că ignoră câmpurile pe care nu le recunoști. O schimbare incompatibilă crește formatVersion și este anunțată în fluxul specificației.

Licență și atribuire

Modelele, specificația și documentația sunt publicate sub licențele deschise ale cadrului. Le poți folosi, inclusiv în produse comerciale, cu condiția să menționezi Public Framework ca sursă și să nu prezinți datele modificate ca fiind oficiale.

Ai întrebări sau ai nevoie de un endpoint nou? Scrie-ne pe pagina de contact.