22 aug 2016 ANUNȚ IMPORTANT

Vă anunțăm cu plăcere că openapi a fost rescris complet, cu multe îmbunătățiri:

  • datele sunt actualizate mult mai repede (CIF-uri valide și neradiate vor fi actualizate aprox. odată la 3-4 zile)
  • sunt disponibile și alte informații, cum ar fi bilanțul (care include printre altele și codul CAEN)
  • openapi a fost mutat pe un server dedicat
  • timpul de răspuns a fost îmbunătățit

Momentan suntem într-o perioadă de beta.

Migrare

  • denumirea câmpurilor diferă, am decis să păstrăm denumirea română pentru a evita confuzii
  • câmpul city nu mai există, câmpul adresă include și localitatea
  • sunt disponibile câmpuri adiționale (vom pune la dispoziție o documentație mai comprehensivă în viitor)
  • am renunțat la formatul XML
  • vă rugăm trimiteți toate cererile pe HTTPS
  • veți avea nevoie de un cont care vă permite generarea unei chei API, care este obligatorie

Vă invităm să testați nou serviciu și să ne trimiteți feedback:

Începând cu 15 Sept. 2016 api-urile curente vor fi mutate pe subdomeniul legacy.openapi.ro, iar noul serviciu aflat acum în beta va fi mutat pe domeniul acesta (openapi.ro)

27 aug 2014

Am actualizat infrastructura și codul aplicației, aducând și unele îmbunătățiri la serviciul de informații despre firme.

Astfel, datele despre firme sunt normalizate acum în felul următor:

Servicii disponibile

Dorim ca OpenAPI.ro

Structură generală

Informații firme

Returnează informații despre contribuabili români după codul de identificare fiscală (CIF).

Surse utilizate: URL-uri:
  • http://openapi.ro/api/companies/cod-cif.format

Exemple:

  1. În cazul în care s-au găsit informații despre contribuabil, răspunsul vine în formatul trimis in URL. curl -g -s 'http://openapi.ro/api/companies/13548146.json' {"cif":"13548146","address":"B-dul Mihai Viteazu 7","city":"Sibiu","fax":null,"name":"Cubus Arts S.R.L.","phone":"0269232192","registration_id":"J32/508/2000","authorization_number":null,"company_status":"Inregistrat Din Data 23 November 2000","state":"Sibiu","vat":"1","zip":"550350","created_at":"2012-01-20T21:48:09.000+00:00","updated_at":"2015-05-09T18:10:09.000+00:00","company_status_updated_at":"2000-11-23"}
  2. Implementare client REST cu ActiveSupport (we ♥ Rails)
    require 'active_resource'
    class Company < ActiveResource::Base
      self.site = 'http://openapi.ro/api/'
    end
    
    Company.find(13548146).name
    => Cubus Arts S.R.L.
  3. PHP 5
    $result = simplexml_load_file('http://openapi.ro/api/companies/13548146.xml');
    print($result->name);
  4. Python 2.x:
    import simplejson, urllib
    result = simplejson.load(urllib.urlopen('http://openapi.ro/api/companies/13548146.json'))
    print result['name']
    Python 3.x:
    import json, urllib.request
    result = json.loads(urllib.request.urlopen('http://openapi.ro/api/companies/13548146.json').read().decode('utf8'))
    print(result['name'])
  5. Perl
    use JSON;
    use LWP::Simple;
    $result = decode_json(get('http://openapi.ro/api/companies/13548146.json'));
    print $result->{name};
  6. CIF invalid sau nu se află în baza de date, corpul răspunsului va fi gol iar status-ul va fi 404 curl -s --head http://openapi.ro/api/companies/123.json | head -n 1 HTTP/1.1 404 Not Found
  7. Javascript: Request JSONP, folosind jQuery
    $.ajax({
      type: 'get',
      url: 'http://openapi.ro/api/companies/13548146.json',
      dataType: 'jsonp',
      success: function(data) {
        console.log(data["state"]);
      }
    })
    => Sibiu
  8. Exemplu generic de Request JSONP curl -g -s 'http://openapi.ro/api/companies/13548146.json?callback=my_function' my_function({"cif":"13548146","address":"B-dul Mihai Viteazu 7","city":"Sibiu","fax":null,"name":"Cubus Arts S.R.L.","phone":"0269232192","registration_id":"J32/508/2000","authorization_number":null,"company_status":"Inregistrat Din Data 23 November 2000","state":"Sibiu","vat":"1","zip":"550350","created_at":"2012-01-20T21:48:09.000+00:00","updated_at":"2015-05-09T18:10:09.000+00:00","company_status_updated_at":"2000-11-23"})

