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.
Parametri de interogare
YYYY-MM-DD.
ex. 2024-01-01
YYYY-MM-DD.
ex. 2024-03-31
perioada (implicit) sau brut.
perioadabrut
medie. Restul: min, max, ultima. Contează doar pentru seriile mai fine decât numitorul comun.
medieminmaxultima
/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 cuultima— aceleaşi date, alt grafic.serii[].agregataspune exact care serie a fost comprimată şi din câte puncte. aliniere=brutnu potriveşte nimic: fiecare serie îşi păstrează punctele exact cum sunt publicate, cu ancorarea lor originală. Atunci răspunsul n-areranduri, ciserii[].valori.- Codurile nu se ghicesc. ROBOR pe 3 luni nu e
ROBOR3M, eBBZ_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
aliniere=perioada.
true când seria a fost comprimată la numitorul comun.
2026-01-15, 2026-01, 2026-T1, 2026-S1 sau 2026.
null = seria n-a publicat în perioada aceea.
aliniere=brut.
aliniere=brut.
Exemple de răspuns
{
"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"
}
}
{
"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"
}
}
{
"data": {
"de_la": "2024-01-01",
"pana_la": "2024-03-31",
"aliniere": "perioada",
"periodicitate": "zilnic",
"agregare": "max",
"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
| Cod | Slug | Când apare |
|---|---|---|
| 401 | neautentificat | Token lipsă, invalid, expirat sau revocat. |
| 403 | feature_indisponibil | Planul curent nu include funcţia de care ţine ruta. |
| 404 | nu_e_serie_temporala | Codul 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. |
| 422 | nu_e_serie_de_timp | 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. |
| 429 | cota_depasita | Cota 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."
]
}
}
}