Backend API ugovori

Backend treba da ima jasno razdvojene API grupe: uređajski API, administratorski API i korisnički API. Uređajski API mora biti stabilan i verzionisan jer firmware zavisi od njega.

Verzije API-ja

Preporučena bazna putanja:

/api/v1

Ako se promeni format payload-a koji uređaj šalje ili prima, povećati schema verziju u payload-u ili u API putanji.

Uređajski API

Uređajski API koriste Strujomerko uređaji preko GSM/GPRS uplink-a.

Bootstrap

POST /api/v1/devices/bootstrap

Namena:

  • prvo povezivanje uređaja,
  • provera serijskog broja i claim code-a,
  • izdavanje uređajskog tokena,
  • vraćanje početne konfiguracije.

Minimalni zahtev:

{
  "serial": "MTR-0001",
  "claim_code": "ABC123",
  "firmware_version": "1.0.0",
  "hardware_revision": "rev-a"
}

Minimalni odgovor:

{
  "device_id": "dev_...",
  "meter_id": "mtr_...",
  "device_token": "...",
  "config_revision": 1,
  "config": {}
}

Slanje telemetrije

POST /api/v1/devices/{device_id}/telemetry

Namena:

  • prijem mernih podataka,
  • prijem statusa,
  • potvrda primljenih sekvenci,
  • slanje komandi ili nove konfiguracije ako je potrebno.

Periodično javljanje uređaja

POST /api/v1/devices/{device_id}/heartbeat

Namena:

  • periodično javljanje uređaja,
  • status firmware-a,
  • RSSI i modem status,
  • prijava trenutne konfiguracione revizije.

Preuzimanje konfiguracije

GET /api/v1/devices/{device_id}/config?known_revision=1

Ako uređaj već ima najnoviju konfiguraciju, backend može vratiti status bez punog payload-a. Ako postoji novija konfiguracija, backend vraća ceo konfiguracioni dokument.

Potvrda konfiguracije

POST /api/v1/devices/{device_id}/config/ack

Uređaj potvrđuje da je konfiguracija primljena, validirana i primenjena ili prijavljuje razlog neuspeha.

Administratorski API

Administratorski API koriste admin portal, servisni panel i interni alati.

Predložene grupe:

Grupa Primeri endpoint-a
Uređaji GET /api/v1/admin/devices, GET /api/v1/admin/devices/{id}
Korisnici GET /api/v1/admin/customers, POST /api/v1/admin/customers
Lokacije GET /api/v1/admin/locations, POST /api/v1/admin/locations
Ugovori GET /api/v1/admin/contracts, POST /api/v1/admin/contracts
Tarife GET /api/v1/admin/tariff-plans, POST /api/v1/admin/tariff-plans
Računi GET /api/v1/admin/bills, POST /api/v1/admin/billing-periods/{id}/generate-bills
Događaji GET /api/v1/admin/events, PATCH /api/v1/admin/events/{id}

Korisnički API

Korisnički API koristi portal ili mobilna aplikacija.

Predložene grupe:

Grupa Primeri endpoint-a
Profil GET /api/v1/me
Moji uređaji GET /api/v1/me/meters
Potrošnja GET /api/v1/me/meters/{id}/usage
Računi GET /api/v1/me/bills, GET /api/v1/me/bills/{id}
Obaveštenja GET /api/v1/me/notifications

Pravila za greške

Svaka greška treba da ima stabilan format:

{
  "error": {
    "code": "invalid_device_token",
    "message": "Token uređaja nije validan.",
    "details": {}
  }
}