{"components":{"responses":{"Accepted":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Pending"}}},"description":"Firma este căutată la ANAF și nu a sosit la timp. Repetă cererea după numărul de secunde din `Retry-After`. Nu se numără ca cerere."},"BadRequest":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Un parametru lipsește sau nu este valid; `detail` spune care."},"Forbidden":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Planul nu include această cerere (`upgrade-required`; `upgrade_url` duce la planuri), sau contul cheii este suspendat (`account-suspended`; o astfel de cerere nu se numără)."},"NotFound":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Nu există: CUI neînregistrat, nicio dată pentru ziua ori anul cerut, sau un CUI despre care nu oferim date (`withheld-on-request`)."},"TooManyRequests":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Limita pe minut sau numărul de cereri al lunii a fost depășit. Nu se numără ca cerere."},"Unauthorized":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Cheia API lipsește sau nu este validă."},"Unavailable":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Firma nu este în baza de date și ANAF nu a putut fi întrebat acum. Nu se numără ca cerere."}},"schemas":{"BatchRequest":{"properties":{"cuis":{"description":"Între 1 și 100 de CUI-uri, ca text sau ca număr, cu sau fără prefixul `RO`.","type":"array"}},"type":"object","x-order":["cuis"]},"BatchResult":{"properties":{"data":{"description":"Firmele găsite, în ordinea în care au fost cerute.","items":{"$ref":"#/components/schemas/Company"},"type":"array"},"incomplete":{"description":"CUI-urile din baza de date cărora le lipsesc încă datele de la ANAF (de pildă denumirea, adresa, înregistrarea în scopuri de TVA). Nu costă nimic; cerute singure, sunt completate pe loc de la ANAF.","type":"array"},"invalid":{"description":"Ce nu este un CUI valid, așa cum a fost primit.","type":"array"},"not_stored":{"description":"CUI-urile valide care nu sunt încă în baza de date. Nu costă nimic; cerute singure, sunt căutate la ANAF.","type":"array"}},"type":"object","x-order":["data","not_stored","incomplete","invalid"]},"Company":{"properties":{"cod_postal":{"description":"Codul poștal al adresei firmei, din șase cifre. `null` unde sursa nu are unul în uz (codurile de dinainte de 2003, valori incomplete).","type":["string","null"]},"sediu_secundar":{"description":"Dacă este sediul secundar al unei firme, înregistrat la ANAF cu CUI propriu.","type":"boolean"},"scp_tva":{"description":"Dacă este înregistrată în scopuri de TVA.","type":"boolean"},"judet":{"description":"Codul județului adresei firmei: `SB`, `B`, ... Filtrele după județ (firmele noi, căutarea, webhooks) merg după județul sediului social (`sediu_social.judet`), care este același la aproape toate firmele.","type":["string","null"]},"e_factura":{"description":"Dacă este înscrisă în registrul RO e-Factura.","type":"boolean"},"updated_on":{"description":"Ziua în care s-a schimbat ultima oară ceva în datele firmei.","format":"date","type":["string","null"]},"fax":{"description":"Faxul declarat la ANAF, cum îl scrie ANAF. `null` și unde ANAF nu are decât o valoare fără nicio cifră în afară de 0 („0”, „0/0”, „nedeclarat”).","type":["string","null"]},"denumire":{"description":"Denumirea, scrisă pentru cititor; cum o scrie sursa este în `oficial`.","type":["string","null"]},"tva_incasare":{"description":"Dacă aplică TVA la încasare.","type":"boolean"},"cui":{"description":"Codul unic de identificare.","type":"integer"},"caen":{"description":"Codul CAEN al activității principale (sursa: ANAF).","type":["integer","null"]},"forma_juridica_cod":{"description":"Forma juridică din registrul comerțului: `SRL`, `SA`, ...","type":["string","null"]},"status_inactiv":{"description":"Dacă este declarată inactivă fiscal.","type":"boolean"},"data_inactivare":{"description":"De când este inactivă.","format":"date","type":["string","null"]},"data_inmatriculare":{"description":"Data intrării în registrul comerțului (sursa: ONRC).","format":"date","type":["string","null"]},"sediu_social":{"description":"Sediul social, cum îl dau ANAF și registrul comerțului: `judet`, `localitate`, `strada`, `numar`, `detalii` și `cod_postal`, scrise pentru cititor (cum le scrie sursa sunt în `oficial.sediu_social`). La aproape toate firmele este aceeași adresă cu cea de mai sus; diferă unde domiciliul fiscal declarat la ANAF este în altă parte.","type":"object"},"nr_reg_com":{"description":"Numărul de înregistrare în registrul comerțului.","type":["string","null"]},"data_inceput_tva":{"description":"De când este înregistrată în scopuri de TVA.","format":"date","type":["string","null"]},"data_inregistrare":{"description":"Data înregistrării fiscale (sursa: ANAF).","format":"date","type":["string","null"]},"checked_on":{"description":"Ziua în care a fost întrebat ultima oară ANAF despre firmă; `null` dacă încă nu.","format":"date","type":["string","null"]},"stare_detalii":{"description":"Starea înregistrării la ANAF, cu ziua ei, scrisă pentru cititor: „Dizolvare fără lichidare (fuziune) din data 01.06.2024”, „Suspendare activitate din data 01.03.2025”, „Înregistrat din data 23.11.2000”. Spune mai mult decât `stare` (de pildă că firma a fost absorbită la o fuziune); cum o scrie ANAF este în `oficial.stare_detalii`. `null` unde ANAF nu dă nimic.","type":["string","null"]},"forma_juridica":{"description":"Forma juridică așa cum o scrie ANAF.","type":["string","null"]},"oficial":{"description":"Denumirea (`denumire`), localitatea (`localitate`), adresa (`adresa_completa`), codul poștal (`cod_postal`), starea la ANAF (`stare_detalii`) și, din sediul social, localitatea, strada, detaliile și codul poștal (`sediu_social`) așa cum le scrie sursa, de obicei cu majuscule (un cod poștal care nu are șase cifre este dat mai sus ca `null`, aici cum este). În câmpurile de mai sus sunt scrise pentru cititor: se schimbă doar literele mari și mici, spațiile, punctuația, ş și ţ (scrise cu virgulă dedesubt) și forma câtorva prescurtări (`STR` devine `Str.`, `NR.` devine `nr.`); niciun cuvânt și niciun număr nu lipsește și nu își schimbă locul. Forma juridică rămâne cum a fost înregistrată (`SRL` sau `S.R.L.`).","type":"object"},"split_tva":{"description":"Dacă aplică plata defalcată a TVA.","type":"boolean"},"persoana_fizica":{"description":"`false` pentru o persoană juridică, `true` pentru o persoană fizică care desfășoară o activitate economică (PFA, întreprindere individuală sau familială, profesie liberală), `null` cât timp sursele nu permit să se spună.","type":["boolean","null"]},"web":{"description":"Adresa web declarată la registrul comerțului.","type":["string","null"]},"changed_on":{"description":"Ziua în care s-a schimbat ultima oară o valoare deja cunoscută a firmei; `null` dacă nu s-a schimbat nimic de când o avem. Se urmărește tot ce dau sursele: orice câmp al răspunsului ANAF (denumirea, adresele, telefonul, faxul, codul poștal, starea, codul CAEN, TVA, TVA la încasare, plata defalcată, inactivitatea, e-Factura), datele din registrul comerțului și obligațiile fiscale. Nu este o schimbare o informație care lipsea și a fost completată, nici una scrisă doar altfel (litere mari, spații, ş sau ș).","format":"date","type":["string","null"]},"data_sfarsit_tva":{"description":"Până când a fost înregistrată, dacă nu mai este.","format":"date","type":["string","null"]},"adresa_completa":{"description":"Adresa firmei, într-un singur text, scrisă pentru cititor: domiciliul fiscal, cum îl dă ANAF, iar la o firmă despre care ANAF nu a răspuns, sediul din registrul comerțului. Unde ANAF are domiciliul fiscal în altă parte decât sediul social, județul, localitatea și codul poștal sunt tot ale lui; sediul social este în `sediu_social`. Cum o scrie sursa este în `oficial`.","type":["string","null"]},"stare":{"description":"Starea, într-un cuvânt: `FUNCTIUNE`, `SUSPENDARE`, `REORGANIZARE JUDICIARA`, `INSOLVENTA`, `DIZOLVARE`, `LICHIDARE`, `FALIMENT`, `RADIERE`.","type":["string","null"]},"caen_denumire":{"description":"Denumirea codului CAEN, în clasificarea în vigoare.","type":["string","null"]},"caen_autorizate":{"description":"Activitățile pentru care firma este autorizată, din datele deschise ale registrului comerțului: fiecare cu `cod`, `versiune` (a clasificării CAEN în care a fost declarată: 3 este cea din 2025, 2 cea din 2008, 1 cea din 2003, 0 cea din 1998) și `denumire`, cea mai nouă clasificare întâi. Registrul păstrează și ce a fost declarat în clasificările vechi, deci aceeași activitate poate apărea cu coduri din mai multe versiuni. `null` când nu sunt cunoscute (firma nu este în setul registrului), ceea ce nu înseamnă că nu are niciuna.","type":["array","null"]},"telefon":{"description":"Telefonul declarat la ANAF, cum îl scrie ANAF. `null` și unde ANAF nu are decât o valoare fără nicio cifră în afară de 0 („0”, „0/0”, „nedeclarat”).","type":["string","null"]},"euid":{"description":"Identificatorul unic european (sursa: ONRC).","type":["string","null"]},"localitate":{"description":"Localitatea adresei firmei, scrisă pentru cititor; cum o scrie sursa este în `oficial`.","type":["string","null"]},"obligatii_fiscale":{"anyOf":[{"$ref":"#/components/schemas/FiscalObligations"},{"type":"null"}],"description":"Obligațiile fiscale la care contribuabilul era înregistrat (vectorul fiscal), din lista pe care Ministerul Finanțelor o publică o dată pe an: starea din ziua listei (`la_data`), nu cea de azi. `null` când nu se cunosc: firma nu apare în listă sau a fost preluată după ce lista a fost importată. Nu înseamnă că nu are obligații."},"stari_registru":{"description":"Toate stările și mențiunile din registrul comerțului, fiecare cu `cod` și `denumire`.","type":"array"},"sources":{"description":"Din ce surse vin datele firmei și de când.","items":{"$ref":"#/components/schemas/Source"},"type":"array"}},"type":"object","x-order":["cui","denumire","nr_reg_com","adresa_completa","localitate","judet","cod_postal","stare","stare_detalii","persoana_fizica","forma_juridica_cod","forma_juridica","caen","caen_denumire","scp_tva","data_inceput_tva","data_sfarsit_tva","tva_incasare","split_tva","e_factura","status_inactiv","data_inactivare","data_inregistrare","data_inmatriculare","telefon","fax","web","euid","sediu_secundar","updated_on","changed_on","checked_on","sediu_social","obligatii_fiscale","stari_registru","caen_autorizate","sources","oficial"]},"CompanyFound":{"properties":{"cui":{"description":"Codul unic de identificare.","type":"integer"},"denumire":{"description":"Denumirea, scrisă pentru cititor; cum o scrie sursa este în `oficial`.","type":["string","null"]},"forma_juridica_cod":{"description":"Forma juridică din registrul comerțului: `SRL`, `SA`, ...","type":["string","null"]},"judet":{"description":"Codul județului sediului: `SB`, `B`, ...","type":["string","null"]},"localitate":{"description":"Localitatea sediului, scrisă pentru cititor; cum o scrie sursa este în `oficial`.","type":["string","null"]},"nr_reg_com":{"description":"Numărul de înregistrare în registrul comerțului.","type":["string","null"]},"oficial":{"description":"Denumirea (`denumire`) și localitatea (`localitate`) așa cum le scrie sursa, de obicei cu majuscule, ca la datele firmei.","type":"object"},"persoana_fizica":{"description":"`false` pentru o persoană juridică, `true` pentru o persoană fizică care desfășoară o activitate economică (PFA, întreprindere individuală sau familială, profesie liberală), `null` cât timp sursele nu permit să se spună.","type":["boolean","null"]},"stare":{"description":"Starea, într-un cuvânt: `FUNCTIUNE`, `SUSPENDARE`, `REORGANIZARE JUDICIARA`, `INSOLVENTA`, `DIZOLVARE`, `LICHIDARE`, `FALIMENT`, `RADIERE`.","type":["string","null"]}},"type":"object","x-order":["cui","denumire","nr_reg_com","stare","judet","localitate","forma_juridica_cod","persoana_fizica","oficial"]},"CuiValidation":{"properties":{"cui":{"description":"CUI-ul ca număr, dacă este valid; altfel textul primit.","type":["integer","string"]},"valid":{"description":"Dacă forma și cifra de control sunt corecte.","type":"boolean"}},"type":"object","x-order":["cui","valid"]},"Event":{"properties":{"detected_on":{"description":"Ziua în care am observat schimbarea.","format":"date","type":"string"},"new":{"description":"Valoarea de după, la fel.","type":["object","null"]},"occurred_on":{"description":"Ziua pe care sursa o dă pentru schimbare, acolo unde o dă (de exemplu începutul perioadei de TVA).","format":"date","type":["string","null"]},"oficial":{"description":"La o schimbare de denumire sau de adresă, valoarea dinainte (`old`) și cea de după (`new`) așa cum le scrie sursa; `null` la celelalte.","type":["object","null"]},"old":{"description":"Valoarea dinainte, sub numele câmpului schimbat (`denumire`, `adresa_completa`, `stare`, `caen`); `null` când evenimentul este un început sau un sfârșit. O denumire sau o adresă este scrisă pentru cititor, ca la datele firmei.","type":["object","null"]},"source":{"description":"Cheia sursei în al cărei răspuns a apărut schimbarea: `anaf_ws`.","type":"string"},"type":{"description":"Felul schimbării: `vat_registered`, `vat_deregistered`, `vat_on_collection_started`, `vat_on_collection_ended`, `split_vat_started`, `split_vat_ended`, `inactivated`, `reactivated`, `efactura_registered`, `efactura_deregistered`, `struck_off`, `status_changed`, `name_changed`, `address_changed`, `caen_changed`.","type":"string"}},"type":"object","x-order":["type","old","new","occurred_on","detected_on","source","oficial"]},"EventsList":{"properties":{"cui":{"description":"CUI-ul firmei.","type":"integer"},"events":{"description":"Schimbările observate, cea mai recentă întâi.","items":{"$ref":"#/components/schemas/Event"},"type":"array"}},"type":"object","x-order":["cui","events"]},"FinancialsList":{"properties":{"cui":{"description":"CUI-ul firmei.","type":"integer"},"financials":{"description":"Situațiile financiare, cel mai recent an întâi.","items":{"$ref":"#/components/schemas/Statement"},"type":"array"}},"type":"object","x-order":["cui","financials"]},"FiscalObligations":{"properties":{"la_data":{"description":"Ziua listei: ziua până la care ministerul prelucrase declarațiile cuprinse în ea. Lista se publică o dată pe an, iar tot ce este aici este starea din această zi.","format":"date","type":"string"},"obligatii":{"description":"Obligațiile la care era înregistrat, fiecare cu `cod` (codul ministerului: `100` impozit pe profit, `120` impozit pe veniturile microîntreprinderilor, `200` accize, `602` impozit pe salarii, `480` contribuția asiguratorie pentru muncă, ...) și `denumire`. O listă goală înseamnă că ministerul avea contribuabilul în listă, fără vreo obligație.","type":"array"},"regim_impozitare":{"description":"Cum era impozitat venitul, după obligațiile din listă: `profit` (impozit pe profit, codul `100`), `micro` (impozit pe veniturile microîntreprinderilor, `120`) sau `specific` (impozit specific, `130`); `null` când lista nu are niciuna dintre ele sau are mai multe.","type":["string","null"]},"ultima_declaratie":{"description":"Ziua în care a fost înregistrată ultima declarație a contribuabilului, cum o dă lista („data înregistrării ultimei declarații”). Nu este data înregistrării fiscale și nici a ultimei declarații de impozite (firmele cu salariați depun lunar, iar la cele mai multe data este mai veche de un an): după toate semnele, este ultima declarație privitoare la înregistrarea fiscală, de pildă o schimbare a obligațiilor.","format":"date","type":["string","null"]},"ultima_prelucrare":{"description":"Ziua în care ministerul a prelucrat ultima oară datele contribuabilului, cum o dă lista („data ultimei prelucrări”).","format":"date","type":["string","null"]}},"type":"object","x-order":["la_data","regim_impozitare","obligatii","ultima_declaratie","ultima_prelucrare"]},"FxConversion":{"properties":{"amount":{"description":"Suma.","type":"number"},"date":{"description":"Ziua cerută.","format":"date","type":"string"},"effective_date":{"description":"Ziua bancară a cursului folosit.","format":"date","type":"string"},"from":{"description":"Valuta sumei.","type":"string"},"rate":{"description":"Cursul folosit, din `from` în `to`.","type":"number"},"result":{"description":"Suma convertită.","type":"number"},"to":{"description":"Valuta rezultatului.","type":"string"}},"type":"object","x-order":["from","to","amount","result","rate","date","effective_date"]},"FxDay":{"properties":{"base":{"description":"Moneda în care sunt exprimate cursurile: `RON`.","type":"string"},"date":{"description":"Ziua cerută.","format":"date","type":"string"},"effective_date":{"description":"Ziua bancară pentru care a fost publicat cursul.","format":"date","type":"string"},"rates":{"description":"Pentru fiecare valută: `rate`, în lei pentru `multiplier` unități ale valutei.","type":"object"},"source":{"description":"Sursa cursului și când a fost preluat.","type":"object"}},"type":"object","x-order":["date","effective_date","base","rates","source"]},"FxSeries":{"properties":{"base":{"description":"`RON`.","type":"string"},"currency":{"description":"Valuta.","type":"string"},"from":{"description":"Prima zi a perioadei.","format":"date","type":"string"},"series":{"description":"Pentru fiecare zi bancară: `date`, `rate` și `multiplier`.","type":"array"},"to":{"description":"Ultima zi a perioadei.","format":"date","type":"string"}},"type":"object","x-order":["currency","base","from","to","series"]},"InvoiceCheck":{"properties":{"checked_on":{"description":"Ziua în care a răspuns ANAF ultima oară despre firmă.","format":"date","type":["string","null"]},"cui":{"description":"Codul unic de identificare.","type":"integer"},"denumire":{"description":"Denumirea, scrisă pentru cititor; cum o scrie sursa este în `oficial`.","type":["string","null"]},"efactura_registered":{"description":"Dacă este înscrisă în registrul RO e-Factura.","type":"boolean"},"exists":{"description":"Dacă ANAF cunoaște un contribuabil cu acest CUI.","type":"boolean"},"inactive":{"description":"Dacă este declarată inactivă fiscal.","type":"boolean"},"oficial":{"description":"Denumirea (`denumire`) așa cum o scrie sursa, de obicei cu majuscule; `null` când ANAF nu cunoaște CUI-ul.","type":["object","null"]},"split_vat":{"description":"Dacă aplică plata defalcată a TVA.","type":"boolean"},"stare":{"description":"Starea, într-un cuvânt, ca la datele firmei.","type":["string","null"]},"struck_off":{"description":"Dacă este radiată.","type":"boolean"},"valid_for_invoicing":{"description":"Dacă firma există, nu este radiată și nu este inactivă fiscal.","type":"boolean"},"vat_number":{"description":"Codul de TVA (`RO` urmat de CUI), dacă este înregistrată în scopuri de TVA.","type":["string","null"]},"vat_on_collection":{"description":"Dacă aplică TVA la încasare.","type":"boolean"},"vat_registered":{"description":"Dacă este înregistrată în scopuri de TVA.","type":"boolean"}},"type":"object","x-order":["cui","denumire","exists","valid_for_invoicing","vat_registered","vat_number","vat_on_collection","split_vat","inactive","struck_off","efactura_registered","stare","checked_on","oficial"]},"Pending":{"properties":{"retry_after":{"description":"După câte secunde merită repetată cererea.","type":"integer"},"status":{"description":"`pending`.","type":"string"}},"type":"object","x-order":["status","retry_after"]},"Problem":{"properties":{"detail":{"description":"Ce anume nu a mers.","type":"string"},"status":{"description":"Codul HTTP.","type":"integer"},"title":{"description":"Eroarea, pe scurt.","type":"string"},"type":{"description":"Adresa care identifică felul erorii.","type":"string"}},"type":"object","x-order":["type","title","status","detail"]},"Registration":{"properties":{"cod_postal":{"description":"Codul poștal al adresei firmei, din șase cifre. `null` unde sursa nu are unul în uz (codurile de dinainte de 2003, valori incomplete).","type":["string","null"]},"sediu_secundar":{"description":"Dacă este sediul secundar al unei firme, înregistrat la ANAF cu CUI propriu.","type":"boolean"},"scp_tva":{"description":"Dacă este înregistrată în scopuri de TVA.","type":"boolean"},"judet":{"description":"Codul județului adresei firmei: `SB`, `B`, ... Filtrele după județ (firmele noi, căutarea, webhooks) merg după județul sediului social (`sediu_social.judet`), care este același la aproape toate firmele.","type":["string","null"]},"e_factura":{"description":"Dacă este înscrisă în registrul RO e-Factura.","type":"boolean"},"updated_on":{"description":"Ziua în care s-a schimbat ultima oară ceva în datele firmei.","format":"date","type":["string","null"]},"fax":{"description":"Faxul declarat la ANAF, cum îl scrie ANAF. `null` și unde ANAF nu are decât o valoare fără nicio cifră în afară de 0 („0”, „0/0”, „nedeclarat”).","type":["string","null"]},"denumire":{"description":"Denumirea, scrisă pentru cititor; cum o scrie sursa este în `oficial`.","type":["string","null"]},"tva_incasare":{"description":"Dacă aplică TVA la încasare.","type":"boolean"},"cui":{"description":"Codul unic de identificare.","type":"integer"},"caen":{"description":"Codul CAEN al activității principale (sursa: ANAF).","type":["integer","null"]},"forma_juridica_cod":{"description":"Forma juridică din registrul comerțului: `SRL`, `SA`, ...","type":["string","null"]},"status_inactiv":{"description":"Dacă este declarată inactivă fiscal.","type":"boolean"},"data_inactivare":{"description":"De când este inactivă.","format":"date","type":["string","null"]},"data_inmatriculare":{"description":"Data intrării în registrul comerțului (sursa: ONRC).","format":"date","type":["string","null"]},"sediu_social":{"description":"Sediul social, cum îl dau ANAF și registrul comerțului: `judet`, `localitate`, `strada`, `numar`, `detalii` și `cod_postal`, scrise pentru cititor (cum le scrie sursa sunt în `oficial.sediu_social`). La aproape toate firmele este aceeași adresă cu cea de mai sus; diferă unde domiciliul fiscal declarat la ANAF este în altă parte.","type":"object"},"nr_reg_com":{"description":"Numărul de înregistrare în registrul comerțului.","type":["string","null"]},"data_inceput_tva":{"description":"De când este înregistrată în scopuri de TVA.","format":"date","type":["string","null"]},"data_inregistrare":{"description":"Data înregistrării fiscale (sursa: ANAF).","format":"date","type":["string","null"]},"checked_on":{"description":"Ziua în care a fost întrebat ultima oară ANAF despre firmă; `null` dacă încă nu.","format":"date","type":["string","null"]},"stare_detalii":{"description":"Starea înregistrării la ANAF, cu ziua ei, scrisă pentru cititor: „Dizolvare fără lichidare (fuziune) din data 01.06.2024”, „Suspendare activitate din data 01.03.2025”, „Înregistrat din data 23.11.2000”. Spune mai mult decât `stare` (de pildă că firma a fost absorbită la o fuziune); cum o scrie ANAF este în `oficial.stare_detalii`. `null` unde ANAF nu dă nimic.","type":["string","null"]},"forma_juridica":{"description":"Forma juridică așa cum o scrie ANAF.","type":["string","null"]},"oficial":{"description":"Denumirea (`denumire`), localitatea (`localitate`), adresa (`adresa_completa`), codul poștal (`cod_postal`), starea la ANAF (`stare_detalii`) și, din sediul social, localitatea, strada, detaliile și codul poștal (`sediu_social`) așa cum le scrie sursa, de obicei cu majuscule (un cod poștal care nu are șase cifre este dat mai sus ca `null`, aici cum este). În câmpurile de mai sus sunt scrise pentru cititor: se schimbă doar literele mari și mici, spațiile, punctuația, ş și ţ (scrise cu virgulă dedesubt) și forma câtorva prescurtări (`STR` devine `Str.`, `NR.` devine `nr.`); niciun cuvânt și niciun număr nu lipsește și nu își schimbă locul. Forma juridică rămâne cum a fost înregistrată (`SRL` sau `S.R.L.`).","type":"object"},"split_tva":{"description":"Dacă aplică plata defalcată a TVA.","type":"boolean"},"persoana_fizica":{"description":"`false` pentru o persoană juridică, `true` pentru o persoană fizică care desfășoară o activitate economică (PFA, întreprindere individuală sau familială, profesie liberală), `null` cât timp sursele nu permit să se spună.","type":["boolean","null"]},"web":{"description":"Adresa web declarată la registrul comerțului.","type":["string","null"]},"changed_on":{"description":"Ziua în care s-a schimbat ultima oară o valoare deja cunoscută a firmei; `null` dacă nu s-a schimbat nimic de când o avem. Se urmărește tot ce dau sursele: orice câmp al răspunsului ANAF (denumirea, adresele, telefonul, faxul, codul poștal, starea, codul CAEN, TVA, TVA la încasare, plata defalcată, inactivitatea, e-Factura), datele din registrul comerțului și obligațiile fiscale. Nu este o schimbare o informație care lipsea și a fost completată, nici una scrisă doar altfel (litere mari, spații, ş sau ș).","format":"date","type":["string","null"]},"data_sfarsit_tva":{"description":"Până când a fost înregistrată, dacă nu mai este.","format":"date","type":["string","null"]},"adresa_completa":{"description":"Adresa firmei, într-un singur text, scrisă pentru cititor: domiciliul fiscal, cum îl dă ANAF, iar la o firmă despre care ANAF nu a răspuns, sediul din registrul comerțului. Unde ANAF are domiciliul fiscal în altă parte decât sediul social, județul, localitatea și codul poștal sunt tot ale lui; sediul social este în `sediu_social`. Cum o scrie sursa este în `oficial`.","type":["string","null"]},"stare":{"description":"Starea, într-un cuvânt: `FUNCTIUNE`, `SUSPENDARE`, `REORGANIZARE JUDICIARA`, `INSOLVENTA`, `DIZOLVARE`, `LICHIDARE`, `FALIMENT`, `RADIERE`.","type":["string","null"]},"caen_denumire":{"description":"Denumirea codului CAEN, în clasificarea în vigoare.","type":["string","null"]},"caen_autorizate":{"description":"Activitățile pentru care firma este autorizată, din datele deschise ale registrului comerțului: fiecare cu `cod`, `versiune` (a clasificării CAEN în care a fost declarată: 3 este cea din 2025, 2 cea din 2008, 1 cea din 2003, 0 cea din 1998) și `denumire`, cea mai nouă clasificare întâi. Registrul păstrează și ce a fost declarat în clasificările vechi, deci aceeași activitate poate apărea cu coduri din mai multe versiuni. `null` când nu sunt cunoscute (firma nu este în setul registrului), ceea ce nu înseamnă că nu are niciuna.","type":["array","null"]},"telefon":{"description":"Telefonul declarat la ANAF, cum îl scrie ANAF. `null` și unde ANAF nu are decât o valoare fără nicio cifră în afară de 0 („0”, „0/0”, „nedeclarat”).","type":["string","null"]},"euid":{"description":"Identificatorul unic european (sursa: ONRC).","type":["string","null"]},"localitate":{"description":"Localitatea adresei firmei, scrisă pentru cititor; cum o scrie sursa este în `oficial`.","type":["string","null"]},"obligatii_fiscale":{"anyOf":[{"$ref":"#/components/schemas/FiscalObligations"},{"type":"null"}],"description":"Obligațiile fiscale la care contribuabilul era înregistrat (vectorul fiscal), din lista pe care Ministerul Finanțelor o publică o dată pe an: starea din ziua listei (`la_data`), nu cea de azi. `null` când nu se cunosc: firma nu apare în listă sau a fost preluată după ce lista a fost importată. Nu înseamnă că nu are obligații."},"registered_on":{"description":"Data înregistrării: intrarea în registrul comerțului unde este cunoscută, altfel înregistrarea fiscală la ANAF.","format":"date","type":["string","null"]},"stari_registru":{"description":"Toate stările și mențiunile din registrul comerțului, fiecare cu `cod` și `denumire`.","type":"array"},"sources":{"description":"Din ce surse vin datele firmei și de când.","items":{"$ref":"#/components/schemas/Source"},"type":"array"}},"type":"object","x-order":["cui","denumire","nr_reg_com","adresa_completa","localitate","judet","cod_postal","stare","stare_detalii","persoana_fizica","forma_juridica_cod","forma_juridica","caen","caen_denumire","scp_tva","data_inceput_tva","data_sfarsit_tva","tva_incasare","split_tva","e_factura","status_inactiv","data_inactivare","data_inregistrare","data_inmatriculare","registered_on","telefon","fax","web","euid","sediu_secundar","updated_on","changed_on","checked_on","sediu_social","obligatii_fiscale","stari_registru","caen_autorizate","sources","oficial"]},"RegistrationEvent":{"properties":{"created_at":{"description":"Când a fost creat evenimentul.","format":"date-time","type":"string"},"data":{"$ref":"#/components/schemas/Registration","description":"Firma, exact cum o întoarce `GET /rest/v1/registrations`."},"id":{"description":"Identifică evenimentul: `company.registered:` urmat de CUI. Același la fiecare reîncercare.","type":"string"},"test":{"description":"`true` pentru un mesaj de probă cerut din cont: are forma unuia adevărat, cu o firmă oarecare, și un `id` care începe cu `test:`.","type":"boolean"},"type":{"description":"Felul evenimentului: `company.registered`.","type":"string"}},"type":"object","x-order":["id","type","test","created_at","data"]},"RegistrationsCount":{"properties":{"count":{"description":"Numărul firmelor care corespund filtrului.","type":"integer"},"filter":{"description":"Filtrul aplicat, cu perioada rezultată.","type":"object"},"upgrade_required_for_records":{"description":"Dacă lista acestor firme cere un plan mai mare decât cel al cheii.","type":"boolean"}},"type":"object","x-order":["count","filter","upgrade_required_for_records"]},"RegistrationsPage":{"properties":{"data":{"description":"Firmele, în ordinea în care au fost indexate.","items":{"$ref":"#/components/schemas/Registration"},"type":"array"},"filter":{"description":"Filtrul aplicat, cu perioada rezultată.","type":"object"},"more":{"description":"Dacă după această pagină mai sunt firme.","type":"boolean"},"next_cursor":{"description":"De trimis ca `cursor` pentru pagina următoare. Este și pe ultima pagină: păstrat și trimis a doua zi, aduce firmele indexate între timp.","type":"string"}},"type":"object","x-order":["data","next_cursor","more","filter"]},"SearchResult":{"properties":{"data":{"description":"Firmele găsite, cele mai apropiate întâi: cel mult 10.","items":{"$ref":"#/components/schemas/CompanyFound"},"type":"array"},"more":{"description":"`true` dacă se potrivesc și alte firme decât cele întoarse.","type":"boolean"}},"type":"object","x-order":["data","more"]},"Source":{"properties":{"dataset":{"description":"Setul de date din care a fost luată ultima oară informația, pentru sursele care publică fișiere.","type":["string","null"]},"dataset_url":{"description":"Pagina setului de date (la situațiile financiare).","type":["string","null"]},"first_retrieved_on":{"description":"Ziua în care sursa a furnizat prima oară informația.","format":"date","type":["string","null"]},"import_run_id":{"description":"Rularea de import care a adus informația.","type":["integer","null"]},"last_retrieved_on":{"description":"Ziua în care a furnizat-o ultima oară.","format":"date","type":["string","null"]},"licence":{"description":"Licența sub care sunt publicate datele, unde este declarată.","type":["string","null"]},"name":{"description":"Denumirea sursei.","type":"string"},"published_at":{"description":"Când a publicat instituția fișierul (la situațiile financiare); `null` la cele luate din serviciul web al ANAF, care nu spune când le-a publicat.","format":"date-time","type":["string","null"]},"publisher":{"description":"Instituția care publică datele.","type":"string"},"source":{"description":"Cheia sursei: `anaf_ws`, `onrc_bulk`, `mf_financials`, `anaf_bilant`, `mf_vector_fiscal`.","type":"string"}},"type":"object","x-order":["source","name","publisher","licence","dataset","dataset_url","published_at","first_retrieved_on","last_retrieved_on","import_run_id"]},"Statement":{"properties":{"active_circulante":{"description":"Active circulante, total. În lei întregi; `null` dacă ministerul nu publică valoarea (zero în situațiile luate din serviciul web al ANAF).","type":["integer","null"]},"active_imobilizate":{"description":"Active imobilizate, total. În lei întregi; `null` dacă ministerul nu publică valoarea (zero în situațiile luate din serviciul web al ANAF).","type":["integer","null"]},"alti_indicatori":{"description":"Indicatorii pe care acest tip de raportare îi are în plus, fiecare cu `cod`, `denumire` și `valoare`.","type":"array"},"an":{"description":"Anul situației financiare.","type":"integer"},"caen":{"description":"Codul CAEN din situația financiară.","type":["integer","null"]},"caen_denumire":{"description":"Denumirea codului, în clasificarea în vigoare în acel an.","type":["string","null"]},"capital_social":{"description":"Capital subscris vărsat. În lei întregi; `null` dacă ministerul nu publică valoarea (zero în situațiile luate din serviciul web al ANAF).","type":["integer","null"]},"capitaluri_total":{"description":"Capitaluri, total. În lei întregi; `null` dacă ministerul nu publică valoarea (zero în situațiile luate din serviciul web al ANAF).","type":["integer","null"]},"casa_banca":{"description":"Casa și conturi la bănci. În lei întregi; `null` dacă ministerul nu publică valoarea (zero în situațiile luate din serviciul web al ANAF).","type":["integer","null"]},"cheltuieli_avans":{"description":"Cheltuieli în avans. În lei întregi; `null` dacă ministerul nu publică valoarea (zero în situațiile luate din serviciul web al ANAF).","type":["integer","null"]},"cheltuieli_totale":{"description":"Cheltuieli totale. În lei întregi; `null` dacă ministerul nu publică valoarea (zero în situațiile luate din serviciul web al ANAF).","type":["integer","null"]},"cifra_afaceri":{"description":"Cifra de afaceri netă. În lei întregi; `null` dacă ministerul nu publică valoarea (zero în situațiile luate din serviciul web al ANAF).","type":["integer","null"]},"creante":{"description":"Creanțe. În lei întregi; `null` dacă ministerul nu publică valoarea (zero în situațiile luate din serviciul web al ANAF).","type":["integer","null"]},"cui":{"description":"CUI-ul firmei.","type":"integer"},"datorii":{"description":"Datorii. În lei întregi; `null` dacă ministerul nu publică valoarea (zero în situațiile luate din serviciul web al ANAF).","type":["integer","null"]},"nr_mediu_salariati":{"description":"Număr mediu de salariați. În lei întregi; `null` dacă ministerul nu publică valoarea (zero în situațiile luate din serviciul web al ANAF).","type":["integer","null"]},"patrimoniul_regiei":{"description":"Patrimoniul regiei. În lei întregi; `null` dacă ministerul nu publică valoarea (zero în situațiile luate din serviciul web al ANAF).","type":["integer","null"]},"pierdere_bruta":{"description":"Pierdere brută. În lei întregi; `null` dacă ministerul nu publică valoarea (zero în situațiile luate din serviciul web al ANAF).","type":["integer","null"]},"pierdere_neta":{"description":"Pierdere netă. În lei întregi; `null` dacă ministerul nu publică valoarea (zero în situațiile luate din serviciul web al ANAF).","type":["integer","null"]},"profit_brut":{"description":"Profit brut. În lei întregi; `null` dacă ministerul nu publică valoarea (zero în situațiile luate din serviciul web al ANAF).","type":["integer","null"]},"profit_net":{"description":"Profit net. În lei întregi; `null` dacă ministerul nu publică valoarea (zero în situațiile luate din serviciul web al ANAF).","type":["integer","null"]},"provizioane":{"description":"Provizioane. În lei întregi; `null` dacă ministerul nu publică valoarea (zero în situațiile luate din serviciul web al ANAF).","type":["integer","null"]},"sources":{"description":"De unde provine situația (setul de date al ministerului și când l-a publicat, sau serviciul web al ANAF) și când am preluat-o.","items":{"$ref":"#/components/schemas/Source"},"type":"array"},"stocuri":{"description":"Stocuri. În lei întregi; `null` dacă ministerul nu publică valoarea (zero în situațiile luate din serviciul web al ANAF).","type":["integer","null"]},"tip_raportare":{"description":"Tipul de raportare al Ministerului Finanțelor: `UU` (bilanț prescurtat), `BL_BS_SL`, `IR` (IFRS), `ONG`, ... Serviciul web al ANAF nu dă tipul: la o situație luată de acolo este dedus din indicatorii ei, iar unde mai multe tipuri au aceiași indicatori este tipul firmei din anul dinainte.","type":"string"},"tip_raportare_descriere":{"description":"Ce fel de contribuabili depun acest tip.","type":["string","null"]},"updated_at":{"description":"Când s-a schimbat ultima oară situația în baza noastră de date.","format":"date-time","type":"string"},"venituri_avans":{"description":"Venituri în avans. În lei întregi; `null` dacă ministerul nu publică valoarea (zero în situațiile luate din serviciul web al ANAF).","type":["integer","null"]},"venituri_totale":{"description":"Venituri totale. În lei întregi; `null` dacă ministerul nu publică valoarea (zero în situațiile luate din serviciul web al ANAF).","type":["integer","null"]}},"type":"object","x-order":["cui","an","tip_raportare","tip_raportare_descriere","caen","caen_denumire","active_imobilizate","active_circulante","stocuri","creante","casa_banca","cheltuieli_avans","datorii","venituri_avans","provizioane","capitaluri_total","capital_social","patrimoniul_regiei","cifra_afaceri","venituri_totale","cheltuieli_totale","profit_brut","pierdere_bruta","profit_net","pierdere_neta","nr_mediu_salariati","alti_indicatori","updated_at","sources"]}},"securitySchemes":{"cheie":{"description":"Cheia API, în antetul `Authorization: Bearer <cheie>`.","scheme":"bearer","type":"http"}}},"info":{"description":"Date despre firmele din România: date de identificare, stare, TVA, situații financiare anuale, firme nou înregistrate și cursul de referință BNR. Fiecare răspuns spune din ce sursă și de la ce dată este informația.","title":"apifirme","version":"1"},"openapi":"3.1.0","paths":{"/rest/v1/companies/batch":{"post":{"description":"Până la 100 de CUI-uri într-o singură cerere, cu răspuns din ce este deja în baza de date, pentru orice fel de înregistrare, persoanele fizice incluse. Costă atâtea cereri câte înregistrări întoarce în `data`, și cel puțin una. Un CUI care nu este încă în baza de date apare în `not_stored`, iar unul din baza de date căruia îi lipsesc încă datele de la ANAF (de pildă denumirea, adresa, înregistrarea în scopuri de TVA) apare în `incomplete`. Acestea nu costă nimic și pot fi cerute singure, cu `GET /rest/v1/companies/{cui}`, care le caută pe loc la ANAF. Pentru limita pe minut, o cerere cu mai multe firme este o singură cerere.","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchRequest"}}},"description":"CUI-urile cerute.","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchResult"}}},"description":"Firmele găsite și ce este cu celelalte CUI-uri."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"}},"summary":"Mai multe firme într-o cerere","tags":["Firme"]}},"/rest/v1/companies/search":{"get":{"description":"Găsește o firmă după denumire sau după numărul din registrul comerțului, pentru cine nu îi știe CUI-ul. Se dă exact unul dintre `denumire` și `nr_reg_com`. După denumire vin întâi firmele care se numesc chiar așa, cu sau fără forma juridică („dedeman” găsește „DEDEMAN SRL”), apoi cele a căror denumire începe așa, apoi cele care conțin toate cuvintele, în orice ordine. Diacriticele și majusculele nu contează, iar firmele în funcțiune vin înaintea celorlalte. Răspunsul are cel mult 10 firme, cu câteva câmpuri fiecare, și nu are o pagină următoare: `more` spune că se potrivesc și altele, iar atunci ajută județul sau o denumire mai exactă. Datele complete ale unei firme se cer cu CUI-ul ei. Persoanele fizice care desfășoară o activitate economică sunt găsite ca firmele; sediile secundare nu apar. O căutare costă o cerere și are o limită proprie pe minut, după plan; peste ea răspunsul este `429` cu `searches-limited`.","parameters":[{"description":"Denumirea firmei sau o parte din ea: cel puțin un cuvânt de trei litere sau cifre, în afara formei juridice.","in":"query","name":"denumire","required":false,"schema":{"type":"string"}},{"description":"Numărul din registrul comerțului, în forma veche (`J32/508/2000`) sau în cea nouă (`J2000000508324`), oricum ar fi el păstrat la noi. Se pot căuta și numerele persoanelor fizice, care încep cu `F`.","in":"query","name":"nr_reg_com","required":false,"schema":{"type":"string"}},{"description":"Doar împreună cu `denumire`: codul unui județ, ca pe plăcuțele de înmatriculare (`SB`, `B` pentru București).","in":"query","name":"judet","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResult"}}},"description":"Firmele găsite."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"}},"summary":"Caută o firmă fără CUI","tags":["Firme"]}},"/rest/v1/companies/{cui}":{"get":{"description":"Întoarce firma cu acest CUI. Dacă firma nu este încă în baza de date, este căutată pe loc la ANAF: răspunsul vine în aceeași cerere sau, dacă sursa întârzie, cu `202` și antetul `Retry-After`. Răspunde la fel pentru persoanele fizice care desfășoară o activitate economică (PFA, întreprinderi individuale și familiale, profesii liberale), cu ce publică registrele despre ele; `persoana_fizica` spune ce fel de înregistrare este. O înregistrare căreia îi lipsesc încă datele de la ANAF este completată pe loc, ca una care nu este în baza de date; dacă nu are încă o denumire și asta nu se poate acum, răspunsul este tot cel pentru o înregistrare care nu este în baza de date (`202`, `429` sau `503`), nu una fără denumire. Una care are denumirea din registrul comerțului este întoarsă cu ce spune registrul.","parameters":[{"description":"Codul unic de identificare, cu sau fără prefixul `RO`, de exemplu `13548146`.","in":"path","name":"cui","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Company"}}},"description":"Firma."},"202":{"$ref":"#/components/responses/Accepted"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/Unavailable"}},"summary":"Datele unei firme","tags":["Firme"]}},"/rest/v1/companies/{cui}/events":{"get":{"description":"Schimbările observate la firmă de când o urmărim, cea mai recentă întâi (cel mult 200): înregistrarea sau radierea din scopuri de TVA, TVA la încasare, plata defalcată a TVA, declararea ca inactivă și reactivarea, radierea, schimbarea stării, a denumirii, a adresei sau a codului CAEN, RO e-Factura. O schimbare este notată când răspunsul ANAF despre firmă diferă de cel dinainte; ce s-a întâmplat înainte de primul nostru răspuns de la ANAF nu apare, iar lista este goală dacă nu s-a observat nimic. La persoanele fizice și la înregistrările încă neclasificate, o schimbare rămâne în listă trei ani de la data la care a fost observată. Că o firmă este nouă nu este un eveniment aici: pentru asta există `registrations`.","parameters":[{"description":"Codul unic de identificare, cu sau fără prefixul `RO`, de exemplu `13548146`.","in":"path","name":"cui","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EventsList"}}},"description":"Schimbările observate la firmă."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"}},"summary":"Ce s-a schimbat la o firmă","tags":["Firme"]}},"/rest/v1/companies/{cui}/financials":{"get":{"description":"Toate situațiile financiare anuale ale firmei, cel mai recent an întâi. Lista este goală dacă nu există niciuna.","parameters":[{"description":"Codul unic de identificare, cu sau fără prefixul `RO`, de exemplu `13548146`.","in":"path","name":"cui","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialsList"}}},"description":"Situațiile financiare ale firmei."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"}},"summary":"Situațiile financiare ale unei firme","tags":["Situații financiare"]}},"/rest/v1/companies/{cui}/financials/{year}":{"get":{"parameters":[{"description":"Codul unic de identificare, cu sau fără prefixul `RO`, de exemplu `13548146`.","in":"path","name":"cui","required":true,"schema":{"type":"string"}},{"description":"Anul situației financiare, de exemplu `2025`.","in":"path","name":"year","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Statement"}}},"description":"Situația financiară a anului."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"}},"summary":"Situația financiară dintr-un an","tags":["Situații financiare"]}},"/rest/v1/fx/convert":{"get":{"parameters":[{"description":"Valuta sumei, de exemplu `EUR`.","in":"query","name":"from","required":true,"schema":{"type":"string"}},{"description":"Valuta rezultatului, de exemplu `RON`.","in":"query","name":"to","required":true,"schema":{"type":"string"}},{"description":"Suma.","in":"query","name":"amount","required":true,"schema":{"type":"number"}},{"description":"Ziua cursului. Implicit azi.","in":"query","name":"date","required":false,"schema":{"format":"date","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FxConversion"}}},"description":"Suma convertită la cursul BNR."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"}},"summary":"Conversie între două valute","tags":["Curs BNR"]}},"/rest/v1/fx/latest":{"get":{"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FxDay"}}},"description":"Cursurile din ultima zi bancară."},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"}},"summary":"Ultimul curs publicat","tags":["Curs BNR"]}},"/rest/v1/fx/series":{"get":{"parameters":[{"description":"Codul valutei, de exemplu `EUR`.","in":"query","name":"currency","required":true,"schema":{"type":"string"}},{"description":"Prima zi.","in":"query","name":"from","required":true,"schema":{"format":"date","type":"string"}},{"description":"Ultima zi.","in":"query","name":"to","required":true,"schema":{"format":"date","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FxSeries"}}},"description":"Cursul din fiecare zi bancară a perioadei."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"}},"summary":"Cursul unei valute pe o perioadă","tags":["Curs BNR"]}},"/rest/v1/fx/{date}":{"get":{"description":"Pentru o zi în care BNR nu publică (sfârșit de săptămână, sărbătoare) se întoarce cursul ultimei zile bancare dinainte; `effective_date` spune care este aceea.","parameters":[{"description":"Ziua, de exemplu `2026-10-02`.","in":"path","name":"date","required":true,"schema":{"format":"date","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FxDay"}}},"description":"Cursurile valabile în acea zi."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"}},"summary":"Cursul dintr-o zi","tags":["Curs BNR"]}},"/rest/v1/invoice-check/{cui}":{"get":{"description":"Răspunde, într-o singură cerere, la ce vrea să știe un program de facturare despre un client: există, este înregistrat în scopuri de TVA, aplică TVA la încasare, este inactiv fiscal, este în registrul RO e-Factura. Dacă ultimul răspuns al ANAF despre firmă este mai vechi de 24 de ore, firma este întrebată din nou pe loc; `checked_on` spune din ce zi sunt datele. Un CUI valid pe care ANAF nu îl cunoaște primește `200` cu `exists: false`. O înregistrare fără denumire căreia îi lipsesc încă datele de la ANAF este întrebată pe loc; dacă asta nu se poate acum, răspunsul este cel pentru un CUI care nu este în baza de date (`202`, `429` sau `503`).","parameters":[{"description":"Codul unic de identificare, cu sau fără prefixul `RO`, de exemplu `13548146`.","in":"path","name":"cui","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvoiceCheck"}}},"description":"Rezultatul verificării."},"202":{"$ref":"#/components/responses/Accepted"},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/TooManyRequests"},"503":{"$ref":"#/components/responses/Unavailable"}},"summary":"Verificare înainte de facturare","tags":["Firme"]}},"/rest/v1/registrations":{"get":{"description":"Firmele înregistrate în perioada cerută, și persoanele fizice care desfășoară o activitate economică, în ordinea în care au fost indexate, cu paginare prin cursor. Perioada este limitată de plan; o perioadă mai lungă este refuzată cu `400`, nu scurtată pe tăcute. Fiecare pagină are un `next_cursor`, inclusiv ultima: cât timp `more` este `true`, pagina următoare se cere imediat cu `cursor=<next_cursor>`; când este `false`, se păstrează ultimul `next_cursor` și se întreabă din nou cu el a doua zi. Așa nu se pierde nicio firmă: o firmă înregistrată luni poate fi indexată vineri, iar firmele devin vizibile strict în ordinea în care sunt indexate, deci apare după cursorul păstrat. Nu se continuă după data înregistrării și nici după ora propriului ceas. O firmă poate apărea a doua oară: atunci când i se află codul CAEN, județul sau forma juridică după ce a fost indexată (un sfert dintre firmele noi nu au încă un cod CAEN în prima zi). Așa o primește și cine filtrează după ele; se recunoaște după `cui`. Sediile secundare nu apar. Cu `persoana_fizica` se cer doar persoanele juridice sau doar cele fizice, după ce se știe în momentul cererii; o înregistrare încă neclasificată când a fost indexată nu apare a doua oară când este clasificată, așa că o vede doar cine urmărește lista fără acest filtru. Planurile care nu includ lista primesc `403`.","parameters":[{"description":"Firmele înregistrate în ultimele atâtea zile. Nu împreună cu `registered_after`.","in":"query","name":"days","required":false,"schema":{"type":"integer"}},{"description":"Firmele înregistrate începând cu această zi.","in":"query","name":"registered_after","required":false,"schema":{"format":"date","type":"string"}},{"description":"Unul sau mai multe coduri CAEN de patru cifre, despărțite prin virgulă.","in":"query","name":"caen","required":false,"schema":{"type":"string"}},{"description":"Primele două cifre (diviziunea) sau trei (grupa) ale codului CAEN.","in":"query","name":"caen_prefix","required":false,"schema":{"type":"string"}},{"description":"Unul sau mai multe coduri de județ (`SB`, `B`), despărțite prin virgulă: județul sediului social.","in":"query","name":"judet","required":false,"schema":{"type":"string"}},{"description":"Una sau mai multe forme juridice, cu codurile registrului comerțului (`SRL`, `SA`), despărțite prin virgulă.","in":"query","name":"forma_juridica","required":false,"schema":{"type":"string"}},{"description":"`true` pentru doar persoanele fizice care desfășoară o activitate economică (PFA, întreprinderi individuale și familiale, profesii liberale), `false` pentru doar persoanele juridice. Fără el, toate, inclusiv înregistrările încă neclasificate.","in":"query","name":"persoana_fizica","required":false,"schema":{"type":"boolean"}},{"description":"Câte firme pe pagină, între 1 și 500. Implicit 100.","in":"query","name":"limit","required":false,"schema":{"type":"integer"}},{"description":"Valoarea `next_cursor` din răspunsul anterior.","in":"query","name":"cursor","required":false,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistrationsPage"}}},"description":"O pagină de firme noi."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"}},"summary":"Firmele nou înregistrate","tags":["Firme noi"]}},"/rest/v1/registrations/count":{"get":{"description":"Câte firme corespund filtrului. Inclus în orice plan, pe cel mult cea mai lungă perioadă oferită de vreun plan. Fără `days` sau `registered_after` se numără ultimele 30 de zile.","parameters":[{"description":"Firmele înregistrate în ultimele atâtea zile. Nu împreună cu `registered_after`.","in":"query","name":"days","required":false,"schema":{"type":"integer"}},{"description":"Firmele înregistrate începând cu această zi.","in":"query","name":"registered_after","required":false,"schema":{"format":"date","type":"string"}},{"description":"Unul sau mai multe coduri CAEN de patru cifre, despărțite prin virgulă.","in":"query","name":"caen","required":false,"schema":{"type":"string"}},{"description":"Primele două cifre (diviziunea) sau trei (grupa) ale codului CAEN.","in":"query","name":"caen_prefix","required":false,"schema":{"type":"string"}},{"description":"Unul sau mai multe coduri de județ (`SB`, `B`), despărțite prin virgulă: județul sediului social.","in":"query","name":"judet","required":false,"schema":{"type":"string"}},{"description":"Una sau mai multe forme juridice, cu codurile registrului comerțului (`SRL`, `SA`), despărțite prin virgulă.","in":"query","name":"forma_juridica","required":false,"schema":{"type":"string"}},{"description":"`true` pentru doar persoanele fizice care desfășoară o activitate economică (PFA, întreprinderi individuale și familiale, profesii liberale), `false` pentru doar persoanele juridice. Fără el, toate, inclusiv înregistrările încă neclasificate.","in":"query","name":"persoana_fizica","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistrationsCount"}}},"description":"Numărul de firme."},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/TooManyRequests"}},"summary":"Numărul firmelor nou înregistrate","tags":["Firme noi"]}},"/rest/v1/validate/cui/{cui}":{"get":{"description":"Verifică forma și cifra de control. Nu spune dacă există o firmă cu acest CUI. Fără cheie, gratuit.","parameters":[{"description":"Codul unic de identificare, cu sau fără prefixul `RO`, de exemplu `13548146`.","in":"path","name":"cui","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CuiValidation"}}},"description":"Rezultatul verificării."}},"security":[],"summary":"Verifică un CUI","tags":["Validare"]}}},"security":[{"cheie":[]}],"servers":[{"url":"https://api.apifirme.dev"}],"tags":[{"description":"Datele unei firme, după CUI.","name":"Firme"},{"description":"Situațiile financiare anuale publicate de Ministerul Finanțelor și, pentru cele care lipsesc din datele ministerului, cele din serviciul web al ANAF.","name":"Situații financiare"},{"description":"Firmele nou înregistrate, pentru cine vrea să afle zilnic ce firme au apărut.","name":"Firme noi"},{"description":"Cursul de referință al Băncii Naționale a României, din 2005.","name":"Curs BNR"},{"description":"Verificări care nu au nevoie de cheie.","name":"Validare"}],"webhooks":{"company.registered":{"post":{"description":"Trimis la adresa înregistrată în cont, la câteva minute după ce o firmă nouă care corespunde filtrelor webhook-ului a intrat în baza noastră de date. Ca lista firmelor noi, webhook-ul primește și persoanele fizice care desfășoară o activitate economică și înregistrările încă neclasificate (`persoana_fizica` este `true`, respectiv `null`), dacă filtrul „persoane juridice sau fizice” din cont nu le lasă deoparte. O înregistrare încă neclasificată când a fost indexată nu revine în listă doar pentru că este clasificată, așa că un webhook cu „doar persoane juridice” poate să nu o primească niciodată. Antetul `X-Apifirme-Signature` are forma `t=<timp Unix>,v1=<semnătură>`; semnătura este HMAC-SHA256, în hexazecimal, peste `<t>.<corpul cererii>`, cu secretul webhook-ului drept cheie. Orice răspuns `2xx` venit în zece secunde confirmă primirea; altfel livrarea se reîncearcă de până la opt ori, cu pauze tot mai lungi, timp de aproape o zi. O adresă care nu a răspuns la timp nu mai este apelată câteva minute; livrările care cad în acest timp așteaptă fără să piardă o încercare, dar nu mai mult decât ar fi durat cele opt încercări. Fiecare firmă are mereu același `id`, deci o livrare repetată poate fi recunoscută; fiecare webhook primește o firmă o singură dată — prima dată când corespunde filtrelor lui. După cinci livrări la rând abandonate, webhook-ul este oprit; poate fi repornit din cont și primește atunci din nou firmele care nu i-au ajuns, cât timp sunt încă printre firmele noi din planul lui. Din cont se poate trimite oricând un mesaj de probă (`test: true`).","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistrationEvent"}}},"required":true},"responses":{"200":{"description":"Mesajul a fost primit."}},"security":[],"summary":"O firmă nou înregistrată","tags":["Firme noi"]}}}}