API-ul platformei

Actualizată la 18 octombrie 2026 · Brăila, Mureș și localități distincte. Ce afirmă platforma despre un teren, servit ca date. Aceeași sursă de adevăr ca fișa terenului, deci ce vezi acolo poți primi și aici, cu temeiul fiecărei afirmații. Cum sunt calculate valorile și ce limite au sursele: metodologia platformei.

Fișa terenului

Un singur apel, două moduri de a numi terenul: prin coordonate sau prin numărul cadastral din evidența ANCPI.

Raport pentru un sit DXF

POST /api/v1/fisa-sit cere o cheie full. Trimite textul DXF, numeFisier, siruta, pozitionare și operatie: verifica. Contururile multiple cer alegerea unei entități. După verificarea poziției, retrimite aceleași date cu operatie: raport și amprentaPozitiei primită. Răspunsul fisa-sit/1 include suprafața întreagă, parcelele intersectate, intravilanul, zonificarea, planșele și limitele verificării. Fișierul nu se înscrie în cadastru.

DXF ASCII, polilinii închise 2D, INSUNITS mm/cm/metri, maximum 2 MB și 5.000 de vârfuri. Poziționarea automată cere repere cadastrale unice; alternativa este Stereo70 declarat sau o translație verificată. O poziție ambiguă se oprește. Hărțile fără PUG disponibil rămân fără reglementări presupuse. Panta și RO-FLOODS se referă numai la punctul indicat.

Pentru PDF cu identitatea firmei, folosește API-ul Beletage: contract și exemplu. Cheile sunt specifice fiecărui serviciu și rămân pe serverul consumatorului.

Fișa unui punct sau a unei parcele

GET https://pug.digital/api/v1/fisa-teren?lng=23.5900&lat=46.7700
GET https://pug.digital/api/v1/fisa-teren?siruta=54975&cad=341731
lng, latCoordonate WGS84, în grade zecimale. Trebuie să cadă pe teritoriul României.
siruta, cadCodul SIRUTA al UAT-ului și numărul cadastral. Platforma caută parcela și pornește dintr-un punct garantat în interiorul ei, nu din centrul geometric (care la parcelele în forma literei L poate cădea pe vecin).
refOpțional. O referință de-a ta (de exemplu numărul comenzii), scrisă în jurnalul de utilizare ca livrarea să se poată reconcilia mai târziu.
nivelOpțional: rezumat sau complet (implicit). Rezumatul păstrează exact ce încape pe ecranul unei parcele: identificarea, încadrarea cu indicatorii ei (inclusiv zonificarea Ord. 904, unde primăria a publicat-o), semaforul, semnalele da/nu, documentul aplicabil și prospețimea surselor. Nu include defalcarea pe parcelă, planșele, rețelele, autorizările și documentațiile desfășurate, iar defalcarea și planșele, partea scumpă, nici nu se calculează. Pe treapta completă, măsurat pe o parcelă din Cluj-Napoca, documentul costă ~1,9 s, din care planșele 1,1-1,6 s și defalcarea 0,3 s, deci acolo rezumatul răspunde de câteva ori mai repede. Pe treapta publică defalcarea și planșele nu se calculează pe niciun nivel, fiindcă nu pleacă pe niciunul, deci ambele niveluri răspund la fel de repede. O valoare necunoscută primește 400, nu documentul întreg.
GET https://pug.digital/api/v1/fisa-teren?siruta=54975&cad=341731&nivel=rezumat

Când ai doar numărul cadastral

Pasul dinaintea fișei, pentru cine are numărul de pe extrasul de carte funciară și nu știe codul SIRUTA al unității administrative.

GET https://pug.digital/api/v1/cauta-cadastral?cad=359946
GET https://pug.digital/api/v1/cauta-cadastral?cad=100&restrange=Alba
GET https://pug.digital/api/v1/cauta-cadastral?cad=51332&restrange=Olt&limit=1000

Răspunsul e o listă, dinadins. Numărul cadastral nu e unic pe țară, iar asta nu e o excepție, e regula: 359946 apare în două unități (Cluj-Napoca și Arad), 1234 în 67, iar 100 în 330. A ghici una singură ar însemna să livrăm fișa altui teren fără ca nimic să se plângă, așa că alegerea rămâne la om. Fiecare rând poartă exact ce cere apoi fișa: codul SIRUTA, numele unității, județul, câte parcele active poartă numărul acolo, și punctul din care pornește fișa, garantat în interiorul parcelei.

cadNumărul cadastral. Cifre, litere, cratimă și bară oblică, maximum 32 de caractere.
restrangeOpțional. Județ sau nume de unitate, potrivit pe începutul cuvântului și fără să conteze diacriticele sau majusculele. Util la numerele mici, care apar în sute de unități.
limitOpțional, întreg între 1 și 1000, implicit 50. Filtrul pe județ sau UAT se aplică înaintea plafonului. O listă trunchiată se restrânge în continuare după localitate.
total, plafon, trunchiatCâte unități potrivesc, plafonul cerut și dacă lista a fost tăiată. Numărul din total e cel dinaintea plafonului. O selecție automată este sigură numai când total=1 și trunchiat=false.

Punctul din listă este același pe care îl folosește fișa cerută cu siruta și cad, deci cele două nu pot porni din locuri diferite. Când nicio parcelă cu acel număr nu are geometrie în unitate, rândul rămâne în listă cu punctul null: numărul există acolo, dar fișa nu poate porni din el.

Cele două trepte

Fără cheie, apelul primește treapta publică. Ea nu e minimul necesar: conține identificarea terenului, încadrarea urbanistică cu indicatorii ei și proveniența lor, documentul de urbanism care se aplică la punct, și un răspuns onest de tip da/nu la fiecare familie de restricții, ca să știi dacă terenul are ceva de discutat. Treapta completă adaugă detaliile care fac documentul utilizabil ca atare: planurile pe nume cu valabilitatea lor, sentințele și avizele care ating terenul, fiecare zonă de protecție cu temeiul ei legal, ariile naturale cu planul de management, adâncimile modelate pe scenarii de inundație, panta estimată la punct.

Diferența cea mai practică e că treapta completă răspunde pentru teren, nu pentru un punct din el. Aproape un sfert din parcelele Clujului sunt tăiate de mai multe zone de reglementare, iar acolo un singur POT nu descrie nimic: primești cât din suprafață cade în fiecare zonă, în mp și procente, cu indicatorii fiecăreia, și la fel pentru servituți, patrimoniu și arii naturale. Tot acolo vin rețelele edilitare din apropiere, cu distanța până la conturul terenului.

Treapta completă se obține cu o cheie trimisă în antet. O primești odată cu pachetul Prima Impresie, al cărui prim livrabil este chiar analiza terenului.

curl -H "X-API-Key: $CHEIE" \
  "https://pug.digital/api/v1/fisa-teren?siruta=54975&cad=341731&ref=comanda-1234"

O cheie greșită sau dezactivată nu întoarce eroare: cererea cade pe treapta publică. Așa un site partener nu rămâne cu ecranul gol, ci doar cu mai puține câmpuri, iar diferența se citește în câmpul tier al răspunsului și în antetul X-Api-Tier.

Limitele cererilor

Fișa terenului, căutarea cadastrală, relieful și dotările împart plafonul de 30 de cereri într-un interval de 60 de secunde pe IP. Cheia API folosește propriul plafon pe client, configurabil între 1 și 6.000 de cereri/minut. Cererile simultane sunt numărate înainte de calcul; schimbarea rutei, a treptei sau repornirea aplicației nu resetează acest plafon.

