oneapi
Autentificare
Financiar v1 / RiscCredit

Poziţia investiţională internaţională

Stocul de active şi pasive externe ale României, trimestrial din 2007 — 51 de poziţii pe patru
niveluri. În ultimul trimestru: active 166.182, pasive 333.943, poziţia netă −167.761 milioane euro.

Perioadele sunt trimestre, cu data de referinţă explicită. Sursa etichetează trimestrul cu luna
lui de început, dar valoarea e stocul de la sfârşitul lui. Verificat pe activele de rezervă faţă de
rezervele lunare: comparate pe eticheta proprie, zero trimestre se potrivesc, cu abateri
de până la 5.274 milioane de euro; decalate cu două luni, se potrivesc toate 77. Fiecare perioadă
poartă data_referinta şi luna_sursa, iar cheile din valori sunt trimestre.

Activele şi pasivele nu sunt simetrice — 22 de poziţii comune, trei doar pe active (activele de
rezervă, aurul monetar, rezerva valutară) şi una doar pe pasive (alocările de DST). Nu e o matrice
latură × poziţie ca la balanţa de plăţi.

Toleranţa fiecărei identităţi e derivată, nu aleasă. Sursa publică milioane întregi, deci o
identitate cu k componente are eroarea de rotunjire mărginită de ⌊(k+1)/2⌋. Cu regula asta 17
din 18 identităţi se închid pe toate trimestrele; descompunerea pasivelor iese cu 3 într-un singur
trimestru, raportat în unde în loc să fie acoperit prin lărgirea toleranţei.

GET
https://oneapi.ro/api/financiar/v1/pozitie-investitionala

Parametri de interogare

NumeTipDescriereValori acceptate
de_laopțional string | null Opţional, YYYY-Tn sau YYYY-MM. O lună se rotunjeşte la trimestrul care o conţine, iar perioade arată exact ce a ieşit. ex. 2024-06-15
pana_laopțional string | null Opţional, YYYY-Tn sau YYYY-MM. ex. 2024-06-15ex. 2024-06-30
laturaopțional string | null Opţional: net, active, pasive. netactivepasive
nivel_maxopțional integer | null Opţional, 1–4. Limitează adâncimea arborelui. 1 – 4

Cum se comportă

  • Stocul de active şi pasive externe ale României, trimestrial din 2007 — 51 de poziţii pe patru niveluri. În 2026-T1: active 166.182, pasive 333.943, poziţia netă −167.761 milioane euro.
  • Perioadele sunt trimestre, cu data de referinţă explicită — şi asta contează. Sursa etichetează trimestrul cu luna lui de început, dar valoarea e stocul de la sfârşitul lui. Verificat pe activele de rezervă faţă de rezervele lunare: comparate pe eticheta din sursă, niciun trimestru nu se potriveşte, cu abateri de până la 5.274 milioane de euro; decalate cu două luni, se potrivesc toate, cu abatere maximă 0,5 — rotunjirea, fiindcă aici valorile sunt milioane întregi iar rezervele au zecimale.
  • De aceea cheile din valori sunt trimestre (2025-T3), iar fiecare perioadă poartă data_referinta (2025-09-30) şi luna_sursa (2025-07), pentru cine face join înapoi în seria brută. Verificare live: activele de rezervă în 2025-T3 sunt 75.786, iar rezervele la 30 septembrie 2025 sunt 75.785,94.
  • La balanţa de plăţi trimestrială nu se pune problema: acolo sunt fluxuri, iar perioada chiar e trimestrul. Aici e stoc.
  • Activele şi pasivele nu sunt simetrice — 22 de poziţii comune, trei doar pe active (activele de rezervă, aurul monetar, rezerva valutară) şi una doar pe pasive (alocările de DST). Nu e o matrice latură × poziţie ca la balanţa de plăţi, deci fiecare latură îşi poartă propriul arbore.
  • Toleranţa fiecărei identităţi e derivată, nu aleasă. Toate cele 3.450 de valori ale clasei sunt milioane întregi — verificat, niciuna cu zecimale — deci fiecare cifră poartă cel mult o jumătate de milion eroare de rotunjire, iar o identitate cu k componente e mărginită de ⌊(k+1)/2⌋.
  • Cu regula asta se verifică 18 identităţi: net = active − pasive, descompunerea fiecărei laturi pe instrumente, şi termen scurt / termen lung pe fiecare. Şaptesprezece se închid pe toate trimestrele. A optsprezecea nu: pasivele în 2011-T3 sunt 136.750 faţă de o sumă de 136.753 — abatere 3 la o toleranţă de ±2. Toleranţa nu se urcă la 3 ca să „treacă"; abaterea se raportează în unde.
  • Identităţile se verifică pe toate poziţiile şi toate trimestrele ferestrei, indiferent de latura sau nivel_max — un filtru n-are voie să facă garanţia să dispară.
  • Toată istoria încape într-o singură cerere.

