{
  "openapi": "3.1.0",
  "info": {
    "title": "eValuta API",
    "version": "2.0.0",
    "description": "Interogări punctuale în limba română pentru cursurile BNR. O cerere returnează un singur curs sau o singură valoare calculată. Toate valorile zecimale sunt șiruri JSON; «data» din răspuns este data publicației BNR folosite. Endpoint-urile REST acceptă și XML prin Accept: application/xml. Operațiile SOAP 1.1 sunt descrise separat în /api/soap.wsdl. Endpoint-urile /curs-bnr/azi/{valuta} și /curs-bnr/azi/strict/{valuta} expun explicit cursul BNR azi, cu sau fără fallback. Namespace-ul /convertor-valutar returnează o singură conversie RON/valută, curentă sau istorică. Conversiile pentru facturare D-1 și conversiile de azi cu sau fără fallback se află în același namespace /convertor-valutar. Namespace-urile /curs-bce și /curs-inforeuro returnează cotații normalizate în RON pentru fiecare unitate de valută. Namespace-urile /curs-vamal și /indici oferă un singur curs vamal sau o singură observație pentru fiecare solicitare. /indici/ircc/aplicabil selectează valoarea IRCC pentru perioada de aplicare. /inflatie și /inflatie/ipc returnează rata anuală și indicele IPC din seria INS. /banci returnează o cotație bancară pentru o bancă și valută."
  },
  "servers": [
    {
      "url": "https://evaluta.ro/api/v2",
      "description": "API eValuta v2"
    }
  ],
  "tags": [
    {
      "name": "Curs BNR",
      "description": "Cursuri oficiale BNR și valori derivate pe perioade încheiate."
    },
    {
      "name": "Convertor valutar",
      "description": "Conversii punctuale RON/valută folosind cursurile BNR."
    },
    {
      "name": "Curs BCE",
      "description": "Cursuri BCE normalizate în RON per unitate valutară."
    },
    {
      "name": "Curs InforEuro",
      "description": "Cursuri lunare InforEuro normalizate în RON per unitate valutară."
    },
    {
      "name": "Curs vamal",
      "description": "Curs vamal lunar calculat din publicația BNR corespunzătoare lunii de aplicabilitate."
    },
    {
      "name": "Indici de referință",
      "description": "IRCC, ROBID, ROBOR și EURIBOR cu maturitățile disponibile."
    },
    {
      "name": "Inflație",
      "description": "Rată anuală de inflație și indice IPC anual (INS), un indicator pentru o lună per cerere."
    },
    {
      "name": "Cursuri bancare",
      "description": "Cotații de cumpărare și vânzare pentru un singur tip de schimb în cont, o bancă și o valută."
    }
  ],
  "security": [
    {
      "BearerApiKey": []
    },
    {
      "HeaderApiKey": []
    }
  ],
  "paths": {
    "/curs-bnr/azi/{valuta}": {
      "get": {
        "tags": [
          "Curs BNR"
        ],
        "operationId": "cursBnrAzi",
        "summary": "API curs BNR azi, ultimul disponibil",
        "description": "Returnează ultimul curs BNR disponibil până astăzi (Europe/Bucharest), inclusiv. Înainte de publicarea cursului de azi, în weekend sau în alte zile fără publicație, se returnează ultimul curs anterior disponibil. Nu acceptă parametrul data. Echivalent cu /curs-bnr/{valuta} fără data.",
        "parameters": [
          {
            "$ref": "#/components/parameters/valuta"
          }
        ],
        "responses": {
          "200": {
            "description": "Un curs pentru valuta solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Curs"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/CursXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există o cotație pentru valuta sau perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "422": {
            "description": "Parametri invalizi sau perioadă neîncheiată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/curs-bnr/azi/strict/{valuta}": {
      "get": {
        "tags": [
          "Curs BNR"
        ],
        "operationId": "cursBnrAziStrict",
        "summary": "API curs BNR azi strict, doar cotația publicată astăzi",
        "description": "Returnează cursul numai dacă există o cotație BNR publicată cu data de astăzi (Europe/Bucharest) pentru valuta solicitată. Nu aplică fallback la publicații mai vechi și nu acceptă parametrul data. Înainte de publicarea cursului, în weekend sau în alte zile fără cotație datată astăzi, returnează 404 curs_azi_indisponibil.",
        "parameters": [
          {
            "$ref": "#/components/parameters/valuta"
          }
        ],
        "responses": {
          "200": {
            "description": "Un curs pentru valuta solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Curs"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/CursXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există curs BNR datat astăzi pentru valuta solicitată. Codul curs_azi_indisponibil indică lipsa publicației de azi.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                },
                "example": {
                  "error": "curs_azi_indisponibil"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                },
                "example": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<eroare><cod>curs_azi_indisponibil</cod></eroare>"
              }
            }
          },
          "422": {
            "description": "Parametri invalizi sau perioadă neîncheiată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/curs-bnr/{valuta}": {
      "get": {
        "tags": [
          "Curs BNR"
        ],
        "operationId": "cursBnr",
        "summary": "Cursul valutar disponibil",
        "description": "Fără data se folosește ziua curentă în România. Cu data se returnează ultimul curs BNR disponibil până la data solicitată, inclusiv, inclusiv în weekend sau sărbători.",
        "parameters": [
          {
            "$ref": "#/components/parameters/valuta"
          },
          {
            "$ref": "#/components/parameters/data"
          }
        ],
        "responses": {
          "200": {
            "description": "Un curs pentru valuta solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Curs"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/CursXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există o cotație pentru valuta sau perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "422": {
            "description": "Parametri invalizi sau perioadă neîncheiată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/curs-bnr/facturare/{valuta}": {
      "get": {
        "tags": [
          "Curs BNR"
        ],
        "operationId": "cursBnrFacturare",
        "summary": "Cursul pentru facturare D-1",
        "description": "data reprezintă data facturii, sau astăzi dacă lipsește. Se scade o zi calendaristică și se folosește ultimul curs BNR disponibil până la acea zi. Endpoint-ul aplică regula tehnică D-1.",
        "parameters": [
          {
            "$ref": "#/components/parameters/valuta"
          },
          {
            "$ref": "#/components/parameters/data"
          }
        ],
        "responses": {
          "200": {
            "description": "Un curs pentru valuta solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Curs"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/CursXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există o cotație pentru valuta sau perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "422": {
            "description": "Parametri invalizi sau perioadă neîncheiată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/curs-bnr/mediu/{valuta}/{an}": {
      "get": {
        "tags": [
          "Curs BNR"
        ],
        "operationId": "cursBnrMediuAnual",
        "summary": "Cursul mediu anual",
        "description": "Media aritmetică a mediilor lunare din cele 12 luni ale anului încheiat. Se returnează 404 dacă nu există observații pentru toate cele 12 luni.",
        "parameters": [
          {
            "$ref": "#/components/parameters/valuta"
          },
          {
            "$ref": "#/components/parameters/an"
          }
        ],
        "responses": {
          "200": {
            "description": "O valoare pentru perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursPerioada"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/CursPerioadaXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există o cotație pentru valuta sau perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "422": {
            "description": "Parametri invalizi sau perioadă neîncheiată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/curs-bnr/mediu/{valuta}/{an}/{luna}": {
      "get": {
        "tags": [
          "Curs BNR"
        ],
        "operationId": "cursBnrMediuLunar",
        "summary": "Cursul mediu lunar",
        "description": "Media aritmetică a cursurilor unitare din luna încheiată. Perioadele incomplete nu sunt disponibile.",
        "parameters": [
          {
            "$ref": "#/components/parameters/valuta"
          },
          {
            "$ref": "#/components/parameters/an"
          },
          {
            "$ref": "#/components/parameters/luna"
          }
        ],
        "responses": {
          "200": {
            "description": "O valoare pentru perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursPerioada"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/CursPerioadaXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există o cotație pentru valuta sau perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "422": {
            "description": "Parametri invalizi sau perioadă neîncheiată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/curs-bnr/ultima-zi-luna/{valuta}/{an}/{luna}": {
      "get": {
        "tags": [
          "Curs BNR"
        ],
        "operationId": "cursBnrUltimaZiLuna",
        "summary": "Cursul de închidere lunară",
        "description": "Ultima cotație BNR disponibilă până la sfârșitul lunii încheiate. Cotația trebuie să fie publicată cu cel mult 7 zile înainte de sfârșitul perioadei.",
        "parameters": [
          {
            "$ref": "#/components/parameters/valuta"
          },
          {
            "$ref": "#/components/parameters/an"
          },
          {
            "$ref": "#/components/parameters/luna"
          }
        ],
        "responses": {
          "200": {
            "description": "O valoare pentru perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursPerioada"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/CursPerioadaXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există o cotație pentru valuta sau perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "422": {
            "description": "Parametri invalizi sau perioadă neîncheiată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/curs-bnr/sfarsit-trimestru/{valuta}/{an}/{trimestru}": {
      "get": {
        "tags": [
          "Curs BNR"
        ],
        "operationId": "cursBnrSfarsitTrimestru",
        "summary": "Cursul de închidere trimestrială",
        "description": "Ultima cotație BNR disponibilă până la sfârșitul trimestrului încheiat. Cotația trebuie să fie publicată cu cel mult 7 zile înainte de sfârșitul perioadei.",
        "parameters": [
          {
            "$ref": "#/components/parameters/valuta"
          },
          {
            "$ref": "#/components/parameters/an"
          },
          {
            "$ref": "#/components/parameters/trimestru"
          }
        ],
        "responses": {
          "200": {
            "description": "O valoare pentru perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursPerioada"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/CursPerioadaXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există o cotație pentru valuta sau perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "422": {
            "description": "Parametri invalizi sau perioadă neîncheiată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/curs-bnr/sfarsit-an/{valuta}/{an}": {
      "get": {
        "tags": [
          "Curs BNR"
        ],
        "operationId": "cursBnrSfarsitAn",
        "summary": "Cursul de închidere anuală",
        "description": "Ultima cotație BNR disponibilă până la sfârșitul anului încheiat. Cotația trebuie să fie publicată cu cel mult 7 zile înainte de sfârșitul perioadei.",
        "parameters": [
          {
            "$ref": "#/components/parameters/valuta"
          },
          {
            "$ref": "#/components/parameters/an"
          }
        ],
        "responses": {
          "200": {
            "description": "O valoare pentru perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursPerioada"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/CursPerioadaXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există o cotație pentru valuta sau perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "422": {
            "description": "Parametri invalizi sau perioadă neîncheiată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/convertor-valutar": {
      "get": {
        "tags": [
          "Convertor valutar"
        ],
        "operationId": "convertorValutar",
        "summary": "API convertor valutar EUR/RON și RON/valută",
        "description": "Convertește o singură sumă între RON și o valută cotată de BNR. Nu sunt acceptate conversii valută-valută sau RON-RON. Fără data se folosește ziua curentă din România; cu data se folosește ultimul curs BNR publicat până la data cerută. curs reprezintă valoarea unitară BNR în RON pentru valuta străină în ambele direcții. rezultatul este rotunjit la 2 zecimale, cu ROUND_HALF_UP. O cerere returnează un singur rezultat.",
        "parameters": [
          {
            "$ref": "#/components/parameters/din"
          },
          {
            "$ref": "#/components/parameters/in"
          },
          {
            "$ref": "#/components/parameters/suma"
          },
          {
            "$ref": "#/components/parameters/data"
          }
        ],
        "responses": {
          "200": {
            "description": "O conversie valutară folosind cursul BNR disponibil la data solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversieValutara"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ConversieValutaraXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există o cotație pentru valuta sau perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "422": {
            "description": "Data, codurile valutare, perechea valutară sau suma sunt invalide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/convertor-valutar/facturare": {
      "get": {
        "tags": [
          "Convertor valutar"
        ],
        "operationId": "convertorValutarFacturare",
        "summary": "API convertor valutar pentru facturare D-1",
        "description": "Convertește o singură sumă între RON și o valută BNR folosind cursul disponibil pentru ziua calendaristică precedentă datei facturii. Parametrul opțional data reprezintă data facturii; fără data se folosește data curentă din România. Scade o zi calendaristică, apoi selectează ultimul curs publicat la data rezultată sau înainte de aceasta. Returnează data reală a publicației BNR. Nu stabilește automat regula fiscală potrivită fiecărei operațiuni.",
        "parameters": [
          {
            "$ref": "#/components/parameters/din"
          },
          {
            "$ref": "#/components/parameters/in"
          },
          {
            "$ref": "#/components/parameters/suma"
          },
          {
            "$ref": "#/components/parameters/data"
          }
        ],
        "responses": {
          "200": {
            "description": "O conversie valutară folosind cursul BNR disponibil la data solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversieValutara"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ConversieValutaraXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există o cotație pentru valuta sau perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "422": {
            "description": "Data, codurile valutare, perechea valutară sau suma sunt invalide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/convertor-valutar/azi": {
      "get": {
        "tags": [
          "Convertor valutar"
        ],
        "operationId": "convertorValutarAzi",
        "summary": "API convertor valutar azi, ultimul curs disponibil",
        "description": "Convertește o singură sumă RON/valută cu ultimul curs BNR disponibil până astăzi, inclusiv. Înainte de publicarea cursului de astăzi sau în zilele fără publicație, folosește ultima cotație disponibilă. Nu acceptă parametrul data; echivalent cu /convertor-valutar fără data.",
        "parameters": [
          {
            "$ref": "#/components/parameters/din"
          },
          {
            "$ref": "#/components/parameters/in"
          },
          {
            "$ref": "#/components/parameters/suma"
          }
        ],
        "responses": {
          "200": {
            "description": "O conversie valutară folosind cursul BNR disponibil la data solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversieValutara"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ConversieValutaraXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există o cotație pentru valuta sau perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "422": {
            "description": "Data, codurile valutare, perechea valutară sau suma sunt invalide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/convertor-valutar/azi/strict": {
      "get": {
        "tags": [
          "Convertor valutar"
        ],
        "operationId": "convertorValutarAziStrict",
        "summary": "API convertor valutar azi strict, doar curs publicat astăzi",
        "description": "Convertește numai dacă există o cotație BNR publicată astăzi (Europe/Bucharest) pentru valuta solicitată. Nu folosește un curs dintr-o zi anterioară. Înainte de publicarea cursului, în weekend sau alte zile fără cotație datată astăzi, returnează HTTP 404 curs_azi_indisponibil. Nu acceptă parametrul data.",
        "parameters": [
          {
            "$ref": "#/components/parameters/din"
          },
          {
            "$ref": "#/components/parameters/in"
          },
          {
            "$ref": "#/components/parameters/suma"
          }
        ],
        "responses": {
          "200": {
            "description": "O conversie valutară folosind cursul BNR disponibil la data solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConversieValutara"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/ConversieValutaraXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există curs BNR publicat cu data de astăzi pentru valuta solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                },
                "example": {
                  "error": "curs_azi_indisponibil"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                },
                "example": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<eroare><cod>curs_azi_indisponibil</cod></eroare>"
              }
            }
          },
          "422": {
            "description": "Data, codurile valutare, perechea valutară sau suma sunt invalide.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/curs-bce/{valuta}": {
      "get": {
        "tags": [
          "Curs BCE"
        ],
        "operationId": "cursBce",
        "summary": "Curs BCE în RON, curent sau istoric",
        "description": "Returnează un singur curs BCE normalizat în RON pentru o unitate din valută. Folosește cotațiile EUR/RON și EUR/valută publicate în aceeași zi. Fără data, se folosește ziua curentă din România; cu data=AAAA-LL-ZZ, ultima publicație disponibilă până în acea zi, inclusiv. Nu amestecă rate din zile diferite. Istoricul disponibil depinde de arhiva BCE ingerată (sursa curentă BCE conține aproximativ 90 de zile).",
        "parameters": [
          {
            "$ref": "#/components/parameters/valuta"
          },
          {
            "$ref": "#/components/parameters/data"
          }
        ],
        "responses": {
          "200": {
            "description": "Curs BCE în RON, curent sau istoric",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursBce"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/CursBceXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există o cotație pentru valuta sau perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "422": {
            "description": "Parametri invalizi sau perioadă neîncheiată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/curs-bce/azi/{valuta}": {
      "get": {
        "tags": [
          "Curs BCE"
        ],
        "operationId": "cursBceAzi",
        "summary": "Curs BCE azi, ultimul disponibil",
        "description": "Returnează un singur curs BCE normalizat în RON pentru o unitate din valută. Folosește cotațiile EUR/RON și EUR/valută publicate în aceeași zi. Fără data, se folosește ziua curentă din România; cu data=AAAA-LL-ZZ, ultima publicație disponibilă până în acea zi, inclusiv. Nu amestecă rate din zile diferite. Istoricul disponibil depinde de arhiva BCE ingerată (sursa curentă BCE conține aproximativ 90 de zile). Nu acceptă parametrul data.",
        "parameters": [
          {
            "$ref": "#/components/parameters/valuta"
          }
        ],
        "responses": {
          "200": {
            "description": "Curs BCE azi, ultimul disponibil",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursBce"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/CursBceXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există o cotație pentru valuta sau perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "422": {
            "description": "Parametri invalizi sau perioadă neîncheiată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/curs-bce/azi/strict/{valuta}": {
      "get": {
        "tags": [
          "Curs BCE"
        ],
        "operationId": "cursBceAziStrict",
        "summary": "Curs BCE azi strict, fără fallback",
        "description": "Returnează un singur curs BCE normalizat în RON numai dacă cotațiile EUR/RON și EUR/valută sunt disponibile cu data de astăzi (Europe/Bucharest). Înainte de publicare sau în zilele fără publicație returnează HTTP 404 curs_azi_indisponibil. Nu acceptă data.",
        "parameters": [
          {
            "$ref": "#/components/parameters/valuta"
          }
        ],
        "responses": {
          "200": {
            "description": "Curs BCE azi strict, fără fallback",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursBce"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/CursBceXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există cotații BCE complete publicate cu data de astăzi pentru valuta solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                },
                "example": {
                  "error": "curs_azi_indisponibil"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                },
                "example": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<eroare><cod>curs_azi_indisponibil</cod></eroare>"
              }
            }
          },
          "422": {
            "description": "Parametri invalizi sau perioadă neîncheiată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/curs-inforeuro/{valuta}": {
      "get": {
        "tags": [
          "Curs InforEuro"
        ],
        "operationId": "cursInforEuro",
        "summary": "Curs InforEuro lunar în RON",
        "description": "Cursul InforEuro aplicabil unei luni, normalizat în RON per unitate valutară. Pentru EUR se folosește direct EUR/RON al Comisiei Europene; pentru alte valute se folosește EUR/RON împărțit la EUR/valută din aceeași lună InforEuro. Acceptă o singură valută; disponibilitatea depinde de sursele InforEuro deja ingerate. Fără data se returnează cea mai recentă lună disponibilă până în luna curentă. Cu data=AAAA-LL se cere acea lună exactă, fără fallback.",
        "parameters": [
          {
            "$ref": "#/components/parameters/valuta"
          },
          {
            "$ref": "#/components/parameters/luna_inforeuro"
          }
        ],
        "responses": {
          "200": {
            "description": "Curs InforEuro lunar în RON",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursInforEuro"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/CursInforEuroXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există o cotație pentru valuta sau perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "422": {
            "description": "Valută invalidă sau lună invalidă ori viitoare.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/curs-vamal/{valuta}": {
      "get": {
        "tags": [
          "Curs vamal"
        ],
        "operationId": "cursVamal",
        "summary": "Curs vamal lunar în RON",
        "description": "Un curs valutar pentru o singură valută și lună, conform regulii calendaristice folosite de pagina curs vamal eValuta: cursul BNR disponibil până la penultima miercuri a lunii precedente. O cerere returnează o singură valoare normalizată în RON. Fără data se folosește luna curentă; cu data=AAAA-LL se cere luna respectivă, fără fallback la o altă lună. Datele sunt disponibile începând cu mai 2016.",
        "parameters": [
          {
            "$ref": "#/components/parameters/valuta"
          },
          {
            "$ref": "#/components/parameters/luna_vamal"
          }
        ],
        "responses": {
          "200": {
            "description": "Curs vamal pentru luna și valuta solicitate.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursVamal"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/CursVamalXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există o cotație pentru valuta sau perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "422": {
            "description": "Valută sau lună invalidă, inclusiv o lună din viitor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/indici/{indice}/{scadenta}": {
      "get": {
        "tags": [
          "Indici de referință"
        ],
        "operationId": "indiceDeReferinta",
        "summary": "Indice de referință pentru o scadență",
        "description": "Returnează o singură observație procentuală pentru indicele și scadența solicitate, cea mai recentă înregistrare disponibilă până la data indicată. Fără data se folosește ziua curentă din România. Nu se substituie maturități diferite. ROBID și ROBOR: on, tn, 1w, 1m, 3m, 6m, 12m. EURIBOR: 1w, 1m, 3m, 6m, 12m, cu 1w disponibil numai după ce sursa furnizează și se stochează observația. IRCC: quarterly. Pentru EURIBOR, sursa existentă Bank of Finland publică datele cu întârziere; data răspunsului reprezintă data observației. Pentru IRCC trimestrial, data reprezintă marcajul sfârșitului trimestrului de referință, nu data intrării în vigoare.",
        "parameters": [
          {
            "$ref": "#/components/parameters/indice"
          },
          {
            "$ref": "#/components/parameters/scadenta"
          },
          {
            "$ref": "#/components/parameters/data"
          }
        ],
        "responses": {
          "200": {
            "description": "O valoare procentuală pentru indice, scadență și data rezolvată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Indice"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/IndiceXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există o observație pentru combinația indice/scadență/data solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "422": {
            "description": "Indice, scadență sau dată invalidă; unele combinații indice/scadență nu sunt acceptate.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/indici/ircc": {
      "get": {
        "tags": [
          "Indici de referință"
        ],
        "operationId": "irccTrimestrial",
        "summary": "IRCC trimestrial, ultima observație înregistrată",
        "description": "Alias pentru /indici/ircc/quarterly. Returnează o singură observație IRCC quarterly, la cea mai recentă dată de referință stocată până la data solicitată. data din răspuns este marcajul trimestrului de referință, nu garantează perioada de aplicabilitate a valorii.",
        "parameters": [
          {
            "$ref": "#/components/parameters/data"
          }
        ],
        "responses": {
          "200": {
            "description": "O valoare procentuală pentru indice, scadență și data rezolvată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Indice"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/IndiceXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există o observație pentru combinația indice/scadență/data solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "422": {
            "description": "Indice, scadență sau dată invalidă; unele combinații indice/scadență nu sunt acceptate.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/indici/ircc/aplicabil": {
      "get": {
        "tags": [
          "Indici de referință"
        ],
        "operationId": "irccAplicabil",
        "summary": "IRCC aplicabil la data solicitată",
        "description": "IRCC trimestrial aplicabil în trimestrul care conține data cerută. Fără data se folosește ziua curentă din România. Folosește valoarea trimestrului de referință cu două trimestre înaintea celui de aplicare; nu confundă cea mai recentă valoare calculată cu cea deja aplicabilă. Dacă lipsește exact observația pentru trimestrul de referință, returnează 404, fără fallback la un trimestru diferit. data din răspuns reprezintă ultima zi a trimestrului de referință, nu data publicării efective.",
        "parameters": [
          {
            "$ref": "#/components/parameters/data"
          }
        ],
        "responses": {
          "200": {
            "description": "O singură valoare IRCC aplicabilă datei solicitate, cu intervalul de aplicare și trimestrul de referință.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IrccAplicabil"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/IrccAplicabilXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există o observație pentru combinația indice/scadență/data solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "422": {
            "description": "Indice, scadență sau dată invalidă; unele combinații indice/scadență nu sunt acceptate.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/inflatie": {
      "get": {
        "tags": [
          "Inflație"
        ],
        "operationId": "inflatieAnuala",
        "summary": "Rata anuală a inflației (INS)",
        "description": "Rata anuală a inflației în România, pentru totalul IPC anual față de aceeași lună a anului anterior, din seria INS IPC102E. Fără data se selectează cea mai recentă lună publicată și stocată până azi; cu data=AAAA-LL se solicită luna respectivă, fără fallback. Nu este inflația lunară și nu reprezintă media anuală.",
        "parameters": [
          {
            "$ref": "#/components/parameters/luna_inforeuro"
          }
        ],
        "responses": {
          "200": {
            "description": "O rată anuală de inflație, ca procent, pentru o singură lună.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Inflatie"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/InflatieXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există o cotație pentru valuta sau perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "422": {
            "description": "Lună invalidă sau lună din viitor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/inflatie/ipc": {
      "get": {
        "tags": [
          "Inflație"
        ],
        "operationId": "indiceIpcAnual",
        "summary": "Indicele IPC anual (INS, luna corespunzătoare din anul precedent = 100)",
        "description": "Indicele prețurilor de consum față de aceeași lună din anul precedent (bază 100), din seria INS IPC102E. Fără data se selectează ultima lună stocată; cu data=AAAA-LL se solicită luna exactă. Este un indice, nu o rată procentuală. Un rezultat per cerere.",
        "parameters": [
          {
            "$ref": "#/components/parameters/luna_inforeuro"
          }
        ],
        "responses": {
          "200": {
            "description": "Un indice IPC anual pentru o singură lună.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Inflatie"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/InflatieXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există o cotație pentru valuta sau perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "422": {
            "description": "Lună invalidă sau lună din viitor.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/banci/{banca}/{valuta}": {
      "get": {
        "tags": [
          "Cursuri bancare"
        ],
        "operationId": "cursBancar",
        "summary": "Cotație de cumpărare și vânzare pentru o bancă și o valută",
        "description": "Returnează ultima cotație disponibilă pentru o singură bancă activă identificată prin slug-ul canonic și o valută, față de RON, pentru tipul de curs account_standard (operațiuni în cont). Cumpărarea și vânzarea reprezintă o singură pereche de cotații. Nu există istoric intrazilnic în acest endpoint: sursa existentă actualizează ultima cotație pentru fiecare zi. Câmpul data reprezintă data publicării cotației de către bancă și poate fi anterior zilei curente.",
        "parameters": [
          {
            "$ref": "#/components/parameters/banca"
          },
          {
            "$ref": "#/components/parameters/valuta"
          }
        ],
        "responses": {
          "200": {
            "description": "O cotație bancară pentru perechea valută/RON și data publicării.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursBancar"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/CursBancarXml"
                }
              }
            },
            "headers": {
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            }
          },
          "401": {
            "description": "Cheia API lipsește, este invalidă sau revocată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "403": {
            "description": "Adresa IP nu este permisă pentru cheia API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          },
          "404": {
            "description": "Nu există o cotație pentru valuta sau perioada solicitată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "422": {
            "description": "Cod bancar sau cod valutar invalid.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              },
              "application/xml": {
                "schema": {
                  "$ref": "#/components/schemas/EroareXml"
                }
              }
            }
          },
          "429": {
            "description": "Limita de cereri a fost depășită.",
            "headers": {
              "Retry-After": {
                "description": "Secunde până la următoarea cerere permisă.",
                "schema": {
                  "type": "integer",
                  "minimum": 1
                }
              },
              "X-RateLimit-Second-Limit": {
                "description": "Numărul maxim de cereri pe secundă permis cheii.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Second-Remaining": {
                "description": "Numărul de cereri rămase în fereastra curentă de o secundă.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Limit": {
                "description": "Numărul maxim de cereri în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Remaining": {
                "description": "Numărul de cereri rămase în fereastra de 24 de ore.",
                "schema": {
                  "type": "string"
                }
              },
              "X-RateLimit-Day-Reset": {
                "description": "Timpul de resetare al ferestrei de 24 de ore, ca timestamp Unix exprimat în secunde.",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LimitaDepasita"
                }
              }
            }
          },
          "503": {
            "description": "Autentificarea sau limitatorul de cereri este temporar indisponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Eroare"
                }
              }
            }
          }
        }
      }
    },
    "/curs-bnr/azi/notificare": {
      "post": {
        "tags": [
          "Curs BNR"
        ],
        "operationId": "inregistreazaNotificareCursBnrAzi",
        "summary": "Notificare unică pentru cursul BNR publicat astăzi",
        "description": "O valută și un URL HTTPS public per cerere. Înainte de publicare, HTTP 202 include un secret pentru verificarea webhook-ului. După publicare, HTTP 200 returnează cursul imediat, fără webhook. Nu există fallback la cursul unei zile anterioare. Livrare cu maximum cinci încercări; deduplicați după id. Callback-ul primește X-eValuta-Event-Id și X-eValuta-Signature: t=timestamp,v1=HMAC-SHA256(secret, timestamp + '.' + raw_json_body).",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NotificareBnrCerere"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Cursul de astăzi este deja disponibil.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificareBnrDisponibil"
                }
              }
            }
          },
          "202": {
            "description": "Notificare înregistrată.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificareBnrAsteptare"
                }
              }
            }
          },
          "401": {
            "description": "Cheie API lipsă sau invalidă."
          },
          "403": {
            "description": "Adresa IP nu este permisă."
          },
          "404": {
            "description": "Valuta nu există."
          },
          "422": {
            "description": "Cerere, valută sau URL invalid ori limită de notificări atinsă."
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "BearerApiKey": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "API key",
        "description": "Cheie API eValuta prin Authorization: Bearer <cheie>. Cheia trebuie să fie activă și IP-ul solicitantului să fie autorizat."
      },
      "HeaderApiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Api-Key",
        "description": "Alternativă la Bearer: trimite cheia activă prin X-Api-Key. Cheia este asociată adreselor IP autorizate."
      }
    },
    "parameters": {
      "valuta": {
        "name": "valuta",
        "in": "path",
        "required": true,
        "description": "Codul valutei cotate în RON. Exemple: EUR, USD, GBP.",
        "schema": {
          "type": "string",
          "pattern": "^[a-zA-Z]{3}$"
        },
        "example": "eur"
      },
      "data": {
        "name": "data",
        "in": "query",
        "required": false,
        "description": "Data cerută în format AAAA-LL-ZZ, nu mai târziu de astăzi (Europe/Bucharest). Fără parametru se folosește ziua curentă. Dacă nu a fost publicat un curs în ziua solicitată, se folosește ultima publicație disponibilă până atunci.",
        "schema": {
          "type": "string",
          "format": "date"
        },
        "example": "2026-09-18"
      },
      "an": {
        "name": "an",
        "in": "path",
        "required": true,
        "description": "Anul calendaristic. Perioada trebuie să fie încheiată.",
        "schema": {
          "type": "integer",
          "minimum": 1900
        },
        "example": 2025
      },
      "luna": {
        "name": "luna",
        "in": "path",
        "required": true,
        "description": "Luna calendaristică, între 1 și 12. Sunt acceptate și 01-09.",
        "schema": {
          "type": "integer",
          "minimum": 1,
          "maximum": 12
        },
        "example": 9
      },
      "trimestru": {
        "name": "trimestru",
        "in": "path",
        "required": true,
        "description": "Trimestrul calendaristic: 1, 2, 3 sau 4.",
        "schema": {
          "type": "integer",
          "minimum": 1,
          "maximum": 4
        },
        "example": 4
      },
      "din": {
        "name": "din",
        "in": "query",
        "required": true,
        "description": "Valuta sursă: RON sau o valută cotată de BNR. Una dintre din și in trebuie să fie RON.",
        "schema": {
          "type": "string",
          "pattern": "^[A-Za-z]{3}$"
        },
        "example": "EUR"
      },
      "in": {
        "name": "in",
        "in": "query",
        "required": true,
        "description": "Valuta destinație: RON sau o valută cotată de BNR. Nu sunt permise conversiile între două valute străine sau RON -> RON.",
        "schema": {
          "type": "string",
          "pattern": "^[A-Za-z]{3}$"
        },
        "example": "RON"
      },
      "suma": {
        "name": "suma",
        "in": "query",
        "required": true,
        "description": "Suma de convertit, în moneda din. Șir zecimal cu separator punct, maximum 8 zecimale și valoare de cel mult 1000000000000.",
        "schema": {
          "type": "string",
          "pattern": "^(?:\\d{1,13})(?:\\.\\d{1,8})?$"
        },
        "example": "100"
      },
      "luna_inforeuro": {
        "name": "data",
        "in": "query",
        "required": false,
        "description": "Luna de aplicabilitate în format AAAA-LL. Fără parametru se returnează cea mai recentă lună disponibilă până în prezent. Pentru o lună explicită fără date nu se aplică fallback la alte luni.",
        "schema": {
          "type": "string",
          "pattern": "^\\d{4}-(?:0[1-9]|1[0-2])$"
        },
        "example": "2026-09"
      },
      "luna_vamal": {
        "name": "data",
        "in": "query",
        "required": false,
        "description": "Luna de aplicabilitate în format AAAA-LL. Fără data se folosește luna curentă din România. O lună explicită nu este înlocuită cu altă lună.",
        "schema": {
          "type": "string",
          "pattern": "^\\d{4}-(?:0[1-9]|1[0-2])$"
        },
        "example": "2026-09"
      },
      "indice": {
        "name": "indice",
        "in": "path",
        "required": true,
        "description": "Indicele de referință: robid, robor, euribor sau ircc (ultimul acceptă numai quarterly).",
        "schema": {
          "type": "string",
          "enum": [
            "robid",
            "robor",
            "euribor",
            "ircc"
          ]
        },
        "example": "robor"
      },
      "scadenta": {
        "name": "scadenta",
        "in": "path",
        "required": true,
        "description": "ROBOR și ROBID: on, tn, 1w, 1m, 3m, 6m, 12m. EURIBOR: 1w, 1m, 3m, 6m, 12m. IRCC: quarterly. Pentru 1w EURIBOR există cotații numai dacă sursa a furnizat această maturitate.",
        "schema": {
          "type": "string",
          "enum": [
            "quarterly",
            "on",
            "tn",
            "1w",
            "1m",
            "3m",
            "6m",
            "12m"
          ]
        },
        "example": "3m"
      },
      "banca": {
        "name": "banca",
        "in": "path",
        "required": true,
        "description": "Slug-ul canonic al băncii active, de exemplu ing sau banca-transilvania. Codurile interne precum bt nu sunt acceptate.",
        "schema": {
          "type": "string",
          "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
        },
        "example": "banca-transilvania"
      }
    },
    "schemas": {
      "Curs": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "valuta",
          "curs",
          "data"
        ],
        "properties": {
          "valuta": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "description": "Codul valutei solicitate.",
            "examples": [
              "EUR"
            ]
          },
          "curs": {
            "type": "string",
            "pattern": "^[0-9]+(\\.[0-9]+)?$",
            "description": "Cursul BNR exprimat în RON pentru o unitate din valută; șir zecimal, nu număr JSON.",
            "examples": [
              "5.2644"
            ]
          },
          "data": {
            "type": "string",
            "format": "date",
            "description": "Data reală a publicației BNR selectate.",
            "examples": [
              "2026-09-18"
            ]
          }
        }
      },
      "CursPerioada": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "valuta",
          "curs",
          "data",
          "perioada"
        ],
        "properties": {
          "valuta": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "description": "Codul valutei solicitate.",
            "examples": [
              "EUR"
            ]
          },
          "curs": {
            "type": "string",
            "pattern": "^[0-9]+(\\.[0-9]+)?$",
            "description": "Cursul mediu sau cursul de închidere exprimat în RON pe unitate de valută.",
            "examples": [
              "5.2644"
            ]
          },
          "data": {
            "type": "string",
            "format": "date",
            "description": "Ultima dată de publicație BNR folosită pentru valoarea returnată.",
            "examples": [
              "2026-09-18"
            ]
          },
          "perioada": {
            "type": "string",
            "description": "Perioada solicitată: AAAA, AAAA-LL sau AAAA-Tn.",
            "examples": [
              "2025-09"
            ]
          }
        }
      },
      "Eroare": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "string",
            "description": "Cod de eroare lizibil de aplicație.",
            "enum": [
              "missing_api_key",
              "invalid_api_key",
              "ip_not_allowed",
              "not_found",
              "invalid_date",
              "invalid_currency",
              "invalid_period",
              "rate_limit_exceeded",
              "api_authentication_unavailable",
              "api_rate_limiter_unavailable",
              "curs_azi_indisponibil",
              "invalid_amount",
              "invalid_currency_pair",
              "invalid_index",
              "invalid_tenor",
              "invalid_bank",
              "invalid_indicator",
              "invalid_url",
              "prea_multe_notificari"
            ]
          }
        }
      },
      "LimitaDepasita": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "error",
          "retry_after"
        ],
        "properties": {
          "error": {
            "type": "string",
            "const": "rate_limit_exceeded"
          },
          "retry_after": {
            "type": "integer",
            "minimum": 1,
            "description": "Număr de secunde până când cererea poate fi repetată."
          }
        }
      },
      "CursXml": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "valuta",
          "curs",
          "data"
        ],
        "properties": {
          "valuta": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "description": "Codul valutei solicitate.",
            "examples": [
              "EUR"
            ]
          },
          "curs": {
            "type": "string",
            "pattern": "^[0-9]+(\\.[0-9]+)?$",
            "description": "Cursul BNR exprimat în RON pentru o unitate din valută; șir zecimal, nu număr JSON.",
            "examples": [
              "5.2644"
            ]
          },
          "data": {
            "type": "string",
            "format": "date",
            "description": "Data reală a publicației BNR selectate.",
            "examples": [
              "2026-09-18"
            ]
          }
        },
        "xml": {
          "name": "curs_bnr"
        }
      },
      "CursPerioadaXml": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "valuta",
          "curs",
          "data",
          "perioada"
        ],
        "properties": {
          "valuta": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "description": "Codul valutei solicitate.",
            "examples": [
              "EUR"
            ]
          },
          "curs": {
            "type": "string",
            "pattern": "^[0-9]+(\\.[0-9]+)?$",
            "description": "Cursul mediu sau cursul de închidere exprimat în RON pe unitate de valută.",
            "examples": [
              "5.2644"
            ]
          },
          "data": {
            "type": "string",
            "format": "date",
            "description": "Ultima dată de publicație BNR folosită pentru valoarea returnată.",
            "examples": [
              "2026-09-18"
            ]
          },
          "perioada": {
            "type": "string",
            "description": "Perioada solicitată: AAAA, AAAA-LL sau AAAA-Tn.",
            "examples": [
              "2025-09"
            ]
          }
        },
        "xml": {
          "name": "curs_bnr"
        }
      },
      "EroareXml": {
        "type": "object",
        "xml": {
          "name": "eroare"
        },
        "required": [
          "cod"
        ],
        "additionalProperties": false,
        "properties": {
          "cod": {
            "type": "string",
            "description": "Cod de eroare pentru solicitările XML."
          }
        }
      },
      "ConversieValutara": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "din",
          "in",
          "suma",
          "curs",
          "rezultat",
          "data"
        ],
        "properties": {
          "din": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "description": "Codul valutei sursă.",
            "examples": [
              "EUR"
            ]
          },
          "in": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "description": "Codul valutei destinație.",
            "examples": [
              "RON"
            ]
          },
          "suma": {
            "type": "string",
            "pattern": "^\\d+(?:\\.\\d+)?$",
            "description": "Suma solicitată, păstrată ca șir zecimal.",
            "examples": [
              "100.0"
            ]
          },
          "curs": {
            "type": "string",
            "pattern": "^\\d+(?:\\.\\d+)?$",
            "description": "Cursul BNR în RON pentru o unitate din valuta străină, inclusiv la conversia din RON către valuta străină.",
            "examples": [
              "5.2644"
            ]
          },
          "rezultat": {
            "type": "string",
            "pattern": "^\\d+(?:\\.\\d+)?$",
            "description": "Suma convertită, rotunjită la două zecimale (ROUND_HALF_UP).",
            "examples": [
              "526.44"
            ]
          },
          "data": {
            "type": "string",
            "format": "date",
            "description": "Data reală de publicare a cursului BNR folosit.",
            "examples": [
              "2026-09-18"
            ]
          }
        }
      },
      "ConversieValutaraXml": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "din",
          "in",
          "suma",
          "curs",
          "rezultat",
          "data"
        ],
        "properties": {
          "din": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "description": "Codul valutei sursă.",
            "examples": [
              "EUR"
            ]
          },
          "in": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "description": "Codul valutei destinație.",
            "examples": [
              "RON"
            ]
          },
          "suma": {
            "type": "string",
            "pattern": "^\\d+(?:\\.\\d+)?$",
            "description": "Suma solicitată, păstrată ca șir zecimal.",
            "examples": [
              "100.0"
            ]
          },
          "curs": {
            "type": "string",
            "pattern": "^\\d+(?:\\.\\d+)?$",
            "description": "Cursul BNR în RON pentru o unitate din valuta străină, inclusiv la conversia din RON către valuta străină.",
            "examples": [
              "5.2644"
            ]
          },
          "rezultat": {
            "type": "string",
            "pattern": "^\\d+(?:\\.\\d+)?$",
            "description": "Suma convertită, rotunjită la două zecimale (ROUND_HALF_UP).",
            "examples": [
              "526.44"
            ]
          },
          "data": {
            "type": "string",
            "format": "date",
            "description": "Data reală de publicare a cursului BNR folosit.",
            "examples": [
              "2026-09-18"
            ]
          }
        },
        "xml": {
          "name": "convertor_valutar"
        }
      },
      "CursBce": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "valuta",
          "curs",
          "data"
        ],
        "properties": {
          "valuta": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "description": "Codul valutei solicitate.",
            "examples": [
              "EUR"
            ]
          },
          "curs": {
            "type": "string",
            "pattern": "^[0-9]+(\\.[0-9]+)?$",
            "description": "Cursul BCE normalizat în RON pentru o unitate din valuta solicitată, calculat din cotațiile EUR/RON și EUR/valută ale aceleiași zile.",
            "examples": [
              "5.2644"
            ]
          },
          "data": {
            "type": "string",
            "format": "date",
            "description": "Data reală a publicației BNR selectate.",
            "examples": [
              "2026-09-18"
            ]
          }
        }
      },
      "CursBceXml": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "valuta",
          "curs",
          "data"
        ],
        "properties": {
          "valuta": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "description": "Codul valutei solicitate.",
            "examples": [
              "EUR"
            ]
          },
          "curs": {
            "type": "string",
            "pattern": "^[0-9]+(\\.[0-9]+)?$",
            "description": "Cursul BCE normalizat în RON pentru o unitate din valuta solicitată, calculat din cotațiile EUR/RON și EUR/valută ale aceleiași zile.",
            "examples": [
              "5.2644"
            ]
          },
          "data": {
            "type": "string",
            "format": "date",
            "description": "Data reală a publicației BNR selectate.",
            "examples": [
              "2026-09-18"
            ]
          }
        },
        "xml": {
          "name": "curs_bce"
        }
      },
      "CursInforEuro": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "valuta",
          "curs",
          "perioada"
        ],
        "properties": {
          "valuta": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "description": "Valuta pentru care se solicită cursul în RON.",
            "examples": [
              "USD"
            ]
          },
          "curs": {
            "type": "string",
            "pattern": "^\\d+(?:\\.\\d+)?$",
            "description": "RON pentru o unitate din valută, normalizat din cursurile InforEuro ale aceleiași luni.",
            "examples": [
              "4.5678"
            ]
          },
          "perioada": {
            "type": "string",
            "pattern": "^\\d{4}-(?:0[1-9]|1[0-2])$",
            "description": "Luna calendaristică pentru care se aplică cursul InforEuro.",
            "examples": [
              "2026-09"
            ]
          }
        }
      },
      "CursInforEuroXml": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "valuta",
          "curs",
          "perioada"
        ],
        "properties": {
          "valuta": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "description": "Valuta pentru care se solicită cursul în RON.",
            "examples": [
              "USD"
            ]
          },
          "curs": {
            "type": "string",
            "pattern": "^\\d+(?:\\.\\d+)?$",
            "description": "RON pentru o unitate din valută, normalizat din cursurile InforEuro ale aceleiași luni.",
            "examples": [
              "4.5678"
            ]
          },
          "perioada": {
            "type": "string",
            "pattern": "^\\d{4}-(?:0[1-9]|1[0-2])$",
            "description": "Luna calendaristică pentru care se aplică cursul InforEuro.",
            "examples": [
              "2026-09"
            ]
          }
        },
        "xml": {
          "name": "curs_inforeuro"
        }
      },
      "CursVamal": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "valuta",
          "curs",
          "perioada",
          "data"
        ],
        "properties": {
          "valuta": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "description": "Codul valutei cotate în RON.",
            "examples": [
              "EUR"
            ]
          },
          "curs": {
            "type": "string",
            "pattern": "^\\d+(?:\\.\\d+)?$",
            "description": "RON pentru o unitate din valută, la cotația BNR selectată pentru luna vamală.",
            "examples": [
              "5.2644"
            ]
          },
          "perioada": {
            "type": "string",
            "pattern": "^\\d{4}-(?:0[1-9]|1[0-2])$",
            "description": "Luna de aplicabilitate a cursului vamal.",
            "examples": [
              "2026-09"
            ]
          },
          "data": {
            "type": "string",
            "format": "date",
            "description": "Data reală a publicației BNR utilizate pentru luna vamală.",
            "examples": [
              "2026-08-19"
            ]
          }
        }
      },
      "CursVamalXml": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "valuta",
          "curs",
          "perioada",
          "data"
        ],
        "properties": {
          "valuta": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "description": "Codul valutei cotate în RON.",
            "examples": [
              "EUR"
            ]
          },
          "curs": {
            "type": "string",
            "pattern": "^\\d+(?:\\.\\d+)?$",
            "description": "RON pentru o unitate din valută, la cotația BNR selectată pentru luna vamală.",
            "examples": [
              "5.2644"
            ]
          },
          "perioada": {
            "type": "string",
            "pattern": "^\\d{4}-(?:0[1-9]|1[0-2])$",
            "description": "Luna de aplicabilitate a cursului vamal.",
            "examples": [
              "2026-09"
            ]
          },
          "data": {
            "type": "string",
            "format": "date",
            "description": "Data reală a publicației BNR utilizate pentru luna vamală.",
            "examples": [
              "2026-08-19"
            ]
          }
        },
        "xml": {
          "name": "curs_vamal"
        }
      },
      "Indice": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "indice",
          "scadenta",
          "valoare",
          "data"
        ],
        "properties": {
          "indice": {
            "type": "string",
            "enum": [
              "IRCC",
              "ROBID",
              "ROBOR",
              "EURIBOR"
            ],
            "description": "Denumirea indicelui.",
            "examples": [
              "ROBOR"
            ]
          },
          "scadenta": {
            "type": "string",
            "enum": [
              "quarterly",
              "on",
              "tn",
              "1w",
              "1m",
              "3m",
              "6m",
              "12m"
            ],
            "description": "Maturitatea indicelui.",
            "examples": [
              "3m"
            ]
          },
          "valoare": {
            "type": "string",
            "pattern": "^-?\\d+(?:\\.\\d+)?$",
            "description": "Valoarea procentuală a indicelui, ca șir zecimal.",
            "examples": [
              "5.670000"
            ]
          },
          "data": {
            "type": "string",
            "format": "date",
            "description": "Data observației înregistrate. Pentru IRCC quarterly, data este marcajul de sfârșit al trimestrului de referință, nu neapărat data publicării ori perioada de aplicabilitate.",
            "examples": [
              "2026-09-18"
            ]
          }
        }
      },
      "IndiceXml": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "indice",
          "scadenta",
          "valoare",
          "data"
        ],
        "properties": {
          "indice": {
            "type": "string",
            "enum": [
              "IRCC",
              "ROBID",
              "ROBOR",
              "EURIBOR"
            ],
            "description": "Denumirea indicelui.",
            "examples": [
              "ROBOR"
            ]
          },
          "scadenta": {
            "type": "string",
            "enum": [
              "quarterly",
              "on",
              "tn",
              "1w",
              "1m",
              "3m",
              "6m",
              "12m"
            ],
            "description": "Maturitatea indicelui.",
            "examples": [
              "3m"
            ]
          },
          "valoare": {
            "type": "string",
            "pattern": "^-?\\d+(?:\\.\\d+)?$",
            "description": "Valoarea procentuală a indicelui, ca șir zecimal.",
            "examples": [
              "5.670000"
            ]
          },
          "data": {
            "type": "string",
            "format": "date",
            "description": "Data observației înregistrate. Pentru IRCC quarterly, data este marcajul de sfârșit al trimestrului de referință, nu neapărat data publicării ori perioada de aplicabilitate.",
            "examples": [
              "2026-09-18"
            ]
          }
        },
        "xml": {
          "name": "indice"
        }
      },
      "IrccAplicabil": {
        "type": "object",
        "required": [
          "indice",
          "scadenta",
          "valoare",
          "data",
          "valabil_de_la",
          "valabil_pana_la"
        ],
        "additionalProperties": false,
        "properties": {
          "indice": {
            "type": "string",
            "const": "IRCC",
            "description": "Indicele trimestrial IRCC.",
            "examples": [
              "IRCC"
            ]
          },
          "scadenta": {
            "type": "string",
            "const": "quarterly",
            "description": "Scadența indicelui.",
            "examples": [
              "quarterly"
            ]
          },
          "valoare": {
            "type": "string",
            "pattern": "^-?\\d+(?:\\.\\d+)?$",
            "description": "Valoarea procentuală IRCC aplicabilă perioadei.",
            "examples": [
              "5.560000"
            ]
          },
          "data": {
            "type": "string",
            "format": "date",
            "description": "Sfârșitul trimestrului de referință al valorii stocate, nu data publicării sau data de aplicare.",
            "examples": [
              "2026-03-31"
            ]
          },
          "valabil_de_la": {
            "type": "string",
            "format": "date",
            "description": "Prima zi din trimestrul de aplicabilitate.",
            "examples": [
              "2026-07-01"
            ]
          },
          "valabil_pana_la": {
            "type": "string",
            "format": "date",
            "description": "Ultima zi din trimestrul de aplicabilitate.",
            "examples": [
              "2026-09-30"
            ]
          }
        }
      },
      "IrccAplicabilXml": {
        "type": "object",
        "required": [
          "indice",
          "scadenta",
          "valoare",
          "data",
          "valabil_de_la",
          "valabil_pana_la"
        ],
        "additionalProperties": false,
        "properties": {
          "indice": {
            "type": "string",
            "const": "IRCC",
            "description": "Indicele trimestrial IRCC.",
            "examples": [
              "IRCC"
            ]
          },
          "scadenta": {
            "type": "string",
            "const": "quarterly",
            "description": "Scadența indicelui.",
            "examples": [
              "quarterly"
            ]
          },
          "valoare": {
            "type": "string",
            "pattern": "^-?\\d+(?:\\.\\d+)?$",
            "description": "Valoarea procentuală IRCC aplicabilă perioadei.",
            "examples": [
              "5.560000"
            ]
          },
          "data": {
            "type": "string",
            "format": "date",
            "description": "Sfârșitul trimestrului de referință al valorii stocate, nu data publicării sau data de aplicare.",
            "examples": [
              "2026-03-31"
            ]
          },
          "valabil_de_la": {
            "type": "string",
            "format": "date",
            "description": "Prima zi din trimestrul de aplicabilitate.",
            "examples": [
              "2026-07-01"
            ]
          },
          "valabil_pana_la": {
            "type": "string",
            "format": "date",
            "description": "Ultima zi din trimestrul de aplicabilitate.",
            "examples": [
              "2026-09-30"
            ]
          }
        },
        "xml": {
          "name": "indice"
        }
      },
      "Inflatie": {
        "type": "object",
        "required": [
          "valoare",
          "perioada"
        ],
        "additionalProperties": false,
        "properties": {
          "valoare": {
            "type": "string",
            "pattern": "^-?\\d+(?:\\.\\d+)?$",
            "description": "Rata anuală a inflației (procente) sau indicele IPC anual, în funcție de endpoint.",
            "examples": [
              "9.8500"
            ]
          },
          "perioada": {
            "type": "string",
            "pattern": "^\\d{4}-(?:0[1-9]|1[0-2])$",
            "description": "Luna de referință, nu data publicării.",
            "examples": [
              "2026-08"
            ]
          }
        }
      },
      "InflatieXml": {
        "type": "object",
        "required": [
          "valoare",
          "perioada"
        ],
        "additionalProperties": false,
        "properties": {
          "valoare": {
            "type": "string",
            "pattern": "^-?\\d+(?:\\.\\d+)?$",
            "description": "Rata anuală a inflației (procente) sau indicele IPC anual, în funcție de endpoint.",
            "examples": [
              "9.8500"
            ]
          },
          "perioada": {
            "type": "string",
            "pattern": "^\\d{4}-(?:0[1-9]|1[0-2])$",
            "description": "Luna de referință, nu data publicării.",
            "examples": [
              "2026-08"
            ]
          }
        },
        "xml": {
          "name": "inflatie"
        }
      },
      "CursBancar": {
        "type": "object",
        "required": [
          "banca",
          "valuta",
          "cumparare",
          "vanzare",
          "data"
        ],
        "additionalProperties": false,
        "properties": {
          "banca": {
            "type": "string",
            "description": "Slug-ul băncii pentru care a fost selectată cotația.",
            "examples": [
              "ing"
            ]
          },
          "valuta": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "description": "Valuta cotată față de RON.",
            "examples": [
              "EUR"
            ]
          },
          "cumparare": {
            "type": "string",
            "pattern": "^\\d+(?:\\.\\d+)?$",
            "description": "Cursul de cumpărare normalizat, RON per o unitate de valută, pentru cont standard.",
            "examples": [
              "5.0200"
            ]
          },
          "vanzare": {
            "type": "string",
            "pattern": "^\\d+(?:\\.\\d+)?$",
            "description": "Cursul de vânzare normalizat, RON per o unitate de valută, pentru cont standard.",
            "examples": [
              "5.1800"
            ]
          },
          "data": {
            "type": "string",
            "format": "date",
            "description": "Data cotației publicate de bancă, în format AAAA-LL-ZZ. Poate fi anterioară zilei curente.",
            "examples": [
              "2026-09-21"
            ]
          }
        }
      },
      "CursBancarXml": {
        "type": "object",
        "required": [
          "banca",
          "valuta",
          "cumparare",
          "vanzare",
          "data"
        ],
        "additionalProperties": false,
        "properties": {
          "banca": {
            "type": "string",
            "description": "Slug-ul băncii pentru care a fost selectată cotația.",
            "examples": [
              "ing"
            ]
          },
          "valuta": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "description": "Valuta cotată față de RON.",
            "examples": [
              "EUR"
            ]
          },
          "cumparare": {
            "type": "string",
            "pattern": "^\\d+(?:\\.\\d+)?$",
            "description": "Cursul de cumpărare normalizat, RON per o unitate de valută, pentru cont standard.",
            "examples": [
              "5.0200"
            ]
          },
          "vanzare": {
            "type": "string",
            "pattern": "^\\d+(?:\\.\\d+)?$",
            "description": "Cursul de vânzare normalizat, RON per o unitate de valută, pentru cont standard.",
            "examples": [
              "5.1800"
            ]
          },
          "data": {
            "type": "string",
            "format": "date-time",
            "description": "Momentul în care eValuta a observat această cotație, cu fus orar Europe/Bucharest. Nu reprezintă ora exactă de modificare a prețului la bancă.",
            "examples": [
              "2026-09-21T10:30:00+03:00"
            ]
          }
        },
        "xml": {
          "name": "curs_bancar"
        }
      },
      "NotificareBnrCerere": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "valuta",
          "url"
        ],
        "properties": {
          "valuta": {
            "type": "string",
            "pattern": "^[A-Za-z]{3}$",
            "example": "EUR"
          },
          "url": {
            "type": "string",
            "format": "uri",
            "example": "https://example.com/webhook"
          }
        }
      },
      "NotificareBnrAsteptare": {
        "type": "object",
        "required": [
          "id",
          "stare",
          "data",
          "secret"
        ],
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "stare": {
            "type": "string",
            "const": "in_asteptare"
          },
          "data": {
            "type": "string",
            "format": "date"
          },
          "secret": {
            "type": "string",
            "description": "Secret HMAC individual, afișat doar la înregistrare."
          }
        }
      },
      "NotificareBnrDisponibil": {
        "type": "object",
        "required": [
          "stare",
          "valuta",
          "curs",
          "data"
        ],
        "additionalProperties": false,
        "properties": {
          "stare": {
            "type": "string",
            "const": "disponibil"
          },
          "valuta": {
            "type": "string"
          },
          "curs": {
            "type": "string"
          },
          "data": {
            "type": "string",
            "format": "date"
          }
        }
      },
      "NotificareBnrLivrare": {
        "type": "object",
        "required": [
          "id",
          "valuta",
          "curs",
          "data"
        ],
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "valuta": {
            "type": "string"
          },
          "curs": {
            "type": "string"
          },
          "data": {
            "type": "string",
            "format": "date"
          }
        }
      }
    }
  }
}
