oneapi
Autentificare
Financiar v1 / Serii

Serii comparate

Două până la cinci serii din orice familie, pe acelaşi interval, aliniate pe perioadă. E
singurul loc din modul unde datele se amestecă liber: ROBOR lângă un agregat de risc de credit,
curs lângă inflaţie.

Alinierea se declară, nu se presupune — e chiar motivul rutei. Catalogul are 2.492 de serii
lunare, 1.806 trimestriale, 1.359 anuale şi 177 zilnice, iar fiecare familie e ancorată la începutul
perioadei ei. O serie trimestrială pusă naiv lângă una zilnică apare ca patru puncte pe an,
toate în ianuarie, aprilie, iulie şi octombrie, cu gol între ele.

Numitorul comun e cea mai GROSIERĂ periodicitate cerută, niciodată cea mai fină: coborârea ar
cere inventarea valorilor lipsă — repetarea unei cifre trimestriale peste nouăzeci de zile ca şi cum
ar fi fost măsurată în fiecare. Urcarea cere doar o funcţie de agregare, iar funcţia se declară:
aceleaşi date agregate cu medie sau cu ultima dau grafice diferite. serii[].agregata spune
exact care serie a fost comprimată.

aliniere=brut nu potriveşte nimic: fiecare serie îşi păstrează punctele exact cum sunt publicate.

Codurile nu se ghicesc. ROBOR pe 3 luni nu e ROBOR3M, e BBZ_BOR3M — un cod inexistent
primeşte 404 cu sugestii din catalog, căutate şi în cod, şi în denumire.

Descriptorii de registre sunt refuzaţi explicit: 45 de „serii" poartă periodicitatea
* necunoscut şi au 11 valori cu totul — sunt câmpuri de registru (REMO_STARE, RFSO_ADR), nu serii
* de timp. Cerute aici, ar produce o coloană goală care arată ca o lipsă de date.
*
* În tabelul aliniat, null înseamnă „seria n-a publicat în perioada asta", nu zero.

GET
https://oneapi.ro/api/financiar/v1/serii/comparat

Parametri de interogare

NumeTipDescriereValori acceptate
de_laobligatoriu string Obligatoriu, YYYY-MM-DD. ex. 2024-01-01
pana_laopțional string | null Opţional, YYYY-MM-DD. ex. 2024-03-31
aliniereopțional string | null Opţional: perioada (implicit) sau brut. perioadabrut
agregareopțional string | null Opţional, implicit medie. Restul: min, max, ultima. Contează doar pentru seriile mai fine decât numitorul comun. medieminmaxultima
seriilistăopțional text Obligatoriu, între 2 şi 5 coduri separate prin virgulă. Codurile sunt cele din catalog (/financiar/v1/serii), nu denumirile. ex. BBZ_BOR3M,BBZ_BID3M

Cum se comportă

  • Două până la cinci serii din orice familie, pe acelaşi interval, aliniate pe perioadă. E singurul loc din modul unde datele se amestecă liber: ROBOR lângă un agregat de risc de credit, curs lângă inflaţie.
  • Alinierea se declară, nu se presupune — e chiar motivul rutei. Catalogul are 2.492 de serii lunare, 1.806 trimestriale, 1.359 anuale şi 177 zilnice, iar fiecare familie e ancorată la începutul perioadei ei. O serie trimestrială pusă naiv lângă una zilnică apare ca patru puncte pe an, toate în ianuarie, aprilie, iulie şi octombrie, cu gol între ele.
  • Numitorul comun e cea mai GROSIERĂ periodicitate cerută, niciodată cea mai fină: coborârea ar cere inventarea valorilor lipsă — repetarea unei cifre trimestriale peste nouăzeci de zile ca şi cum ar fi fost măsurată în fiecare. Urcarea cere doar o funcţie de agregare.
  • Funcţia contează, deci se declară. ROBOR 3M în ianuarie 2026 dă 5,978333 cu medie şi 5,87 cu ultima — aceleaşi date, alt grafic. serii[].agregata spune exact care serie a fost comprimată şi din câte puncte.
  • aliniere=brut nu potriveşte nimic: fiecare serie îşi păstrează punctele exact cum sunt publicate, cu ancorarea lor originală. Atunci răspunsul n-are randuri, ci serii[].valori.
  • Codurile nu se ghicesc. ROBOR pe 3 luni nu e ROBOR3M, e BBZ_BOR3M. Un cod inexistent primeşte 404 cu sugestii căutate şi în cod, şi în denumire — ROBOR3M întoarce toate cele opt serii ROBOR.
  • Descriptorii de registre sunt refuzaţi explicit: 45 de „serii" poartă periodicitatea necunoscut şi au 11 valori cu totul — sunt câmpuri de registru (REMO_STARE, RFSO_ADR), nu serii de timp. Cerute aici, ar produce o coloană goală care arată ca o lipsă de date.
  • În tabelul aliniat, null înseamnă „seria n-a publicat în perioada asta", nu zero.
  • Tabelul e plafonat la 1.000 de rânduri: două serii zilnice pe şase ani ar da 1.666, iar răspunsul n-ar mai fi citit, ci descărcat.