Exporturile de obiecte GIS, datelocale și recuperări PUG au câte 120 de cereri/15 minute/IP și 1.200 de cereri/15 minute la nivel global. Contextul OSM permite 300/15 minute/IP, iar însorirea 12/15 minute/IP. Paginile de export limitează și numărul de obiecte returnate. Depășirea primește 429, cu Retry-After; dacă verificarea limitelor GIS nu este disponibilă, primește 503.

Treapta publică, cu cheie

Un consumator cu cheie completă poate cere treapta publică trimițând, pe lângă cheie, antetul X-Api-Tier: public. Răspunsul e cel public (același corp pe care l-ar primi oricine) și e jurnalizat ca public, dar cererea rămâne identificată: limita se numără pe client, cu plafonul scris pe cheie, nu pe adresa IP. Contează când mai multe instanțe ale aceluiași produs ies pe același IP și ar împărți altfel plafonul anonim de 30 pe minut. O cheie publică nu poate cere treapta completă: antetul poate doar coborî treapta, niciodată urca. Pe rezumat, cheia (pe orice treaptă) primește în plus riscNatural.panta, panta estimată la punct.

curl -H "X-API-Key: $CHEIE" -H "X-Api-Tier: public" \
  "https://pug.digital/api/v1/fisa-teren?siruta=54975&cad=341731&nivel=rezumat"

Răspunsul