Geolocare IP

Returnează țara sau locația asociată IP-ului dat. Adresa IP se așteaptă în notația dot-decimal, de exemplu 8.8.8.8 Codul țării în răspunsuri este conform ISO 3166 1 alpha 2

Surse utilizate: URL-uri:
  • http://openapi.ro/api/geoip/(country sau location)/ip
Exemple:
  1. Geolocare țară curl -g -s 'http://openapi.ro/api/geoip/country/8.8.8.8.json' {"ip":"8.8.8.8","country_code":"US"}
  2. Geolocare locație (oraș etc) curl -g -s 'http://openapi.ro/api/geoip/location/8.8.8.8.json' {"ip":"8.8.8.8","country":"US","region":"CA","city":"Mountain View","latitude":"37.3845","longitude":"-122.0881","metro_code":"807","area_code":"650"}

Validare CIF / CNP / IBAN / BIC

Validarea IBAN-ului se face după algoritmul descris aici: http://www.bnr.ro/files/d/Legislatie/EN/Reg_IBAN.pdf

URL-uri:
  • http://openapi.ro/api/validate/tip_validare/input
Exemple:
  1. Validare IBAN curl -g -s 'http://openapi.ro/api/validate/iban/RO69TREZ04621220230XXXXX.json' {"valid":true}

Curs valutar

Data se pasează ca parametru opțional la request. Implicit se va returna cursul din data curentă.
Surse utilizate:
Exemplu:
  1. Toate cursurile disponibile pentru data de 5 ianuarie 2012: curl -g -s 'http://openapi.ro/api/exchange/all.json?date=2012-01-5' {"rate":{"ZAR":"0.4114","AED":"0.9201","XAU":"175.2918","CHF":"3.5629","NZD":"2.6406","INR":"0.0638","EUR":"4.3398","SEK":"0.4898","RSD":"0.0412","MXN":"0.2459","HUF":"0.013449","EGP":"0.5601","CNY":"0.5363","DKK":"0.5837","TRY":"1.7911","KRW":"0.002925","AUD":"3.4648","XDR":"5.1605","USD":"3.3796","UAH":"0.4194","CAD":"3.3165","BRL":"1.8444","PLN":"0.9596","JPY":"0.043985","RUB":"0.1057","CZK":"0.1672","BGN":"2.2189","NOK":"0.5646","MDL":"0.2867","GBP":"5.2549"},"date":"2012-01-05"}
  2. Cursul RON/EUR la data de 28 ianuarie 2011: curl -g -s 'http://openapi.ro/api/exchange/eur.json?date=2011-01-28' {"rate":"4,2571","date":"2011-01-28"}
  3. Cursul RON/USD într-o zi de sâmbătă (va returna cursul de vineri): curl -g -s 'http://openapi.ro/api/exchange/usd.json?date=2011-02-05' {"rate":"3,1285","date":"2011-02-04"}
  4. Cursul RON/EUR de Crăciun în 2009 (vineri; va returna cursul de joi 24.12.2009) curl -g -s 'http://openapi.ro/api/exchange/eur.json?date=2009-12-25' {"rate":"4,2028","date":"2009-12-24"}
  5. Cursul RON/EUR în 2. ian. 2008 (vineri; va returna cursul din 28 dec. 2007) curl -g -s 'http://openapi.ro/api/exchange/eur.json?date=2008-01-02' {"rate":"3,6102","date":"2007-12-28"}

Cod poștal

URL-uri:
  • http://openapi.ro/api/zip.format/query
unde query este de forma field=value[&other_field=other_value&...], câmpurile posibile fiind:
  • description (cel mai important câmp, căutarea se face cu fulltext, conține numele și numerele aferente codului poștal)
  • zip (cod poștal)
  • county (județ)
  • location (oraș, localitate)
  • street_type (tipul de stradă, exemple: Bulevard, Strada, Piata etc.)
