APIPočetak
Konvencije
Format zahtjeva i odgovora, oznake, datumi, valuta, liste i oznaka zahtjeva.
Zahtjevi i odgovori
- HTTPS i JSON, UTF-8. Tijelo zahtjeva šaljite s
Content-Type: application/json. - Polja su
snake_case, na engleskom; tekstovi za korisnika (nazivi faktora, signali) su na bosanskom. - Nepoznata polja u zahtjevu se odbijaju (
400 invalid_request), da se greška u nazivu polja ne izgubi tiho. - Svaki objekt ima
object(npr.valuation,list) i, gdje postoji,ids prefiksom:val_,wv_,alr_,whe_,evt_.
Brojevi, valuta, datumi
- Cijene su cijeli KM (
BAM), zaokružene na 10 KM. Polja s cijenom završavaju na_bamili su u objektu scurrency: "BAM". - Postoci su brojevi u procentima (
change_pct: -3.97= −3,97%), a omjeri u dijelovima jedinice (ratio: 0.88,range_probability: 0.8). - Dani su
YYYY-MM-DD, trenuci ISO 8601 u UTC (2026-10-18T21:57:02.773Z). Dan procjene je UTC dan.
Prazno i nepostojeće
null znači da vrijednost postoji kao polje, ali je nepoznata ili isključena (npr. exposure: null). Polje koje se vraća samo uz neki uslov (npr. forecast bez include) tada potpuno izostaje. Kod PATCH zahtjeva null briše vrijednost, a izostavljeno polje ostaje kakvo jeste.
Liste i stranice
Liste vraćaju { "object": "list", "data": [...], "has_more": … }. Sljedeću stranicu tražite s starting_after = id zadnje stavke, a veličinu s limit (1–100, podrazumijevano 50).
let after;
do {
const url = new URL("https://api.cifra.ba/v1/watchlist");
url.searchParams.set("limit", "100");
if (after) url.searchParams.set("starting_after", after);
const page = await (await fetch(url, { headers })).json();
for (const vehicle of page.data) handle(vehicle);
after = page.has_more ? page.data.at(-1).id : undefined;
} while (after);Oznaka zahtjeva
Svaki odgovor ima zaglavlje x-request-id, a greška i polje request_id. Pošaljite svoju oznaku (x-request-id, 8–64 slova, brojeva, - ili _) i API će je koristiti — tako isti zahtjev pratite kroz svoje logove, log zahtjeva na platformi i podršku.
Promjene API-ja
Unutar /v1 API se mijenja samo dodavanjem: nova polja u odgovoru, nove vrijednosti upozorenja, novi endpointi. Napišite integraciju tako da zanemaruje nepoznata polja i da nepoznatu šifru upozorenja ili signala samo prikaže ili zabilježi. Novi modeli rade bez promjene adrese; odgovor ih imenuje u model_version.