contractVersiunea contractului de răspuns. Se schimbă doar când se schimbă forma datelor, nu la fiecare livrare.
tierpublic sau full, treapta servită.
nivelcomplet sau rezumat, nivelul de detaliu al răspunsului. Pe rezumat răspunsul are doar contract, tier, nivel, generatLa, punct, identificare, incadrare, nivelRestrictii, semnale, documentAplicabil, documentatiiParcela, hotarariParcela, zonificareOrd904, documentatiiLocalitate, contextOsm și surse, plus riscNatural.panta când cererea a venit cu cheie; câmpul neinclusInRezumat spune pe nume ce lipsește, ca absența să nu se citească drept „nu există”.
identificareUAT-ul (cu tipul lui din nomenclatorul SIRUTA), parcela ANCPI dacă punctul cade pe una, și poziția față de intravilan. Din 2026-10-05g, identificare.parcela.stradaCadastrala poate include denumire, sursa=ANCPI, referinta=adresa_cadastrala și extrasLa, din componenta explicită de stradă a adresei eTerra. Adresa integrală, numărul imobilului și proprietarii nu sunt publicate. Data acestei copii este separată de sincronizarea geometriei. Unde UAT-ul nu are limita intravilanului în evidența ANCPI, valoarea e nedeterminat, nu extravilan.
incadrareDin contractul 2026-09-19, sursa_model=puz_document identifică UTR-urile PUZ verificate din PDF, cu document.id și regulament proprii, care înlocuiesc PUG-ul numai în conturul reglementat. Câmpul comun este completat și pentru zonele Ord.904 unde UAT-ul nu are model local publicat. sursa_model identifică modelul, document/provenance identifică sursa, iar indicatoriSursa păstrează valorile text din registru. Zona de reglementare, cu POT, CUT, înălțimea maximă, regimul de înălțime și retragerile. Câmpul provenientaIndicatori spune de unde vin valorile: regulamentul aprobat al UAT-ului, un șablon orientativ din bibliotecă, sau o estimare din regimul de înălțime.
incadrare.indicatoriRegula întreagă, când zona are regulament structurat: pentru fiecare indicator (pot, cut, inaltime, inaltimeCornisa, spatiiVerzi, parcelaMin, frontMin) o valoare de bază și variantele ei, fiecare cu condiția scrisă în română și cu articolul din regulament. FOLOSIȚI-O PENTRU CALCULE: câmpurile plate potMaxPct, cutMax și hMaxM poartă plafonul cel mai permisiv al zonei, care de multe ori se aplică doar în cazuri anume (la ZCP_M1 al Clujului, POT 80% cere garaje colective peste necesar, iar pe o parcelă obișnuită sunt 60%). Când baza e null, regulamentul nu dă o valoare generală, ci numai variante. Înălțimea vine ca două plafoane care se aplică deodată: inaltime e vârful (coamă sau totală), inaltimeCornisa e cota fațadei.
nivelRestrictiiSemaforul sintetic: none, info, warn sau block.
semnaleRăspunsuri da/nu pentru fiecare familie de restricții și numărătorile de documentații. Prezent pe ambele trepte.
semnale.susceptibilitateAlunecariClasa europeană de susceptibilitate la alunecări (ELSUS v2, JRC), de la 1 la 5, plus eticheta ei. Prezentă pe ambele trepte: e un reper zonal la scara 1:200.000, deci nu descrie parcela. Treapta completă adaugă scara, avertismentul sursei și citarea cerută de licență.
documentAplicabilDocumentația selectată la punct, în ordinea detaliului: PUD, PUZ activ, apoi PUG. PUD detaliază planurile superioare și nu le modifică automat indicatorii. Valoarea PUG este și cea de rezervă, deci nu confirmă identificarea unui PUG pe teren; pentru întregul contur citiți documentatiiParcela și hotarariParcela.
hotarariParcelaContractul 2026-10-10o verifică întregul contur al parcelei sau sitului furnizat. Acoperirea sursei este Cluj-Napoca; în alte UAT-uri stare=neacoperita, nu absență de litigii. Public/rezumat: numar și starea verificării; full/complet: acte, HCL vizat, dosare publice, arie și procent, acoperire integrală/parțială și data proiecției locale. efectJuridic și caracterDefinitiv rămân neprecizat_in_sursa; din numărul actului nu se deduce o anulare, suspendare sau derogare. O intersecție pe margine blochează conceptul neverificat. sentinte rămâne lista compatibilă de la punct.
zonificareOrd904Încadrarea în documentația publicată în formatul digital al Ord. 904/2023, cu nomenclatorul național ZF01..ZF18, pentru UAT-urile care au una. Zona și subzona la punct, POT, CUT și înălțimea, fiecare cu o stare: numar, nereglementat (regulamentul spune explicit că nu dă o valoare), text (dă o frază, redată cuvânt cu cuvânt), unitate_incerta (dă un număr, dar pe altă scară decât cea a câmpului: un POT între 0 și 1 fără semnul %, probabil fracție, sau un CUT peste 10, probabil procent; valoare e null, text poartă ce scrie regulamentul și nu îl rescalăm) sau lipsa (planul nu are regulament detaliat pe subzone). Documentul vine cu HCL, date, stadiu și stare: in_vigoare, in_curs sau expirat; la o documentație încă neaprobată HCL-ul și data aprobării sunt null, nu se completează. Verdictul vine din documentația care se aplică: întâi cea în vigoare, apoi PUZ-ul sau PUD-ul înaintea PUG-ului, apoi cea mai recentă; documentațiile expirate sau în curs rămân pentru consultare și nu furnizează verdict aplicabil pe parcelă. Câmpul dinRegistrulNational spune dacă planul vine din registrul datelocale.mdlpa.ro sau dintr-o conversie a noastră. La conversii, indicatorii vin de obicei cu starea lipsa: pentru calcule, citiți-i din incadrare.
surseCând au fost actualizate ultima dată sursele naționale, ca documentul să își poată data afirmațiile.
documentatiiLocalitateCatalog de consultare la nivel de UAT: documentații MDLPA și legături județene cu sursa indicată în titlu, tip, format, consultare, arhiva și data verificării. Prezent pe ambele trepte. Legăturile nu certifică valabilitatea și nu sunt încadrare pe parcelă.
documentatiiParcelaDin 2026-10-05g, pe treapta publică și în rezumat (pe orice treaptă): stare, referinta, surseConsultate și, pe fiecare document, numai tip, stare și acoperire. La stare verificata, o listă goală înseamnă că nicio documentație curentă, nici PUG, nu este identificată pe parcelă în sursele consultate. Din 2026-10-05f, pe full/complet: verificare pe întregul contur cadastral sau furnizat, cu stare, referinta, documente și surseConsultate. Documentele curente sau cu valabilitate necunoscută includ tip, titlu, HCL, sursă, acoperire integrală/parțială, suprafață și procent. contacteLimita păstrează separat intersecțiile numerice de cel mult 0,01 mp, iar neconcordanteTip păstrează tipologiile care contrazic referința actului. Contactele fără suprafață, documentațiile expirate și cele în curs sunt excluse din această selecție. Listele istorice și selecția la punct rămân în câmpurile existente. Absența unui PUZ/PUD se referă numai la datele disponibile.
contextOsmContext OpenStreetMap orientativ, cu atribuirea ODbL, extrasLa și sha256. Rezumatul consultă numai electricitatea, fără geometrie sau planșă. Fișa full completă consultă și clădiri, circulații, folosințe, cu geometrie GeoJSON WGS84 și planșă SVG metrică separată. Distanțele sunt aproximative până la conturul parcelei sau al sitului DXF, când există. Absența unui obiect nu dovedește absența infrastructurii; etichetele nu confirmă branșament, capacitate sau zone legale de protecție.
propunereNumai full complet. Capacitate teoretică din indicatorii de bază, lipsuri și profilDisponibil. Profilele geometrice verificate sunt Liu și Lip din Cluj-Napoca, pentru o locuință izolată nouă. Liu cere minimum 350 mp și front de 12 m; Lip minimum 300 mp, iar scenariul izolat folosește un front mai mare de 10 m. Fiecare versiune de regulament are propria amprentă verificată. Din 2026-10-05g, laturi[].front este opțional: eligibila, laturaSpate, adancimeM și motiv. Verificarea folosește aceleași dimensiuni și praguri ca generarea, înainte de cererea de volum. Pe patrulatere, spatele este unica latură neadiacentă; pe alte contururi, eligibila și laturaSpate rămân null și cer identificare manuală. Indicii sunt de la zero. Verdictul privește ramura geometrică verificată, fără a confirma acces public sau construibilitatea. orientare include frontul sugerat geometric din OSM, candidații ambigui, suprapunerile aproximative cu clădiri și contextul apropiat, cu sursă, epocă și hash. Sugestia nu confirmă acces public sau teren liber. Generarea cere POST separat cu laturile stradală/posterioară și declarațiile amplasamentului. Volumele nu se calculează din plafoane condiționate sau înălțimi estimate.
regulament.usesDin contractul 2026-09-18c: articolele integrale admitted, conditional, prohibited, fiecare cu text, article, pages și source_url. Sunt prezente în incadrare.regulament și defalcarePeParcela.zone[].extra.regulament pentru capitolele PDF verificate. scope=zone_chapter și note descriu domeniul; nu reprezintă un verdict automat pentru investiție. O categorie goală înseamnă articol neextras, nu permisiune. Legătura rămâne dependentă de document, cod, sursă și hash.
defalcarePeParcelaAcelași model ca încadrarea: UTR local, Ord.904, ArcGIS public sau compunerea PUG cu UTR-uri PUZ verificate (puz_document). Pentru zonele importate, extra include sursa_model, document/provenance, regulament și indicatoriText cu condițiile în cuvinte. Numai pe treapta completă. Răspunsul pentru TEREN, nu pentru punct: cât din parcelă cade în fiecare zonă de reglementare, servitute, zonă de patrimoniu și arie naturală, în mp și procente, fiecare felie cu indicatorii ei. Fiecare zonă poartă în extra atât plafoanele (potMaxPct, cutMax, hMaxM) cât și valorile care se aplică pe o parcelă obișnuită (potBazaPct, cutBaza, hBazaM, hCornisaBazaM): FOLOSIȚI-LE PE ACESTEA DIN URMĂ PENTRU CALCULE, plafonul cere de multe ori o condiție anume. Plus rețelele edilitare din apropiere, cu distanța până la conturul terenului. La UAT-urile unde primăria publică mai mult (azi Cluj-Napoca), tot aici vin suprafața construită din evidența OCPI, revendicările, arborii inventariați și activitatea de autorizare din jur.
planseDin contractul 2026-09-19, UTR-urile PUZ verificate și perimetrul documentației sunt incluse cu proveniență proprie; limitele zonelor și conturul documentației sunt distincte. Zonificarea include și documentațiile Ord.904 în vigoare sau copia ArcGIS publicată, acolo unde UAT-ul nu are model local. Elementele păstrează tipurile utr și utr_det și adaugă provenienta (sursa_model, model_key, siruta, cod_zf); culorile umplere/contur sunt hex pentru SVG și PDF. Numai pe treapta completă. Șapte planșe (cadastru, suprapunerea zonelor peste parcele, zonificare, documentații, rețele, autorizări, mediu), fiecare cu caseta ei în metri și cu elementele ca atribut `d` de <path> SVG, în coordonate metrice relative la colțul casetei, cu y negat. Sistemul e Stereo70, deci un metru de desen e un metru real: le poți pune direct într-un viewBox sau scala într-un PDF. Când un domeniu nu are date, planșa vine cu câmpul `gol` completat cu motivul. Planșa de suprapunere aduce și un câmp `fundal` (imagine JPEG în `data:` URL, deja rotită și decupată exact pe caseta ei, plus atribuirea sursei): se desenează la (0,0), pe toată caseta, sub restul elementelor.
dotariApropiateNumai full complet, din contractul 2026-10-09n. Cel mult 8 dotări din registre și seturi publice cu amplasament precis (geocodare adresa, osm, cadastru, adresa_oficiala sau coordonate_publicate; cele așezate în centrul localității nu intră) la cel mult 1.000 m de conturul parcelei, ordonate după distanță, fiecare cu ref (D01..D08), id, denumire, categorie (domeniu, tip), sursa (cheie, denumire, editie, incarcatLa), geocodare, osmId, distantaM până la contur și punct4326 / punct3844. total spune câte erau în rază înainte de plafon. Când lista e goală, motiv spune de ce, din cifre măsurate pe UAT; null când punctul nu cade pe o parcelă ANCPI. Aceeași selecție ca reperele D01..D08 din rapoartele de exemplu. Disponibil și separat: /api/v1/dotari-apropiate.
accesPietonalFull/complet: la punct fără parcelă, contract 2026-10-12t și acces-pietonal/4; rapoartele pe contur păstrează 2026-10-12s și acces-pietonal/3 pentru consumatorii existenți. Mers pe rețeaua OSM la 4,8 km/h, 2,4 km/h pe scări; identități de noduri, acces pietonal și bariere. GTFS adaugă stații cu transport.moduri și transport.linii; sursa păstrează URL, lotId, verificatLa și licenta. Nivelurile școlare pot avea niveluriSursa, separat de ediția rețelei ISJ. Calcul național pentru coordonate sau parcelă, independent de existența PUG. Fără parcelă identificată, referinta.tip=punct și conturDisponibil=false; limiteAdministrative rămâne null. plecare.distantaConturM este null la punct, iar distantaPunctM măsoară apropierea de rețea. Reper sugerat lângă contur sau punct, apropiere de dotare separată de traseu. categorii[] include starea, amplasamenteIn15Minute, unitatiFaraAmplasamentPrecisInUat și InLocalitate, amplasamentePeste15Minute, amplasamenteFaraLegaturaPietonala și niveluriNeprecizate, ceaMaiApropiata cu timp/distanță pe rețea și distanță până la contur. surseAmplasamente[] păstrează sursele tuturor țintelor numărate, chiar dacă cel mai apropiat reper este OSM. Numai dotariPeHarta[] se desenează și intră în tabel, cu ref P01 identic între ele. pozitionare separă proveniența poziției de registrul instituției: reper interior_amplasament, punct_osm, adresa_geocodata, evidenta_cadastrala, coordonate_publicate sau adresa_oficiala, sursa, editie, incarcatLa, url, conturDisponibil, intrareConfirmata=false. Contururile OSM sunt din același PBF ca rețeaua. circumscriptieScolara include adresa și proveniența ei, anul școlar, starea, unitati cu limba, fragmentul/textul publicat, sursaUrl și refPeHarta când aceeași unitate apare în planșă. O stradă apropiată produce adresa_de_confirmat, fără atribuire cadastrală. Excepțiile și sursele neclare rămân verificare_document. Lipsa datelor nu dovedește lipsa dotării sau a circumscripției.
limiteAdministrativeFull/complet, limite-parcela/1. Poziția pe întregul contur, distanța minimă până la limita UAT și limita intravilanului ANCPI, intravilanePug[] cu document/fază/URL/data și uaturiInCadru. O parcelă poate traversa limita; lipsa referinței este nedeterminat. planse.planse[] adaugă domeniile acces_pietonal și limite, cu casete proprii, trasee banda_5/10/15, origine_pietonala, dotare, limita_uat, limita_intravilan, intravilan_fond, amplasament_osm, amplasament_public și etichete. Fiecare contur are denumireLegenda proprie, numai dacă este desenat. grosimeConturM și unghiGrade sunt instrucțiuni de desen. Suprafața intravilanului se umple fără conturul artificial al decupajului.
documentatii, sentinte, avizeOportunitate, restrictii, patrimoniuPePunct, riscNatural, utrAlternative, zonificareOrd904CompletaNumai pe treapta completă. Fiecare capitol desfășurat, cu temeiul lui.

