API dokumentacija
v1 API za provjeru službenih certificiranih informacijskih posrednika (OIB/GLN).
Swagger / OpenAPI
Specifikacija: openapi.yaml
Osnove
API je namijenjen developerskim integracijama. Nakon registracije račun mora aktivirati administrator, nakon čega se generira API ključ.
API podržava dva formata odgovora: XML (zadano) i JSON (samo ako pošaljete
Accept: application/json).
Base URL
https://provjera-posrednika.com.hr/api/v1Savjet: koristite HTTPS.
Autentikacija
API ključ šalje se u headeru:
X-API-Key: VAS_API_KLJUCKljuč radi samo na domenama/originima koje je administrator odobrio (allowlist).
Endpointi
1) Provjera posrednika
Vraća status i popis usluga za OIB ili GLN.
GET /check?oib=85821130368GET /check?gln=3851234567890POST /check (JSON body)2) Popis posrednika
Vraća cijeli popis (za cache i lokalno filtriranje).
GET /intermediaries3) Status ključa i kvota (opcionalno)
Pomoćni endpointi za monitoring i debugging integracije.
GET /keysGET /statsResponse format
Zadan format je XML. JSON se dobiva isključivo kada klijent pošalje
Accept: application/json.
U oba slučaja polja su semantički ista.
Primjer (curl) – XML
curl -s \
-H "X-API-Key: VAS_API_KLJUC" \
"https://provjera-posrednika.com.hr/api/v1/check?oib=85821130368"
Primjer (curl) – JSON
curl -s \
-H "X-API-Key: VAS_API_KLJUC" \
-H "Accept: application/json" \
"https://provjera-posrednika.com.hr/api/v1/check?oib=85821130368"
Primjer (POST) – JSON body
curl -s \
-H "X-API-Key: VAS_API_KLJUC" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"idType":"OIB","identifier":"85821130368"}' \
"https://provjera-posrednika.com.hr/api/v1/check"
Primjeri integracije
Browser (JavaScript)
Browser integracije su dozvoljene samo s odobrenim Origin domenama. Ključ šaljete u headeru.
async function provjeriOib(oib) {
const res = await fetch('https://provjera-posrednika.com.hr/api/v1/check?oib=' + encodeURIComponent(oib), {
method: 'GET',
headers: {
'X-API-Key': 'VAS_API_KLJUC',
'Accept': 'application/json'
},
// za browser: Origin će biti automatski postavljen
});
if (!res.ok) {
// po potrebi: fallback poruka korisniku
throw new Error('Provjera nije uspjela');
}
const data = await res.json();
return data;
}
Server (PHP)
Server-side integracije su preporučene za veći promet. U primjeru se traži JSON radi jednostavnog parsiranja.
$oib = '85821130368';
$ch = curl_init('https://provjera-posrednika.com.hr/api/v1/check?oib=' . rawurlencode($oib));
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'X-API-Key: VAS_API_KLJUC',
'Accept: application/json',
],
CURLOPT_TIMEOUT => 10,
]);
$body = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
curl_close($ch);
if ($code !== 200 || !$body) {
throw new RuntimeException('Provjera nije uspjela');
}
$data = json_decode($body, true);
// Primjeri:
// - certificirani posrednik: $data['certified'] === true
// - web stranica (ako je dostupna): $data['broker']['website']
// - usluge: $data['broker']['services']['eracun'] / ['eizvjestavanje'] / ['mps']
Allowed origins (allowlist)
Kada se API koristi iz browsera, zahtjev sadrži
Origin header. API će vratiti CORS header samo ako je origin odobren za taj ključ.
Ako origin nije na allowlisti, integracija neće raditi.
- Domena se odobrava u admin panelu nakon registracije.
- Zahtjev za promjenu domene podnosi se u korisničkom panelu; administrator odobrava ili odbija.
- Podržavamo isključivo točne (exact) origin vrijednosti, bez wildcards.
Rate-limit i kvote
U produkciji je uključena zaštita stabilnosti usluge:
- Quota: 5000/day po ključu (hard reset prema Europe/Zagreb).
- Browser limit: dodatno stroži limit za browser integracije, te per-origin limit.
- Rate-limit: ograničenje po ključu i IP adresi (minute bucket).
Ako dobijete
429, smanjite učestalost poziva ili uvedite cache. Za veće potrebe kontaktirajte podršku.Error codes
| HTTP | Značenje | Primjer |
|---|---|---|
400 |
Neispravan unos (npr. OIB nije valjan ili nedostaje parametar). | {"error":"Invalid OIB."} |
401 |
Nedostaje ili je neispravan API ključ. | {"error":"Unauthorized."} |
403 |
Zabranjeno (npr. origin nije odobren). | {"error":"Forbidden."} |
429 |
Prekoračena kvota ili rate-limit. | {"error":"Quota exceeded."} |
500 |
Privremeni problem. Pokušajte ponovno kasnije. | {"error":"Service unavailable."} |
Napomene
- OIB mora imati točno 11 znamenki i proći MOD11-10 provjeru.
- Za integracije preporučujemo local cache (npr. 24h) uz periodičnu provjeru promjena u službenom popisu.
- Ovaj API ne vraća interne tehničke detalje u slučaju greške.