Konfigurácia univerzálneho API rozhrania
SmartWeb sprístupňuje tri univerzálne API rozhrania na prístup k D2000 — REST API (synchrónny request / response cez HTTP/1.1), CometD API (obojsmerný WebSocket / long-polling pre real-time push) a gRPC API (server-to-server HTTP/2). REST a CometD API môžu používať klienti v prehliadači aj server-to-server klienti a zdieľajú rovnaký model prístupového filtra aj autentifikačnú infraštruktúru; gRPC API je určené pre server-to-server klientov a konfiguruje sa samostatne po inštanciách.
REST endpointy a kontexty
REST vrstva je rozdelená do troch nezávislých kontextov, každý s vlastným zabezpečením:
Cesta | Zabezpečenie | Účel |
|---|---|---|
| API kľúč / JWT / Basic auth | Server-to-server klienti (strojové API). Pokrýva aj |
| HTTP relácia (session) + CSRF | Komunikácia prehliadač-server (SmartWeb web aplikácia a admin konzola). |
| Žiadne | Verejná infraštruktúra (generovanie CSRF tokenu, reset hesla). |
Všetky REST služby smerujúce na D2000 používajú prefix cesty /v0/d2/. Najdôležitejšie endpointy:
Cesta | Popis |
|---|---|
| Vykonanie D2000 RPC procedúry |
| Čítanie historických dát z archívneho objektu D2000 |
| Čítanie / zápis dát EDA vektorov |
| Autentifikácia používateľa, ukončenie relácie |
| Vykonanie RPC volania typu Simple Byte Array (binárne) |
| Zmena D2000 hesla prihláseného používateľa (len web kontext) |
| Preposlanie požiadaviek na vzdialený SmartWeb uzol (len server-to-server kontext) |
| Verejná — vracia CSRF token, verziu servera, build info |
| Verejný tok resetu hesla |
Príklad RPC volania z prehliadača (s CSRF tokenom a session cookie):
curl -X POST https://smartweb.example.com/api/web/rest/v0/d2/rpc \
-H "Content-Type: application/json" \
-H "X-CSRFToken: <token>" \
-H "Cookie: JSESSIONID=<session>" \
-d '{"event":"E.MyRpc","method":"Calculate","params":{"a":1,"b":2}}'Príklad server-to-server čítania archívu:
curl "https://smartweb.example.com/api/rest/v0/d2/archive?name=AR.Temperature&from=2026-01-01T00:00:00Z&to=2026-01-02T00:00:00Z" \
-H "X-API-Key: my-secret-api-key"CometD endpoint a kanály
CometD endpoint je vystavený na /api/cometd (WebSocket s long-polling fallbackom). Je zabezpečený HTTP reláciou a vynucuje rovnaké CSRF požiadavky ako web REST kontext. Prehliadač s ním komunikuje cez TypeScript klienta d2jsapi.
Kanál | Smer | Popis |
|---|---|---|
| klient → server | CometD handshake; tu sa overuje relácia |
| klient → server | Prihlásenie na kanál; spustí D2000 odber objektu / archívu / EDA |
| klient → server | Zrušenie odberu |
| server → klient | Push zmeny hodnoty odoberaného D2000 objektu |
| server → klient | Streamované historické archívne dáta |
| server → klient | Push dát EDA vektora |
| klient → server | Požiadavka na RPC volanie |
| server → klient | Výsledok RPC volania |
| server → klient | Push servisných / alarmových správ D2000 |
gRPC API
gRPC API je server-to-server rozhranie postavené na HTTP/2. Klienti cezeň môžu volať D2000 RPC procedúry, odoberať zmeny hodnôt objektov, streamovať archívne a EDA dáta a prijímať RPC volania iniciované D2000. Je možné spustiť viacero nezávislých inštancií gRPC servera, každú s vlastnou väzobnou adresou, TLS/mTLS konfiguráciou a prístupovým filtrom. Na rozdiel od REST a CometD API nie je určené pre prehliadač a jeho prístupový filter sa konfiguruje samostatne pre každú inštanciu (nezdieľa sa s modelom REST/CometD popísaným nižšie).
[!NOTE] Podrobná konfigurácia — metódy služby, TLS/mTLS, hlavičky odpovede, health checky a príklady — je na stránke Konfigurácia gRPC API.
OData API
OData API sprístupňuje archívne dáta a EDA vektory D2000 cez štandardné OData 4.0 rozhranie, vhodné pre reportingové a analytické nástroje.
[!NOTE] Podrobná konfigurácia, entitné množiny a príklady dopytov sú na stránke Konfigurácia OData API.
OpenAPI
OpenAPI integrácia funguje obojsmerne — SmartWeb dokáže sprístupniť externé HTTP endpointy popísané OpenAPI špecifikáciou a naviazať ich na D2000 RPC procedúry, prípadne umožniť D2000 ESL skriptom volať externé HTTP služby.
[!NOTE] Podrobná konfigurácia vstupného aj výstupného OpenAPI je na stránke Konfigurácia OpenAPI API.
Grafana API
Grafana API implementuje OpenTSDB HTTP API 2.4, takže Grafana môže cez svoj vstavaný dátový zdroj OpenTSDB pristupovať k časovým radom D2000 (merané a počítané body, premenné, archívy, EDA vektory) — bez potreby pluginu. Je vystavené na /api/opentsdb a zabezpečené rovnako ako server-to-server REST API.
[!NOTE] Podrobné nastavenie dátového zdroja, mapovanie objektov na metriky a konfigurácia sú na stránke Konfigurácia Grafana API.
Prístupový filter
REST API aj CometD API zdieľajú spoločný prístupový filter, ktorý riadi, ktoré D2000 RPC metódy a objekty môžu klienti volať. Predvolene je povolená každá metóda aj každý názov objektu. Na obmedzenie prístupu definujte explicitné zoznamy povolených hodnôt pomocou wildcard vzorov (nerozlišuje veľkosť písmen — * zodpovedá ľubovoľnému počtu znakov, ? jednému znaku).
smartweb:
application:
cometApi:
enabled: true # globálne zapnutie / vypnutie CometD rozhrania
accessFilter:
allowedD2RpcEventNames:
- "*" # ľubovoľný názov eventu
allowedD2RpcMethodNames:
- "*" # ľubovoľná RPC metóda
allowedD2ObjectNames:
- "*" # ľubovoľný D2 objekt (odbery, archív, EDA)
restApi:
enabled: true # globálne zapnutie / vypnutie REST rozhrania
accessFilter:
allowedD2RpcEventNames:
- "E.MyRpc"
- "E.TRAY_*"
allowedD2RpcMethodNames:
- "Calculate"
- "GetStatus"
allowedD2ObjectNames:
- "P.*"
- "M.*"Ak je sekcia cometApi / restApi vynechaná, obe rozhrania sú zapnuté a bez obmedzení. Prístupový filter sa vyhodnocuje pri každom jednotlivom volaní; zamietnuté volanie vráti HTTP 403 Forbidden (REST) alebo ukončí CometD kanál.
GZIP
SmartWeb transparentne komprimuje odpovede a dekomprimuje požiadavky pomocou GZIP. Žiadna ďalšia konfigurácia nie je potrebná; klienti len musia posielať štandardné hlavičky Accept-Encoding: gzip a Content-Encoding: gzip.