Context, catalog și propunere

Modelul de zonificare al localității

GET /api/utr/model?siruta=54975 este public, cu CORS, contract utr-model/1. Identifică modelul fără agregarea ariilor și fără lista UTR-urilor: sursa, composition și source_models au aceeași selecție ca /api/utr/lista. zoning_layers include numai straturile PUG folosite, cu id, source_key, portal_url, published_run_id, map_revision și synced_at. approved înseamnă aprobat pentru publicarea copiei, nu confirmare juridică. Pentru modelul local și Ord. 904, tiles_version include marcajele utr_zoom_tiles și/sau zonificare_zoom_tiles, identice cu /api/tiles-version. Lipsa modelului este sursa=null cu liste goale; o eroare de citire răspunde 503, nu lipsă de date. Cache public 5 minute, limită 600 cereri/IP și 6.000 global în 15 minute.

În dotariApropiate și accesPietonal, sursa descrie instituția, iar geocodare descrie poziția: osm este orientativă, adresa este o estimare pe adresă, cadastru provine din evidența cadastrală. Alegerea unui amplasament identificabil pentru calcul nu certifică precizia în metri. O instituție din Rețeaua școlară poate avea poziție OSM; în raport se păstrează ambele proveniențe.

Toate clasele documentațiilor digitale MDLPA

Contractul 2026-10-10o adaugă regulamentPeCampuri în defalcarePeParcela.zone[].extra: descriere, utilizări, prescripții, articole integrale și proveniență legată de document/cod/hash. Câmpurile native rămân distincte de articolele PDF citate. Timișoara păstrează secțiunea și numerotarea originală, iar Bacău textul regimului tehnic; texte diferite pe aceeași felie primesc regulamentStare=texte_multiple_sau_incomplete și varianteRegulament. Lipsa textului nu înseamnă permisiune. Inventar: disponibilitate per documentație, GET /api/v1/acoperire-regulamente?siruta=54975.

În catalogul digital apar și conversiile locale cu origine local_conversion și identificator UUID, distincte de GPKG-urile MDLPA. La Cluj, UUID-ul documentației din zonificareOrd904Completa.zone[].docId este același cu extra.model_key pe felia parcelei. source_file indică amprenta fișierului sursă; regulation_text indică amprenta textului copiat. Limitele și clasele indisponibile sunt declarate; intravilanul propus și adoptat în 2014 nu este duplicat drept limită existentă anterioară. Parametrul bbox rămâne în EPSG:4326, chiar pentru crs=3844; after cere versiunea v, iar modificarea copiei răspunde 409.

Pe full/complet, documentatieGeoreferentiata și planse.documentatieGeoreferentiata păstrează imaginile disponibile. origine=vector_gis și intersectie=reprezentare_gis desemnează planșa generată din vectori, cu imagine=disponibila, plansa.fundal și legendaDataUrl. an, precizieM, scaraSursa, tiles și legăturile către fișierele originale pot fi null; nu se completează cu zero, anul curent sau fișiere fictive. Legenda și culorile provin din desenul efectiv. Public/rezumat păstrează numai metadatele fără imagini. Inventar județean: GET /api/urbanism-public/judete.

API-ul datelocale/1 oferă toate cele 11 clase principale ale fiecărei documentații: perimetru, zonificare existentă și propusă, restricții, intravilan existent și propus, rețele, drumuri, reglementări punctuale și cele două niveluri de regulament. layers include și clasele suplimentare și variantele auxiliare publicate în acel fișier. Catalogul pornește pe PUG; tip=PUZ sau tip=toate consultă și PUZ-urile deja preluate. Nu este necesară o cheie. Hărți și inventar: documentații digitale.

GET /api/v1/datelocale?tip=PUG
GET /api/v1/datelocale?siruta=143450
GET /api/v1/datelocale?q=Sibiu
GET /api/v1/datelocale/24770
GET /api/v1/datelocale/24770/ZFPropusa?limit=1000
GET /api/v1/datelocale/24770/RegulamentLocalUrbanismDetaliat?limit=1000
GET /api/v1/datelocale/24776/ReteleTehnicoEdilitarePunct?limit=1000
GET /api/v1/datelocale/24758/ZFPropusa1?limit=1000

Metadatele documentației includ sursa, SHA-256, importul, ultima verificare a fișierului sursă, stadiul planului și numărătorile fiecărei clase. source este numărul rândurilor din GPKG; imported include părțile separate ale geometriilor multiple. expanded și rejected explică diferența, prin source = imported − expanded + rejected. Identificatorii GeoJSON sunt locali importului, nu identificatori oficiali ai primăriei.

