Dohvaćanje podataka s API-ja Sudskog registra data.gov.hr

Prije nekoliko godina objavio sam blog post o prikazu podataka API-ja Sudskog registra – pravosudje.hr.

API se tada nalazio na adresi https://sudreg-api.pravosudje.hr, dok će se od 1. travnja nalaziti na adresi https://sudreg-data.gov.hr/.

Više o detaljima i razlozima prebacivanja API-ja na novu adresu možete saznati na https://data.gov.hr/ckan/dataset/sudski-registar.

Ukratko, to znači da se osim URL-a putem kojega će se pozivati API mijenjaju i parametri potrebni za pristup tim podacima.

“Portal otvorenih podataka Sudskog registra namijenjen je razvojnim inženjerima koji u svoja aplikativna rješenja žele preuzimati podatke Sudskog registra (https://sudreg.pravosudje.hr) u strojno čitljivom obliku.

Za pristup podacima potrebno je napraviti registraciju. Nakon uspješno predanog registracijskog obrasca korisnik će dobiti e-mail za potvrdu svog korisničkog računa. Verifikacijom računa korisnik će biti preusmjeren na stranice aplikacije te će mu se dodijeliti Client ID, Client Secret i link za dohvat tokena koji omogućuju pristup RESTapi sučeljima.”

Registracija i aktivacija

Prije registracije potrebno je prijaviti se, a to je moguća napraviti korištenjem e-građana te putem servisa Facebook, Google i Microsoft na linku https://data.gov.hr/ckan/dataset/sudski-registar i klikom na ‘Prijava’ u gornjem desnom kutu ekrana.

Portal otvorenih podataka

Nakon prijave mogu se vidjeti detalji o postupku registracije i što se njome dobije. Klikom na “Registracija” pokreće se postupak.

API sudskog registra

Klikom na “Registracija” otvara se jednostavna forma gdje se navodi naziv i opis projekta u kojemu će se koristiti API.

Forma API-ja Sudskog registra

Klikom na “Predaj zahtjev” otvara se sljedeći ekran gdje se vide detalji poput parametara Client Id i Client Secret koji će biti potrebni za slanje upita na API tj. dobivanje tokena.

Sudski registar API

Prije nego se prikazani podaci mogu koristiti potrebno je potvrditi tj. verificirati e-mail klikom na “Potvrdi”.

Sudski registar API email

Nakon toga preostaje još kliknuti na “Aktivacija” i to je to što se registracije tiče.

Sudski registar API aktivacija

I konačno, podaci su spremni za korištenje.

Sudski registar API podaci

Provjera rada API-ja

Kako je i navedeno u dokumentaciji API mogu provjeriti koristeći Curl (Client for URL) naredbu i to želim napraviti prije nego krenem s postavljanjem Angular forme.

Naredba se upisuje u naredbeni redak (CMD) u sljedećem obliku: curl -i -k --user ClientId:ClientSecret --data "grant_type=client_credentials" https://sudreg-data.gov.hr/api/oauth/token

Curl naredba Sudreg API

Iz navedenog mogu vidjeti u kojem obliku i koje parametre će mi API vratiti. U ovom slučaju najvažniji mi je parametar access_token koji će mi trebati prilikom pozivanja drugih API-ja.

Također vidim da token vrijedi 6 sati (21600 sekundi) od trenutka kreiranja.

Dohvaćanje tokena testirat ću i koristeći Postman.

Odmah ću, također putem Curl naredbe, isprobati jedan API u kojem ću proslijediti access_token da bi dobio podatke. Želim se uvjeriti da sve radi prije nego počnem s kreiranjem API servisa u Angularu.

Pokretanjem Curl naredbe curl --location "https://sudreg-data.gov.hr/api/javni/sudovi?expand_relations=true" ^ --header "Content-Type: application/json" ^ --header "Authorization: Bearer access_token" dobijem sljedeće:

Popis sudova API

Kako se može vidjeti iz gornje naredbe ovdje prosljeđujem samo dva parametara u headeru i već sam dobio “osjećaj” kako će funkcionirati svi ostali API pozivi.

Nadam se bez grešaka koje neki od njih trenutno imaju. 🙂

API detalji_subjekta

S obzirom da me API detalji_subjekta trenutno najviše zanima više ću pažnje obratiti na njega što se tiče dokumentacije.

Na adresi https://sudreg-data.gov.hr/api/OpenAPIs/OpenAPIJavni se nalaze sve dostupne API točke. Između ostalog tu je i detalji_subjekta.

Iz dokumentacije vidim da se radi o get metodi i koje obavezne parametre trebam slati.

API detalji_subjekta

Kreiranje API servisa

U servisu će se nalaziti dvije funkcije. Jedna će dohvaćati access_token, a druga podatke o tvrtki prema OIB-u ili MBS-u.

Obavezni parametri za dobivanje tokena:

  • Content-Type (string) / header – ‘application/x-www-form-urlencoded’
  • Authorization (string) / header – ‘Basic ‘ + btoa(‘ClientId:ClientSecret’)
  • grant_type (string) / body – client_credentials

Obavezni parametri za dohvaćanje detalja tvrtke:

  • Content-Type (string) / header – ‘application/json’
  • Authorization (string) / header – ‘Bearer ‘ + access_token
  • tip_identifikatora (string) / query – ‘oib’ ili ‘mbo’
  • identifikator (string) / query – 0000000000 ili 000000000

Angular forma

Forma će biti jednostavna. Nakon unosa OIB-a ili MBS-a popunit će se polja naziv, adresa i grad. API naravno dohvaća puno više od toga.

Što se funkcionalnosti tiče i s obzirom da je ovo samo demo prikaz neću ići previše u detalje.

Unutar ngOnInit() funkcije pozivam API za dohvaćanje tokena. U produkcijskom okruženju ne bih to radio na ovaj način nego bih spremio token i novi ne bih tražio sljedećih 6 sati dok trenutni ne istekne.

U praksi to izgleda ovako. Unosom OIB-a ili MBS-a poziva se funkcija za dohvaćanje detalja poslovnog subjekta.

API sudskog registra

Jednom kada access_token istekne dobit će se poruka

API neautorizirano

I to je to. Istovremeno vrlo jednostavan i vrlo koristan API koji može poboljšati funkcionalnosti nekog programskog rješenja.