Exemple
  1. Toate adresele cu denumirea "Michael Weiss" curl -g -s 'http://openapi.ro/api/addresses.json?description=Michael%20Weiss' [{"county":"Brasov","location":"Brasov","street_type":"Strada","description":"Weiss Michael nr. 1-27; 2-24","zip":"500031","sector":""},{"county":"Brasov","location":"Brasov","street_type":"Strada","description":"Weiss Michael nr. 29-35","zip":"500024","sector":""},{"county":"Brasov","location":"Brasov","street_type":"Strada","description":"Weiss Michael nr. 37-T; 26-T","zip":"500019","sector":""},{"county":"Sibiu","location":"Medias","street_type":"Strada","description":"Weiss Michael","zip":"551005","sector":""}]
  2. Toate adresele cu denumirea "Weiss Michael" din județul Sibiu curl -g -s 'http://openapi.ro/api/addresses.json?description=Michael%20Weiss&county=Sibiu' [{"county":"Sibiu","location":"Medias","street_type":"Strada","description":"Weiss Michael","zip":"551005","sector":""}]
  3. Toate adresele cu codul poștal 550350 curl -g -s 'http://openapi.ro/api/addresses.json?zip=550350' [{"county":"Sibiu","location":"Sibiu","street_type":"Bulevard","description":"Mihai Viteazu bl. 1, 3, 5, 5A, 7-19","zip":"550350","sector":""}]
  4. Implementare client REST cu ActiveSupport (we ♥ Rails)
    require 'active_resource'
    class Address < ActiveResource::Base
      self.site = 'http://openapi.ro/api/'
    end
    
    a = Address.first(:params => {:zip => 550350})
    puts [a.county, a.location, a.description].join("; ")
    => Sibiu; Sibiu; Mihai Viteazu bl. 1, 3, 5, 5A, 7-19
    

Observații:

Pluralul sau singularul cuvintelor româneşti

Surse utilizate: URL-uri:
  • http://openapi.ro/api/inflections/word.format
Exemple
  1. "dinozaur" curl -g -s 'http://openapi.ro/api/inflections/dinozaur.json' {"singular":null,"plural":null}
  2. "minotauri" curl -g -s 'http://openapi.ro/api/inflections/minotauri.json' {"singular":null,"plural":null}
  3. "şorţ" curl -g -s 'http://openapi.ro/api/inflections/%C5%9For%C5%A3.xml' <?xml version="1.0" encoding="UTF-8"?> <hash> <singular nil="true"/> <plural nil="true"/> </hash>
  4. Implementare client REST cu ActiveSupport (we ♥ Rails)
    require 'active_resource'
    class Inflection < ActiveResource::Base
      self.site = 'http://openapi.ro/api/'
    end
    
    Inflection.find('ţăran').attributes
    => {"singular"=>"țăran", "plural"=>"țărani"}
  5. Javascript: Request JSONP, folosind jQuery
    $.ajax({
      type: 'get',
      url: 'http://openapi.ro/api/inflections/curcan.json',
      dataType: 'jsonp',
      success: function(data) {
        console.log(data["plural"]);
      }
    })
    => curcani
  6. Exemplu generic de Request JSONP curl -g -s 'http://openapi.ro/api/inflections/balaur.json?callback=my_function' my_function({"singular":null,"plural":null})

Logo OpenAPI.ro

Dacă folosești OpenAPI.ro, poți pune următorul banner pe site, inclusiv backlink-ul:

OpenAPI.ro - servicii web pentru România

<a href='http://openapi.ro'><img src='oa-logo.png' width='82' height='38' alt='OpenAPI.ro - servicii web pentru România'/></a>

Alte servicii

Așteptăm sugestii pentru alte servicii utile

Cine folosește openapi.ro

Între aplicațiile în productie care folosesc openapi.ro se află:

Contactează-ne dacă vrei să adăugăm și aplicația ta în lista de mai sus.

Limitări

Requesturi/oră/IP 1000

Dacă aceste limite sunt insuficiente pentru tine, vom implementa în curând limite mai mari și chei API.