Fiecare pagină de obiecte include version și next_after. Pentru continuare, trimite after=next_after și aceeași v=version; o versiune schimbată primește 409, iar continuarea fără versiune primește 400. Limita este 1–1.000 de obiecte, implicit 250. bbox=west,south,east,north este întotdeauna WGS84, maximum un grad pătrat. cod filtrează exact codul zonei sau subzonei, unde clasa îl are. GeoJSON-ul este WGS84; crs=3844 returnează coordonate proiectate declarate, cu geojson_rfc7946=false. Regulamentele au geometrie null.

Clasele suplimentare păstrează un rând API per rând sursă, inclusiv obiectele cu geometrie neutilizabilă, marcate prin _geometry_state=unusable. Atributele originale și identificatorul source_id_field sunt păstrate. storage=versioned_source_artifact declară copia pe versiune; o amprentă a fișierului diferită oprește servirea cu 409. Un strat suplimentar nepublicat în acel fișier primește 404 source_layer_not_published, distinct de un strat publicat fără obiecte. auxiliary=true marchează variantele ZFPropusa1–5, fără utilizare în încadrarea parcelei. Pentru aceste copii, bbox_filter_method=geometry_intersection_epsg4326 descrie intersecția cu geometria în WGS84.

POT, CUT, înălțimea și prescripțiile rămân textele publicate în RLU, inclusiv condițiile sau unitățile neclare. Accesul la o documentație istorică ori în curs nu o transformă în reglementare aplicabilă pe parcelă. Fișa și rutele de încadrare păstrează selecția documentațiilor în vigoare și precedența PUD/PUZ/PUG. Limitarea de trafic este 3.000 de cereri pe IP în 15 minute și 20.000 global în aceeași fereastră.

Oradea și Arad: recuperări cartografice

GET /api/v1/recuperari-pug
GET /api/v1/recuperari-pug/oradea
GET /api/v1/recuperari-pug/oradea/features?limit=1000
GET /api/v1/recuperari-pug/arad

Contractul recuperari-pug/1 oferă ediția, metoda, precizia neconfirmată, sursele și descărcările cu SHA-256. Oradea are GeoJSON paginat în WGS84; v și after păstrează aceeași versiune, iar bbox selectează după caseta conturului. suitable_for_parcel_verdict=false și native_gis_export=false rămân explicite. Arad oferă vectorii 2024 în coordonate de planșă și legăturile către PUG-ul aprobat în 2026; interogarea geografică a vectorilor nepoziționați primește 409 geographic_position_unverified. Fișierele din downloads[].url au CORS, ETag, HEAD și descărcare pe intervale HTTP Range.

GET /api/v1/recuperari-pug/oradea/regulamente oferă controalele cod/tip din sursa publică. În obiectele geografice, regulation_url apare numai pentru un PDF consultabil confirmat, iar regulation_control_source_id păstrează identificatorul controlului independent. Asocierea este după cod și tip, declarată prin regulation_binding; nu certifică precizia conturului. plan.metadata_conflict din API-ul datelocale semnalează un stadiu diferit între registru și fișierul spațial, fără înlocuire automată.

Contractul 2026-10-06i adaugă opțional propunere.explicatie și amenajare, atât pe varianta aleasă cât și pe fiecare variantă. Amenajarea este o schemă separată de verificarea volumului: contract amenajare-teren/1, stare schematica sau necesita_proiect, geometrii pentru acces auto/pietonal, parcări și spațiu verde, măsurători orientative, ipoteze și lipsuri. Când se schimbă varianta, se schimbă și amenajarea selectată. Locurile tandem nu au acces independent; necesarul final rămâne de verificat.

Contractul 2026-10-07k adaugă opțional planse.planse[].rol pe planșa suprapunere: zonificare_peste_cadastru sau context_cadastral. Fără geometrie de zonificare, parcela, vecinii și clădirile sunt totuși desenate peste fundalul satelitar disponibil. Titlul și descrierea identifică acest context cadastral și precizează lipsa zonificării. gol=null arată că există un desen utilizabil; nu dovedește existența unui PUG/PUZ. Documentațiile aplicabile se verifică prin documentatiiParcela. Imaginea indisponibilă nu suprimă contururile cadastrale.

Contractul 2026-10-07l completează elementele de tip cladire din planșele cadastrale cu eticheta și ancora ex/ey. Eticheta păstrează referința cadastrală exactă, de exemplu 167630-C8; nu se generează coduri C1/C2 pentru clădiri fără referință. Poziția ancorei este în interiorul conturului vizibil. Referința identifică corpul din evidența ANCPI, fără deducții despre acte sau proprietari.

Contractul 2026-10-07m clarifică ipotezele volumului: retragerile nivelului retras pe toate fețele și plafonul de 60% din amprentă sunt alegeri prudente ale scenariului. RLU Liu/Lip, art. 10, cere retragerea spre stradă; plafonul de 60% din art. 16 se referă la mansardă. Geometriile și indicatorii calculați se păstrează.

POST /api/v1/insorire primește scena urbangis-scena/1, an (2000–2100), pasMinute (1 sau 5) și grila (1–8). Schema JSON și limitele sunt publice. Răspunsul insorire/1 include SHA-256 al scenei validate, ziua solstițiului, ore în Europe/Bucharest, pozițiile Soarelui, intervale înainte/după pe centrul fiecărui receptor, durate pe celulele suprafeței și încăperi asociate fără dublarea minutelor. Câmpul cadreUmbra adaugă contururi pe receptori la 09:00, 12:00 și 15:00, în coordonate s/t normalizate: existent, cuPropunere și umbraNoua. Procentele acestor cadre măsoară aria, separat de procentele punctelor grilei din cronologie. dimensiuni declară lățimea/înălțimea în metri. Corpurile cu opac=false nu obturează soarele; materialele și separarea sticlei de rame se confirmă explicit. Precizia, confirmările și excluderile rămân explicite. Limita este de 12 cereri/IP și 120 global la 15 minute. Scenele nu sunt păstrate și nu intră în cache-ul comun; limitele de 6 MB, 30.000 triunghiuri, 1.024 puncte și 1,5 milioane raze opresc calculul cu 413 sau 422, fără rezultat parțial. Scara, nordul sau geometria aproximativă nu sunt confirmate automat. Nu se emite un verdict juridic pentru încăperile de locuit.

Contractul 2026-10-06h adaugă opțional textAfisat și unghiGrade pe contextOsm.plansa.elemente[].eticheta. text păstrează numele complet; textAfisat folosește numai abrevieri de afișare Str./Bd./Al. unghiGrade este rotația SVG în grade, în intervalul −90…90, cu y în jos; în jsPDF se aplică unghiul opus. x/y reprezintă centrul textului lângă segmentul drept, cu baza verticală centrată. Folosiți textAfisat??text și unghiGrade??0; compatibil cu răspunsurile anterioare. Numele sunt selectate când încap înainte de curbe, fără suprapuneri și fără a acoperi terenul. Obiectele, denumirile sursă și geometriile drumurilor rămân integral în datele consultate.

În 2026-10-05g, contextOsm.plansa.elemente[].eticheta este opțională: text, x, y și sursa=OSM, numai pe un drum care declară acel nume. Coordonatele sunt cele ale planșei, în metri cu y negativ; numele sunt selectate pentru lizibilitate, fără suprapuneri. În 3D, frontStradal.nume și sursa păstrează sensul lor anterior, din OSM și selecția geometrică. Câmpurile noi numeAfisat, sursaNume și referintaNume declară separat numele din adresa cadastrală eTerra, folosit doar la frontul sugerat neambiguu când drumul OSM nu are nume. Nu transferați un nume către o altă latură; sursa numelui nu confirmă geometria ori accesul public.

