Dorim ca OpenAPI.ro
- să ofere date corecte și actuale
- să aibă uptime mare (target-ul nostru >99.9% up)
- să aibă response time mic (target-ul nostru <10ms runtime pe server, <100ms over-the-wire)
- să fie gratuit (pentru o rată rezonabilă de requesturi)
- să fie deschis comunității și transparent — așteptăm sugestii și contribuții de orice fel, mai ales ce alte servicii ați mai considera utile
Cine folosește openapi.ro
Între aplicațiile în productie care folosesc openapi.ro se află:
- factureaza.ro
- travelbox.ro
- culinario.ro
- cubus.ro
- adz.ro
- codfiscal.money.ro
- sport.maxart.ro
- Aplicație Android 'Cauta Firma'
Contactează-ne dacă vrei să adăugăm și aplicația ta în lista de mai sus.
Structură generală
- http://openapi.ro/api/nume-serviciu/parametru.format
- Formate pentru răspunsuri: JSON, JSONP, XML
- Format dată/timp: ISO 8601
- Format cod țară: ISO 3166 1 alpha 2
- Format adresă IP: dot-decimal
Servicii disponibile
- Informații firme
- Geolocare IP (rezoluție de țară și oraș)
- Validare CIF / CNP / IBAN / BIC
- Curs valutar
- Coduri poștale
- Plurarul sau singularul cuvintelor româneşti
Informații firme
Returnează informații despre contribuabili români după codul de identificare fiscală (CIF).
- Ministerul de Finanțe — http://www.mfinante.ro/agenticod.html
- Oficiul Naţional al Registrului Comerţului — http://www.onrc.ro/
- Uniunea Europeană VIES — http://ec.europa.eu/taxation_customs/vies/
- http://openapi.ro/api/companies/cod-cif.format
Exemple:
-
Î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","authorization_number":"","name":"CUBUS ARTS S.R.L.","city":"SIBIU","updated_at":"2013-02-26T04:02:46+00:00","registration_id":"J32 /508 /2000","vat":"1","created_at":"2011-03-16T12:54:36+00:00","zip":"550350","address":"BLD. MIHAI VITEAZU Nr. 7,Ap. 18","state":"Sibiu","phone":"0269232192","fax":""} -
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.
-
PHP 5
$result = simplexml_load_file('http://openapi.ro/api/companies/13548146.xml'); print($result->name); -
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']) -
Perl
use JSON; use LWP::Simple; $result = decode_json(get('http://openapi.ro/api/companies/13548146.json')); print $result->{name}; -
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 1HTTP/1.1 404 Not Found -
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 -
Exemplu generic de Request JSONP
curl -g -s 'http://openapi.ro/api/companies/13548146.json?callback=my_function'my_function({"cif":"13548146","authorization_number":"","name":"CUBUS ARTS S.R.L.","city":"SIBIU","updated_at":"2013-02-26T04:02:46+00:00","registration_id":"J32 /508 /2000","vat":"1","created_at":"2011-03-16T12:54:36+00:00","zip":"550350","address":"BLD. MIHAI VITEAZU Nr. 7,Ap. 18","state":"Sibiu","phone":"0269232192","fax":""})
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
- Baza de date GeoLite de la MaxMind — http://geolite.maxmind.com/download/geoip/database/GeoIPCountryCSV.zip
- http://openapi.ro/api/(country sau location)/ip
-
Geolocare țară
curl -g -s 'http://openapi.ro/api/geoip/country/8.8.8.8.json'{"country_code":"US","ip":"8.8.8.8"} -
Geolocare locație (oraș etc)
curl -g -s 'http://openapi.ro/api/geoip/location/8.8.8.8.json'{"city":"Mountain View","latitude":"37.4192","region":"CA","metro_code":"807","ip":"8.8.8.8","country":"US","area_code":"650","longitude":"-122.0574"}
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
- http://openapi.ro/api/validate/tip_validare/input
-
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ă.- Data se specifică în formatul ISO 8601 (exemplu: 2013-05-10).
- Pentru zile de weekend se va returna cursul de vineri
- Pentru zile nelucrătoare se va returna cursul zilei lucrătoare anterioare
- Datele istorice sunt disponibile începând cu anul 2005
- Un request la all.json va returna cursul pentru toate valutele disponibile (mulțumim pentru sugestie Sorin Comănescu)
- Site-ul Băncii Naționale — http://www.bnro.ro/nbrfxrates.xml
-
Toate cursurile disponibile pentru data de 5 ianuarie 2012:
curl -g -s 'http://openapi.ro/api/exchange/all.json?date=2012-01-5'{"date":"2012-01-05","rate":{"BRL":"1.8444","CAD":"3.3165","USD":"3.3796","HUF":"0.013449","MXN":"0.2459","RSD":"0.0412","MDL":"0.2867","CZK":"0.1672","NOK":"0.5646","KRW":"0.002925","RUB":"0.1057","PLN":"0.9596","CNY":"0.5363","UAH":"0.4194","XDR":"5.1605","TRY":"1.7911","DKK":"0.5837","INR":"0.0638","NZD":"2.6406","CHF":"3.5629","XAU":"175.2918","AED":"0.9201","ZAR":"0.4114","GBP":"5.2549","BGN":"2.2189","AUD":"3.4648","EGP":"0.5601","JPY":"0.043985","SEK":"0.4898","EUR":"4.3398"}} -
Cursul RON/EUR la data de 28 ianuarie 2011:
curl -g -s 'http://openapi.ro/api/exchange/eur.json?date=2011-01-28'{"date":"2011-01-28","rate":"4,2571"} -
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'{"date":"2011-02-04","rate":"3,1285"} -
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'{"date":"2009-12-24","rate":"4,2028"} -
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'{"date":"2007-12-28","rate":"3,6102"}
Cod poștal
nu avem baza de date, dacă poți ajuta contactează-ne
Mulțumim celor care ne-au ajutat cu baza de date a codurilor poștale: (kleampa, necenzurat). Am folosit-o pe cea trimisă de kleampa.
- http://openapi.ro/api/zip.format/query
- 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.)
-
Toate adresele cu denumirea "Michael Weiss"
curl -g -s 'http://openapi.ro/api/addresses.json?description=Michael%20Weiss'[{"county":"Brasov","zip":"500031","description":"Weiss Michael nr. 1-27; 2-24","street_type":"Strada","sector":"","location":"Brasov"},{"county":"Brasov","zip":"500024","description":"Weiss Michael nr. 29-35","street_type":"Strada","sector":"","location":"Brasov"},{"county":"Brasov","zip":"500019","description":"Weiss Michael nr. 37-T; 26-T","street_type":"Strada","sector":"","location":"Brasov"},{"county":"Sibiu","zip":"551005","description":"Weiss Michael","street_type":"Strada","sector":"","location":"Medias"}] -
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","zip":"551005","description":"Weiss Michael","street_type":"Strada","sector":"","location":"Medias"}] -
Toate adresele cu codul poștal 550350
curl -g -s 'http://openapi.ro/api/addresses.json?zip=550350'[{"county":"Sibiu","zip":"550350","description":"Mihai Viteazu bl. 1, 3, 5, 5A, 7-19","street_type":"Bulevard","sector":"","location":"Sibiu"}] -
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:
- Nu știm cât de actuală/completă este baza de date (!)
- Baza de date nu conține diacritice
- Query-urile au o limită de 5 rezultate
- Deocamdată există un bug la formatul XML pentru acest serviciu, vom rezolva în curând.
- Dacă folosiți câmpul description, rezultatele sunt în ordinea relevanței rezultatelor în căutarea fulltext pe acest câmp
Pluralul sau singularul cuvintelor româneşti
- http://openapi.ro/api/inflections/word.format
-
"dinozaur"
curl -g -s 'http://openapi.ro/api/inflections/dinozaur.json'{"singular":"dinozaur","plural":"dinozauri"} -
"minotauri"
curl -g -s 'http://openapi.ro/api/inflections/minotauri.json'{"singular":"minotaur","plural":"minotauri"} -
Dacă folosiţi cuvinte cu diacritice, trebuie să sanitizaţi URL-ul întâi, de ex. (CGI.escape(şorţ) == "%C5%9For%C5%A3").
curl -g -s 'http://openapi.ro/api/inflections/%25C5%259For%25C5%25A3.xml'<?xml version="1.0" encoding="UTF-8"?> <hash> <singular>șorț</singular> <plural>șórțuri</plural> </hash> -
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"} -
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 -
Exemplu generic de Request JSONP
curl -g -s 'http://openapi.ro/api/inflections/balaur.json?callback=my_function'my_function({"singular":"balaur","plural":"balauri"})
Logo OpenAPI.ro
Dacă folosești OpenAPI.ro, poți pune următorul banner pe site, inclusiv backlink-ul:
<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
Limitări
Requesturi/oră/IP 1000
Requesturi/zi/IP 10000
Dacă aceste limite sunt insuficiente pentru tine, vom implementa în curând limite mai mari și chei API.