Ordino API
REST API za povezivanje Ordino sistema s vašim softverom: doktori, rasporedi, termini, web feed i TV ekrani. Sve rute vraćaju JSON (UTF-8).
Uvod i osnove
Osnovna adresa API-ja dodjeljuje se pri aktivaciji API pristupa (Premium paket).
BAZA = https://app.ordino.ba/api
- Svi zahtjevi i odgovori su JSON — šaljite header
Content-Type: application/jsoniAccept: application/json. - Zaštićene rute traže header
Authorization: Bearer <token>. - Svi podaci su izolovani po ustanovi — token vidi samo podatke svoje ustanove.
- Datumi su
YYYY-MM-DD, vremenaHH:MM(24h).
Autentikacija
Prijava slugom ustanove i PIN-om korisnika. Vraća Sanctum bearer token koji šaljete u svakom sljedećem zahtjevu.
| Polje | Tip | Opis |
|---|---|---|
| slug obavezno | string | Oznaka ustanove (dobijete pri aktivaciji) |
| pin obavezno | string | PIN korisnika (4–12 znakova) |
# zahtjev curl -X POST {BAZA}/login \ -H "Content-Type: application/json" \ -d '{"slug": "vasa-klinika", "pin": "1234"}' # odgovor 200 { "token": "1|xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "user": { "id": 1, "ime": "Sestra Milica", "role": "nurse" }, "partner": { "id": 1, "slug": "vasa-klinika", "name": "Vaša Klinika" } }
Podaci o prijavljenom korisniku i ustanovi.
Poništava trenutni token. Odgovor: {"ok": true}
Doktori
Baza doktora ustanove.
| Polje | Tip | Opis |
|---|---|---|
| title | string | Titula, npr. „prim. dr" (opciono) |
| name obavezno | string | Ime i prezime |
| specialty | string | Specijalnost, npr. „Kardiolog" |
| photo_path | string | Putanja fotografije (opciono) |
| published_on_web | boolean | Prikaz na web sajtu |
| sort_order | integer | Redoslijed prikaza |
# primjer: novi doktor curl -X POST {BAZA}/doctors \ -H "Authorization: Bearer $TOKEN" \ -H "Content-Type: application/json" \ -d '{"title": "dr", "name": "Milica Jovanović", "specialty": "Pedijatar", "published_on_web": true}' # odgovor 201 { "id": 7, "title": "dr", "name": "Milica Jovanović", "specialty": "Pedijatar", "photo_path": null, "published_on_web": true, "sort_order": 0 }
Raspored
Termini rada doktora — ono što se prikazuje na webu, TV-u i u objavama.
| Polje | Tip | Opis |
|---|---|---|
| doctor_id obavezno | integer | ID doktora iz vaše ustanove |
| date obavezno | date | Datum, npr. „2026-07-15" |
| time_from | HH:MM | Početak, npr. „09:00" |
| time_to | HH:MM | Kraj, npr. „15:00" |
| location | string | Lokacija/ordinacija (opciono) |
| note | string | Napomena (opciono) |
# primjer: doktor radi u srijedu
curl -X POST {BAZA}/schedule \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"doctor_id": 7, "date": "2026-07-15", "time_from": "09:00", "time_to": "15:00"}'
Termini (zakazivanja)
Zakazani pregledi pacijenata.
Termin nosi doktora, pacijenta, datum i vrijeme te status (npr. potvrđen / otkazan). Duplikat termina za isti slot API odbija sa 422.
Pacijenti
Evidencija pacijenata ustanove (osoblje).
Web feed — raspored za vaš sajt
Javni, read-only feed rasporeda za prikaz na web stranici ustanove (koristi ga i naš WordPress dodatak). Autorizacija ključem ustanove.
| Parametar | Gdje | Opis |
|---|---|---|
| key obavezno | query ili header X-Ordino-Key | Web ključ ustanove (iz Ordino postavki) |
# zahtjev curl "{BAZA}/feed?key=VAS-WEB-KLJUC" # odgovor 200 — doktori + raspored narednih 14 dana { "doctors": [ { "id": 7, "title": "dr", "name": "Milica Jovanović", "specialty": "Pedijatar", "photo_path": null } ], "schedule": [ { "doctor_id": 7, "doctor": "dr Milica Jovanović", "specialty": "Pedijatar", "date": "2026-07-15", "time_from": "09:00", "time_to": "15:00", "location": null } ] }
Vraćaju se samo doktori označeni sa published_on_web: true.
Javni podaci ustanove
Javne rute za prikaz doktora i slobodnih termina (npr. za vlastitu formu zakazivanja). Bez tokena — po slugu ustanove.
# slobodni termini doktora za dan curl "{BAZA}/public/vasa-klinika/slots?doctor_id=7&date=2026-07-15" # odgovor { "slots": ["09:00", "09:30", "10:00", "11:30"] }
TV ekrani
Uparivanje i podaci za TV prikaz u čekaonici. Ove rute koristi Ordino TV aplikacija — dokumentovane su radi potpunosti.
X-Ordino-Tv-Token)Greške i limiti
Standardni HTTP statusi + Laravel JSON format grešaka.
| Status | Značenje |
|---|---|
| 401 | Nedostaje ili je nevažeći token / ključ |
| 403 | Uloga nema pravo na akciju (npr. sestra briše doktora) |
| 404 | Resurs ne postoji ili nije iz vaše ustanove |
| 422 | Validacija — odgovor sadrži errors po poljima |
| 429 | Prekoračen rate limit — sačekajte pa ponovite |
# primjer 422
{ "message": "The name field is required.",
"errors": { "name": ["The name field is required."] } }
Rate limiti (po minuti)
| Ruta | Limit |
|---|---|
| POST /login | 20 |
| GET /feed | 60 |
| GET /public/* | 300 |
| GET /tv/* | 300 |