Din contractul 2026-10-05b, elementele pugdoc ale planșei documentatii din răspunsul complet includ document: id, tip, titlu, hcl, dataAprobarii, valabilPana, stare, faza, url și intersecteazaTeren. Identitatea documentației este distinctă de codul UTR. Ilustrația 3D adaugă opțional frontStradal (latură, nume, osmId și sursă), axul drum din OSM, anvelopa, detalii grafice și cote pentru corp/total. Câmpurile sunt aditive; numele OSM se leagă numai de latura aleasă și nu confirmă accesul public.

GET /api/v1/uat/54975/documentatii servește catalogul localității. GET /api/v1/context-osm?lng=23.6&lat=46.77&raza=500 servește cele patru categorii OSM, GeoJSON și planșa SVG, fără cheie. Raza acceptată este 50–1.000 m; referinta precizează punctul sau conturul folosit, listaTrunchiata anunță limita de 201 obiecte pe categorie.

Contractul fișei 2026-10-05c adaugă pe contextOsm.plansa.elemente câmpurile opționale osmId, dimensiune și prezentare (label, color, symbol, dash, width în mm la tipărire și opacity). Ele păstrează aceeași denumire și același simbol pe hartă și în legenda raportului, separând drumurile, calea ferată, apa și instalațiile electrice. Tipurile și etichetele originale rămân în obiecte; clasificarea nu confirmă statutul juridic sau branșarea.

Contractul 2026-10-05d adaugă identificare.parcela.sincronizare: ultimaReusitaLa și ultimaListaCompletaLa, pe SIRUTA și TERENURI_ACTIVE, numai din rulări done fără incomplet; actualizatLa rămâne data modificării rândului. propunere.orientare.constructiiPeContur păstrează toate suprapunerile de suprafață și adaugă pozitie (margine/interior/nedeterminata), suprapunereInteriorMp, bandaMargineM și centruInParcela. Banda de 1 m este o convenție de citire, nu toleranță cadastrală sau retragere. numarConstructiiCadastrale descrie copia consultată. Planșele pot avea denumireLegenda, din același cod/strat/UAT cu denumire unică, și autorizare: numar, dataEmiterii, expirare, provenientaExpirare și valabilitateLuni. Autorizările și numărătorile includ numai acte cu număr și dată de emitere; o dată calculată nu confirmă valabilitatea juridică. Câmpurile sunt aditive.

Contractul 2026-10-05e adaugă vecinatatiConstructii în fișa full complet și în propunere: stare, parceleVecine, cladiri, cadastru.ultimaSincronizareLa pe CLADIRI_ACTIVE, osm.extrasLa și listaTrunchiata. Fiecare clădire are sursa ANCPI/OSM, cadastralRef, parcelaVecinaCad, laturi numerotate de la zero, geometrie, pozitieLimita (pe_limita/retrasa/neprecizata) și distantaLimitaM. OSM este folosit numai pe parcele vecine fără contururi cadastrale de clădiri; poziția și distanța față de limită rămân neprecizate pentru OSM. asociereLimiteM=0,02 servește numai la asocierea contururilor aproape coincidente, fără mutarea clădirii pe limită. Contextul OSM din fișă declară selectieCladiri=completare_cadastru; API-ul separat păstrează osm_integral. Suprapunerile OSM brute rămân în orientare.constructiiPeContur, cu areCladiriCadastralePeParcelaAsociata; o suprapunere marginală sau un contur acoperit de evidența cadastrală nu trebuie afișat ca observație despre o clădire pe limită. Nu se deduce un calcan sau o parcelă liberă din lipsa datelor.

POST /api/v1/propunere-teren primește JSON cu siruta, cad, laturaStrada și laturaSpate (indici de la zero din propunere.laturi), plus confirmari: terenLiber, aliniamentVariabil, faraCalcane, accesDirectPublic, parcelaUrbanistica, faraArboriAfectati. Fiecare declarație este booleană. Câmpul opțional varianta acceptă compacta, echilibrata sau extinsa; implicit se selectează extinsa, pentru compatibilitate. Răspunsul păstrează starea, ipotezele, sursa și verificările necesare. Starea generata include trei variante cu geometrie, măsurători, regim și ilustrație SVG. variantaSelectata identifică alegerea, iar amprenta, nivelRetras, masuratori și ilustrare3d de la nivelul principal corespund aceleiași variante. Varianta compacta este P+1, la 8 m, cu nivelRetras null; celelalte sunt P+1+R, până la 12 m. anvelopa poate exista și dacă nu este găsit un volum valid. Ilustrația este schematică, fără scară; cornișa și înălțimea totală se aplică simultan. Suprafața desfășurată este brută, nu utilă. sursa.sha256 păstrează amprenta copiei consultate; sha256Reguli identifică articolele verificate fără timestamp-ul editorial istoric cunoscut. O stare cu lipsuri este un rezultat de analiză, nu o permisiune. Corpul este limitat la 5 KB. Endpointul este public, cu limitare de rată și fără memorarea răspunsului.

Terminologia suprafețelor: capacitate.amprentaMaxPotMp este plafonul de suprafață construită la sol calculat din POT; capacitate.adcMaxCutMp este plafonul de suprafață desfășurată calculat din CUT. În fiecare variantă, masuratori.amprentaMp reprezintă suprafața construită la sol, iar masuratori.adcScenariuMp reprezintă suprafața desfășurată a scenariului. POT = suprafața construită la sol / suprafața terenului × 100; CUT = suprafața desfășurată luată în calcul / suprafața terenului. Suprafața desfășurată însumează suprafețele construite ale nivelurilor luate în calculul CUT, cu excepțiile prevăzute de lege și regulament. Valorile sunt brute; suprafața utilă se stabilește prin proiect. Numele câmpurilor și calculele sunt păstrate.

Prescripțiile detaliate Ord. 904 apar în zonificareOrd904Completa.zone[].prescriptii, legate strict de document și codul subzonei: parcela, aliniament, limiteParcela, pozitionareCladiri, acces, stationare, spatiiVerzi, echipareEdilitara și docSha256. Un text lipsă sau ambiguu nu devine regulă executabilă.

Inventare de control și verificarea dotărilor

GET https://pug.digital/api/v1/dotari-audit?siruta=54975
GET https://pug.digital/api/v1/dotari-audit?domeniu=farmacie&stare=de_verificat&pagina=1

Public fără cheie, contract dotari-audit/2. siruta este codul UAT; omiterea selectează nivelul național. domeniu acceptă educatie, transport, parc, joaca, sport, cultura, sanatate sau farmacie; omiterea selectează toate. stare acceptă toate, de_verificat sau pozitionate; pagina începe la 1, cu maximum 100 de înregistrări și total explicit. Sumarul pe surse păstrează toate înregistrările selecției, separat de filtrul listei. Legăturile de hartă sunt reverificate în loturile curente. Câmpul aditiv verificareAdreseMultiple păstrează adresele consultate, sursa fiecăreia, originea, contradicțiile și numărul adreselor cu poziție curentă; nu numără sedii fizice. Reviziile sunt raportate prin reviziiAdreseMultiple. deVerificat este reuniunea înregistrărilor fără poziție, cu mențiuni de activitate sau cu adrese multiple parțiale ori contradictorii; acestea rămân în filtrul de_verificat chiar dacă unele adrese sunt deja pe hartă. dePozitionat păstrează sensul anterior, înregistrări fără nicio legătură curentă. Completitudinea sediilor reale rămâne neconfirmata. Acoperirea este măsurată față de sursele listate; numărul sediilor distincte confirmate în teren rămâne null, nu zero. Intrările nu sunt confirmate. Lipsa unui inventar întoarce fara_inventar_de_control, fără verdict despre lipsa dotărilor. ETag/304, cache 60 s, CORS/OPTIONS și aceleași limite de rată ca dotari-harta; 400, 429 și 503 explicite. Pagina publică: verificarea dotărilor.

