Balans Web API - Console
Administratorska veb konzola za registraciju klijenata i upravljanje licencama modula nad Balans Web API-jem.\\
Zamenjuje ručni rad kroz Swagger — firma → nalog → moduli → licence — kroz forme, sa generisanim licencama kao spiskom kodova.
Konzola je zaseban frontend koji komunicira isključivo kroz REST zahteve modula Realm. Nema sopstvenu bazu ni servis: posle build-a je statička aplikacija koju servira veb server.
Pristup
Svi administratorski zahtevi traže ulogu ADMIN (profil MelanyAdmin) i registrovan modul Realm.\\
Prijava ide kroz POST /api/rest/auth, a dobijeni token se šalje u zaglavlju:
\\
Authorization: Bearer {token}\\
Prijava prima pubId firme (wcom.pubid), ne firid.
REST API Zahtevi
| Metod | Putanja | Uloga | Opis | Revizija |
|---|---|---|---|---|
| GET | /api/rest/realm/admin/companies | ADMIN | Spisak registrovanih firmi | 26-08-24 |
| GET | /api/rest/realm/admin/company/{firid}/modules | ADMIN | Aktivni moduli firme sa licencom i datumom isteka | 26-08-24 |
| GET | /api/rest/realm/admin/licences | ADMIN | Spisak licenci po modulu, firmi i statusu | 26-08-24 |
| POST | /api/rest/realm/admin/licence/assign | ADMIN | Dodela slobodne licence ciljnoj firmi | 26-08-24 |
| POST | /api/rest/realm/admin/licence/revoke | ADMIN | Odvezivanje licence od firme | 26-08-24 |
| PUT | /api/rest/realm/admin/licence | ADMIN | Izmena trajanja licence | 26-08-24 |
Ulazni parametri
Spisak licenci
GET /api/rest/realm/admin/licences prima tri opciona URL parametra:
* moduleId - filter po modulu (0 ili izostavljen = svi moduli)
* companyId - filter po firmi, vrednost je firid (izostavljen = sve firme)
* free - true = slobodne, false = iskorišćene, izostavljen = sve
Akcije nad licencom
Telo zahteva je JSON:
\\
POST /api/rest/realm/admin/licence/assign\\
{ "licence": "4301-KUY0YI", "firid": 223 }
POST /api/rest/realm/admin/licence/revoke\\
{ "licence": "4301-KUY0YI" }
PUT /api/rest/realm/admin/licence\\
{ "licence": "4301-KUY0YI", "duration": 30 }\\
| Polje | Tip | Opis |
|---|---|---|
| licence | string | Kod licence (walibslic.walic_licence) |
| firid | integer | Identifikator ciljne firme (firme.firid), samo pri dodeli |
| duration | integer | Trajanje u danima; 0 = neograničeno (istek 3000-01-01) |
Životni ciklus licence
Licenca je kod za jedan modul, jednu firmu i određeno trajanje. Dva odvojena koraka:
- Generisanje (PUT /api/rest/realm/licence/generate) pravi slobodne kodove, nevezane za firmu.
- Dodela veže kod za firmu i upisuje aktivan modul sa datumom isteka.
Odvezivanje vraća kod među slobodne i postavlja istek aktivnog modula na prethodni dan — zapis o modulu se ne briše, čime se čuvaju podešavanja modula.\\
Premeštanje licence sa jedne firme na drugu je zato dva koraka: odvezivanje pa dodela.
Registracija klijenta
| Korak | Zahtev | Uloga | Opis | Revizija |
|---|---|---|---|---|
| 1 | POST /api/rest/realm/company | bez tokena | Registracija firme; vraća pubId | 26-08-24 |
| 2 | POST /api/rest/realm/user | bez tokena | Klijentski nalog za pubId firme | 26-08-24 |
| 3 | POST /api/rest/realm/licence/activate | USER, ADMIN | Aktivacija licence za modul | 26-08-24 |
| 4 | PUT /api/rest/realm/licence/generate | ADMIN | Generisanje licenci za modul | 26-08-24 |
Korak 1 je idempotentan — ponovna registracija iste firme vraća postojeći pubId, ne grešku.\\
Firma mora prethodno da postoji u tabeli firme (firid se ne kreira kroz konzolu).
Rezultat
| HTTP Kod | Opis | Revizija |
|---|---|---|
| 200 | Zahtev je uspešno izvršen. | 26-08-24 |
| 400 | Nije predat obavezan parametar (firid, duration ili licence). | 26-08-24 |
| 401 | Token nije validan. | 26-08-24 |
| 403 | Nalog nema ulogu ADMIN ili nema pristup modulu Realm. | 26-08-24 |
| 404 | Licenca ili firma ne postoji. | 26-08-24 |
| 409 | Licenca je već dodeljena — prvo je odvezati. | 26-08-24 |
| 409 | Firma već ima važeću licencu za taj modul. | 26-08-24 |
| 409 | Modul koristi besplatno licenciranje — dodela nije primenljiva. | 26-08-24 |
| 409 | Licenca nije dodeljena — nema šta da se odveže. | 26-08-24 |
| 409 | Modul je neaktivan ili u režimu održavanja. | 26-08-24 |
| 500 | Nepoznata serverska greška. | 26-08-24 |
Napomene
* pubId i firid nisu isto. firid je identifikator firme u Balansu (i naziv firmine baze b{firid}), a pubId generiše server pri registraciji firme i koristi se pri prijavi.
* realmId (wcom.mel_id) je identifikator Balans klastera na kom firma živi. Pri registraciji firme server ga proverava u registru izdatih licenci; nepoznat realmId se odbija.
* Trajanje 0 znači neograničeno i prikazuje se kao datum isteka 3000-01-01.