Published models, the specification and the search index are available through a public, read-only API. There is no account and no key: send an HTTP request and get JSON back.
Base URL
https://www.publicframework.com
Authentication
Not required
Format
JSON, UTF-8
CORS
Allowed from any origin
Freshness
Within 5 minutes
Quick start
Start from the list of published models. Each entry carries an export URL that returns the full model: elements, relationships and views.
1Request the model list from /api/repository.
2Pick a model by slug and follow links.export.
3Read elements and relationships using the documented exchange format.
{
"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"
]
}
]
}
The response sends Content-Disposition: attachment, so browsers download it. HTTP clients read it as usual.
Empty fields are omitted rather than sent as null.
The index is rebuilt at most once a minute. Filter it locally on the title and text fields.
Model format
Exports use the public-framework-exchange format. Its dedicated page describes every field, the validation rules and the accepted element types, with a sample file.
JSON responses are cached for up to 5 minutes. New data shows up after that interval without any action on your side.
Caching and errors
Code
Meaning
200
The request succeeded.
302
No specification file exists for the requested version or language.
304
The file has not changed since the ETag you sent.
404
The model does not exist or is not published, or the language is not supported.
502 / 503
The data source is temporarily unavailable. Try again later.
There are no hard rate limits, but please cache responses on your side and avoid polling more than once a minute.
Versioning
Every export includes format and formatVersion. New fields can appear at any time without a version change, so ignore fields you do not recognise. An incompatible change increments formatVersion and is announced in the specification feed.
Licence and attribution
Models, the specification and the documentation are published under the framework’s open licences. You can use them, including in commercial products, as long as you credit Public Framework as the source and do not present modified data as official.