Catalog comun de dotări pentru hartă

Adresa poate avea o sursă distinctă de registrul instituției, prin adresa.sursaUrl. Identitățile MS–OSM verificate păstrează reperul municipal adresa_oficiala, fără a-l numi contur OSM ori a-i atribui ediția OSM. Un osmRef publicat este folosit pentru eliminarea dublurii numai în copia OSM cu aceeași amprentă verificată; numele sau distanța singure nu unesc obiecte.

GET https://pug.digital/api/v1/dotari-harta?bbox=23.58,46.75,23.62,46.78
GET https://pug.digital/api/v1/dotari-harta?bbox=23.58,46.75,23.62,46.78&categorii=transport,farmacie,administratie

GeoJSON public fără cheie, contract dotari-harta/1, cu bbox=vest,sud,est,nord în WGS84. Cadrul este limitat la 36 km² și 1.000 de obiecte; depășirea întoarce stare=restrange_cadrul și lista goală, fără trunchiere ascunsă. categorii filtrează identificatorii din catalog; omiterea cere toate categoriile. Funcționează și fără PUG ori parcelă cadastrală. Fiecare punct include identitate, amplasamentId, unitateId/sediuId când sunt cunoscute, categorii, grupa/culoare, adresa cu starea publicata/nepublicata, sursa și pozitionare separate, niveluriPublicate și liniile GTFS. Coordonatele GeoJSON sunt WGS84; punct3844 este în Stereo70. Adresa publicată nu este certificată ca integral verificată, iar intrareConfirmata rămâne false.

Registrele au prioritate numai prin legături explicite de identitate; dublurile de stații sunt eliminate cu regula GTFS. Identitățile instituțiilor co-localizate rămân distincte. Centroizii de localitate și sediile fiscale ale furnizorilor medicali sunt excluse. Sursele și legendele sunt incluse în răspuns. ETag slab, 304, memorare 60 de secunde, CORS/OPTIONS inclusiv pentru erori; maximum 300 de cereri/IP și 5.000 global la 15 minute, cu 429/Retry-After și 503 când garda sau sursele sunt indisponibile. Catalogul poate fi consumat de mai multe aplicații fără copii și geocodări separate.

Dotări localizate lângă o parcelă

Contractul listei este 2026-10-12c. pozitionare identifică separat reperul și sursa poziției; conturDisponibil arată că există un contur OSM sau un contur public al amplasamentului. Coordonatele publicate de furnizor și reperele din nomenclatorul municipal rămân distincte; transport păstrează mijloacele și liniile GTFS. Precizia în metri și intrarea nu sunt confirmate.

Circumscripția școlară pentru o adresă

GET https://pug.digital/api/v1/circumscriptie-scolara?siruta=54975&strada=Strada%20%C8%98tefan%20Luchian
GET https://pug.digital/api/v1/circumscriptie-scolara?siruta=54975&strada=Calea%20Turzii&numar=140

Public, cu aceleași limite de rată ca fișa; o cheie ridică limita. Parametri: siruta al UAT, strada, numar opțional. Contract circumscriptie-scolara/1: identificata_pentru_adresa, numar_necesar, verificare_document, alta_editie, neidentificata_in_date, sursa_neacoperita sau adresa_lipsa. 400 pentru parametri invalizi, 429 la limită, 503 la indisponibilitate. Secțiile și limbile sunt separate; școala cea mai apropiată nu este automat școala de circumscripție. Nu returnează un poligon dedus de arondare.

Suprafețe asociate arondărilor pe adrese

GET https://pug.digital/api/v1/circumscriptii-zone?siruta=54975&bbox=23.6015,46.7503,23.6035,46.7515
GET https://pug.digital/api/v1/circumscriptii-zone?siruta=54975&bbox=23.6144,46.7556,23.6164,46.7576&limba=Limba%20rom%C3%A2n%C4%83
GET https://pug.digital/api/v1/circumscriptii-acoperire

Contract circumscriptii-zone/1. Filtrele siruta, bbox, limba și circumscriptie au aceeași semnificație ca la harta adreselor. Cluj-Napoca: contururi ANCPI active asociate reperelor municipale RENNS, maximum 4 km² / 800 parcele. Toate adresele din fiecare contur sunt comparate înaintea filtrului pe școală, inclusiv cele din afara cadrului. features sunt poligoane GeoJSON; properties include cadastralRef, adrese cu proveniență și poziție, arondari și starea concordanta/conditii/adrese_diferite/date_incomplete/pozitie_neclara. Rezumatul stă în sumar. O parcelă cu adrese contradictorii sau lipsă nu este promovată drept concordantă. limitaGisOficiala=false; metoda=parcele_cu_adrese_municipale. Starea doar_adrese indică un UAT fără suprafețe municipale verificabile; punctele OSM nu devin automat suprafețe. restrange_cadrul nu livrează rezultate trunchiate. Contururile sunt citite la fiecare cerere; anul școlar și amprenta registrului sunt verificate. Data sincronizării ANCPI din surse este distinctă de data generării lotului. Cota este 120/15 min/IP și 1.500/15 min global, cu CORS, OPTIONS și ETag/304.

Acoperirea națională este explicită în circumscriptii-acoperire/1: cele 42 de inspectorate, starea colectării, nota sursei, anii școlari și numărul înregistrărilor. „Date prelucrate” nu certifică acoperirea tuturor localităților ori adreselor. Data registrului este data evidenței noastre. Câmpul aditiv ultimaVerificare separă momentul ultimei încercări, rezultatul și SHA-256 ale documentelor de actualizatLa. Un eșec păstrează înregistrările anterioare. Câmpurile aditive cuDocumenteVerificate și consultare separă verificările reușite de publicațiile încă neprelucrate; dovadaEditiei din documente leagă anul de conținut ori de publicația oficială cu SHA-256. Pentru ISMB, format=copie_platforma arată că SHA-256 privește copia verificată a catalogului și a tuturor fișelor, fără momentul citirii; verificareIncrucisata arată numărul fișelor și al mențiunilor comparate cu întregul catalog, plus catalogStabil. Pentru Ialomița, format=transcriere_scanare și transcriereVerificata declară SHA-256 al transcrierii revizuite, numărul paginilor, al listelor școlare, al rândurilor sursă și al celulelor comune. SHA-256 principal privește PDF-ul original. Condițiile complexe rămân de verificat; celulele comune nu atribuie blocurile unor străzi prin presupunere. O listă goală nu este o declarație că școala nu are circumscripție. Cotă 120/15 min/IP și 1.500/15 min global, CORS și ETag/304.