La ce folosește

  • Poziţia netă a României faţă de restul lumii, trimestru de trimestru.
  • Stocul de investiţii străine directe în România, pe participaţii şi datorie.
  • Datoria externă pe termen scurt faţă de rezerve — indicatorul de acoperire.

Structura răspunsului

CâmpTipDescriere
data.de_la string Începutul intervalului acoperit de răspuns.
data.pana_la string Sfârşitul intervalului acoperit de răspuns, inclusiv.
data.unitate string Unitatea de măsură a valorilor. Citeşte-o înainte de a le pune pe un grafic sau de a le aduna.
data.filtre array Filtrele aplicate efectiv, aşa cum le-a înţeles ruta — util când o valoare a fost normalizată.
data.perioade[].trimestru string Eticheta trimestrului, cum apare şi în cheile din valori.
data.perioade[].data_referinta string Momentul la care se referă stocul — ultima zi a trimestrului. Aici se face joncţiunea cu date lunare.
data.perioade[].luna_sursa string Luna cu care sursa etichetează trimestrul. Nu e momentul măsurării; e dată pentru join înapoi în seria brută.
data.pozitii[].cod string Codul din nomenclatorul sursei — cheia pe care se filtrează.
data.pozitii[].latura string net, active sau pasive.
data.pozitii[].eticheta string Eticheta afişabilă a valorii — versiunea citibilă a codului de alături.
data.pozitii[].cale array Calea ierarhică completă, cu tot cu segmentul de latură.
data.pozitii[].nivel integer Nivelul din ierarhia clasificării — cu cât e mai adânc, cu atât e mai detaliat.
data.pozitii[].parinte null Codul poziţiei-părinte. null la cele trei rădăcini.
data.pozitii[].unitate string Unitatea de măsură a valorilor. Citeşte-o înainte de a le pune pe un grafic sau de a le aduna.
data.pozitii[].trimestre_publicate integer Câte trimestre a publicat efectiv sursa.
data.pozitii[].valori object Valorile seriei, pe perioade.
data.identitati[].identitate string Identitatea verificată — ce sumă trebuie să dea ce total.
data.identitati[].total string
data.identitati[].componente array Componentele care se adună în total.
data.identitati[].toleranta string Derivată din numărul de componente, prin ⌊(k+1)/2⌋.
data.identitati[].trimestre_verificate integer Câte trimestre au intrat în verificare.
data.identitati[].trimestre_inchise integer Câte trimestre s-au închis în toleranţă.
data.identitati[].abatere_maxima string Cea mai mare abatere întâlnită între suma componentelor şi total.
data.identitati_neverificate array Câte identităţi n-au putut fi verificate, din lipsă de date pe una din laturi.
meta.sursa string Sursa oficială din care vin datele, cu licenţa ei acolo unde e cerută.
meta.acoperire.de_la string Prima perioadă pentru care avem date.
meta.acoperire.pana_la string Ultima perioadă pentru care avem date.
meta.trimestre integer Trimestrele pentru care există valori.
meta.pozitii_totale integer Câte poziţii se potrivesc filtrelor, dincolo de pagina curentă.
meta.pozitii_returnate integer Câte poziţii s-au întors efectiv în răspunsul ăsta.
meta.identitati_verificate integer
meta.identitati_inchise integer Câte identităţi s-au închis în toleranţă.
meta.nota_datare string Precizare despre cum se citeşte răspunsul: o capcană, o convenţie sau o limită a sursei.
meta.nota_laturi string Precizare despre cum se citeşte răspunsul: o capcană, o convenţie sau o limită a sursei.
meta.nota_identitati string Cum se citesc verificările de identitate din răspuns.
meta.nota_ierarhie string Cum se citeşte ierarhia clasificării şi ce niveluri nu se adună între ele.
meta.nota_null string De ce lipsesc unele valori: sursa nu le-a publicat, nu le-a calculat ori le-a suprimat.
data.pozitii[].parinte_corectat Prezent doar acolo unde denumirea din sursă contrazice codul şi s-a luat codul.
data.identitati[].unde Trimestrul care depăşeşte toleranţa, cu totalul şi suma componentelor. Absent când identitatea se închide peste tot.
data.identitati.neverificate Identităţile declarate pe care fereastra cerută nu le-a putut verifica, fiecare cu motivul: serie_inexistenta (sursa nu publică deloc componenta), nepublicata_in_fereastra (există, dar nu în intervalul ăsta) sau fara_perioada_completa (componentele există, dar nu simultan în nicio perioadă). Numărul verificat se schimbă cu fereastra, iar aici scrie de ce.
meta.fara_date data e null, iar aici stă motivul. Nu există valori de poziţie investiţională în bază. Intervalul e în întregime în afara acoperirii (2007-T1 → prezent). Se suprapune peste ea, dar n-are valori.
meta.fara_date_cod Cuvântul scurt şi STABIL al motivului, pentru clienţii care comută pe el în cod: fara_date e proză şi se poate reformula, ăsta nu.