La ce folosește

  • Un grafic cu serii din familii diferite, deja aliniate.
  • Verificarea unei corelaţii între un indice de dobândă şi un agregat monetar.
  • Extragerea unui tabel gata de pus într-un raport, fără alinierea făcută de mână.

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.aliniere string
data.periodicitate string Numitorul comun — cea mai grosieră dintre periodicităţile cerute. Doar la aliniere=perioada.
data.agregare string
data.serii[].cod string Codul din nomenclatorul sursei — cheia pe care se filtrează.
data.serii[].nume string Numele, aşa cum îl publică sursa.
data.serii[].clasa string Clasa din clasificare — nivelul cel mai detaliat.
data.serii[].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.serii[].periodicitate string
data.serii[].puncte_sursa integer Câte puncte are seria în interval, înainte de agregare.
data.serii[].agregata boolean true când seria a fost comprimată la numitorul comun.
data.serii[].acoperire object Intervalul întregii serii, dincolo de cel cerut.
data.serii[].acoperire.de_la string Începutul intervalului acoperit.
data.serii[].acoperire.pana_la string Sfârşitul intervalului acoperit, inclusiv.
data.randuri[].perioada string Eticheta perioadei: 2026-01-15, 2026-01, 2026-T1, 2026-S1 sau 2026.
data.randuri[].valori object Câte o valoare pe cod. null = seria n-a publicat în perioada aceea.
data.randuri[].valori.BBZ_BOR3M string
data.randuri[].valori.BBZ_BID3M string
meta.sursa string Sursa oficială din care vin datele, cu licenţa ei acolo unde e cerută.
meta.randuri integer
meta.puncte_sursa integer
meta.nota_aliniere string Precizare despre cum se citeşte răspunsul: o capcană, o convenţie sau o limită a sursei.
meta.nota_agregare string Precizare despre cum se citeşte răspunsul: o capcană, o convenţie sau o limită a sursei.
meta.nota_null string De ce lipsesc unele valori: sursa nu le-a publicat, nu le-a calculat ori le-a suprimat.
meta.nota_ancorare string Precizare despre cum se citeşte răspunsul: o capcană, o convenţie sau o limită a sursei.
meta.catalog string
data.periodicitati Periodicităţile prezente, la aliniere=brut.
data.serii[].valori Punctele brute, doar la aliniere=brut.

Exemple de răspuns

GEThttps://oneapi.ro/api/financiar/v1/serii/comparat?serii=BBZ_BOR3M,BBZ_BID3M&de_la=2024-01-01&pana_la=2024-03-31
{
    "data": {
        "de_la": "2024-01-01",
        "pana_la": "2024-03-31",
        "aliniere": "perioada",
        "periodicitate": "zilnic",
        "agregare": "medie",
        "serii": [
            {
                "cod": "BBZ_BOR3M",
                "nume": "ROBOR 3 luni",
                "clasa": "ROBID - ROBOR - serii zilnice",
                "unitate": "% p.a.",
                "periodicitate": "zilnic",
                "puncte_sursa": 62,
                "agregata": false,
                "acoperire": {
                    "de_la": "1995-08-01",
                    "pana_la": "2026-09-21"
                }
            }
        ],
        "randuri": [
            {
                "perioada": "2024-01-03",
                "valori": {
                    "BBZ_BOR3M": "6.21",
                    "BBZ_BID3M": "5.92"
                }
            }
        ]
    },
    "meta": {
        "sursa": "BNR — baza de date interactivă.",
        "randuri": 62,
        "puncte_sursa": 124,
        "nota_aliniere": "Numitorul comun e cea mai GROSIERĂ periodicitate cerută. Coborârea către cea mai fină ar cere inventarea valorilor lipsă, deci nu se face. `serii[].agregata` spune care serie a fost comprimată.",
        "nota_agregare": "Funcţia contează: aceleaşi date agregate cu `medie` sau cu `ultima` dau grafice diferite. De aceea e declarată, nu implicită tăcut.",
        "nota_null": "În `randuri`, `null` înseamnă „seria n-a publicat în perioada asta\", nu zero.",
        "nota_ancorare": "Fiecare familie e ancorată la începutul perioadei ei: anualele pe 1 ianuarie, trimestrialele pe prima zi a trimestrului, lunarele pe întâi.",
        "catalog": "/financiar/v1/serii"
    }
}

Coduri de eroare

CodSlugCând apare
401neautentificatToken lipsă, invalid, expirat sau revocat.
403feature_indisponibilPlanul curent nu include funcţia de care ţine ruta.
404nu_e_serie_temporalaCodul există, dar e câmp de registru; înregistrările lui sunt la /registre. serie_retrasa — clasa codului e retrasă din API fiindcă valorile publicate de sursă nu sunt observaţii; detalii.coduri[].motiv spune de ce.
422nu_e_serie_de_timpCodul e un descriptor de registru. prea_multe_randuri — tabelul ar depăşi 1.000 de rânduri. Sub două serii, peste cinci, sau parametri în afara listelor. serie_inexistenta — unul dintre coduri nu e în catalog; răspunsul dă sugestii.
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": "nu_e_serie_de_timp",
        "mesaj": "Codul e un descriptor de registru. prea_multe_randuri — tabelul ar depăşi 1.000 de rânduri. Sub două serii, peste cinci, sau parametri în afara listelor. serie_inexistenta — unul dintre coduri nu e în catalog; răspunsul dă sugestii.",
        "detalii": {
            "de_la": [
                "Valoarea trimisă nu respectă regula parametrului."
            ]
        }
    }
}