Pentru Arad, transcriereVerificata adaugă listeTeritoriale, declaratiiFaraCircumscriptie, fragmenteTeritoriale și pozitiiPeFrontiera. Cele 805 poziții din liste produc 806 fragmente; cele 14 declarații fără circumscripție nu produc arondări teritoriale. Traseul limitei rămâne în textPublicat; părțile străzilor de frontieră și mențiunile din mai multe liste cer verificare. inregistrariCuLocalitateVerificata numără legăturile teritoriale documentare, separat de unitatiLegate din registrul școlar. unitateId poate rămâne null când identitatea SIIIR curentă nu este confirmată, fără a pierde lista oficială a localității. Această legătură nu reprezintă o poziție de școală sau o limită GIS urbană.

Circumscripții școlare pe hartă

Brăila rural și cele șapte publicații urbane Mureș folosesc același contract. Un rând sursă care numește mai multe localități sau secții produce proiecții distincte, cu textul comun păstrat; grupuriScolare nu reprezintă un inventar de clădiri. transcriereVerificata.randuriCuCelulaComuna numără pozițiile care împart celule. La verificarea după adresă, parametrul opțional localitate precizează satul ori orașul din UAT; lipsa localității nu produce o atribuire necondiționată pentru regulile care acoperă un sat întreg. Dovada teritorială nu confirmă identitatea SIIIR ori poziția școlii; unitateId poate rămâne null.

GET https://pug.digital/api/v1/circumscriptii-harta?siruta=54975
GET https://pug.digital/api/v1/circumscriptii-harta?siruta=54975&bbox=23.60,46.75,23.62,46.76
GET https://pug.digital/api/v1/circumscriptii-harta?siruta=55062

Contract circumscriptii-harta/1. Fără bbox primiți catalogul, selecția și întinderea comunală, când există. Pentru adrese, bbox este WGS84 și are cel mult 36 km²; cel mult 1.500 de repere. Depășirea produce restrange_cadrul cu features gol, fără trunchiere. Filtre opționale: limba, circumscriptie (ID-ul rândului de arondare din selectie.scoli, nu ID-ul SIIIR). catalog are rezumatele localităților; selectie.scoli păstrează școala, limba, alternativa, numărul reperelor și cadrul lor. features este GeoJSON de puncte de adresă; fiecare include sursa poziției, data preluării, starea și arondari cu fragmentPublicat, sursaUrl și condițiile de verificat. zone conține suprafețe comunale, cu regula ISJ și conturul ANCPI identificate separat. limitaGisOficiala=false: acestea nu sunt limite GIS publicate de inspectorat. OSM este orientativ. Adresele nu atribuie automat arondarea unei parcele sau intrări.

Stări: disponibil, restrange_cadrul, fara_adrese, sursa_neacoperita, alta_editie, sursa_actualizata. Ultimele două nu livrează geometria veche ca arondare curentă. lotId, generatLa și amprentaArondari identifică proiecția publicată; amprenta privește registrul prelucrat, nu fișierul PDF original. 300 cereri/15 minute/IP și 5.000/15 minute global, cotă atomică, CORS, ETag/304, cache 60 s. 400 parametri invalizi, 429 cotă, 503 indisponibilitate. Harta publică.

GET https://pug.digital/api/v1/dotari-apropiate?siruta=136526&cad=113362

Același conținut ca dotariApropiate din fișa completă, servit singur, pentru cine are deja documentul și vrea doar pagina de dotări: cel mult 8 unități de învățământ și cultură cu amplasament precis, la cel mult 1.000 m de conturul parcelei ANCPI, ordonate după distanța cartografică în Stereo 70 până la contur. Fiecare rând are ref (D01..D08), id, denumire, categorie, sursa cu ediția registrului și data preluării, geocodare (adresa, osm, cadastru), osmId, distantaM, punct4326 și punct3844. Unitățile așezate în centrul localității nu se măsoară și nu apar; lista goală vine cu motiv (niciun registru nu are unități în UAT, niciuna nu are amplasament precis, sau niciuna la 1 km), iar o parcelă necunoscută primește 404 parcela_negasita. Treapta publică primește răspunsul întreg; cheia ridică limita de rată. Contractul: câmpul contract.

Perimetre ZCP din documentații digitale

GET https://pug.digital/api/perimetre-zcp?siruta=136526

Catalog public, contract 1.0, cu perimetre ZCP numite explicit în documentațiile digitale în vigoare. Fiecare sursă păstrează plan_id, siruta, uat, county, plan_title, plan_type, hcl, approved_on, perimeter_name și perimeters. Un obiect protejat individual sau o propunere nu devine perimetru ZCP prin categoria ZRS32. Conversiile derivate din coduri UTR sunt excluse. La Carei, PUG și PUZ rămân surse separate, cu actele lor.

Prefixează tile_url cu https://pug.digital, păstrând variabilele șablonului de dale pentru MapLibre. Dalele MVT folosesc source_layer, între minzoom 12 și maxzoom 18; fiecare geometrie poartă documentația și actul. Folosește conturul distinct al ZCP peste limitele UTR continue. revision include versiunea selecției și marcajul datelor; un răspuns 409 cere un catalog nou, iar 503 indică indisponibilitatea copiei locale. no_verified_perimetersdescrie lipsa geometriei separate în această selecție. CORS este public, catalogul are 300 cereri/IP și 5.000 global într-o fereastră de 15 minute; dalele împart plafonul GIS de 3.000/IP și 50.000 global la 15 minute. 429 păstrează Retry-After.

Zonificările disponibile pentru un geoportal

utr_zoom_tiles acoperă modelul local, iarzonificare_zoom_tiles documentațiile digitale standardizate. Copiile portalurilor GIS sunt inventariate prin/api/urbanism-public?siruta=, cu versiunile și rolurile straturilor. Dalele de zonificare păstrează cod_zf pentru paleta comună și codul original pentru regulament. Marcajele publice vin prin/api/tiles-version. Catalogul și dalele copiei GIS au CORS. Un geoportal care citește doar modelul local nu acoperă toate localitățile cu date disponibile.

Limite și erori

Fără cheie: 30 de cereri pe minut, numărate pe adresa IP. Cu cheie: limita scrisă pe cheie, întoarsă în antetul X-Api-Rate-Limit. Peste limită primești 429 cu un mesaj care spune cât e plafonul.

Memorare: fișa se schimbă doar când se schimbă datele din spate (reîmprospătările nocturne), deci pe treapta publică răspunsul poartă Cache-Control: public, max-age=300, iar pe cea completă private, max-age=60. Orice răspuns are un ETag calculat peste date (câmpul generatLa nu intră în el); trimis înapoi în If-None-Match, primește 304 fără corp când datele nu s-au mișcat. Un 304 scutește transferul, nu calculul: fișa se generează ca să i se cunoască amprenta.

Erorile vin ca obiect cu eroare (un cod stabil, de citit de program) și mesaj (o propoziție de arătat omului). Codurile: parametri_lipsa, in_afara_tarii, siruta_invalid, cadastral_invalid (400); parcela_negasita (404); limita_de_rata (429); sursa_indisponibila, generare_esuata (503).

O sursă externă căzută nu se maschează în „nu există nimic aici”: starea ei apare explicit în răspuns. De exemplu, hărțile de hazard la inundații se interoghează live la fiecare cerere, iar câmpul disponibil spune dacă au răspuns. La fel panta, care are trei stări distincte: estimată, în afara acoperirii, indisponibilă. Tot așa și clasa europeană de susceptibilitate la alunecări: clasificat, în afara acoperirii, indisponibilă.