Exemple de răspuns

GEThttps://oneapi.ro/api/financiar/v1/pozitie-investitionala
{
    "data": {
        "de_la": "2007-T1",
        "pana_la": "2026-T2",
        "unitate": "milioane EUR",
        "filtre": [],
        "perioade": [
            {
                "trimestru": "2007-T1",
                "data_referinta": "2007-03-31",
                "luna_sursa": "2007-01"
            }
        ],
        "pozitii": [
            {
                "cod": "PII6T_N",
                "latura": "net",
                "eticheta": "Poziţia netă",
                "cale": [
                    "Poziţia netă"
                ],
                "nivel": 1,
                "parinte": null,
                "unitate": "milioane EUR",
                "trimestre_publicate": 78,
                "valori": {
                    "2007-T1": "-42281",
                    "2007-T2": "-49074",
                    "2007-T3": "-54971",
                    "2007-T4": "-54305",
                    "2008-T1": "-57521",
                    "2008-T2": "-65081",
                    "2008-T3": "-68727",
                    "2008-T4": "-69090",
                    "2009-T1": "-69360",
                    "2009-T2": "-71797",
                    "2009-T3": "-73871",
                    "2009-T4": "-74814",
                    "2010-T1": "-77013",
                    "2010-T2": "-76388",
                    "2010-T3": "-78410",
                    "2010-T4": "-78995",
                    "2011-T1": "-83059",
                    "2011-T2": "-83314",
                    "2011-T3": "-82579",
                    "2011-T4": "-85558",
                    "2012-T1": "-85591",
                    "2012-T2": "-86012",
                    "2012-T3": "-86287",
                    "2012-T4": "-90628",
                    "2013-T1": "-89549",
                    "2013-T2": "-89642",
                    "2013-T3": "-89969",
                    "2013-T4": "-90640",
                    "2014-T1": "-88496",
                    "2014-T2": "-89960",
                    "2014-T3": "-88718",
                    "2014-T4": "-85967",
                    "2015-T1": "-86314",
                    "2015-T2": "-85772",
                    "2015-T3": "-85162",
                    "2015-T4": "-86480",
                    "2016-T1": "-85720",
                    "2016-T2": "-85304",
                    "2016-T3": "-88273",
                    "2016-T4": "-85989",
                    "2017-T1": "-88333",
                    "2017-T2": "-90647",
                    "2017-T3": "-90559",
                    "2017-T4": "-91177",
                    "2018-T1": "-93182",
                    "2018-T2": "-93679",
                    "2018-T3": "-96231",
                    "2018-T4": "-93335",
                    "2019-T1": "-93775",
                    "2019-T2": "-97596",
                    "2019-T3": "-99115",
                    "2019-T4": "-98940",
                    "2020-T1": "-92857",
                    "2020-T2": "-97341",
                    "2020-T3": "-100549",
                    "2020-T4": "-106419",
                    "2021-T1": "-105498",
                    "2021-T2": "-109358",
                    "2021-T3": "-109538",
                    "2021-T4": "-113368",
                    "2022-T1": "-114762",
                    "2022-T2": "-112430",
                    "2022-T3": "-110957",
                    "2022-T4": "-119327",
                    "2023-T1": "-119844",
                    "2023-T2": "-126557",
                    "2023-T3": "-127142",
                    "2023-T4": "-133106",
                    "2024-T1": "-134527",
                    "2024-T2": "-139450",
                    "2024-T3": "-147364",
                    "2024-T4": "-146006",
                    "2025-T1": "-149579",
                    "2025-T2": "-156146",
                    "2025-T3": "-162914",
                    "2025-T4": "-169560",
                    "2026-T1": "-167761",
                    "2026-T2": "-168202"
                }
            }
        ],
        "identitati": [
            {
                "identitate": "active = poziţia netă + pasive",
                "total": "PII6T_A",
                "componente": [
                    "PII6T_N",
                    "PII6T_P"
                ],
                "toleranta": "1",
                "trimestre_verificate": 78,
                "trimestre_inchise": 78,
                "abatere_maxima": "1"
            }
        ],
        "identitati_neverificate": []
    },
    "meta": {
        "sursa": "BNR — poziţia investiţională internaţională, metodologia BPM6.",
        "acoperire": {
            "de_la": "2007-T1",
            "pana_la": "2026-T2"
        },
        "trimestre": 78,
        "pozitii_totale": 51,
        "pozitii_returnate": 51,
        "identitati_verificate": 18,
        "identitati_inchise": 17,
        "nota_datare": "Valorile sunt stocuri la `data_referinta`, adică sfârşitul trimestrului — nu la `luna_sursa`, care e doar eticheta din sursă. Comparate pe etichetă cu date lunare, activele de rezervă ies cu până la 5.274 milioane de euro alături; decalate corect, se potrivesc pe toate trimestrele.",
        "nota_laturi": "Activele şi pasivele nu au aceleaşi poziţii: 22 comune, trei doar pe active (activele de rezervă, aurul monetar, rezerva valutară), una doar pe pasive (alocările de DST).",
        "nota_identitati": "17 din 18 identităţi se închid pe toate trimestrele. Toleranţa fiecăreia e derivată din numărul de componente — sursa publică milioane întregi, deci eroarea de rotunjire e mărginită de ⌊(k+1)/2⌋. Ce depăşeşte se raportează în `unde`, nu se acoperă lărgind toleranţa.",
        "nota_ierarhie": "`cale` şi `parinte` vin din denumire, verificate faţă de mnemonicul codului: 0 poziţii corectate. Mnemonicele se cuibăresc pe prefix de caractere (`IXNS` sub `IXN`), nu pe segmente despărţite de liniuţe.",
        "nota_null": "`null` într-un trimestru înseamnă că poziţia n-a fost publicată atunci, nu zero."
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
422validareinterval_prea_lung peste 80 de trimestre, latură în afara listei, sau nivel_max în afara intervalului 1–4.
429cota_depasitaCota lunară a planului a fost depăşită (vezi Retry-After).

Toate erorile au aceeași formă. eroare.cod e stabil și e cel după care trebuie să ramifici în cod — nu după textul din mesaj, care se poate schimba.

{
    "eroare": {
        "cod": "validare",
        "mesaj": "interval_prea_lung peste 80 de trimestre, latură în afara listei, sau nivel_max în afara intervalului 1–4.",
        "detalii": {
            "de_la": [
                "Valoarea trimisă nu respectă regula parametrului."
            ]
        }
    }
}